Một trong những bài toán lớn được đặt ra hiện nay đó là tìm kiếm các thành phần lặp repeat finding trong chuỗi genome, khi mà chúng đóng nhiều vai trò quan trọng với sự tiến hóa ở sinh v
Trang 1Lời cảm ơn
Đầu tiên, tôi xin chân thành cảm ơn tiến sĩ Lê Sỹ Vinh hiện đang công tác tại khoa Khoa Học Máy Tính – Đại học Công Nghệ – Đại học Quốc Gia Hà Nội, người đã động viên và giúp đỡ tôi rất nhiều trong quá trình thực hiện luận văn này Thầy cũng chính là người hướng dẫn trực tiếp và đưa ra những lời khuyên bổ ích cùng những ý tưởng sáng tạo trong quá trình thực hiện nghiên cứu giúp tôi có thể hoàn thành luận văn này một cách tốt nhất
Tiếp theo là lời cảm ơn của tôi gửi đến gia đình tôi Ba và anh trai là những người
đã luôn bên tôi trong suốt những năm học đại học và cũng luôn động viên, giúp đỡ tôi rất nhiều với những kinh nghiệm quý báu và là chỗ dựa vững chắc để tôi có thể hoàn thành luận văn này
Ngoài ra tôi cũng xin cảm ơn ba người bạn cùng nhóm nghiên cứu được thầy Vinh hướng dẫn trong năm nay đó là: Hà Tuấn Cường, Nguyễn Hoàng Dũng, và Nguyễn Hà Anh Tuấn Các bạn đã giúp đỡ, và động viên tôi rất nhiều từ khi mới bắt đầu tới khi hoàn thành Đồng thời cũng xin cảm ơn các bạn học cùng lớp, các anh chị học khóa trên vì những lời khuyên bổ ích
Hà Nội, 21 tháng 5 năm 2010
Sinh viênNguyễn Hoàng Sơn
Trang 2Tóm tắt nội dung
Cùng với sự phát triển với tốc độ chóng mặt của sinh học phân tử, chúng ta đã có thêm những hiểu biết không nhỏ về cấu trúc và thành phần các hệ gene của các loài sinh vật Kết quả là dữ liệu di truyền học ngày càng được hoàn thiện và các nhà khoa học có thể truy cập vào một lượng khổng lồ thông tin trong các ngân hàng gene để tiến hành phân tích và tìm hiểu sâu thêm về bí ẩn hệ sinh vật Do đó yêu cầu về những công cụ tin học có thể xử lý lượng thông tin dạng chuỗi với kích thước rất lớn trong thời gian hợp lý được đặt ra trong lĩnh vực tin sinh học
Một trong những bài toán lớn được đặt ra hiện nay đó là tìm kiếm các thành phần lặp (repeat finding) trong chuỗi genome, khi mà chúng đóng nhiều vai trò quan trọng với sự tiến hóa ở sinh vật nhân chuẩn và kỹ thuật đánh giấu đoạn lặp (repeat masking) được áp dụng trước tiên trong phân tích và sắp hàng hai hệ gene Hiện nay có không ít các công cụ tìm kiếm đoạn lặp hiệu quả sử dụng các phương pháp khác nhau xuất hiện Trong nội dung khóa luận này, tôi sẽ giới thiệu qua một số phương pháp và công
cụ này, đồng thời dựa trên cơ sở cải tiến và kết hợp thuật toán MMR của REPuter và thuật toán phân cụm trong RepeatFinder để đưa ra một công cụ mới có tên RF-MMR Kết quả của việc chạy chương trình RF-MMR và một số công cụ phổ biến khác trên tập dữ liệu tạo ra từ tập dữ liệu oryza sativa sẽ được đưa ra để so sánh và rút ra một cái nhìn tổng quát Nhìn chung chương trình đề xuất chạy với thời gian được rút ngắn đáng kể với một độ chính xác hợp lý so với các công cụ khác Nội dung chi tiết
sẽ được đề cập đến ngay sau đây
Trang 3Mục lục
Lời cảm ơn 1
Tóm tắt nội dung 2
Mục lục 3
Chương 1: Giới thiệu chung 1
Chương 2: Các phương pháp hiện tại 5
Chương 3: Phương pháp đề xuất 12
Chương 4: Phương pháp thí nghiệm, kết quả thực nghiệm và đánh giá 24
Chương 5: Kết luận chung và xu hướng phát triển trong tương lai 35
Tài liệu tham khảo: 37
Trang 4Chương 1: Giới thiệu chung
Nội dung chương này sẽ đưa ra cái nhìn chung, các khái niệm sinh học cơ bản về genome (bộ gene), các thành phần lặp trong và vai trò của chúng trong nghiên cứu về chuỗi genome
1.1 Khái niệm cơ bản.
Genome (bộ gene hay hệ gene) là tập hợp chứa đựng toàn
bộ các thông tin di truyền của một cơ thể sinh vật được mã hóa trong DNA (hoặc ở một số virus
là RNA) Genome bao gồm những vùng chứa gene lẫn những đoạn không phiên mã
Hình 1: Genome trong mô hình máy phân tử (nguồn: Joanne Fox)
Hiểu một cách đơn giản, đối với tế bào nhân chuẩn genome bao gồm tập các nhiễm sắc thể chứa trong nhân tế bào, được biểu diễn bằng các chuỗi DNA (gồm các thành phần A, C, G, T) với kích thước rất lớn , có thể lên đến hàng tỷ ký tự Cùng với việc hệ gene ngày càng hoàn thiện nhờ tiến bộ sinh học phân tử, sự thách thức trong lĩnh vực nghiên cứu tin sinh cũng ngày càng tăng khi người ta nhận ra yêu cầu xử lý phân tích các chuỗi genome khổng lồ được đặt ra
Một trong những lĩnh vực cơ bản nhất và cũng không kém phần quan trọng đó là bài toán tìm kiếm các thành phần lặp trong chuỗi genome Phần tiếp theo sẽ cho cái
Trang 5nhìn chung về các thành phần lặp và vai trò của nó trong phân tích và khám phá đặc tính hệ gene sinh vật.
1.2 Thành phần lặp trong chuỗi genome.
Từ những năm 60 của thế kỷ trước, các nhà khoa học đã khám phá ra trong các chuỗi genome trong tế bào nhân chuẩn không chỉ bao gồm các gene, mà còn gồm một
số không nhỏ các chuỗi không phiên mã (tức là không đóng vai trò trong việc mã hóa protein) Hơn thế nữa, họ còn tìm thấy trong các chuỗi genome có chứa nhiều đoạn DNA lặp đi lặp lại, mà thực ra sau này được gọi là các thành phần lặp chiếm đa số trong thành phần DNA của hầu hết các tế bào nhân chuẩn (trong hệ gene người chiếm hơn 50%) Trong một chuỗi DNA có các loại đoạn lặp sau đây[15]:
• Tandem repeat (lặp bộ): là họ các đoạn lặp thường là ngắn và xuất hiện liên tiếp nhau trong chuỗi genome Loại này lại chia ra: satellite DNA, minisatellite, microsatellite
• Interspersed repetitive DNA (các thành phần lặp rời rạc): các thành phần lặp xuất hiện một cách rải rác trên chuỗi genome Loại này lại được chia thành các họ lặp sau: SINEs (short interspersed nuclear element), LINEs (long interspersed nuclear element), Long Terminal Repeat (LTR)
• Các thành phần lặp có thể đổi chỗ (có thể dịch chuyển vị trí trên chuỗi genome)
Trong nội dung của khóa luận, ta chỉ quan tâm đến các công cụ tìm kiếm các thành phần lặp rời rạc, tức loại thứ hai
Các thành phần lặp đã và đang tiếp tục đóng vai trò cốt yếu trong sự tiến hóa về gene của loài Hơn thế nữa, trong so sánh bắt cặp trình tự các chuỗi genome (một lĩnh vực nghiên cứu rất quan trọng trong tin sinh học), việc tìm kiếm và loại bỏ các đoạn lặp là bước cần được thực hiện đầu tiên Các đoạn lặp không được nhận biết và đánh dấu trước khi thực hiện bắt cặp trình tự sẽ có thể ảnh hưởng sai lệch đến kết quả (do thực hiện tìm kiếm trong các đoạn lặp các đoạn giống nhau!)
Trang 6Vì thế yêu cầu về một công cụ có khả năng tìm kiếm tự động các đoạn lặp trong một chuỗi genome kích thước lớn là tất yếu Một chương trình như thế phải thỏa mãn các điều kiện cơ bản sau:
• Tính hiệu quả: có thể phân tích một chuỗi genome có kích cỡ hàng triệu base pairs (bp), với thời gian tuyến tính theo độ dài chuỗi
• Tính linh hoạt: không chỉ có khả năng nhận biết các đoạn lặp giống hệt nhau,
mà còn có khả năng nhận biết các đoạn lặp suy biến (cho phép sai khác nhỏ hơn một ngưỡng nào đó), các đoạn lặp ngược (reverse complemented repeat),
• Tính bộ phận: bởi vì tìm kiếm đoạn lặp thường là một bước cơ sở trong việc phân tích cấu trúc hệ gene, chương trình cần có một giao diện đơn giản để có thể gọi lại và sử dụng như một mô đun trong một project khác lớn hơn
Trong phần còn lại của khóa luận, tôi chỉ xin giới thiệu một số phương pháp tìm kiếm đoạn lặp áp dụng được với các chuỗi genome có kích thước hàng triệu bp trở lên, với thời gian tìm kiếm hợp lý và cho kết quả tương đối tốt (phép đánh giá sẽ trình bày sau), đồng thời đưa ra một công cụ mà nền tảng là dựa trên các công cụ RepeatFinder
và Reputer, đã qua một số cải tiến về phương pháp Phương pháp tập trung vào việc đưa ra một kết quả hợp lý so với các phương pháp hiện tại, với yếu tố thời gian chạy được rút ngắn đáng kể Kết quả được đưa ra dưới dạng text, công cụ đồ họa thể hiện kết quả đạt được có thể sử dụng mô đun repVis trong gói chương trình REPuter [8]
1.3 Định dạng dữ liệu
Trong nội dung của khóa luận, ta sẽ đề cập đến các công cụ thao tác các file genome trên hai định dạng: chuỗi genome hợp (assembled reads) và genome đa chuỗi (multiple sequence reads) Trong định dạng thứ nhất, file dữ liệu sẽ chứa một chuỗi liên tục DNA tương đối dài, ví dụ toàn bộ một nhiễm sắc thể hay một vùng nhiễm sắc thể liên hợp Ở định dạng đa chuỗi, file dữ liệu sẽ chứa nhiều chuỗi DNA rời rạc nhau (mà mỗi chuỗi bắt đầu bằng ký tự '>' đối với định dạng fasta); định dạng này thường được sử dụng khi các vùng gene mã hóa được quan tâm, khi đó không phải toàn bộ
Trang 7chuỗi genome được thể hiện (vì chuỗi genome bao gồm cả những đoạn không phiên mã!)
Một ví dụ file genome hợp theo định dạng fasta:
>a segment in human chromosome…
GGGAAGTGACTGGGAGAAGGCCTTATAGCAGCTCCTTACAGCCTCTGATCTTCTT GTGTTCTGGGAGGATCACAAATTAACCAAAACTCAGATTAGCTGCAGTTCAAGCCT ACATGGATATATGCAAGGGTGCCAGGCCATCATGGAGGAGCCCCTACAACTCCA CTCTCCTTTCATATATCCACCTAAGGATTCTTTTTACAAACATAAGCCACCTGTTGT GGCCACTCTAAAGATACAGAATGGACCCCATGCAAAATTTGGTTTAGATATCAAGA GCGATAATGCTGTATATACATCAACAGGGCAAAGGTTTATTACTCGCATAATGAGG CTCTTTTGGGAGAGCAAGGCAGGCTTCCAAAGCTGATCTGAAAATGTCTTGAGAG CTAGGAAAGGAGACTAGCTTACAGTTTTTATGGTGGTTAGGGGTGCTGGGGTGAG GGTTCCAATGTGCAGCTGACTTGCATGGTTTGAAACTCCTTTCAACAACAAAGGAG AGAGCACCCAGGAAT
Ví dụ cho 1 file đa chuỗi (multi-fasta):
>the first interested segment in oryza sativa chromosome 10…
TAAGGAGAACTGAGGTGAGGCTTAGATGCTGTCAGCAAACATCCAAAAAAAAAAA AAAGACAGCTTCCTTATTAACTCCTGATGTTCGAGAAATAAAATGTACTACGTTTTT GTAGTTGAATTCAAACAGAT
> the second interested segment in oryza sativa chromosome 10…
CTATGAGGTCTGTAGCCTGATACCTGTAAGAAAGATGAAAGTTCCATCAACTGTCT CATTCTAGAGCTCAGCATTGT
> the third interested segment in oryza sativa chromosome 10…
TTCTGGGAAGTGAAATGAATGTCTTGGTGGCAATAAATGGCATCTGGAACTCTAAC GGCAGTAACGAGTGTCTTAATGGCCTTGTATTATAGTTTTATTATATGTAAAGGCAT GTATGGTATTGACTTATATTTT
…
Trang 8Chương 2: Các phương pháp hiện tại
Nội dung chương này sẽ giới thiệu các phương pháp tiếp cận và một số công cụ phổ biến được dùng trong tìm kiếm và nhận dạng đoạn lặp trong chuỗi genome hiện nay Những trình bày dưới đây được tổng hợp và tóm tắt qua quá trình tham khảo [12]
Do nhu cầu cấp thiết về một công cụ tìm kiếm đoạn lặp nên một số không nhỏ các chương trình đã được phát triển, ví dụ: RepeatMasker, REPuter, RepeatFinder, REPO,
…Mỗi một chương trình có các hướng tiếp cận khác nhau, mang lại hiệu quả khác nhau và áp dụng cho các chuỗi genome tương ứng cũng mang lại các kết quả khác nhau Nhìn chung, có 2 hướng tiếp cận chính để giải quyết vấn đề tìm kiếm đoạn lặp,
đó là kỹ thuật tìm kiếm dựa vào thư viện, và kỹ thuật tìm kiếm đoạn lặp ngay từ đầu (ab initio)
2.1 Phương pháp tìm kiếm đoạn lặp dựa vào thư viện.
Theo cách tiếp cận này, đoạn lặp được định nghĩa là một chuỗi con mà xuất hiện rất thường xuyên trong một chuỗi genome Các hệ thống dựa vào thư viện sẽ nhận diện chuỗi các thành phần lặp bằng cách so sánh tập dữ liệu đầu vào với một tập tham khảo các chuỗi lặp, hay được gọi là một thư viện Những chuỗi con này có ảnh hưởng xấu đến các chương trình phân tích chuỗi và cần được ốp mặt nạ(tức là đánh dấu lại)
để tránh các kết quả không mong muốn Chương trình RepeatMasker sử dụng một từ điển các dãy lặp đã được xây dựng trong một thư viện có sẵn để thực hiện tìm kiếm chính xác hoặc gần đúng trên chuỗi cần ốp mặt nạ với các entry của từ điển đấy (máy tìm kiếm có thể là crossmatch hoặc BLASTX) Mức độ tương đồng cần thiết giữa chuỗi truy vấn với các chuỗi tham khảo được chọn bởi người dùng Do việc nhận dạng các đoạn lặp bởi RepeatMasker dựa hoàn toàn vào sự tương tự giữa các chuỗi lặp trong thư viện và các chuỗi truy vấn nên bất cứ vùng nào trong chuỗi truy vấn với độ tương đồng thích hợp với một chuỗi tham khảo trong thư viện lặp sẽ được đánh dấu là một thành phần lặp cho dù nó xuất hiện nhiều lần trong chuỗi genome hay không Cả thông tin về chuỗi cho các vùng lặp và các kết quả chú thích đưa ra bởi RepeatMasker đều được định dạng một cách đơn giản và thân thiện với người sử dụng RepeatMasker
là một công cụ rất phổ biến hiện nay, thư viện REPbase (một thư viện lặp chứa lượng lớn dữ liệu của động vật nhân chuẩn) cũng ngày được hoàn thiện, tăng tính chính xác
Trang 9và hiệu quả trong tìm kiếm đoạn lặp Tuy nhiên, kỹ thuật tìm kiếm phụ thuộc thư viện
có hạn chế là không tìm được các đoạn repeat thực sự có trong chuỗi genome nhưng chưa được biết đến trong thư viện Thực tế trong xử lý chuỗi genome, chương trình RepeatMasker được gọi trước hết như một công cụ tiền xử lý để loại bỏ các đoạn lặp một cách cơ bản, các xử lý tinh vi hơn có thể gọi phía sau nếu cần thiết
2.2 Phương pháp tìm kiếm đoạn lặp ngay từ đầu (ab initio repeat)
Nhằm khắc phục nhược điểm của phương pháp phụ thuộc thư viện và cũng nhằm hoàn thiện bộ thư viện cho kỹ thuật trên, phương pháp tìm kiếm đoạn lặp ngay từ đầu
sử dụng các thuật toán string matching để tìm kiếm đoạn lặp mà không cần biết trước các đoạn lặp có sẵn Một ví dụ của phương pháp này là chương trình REPuter, sử dụng
cấu trúc suffix tree để tìm kiếm các hạt giống (seed) tức là các từ lặp lại chính xác
trong chuỗi, và sau đó mở rộng để thu được các cặp repeat suy biến (có độ sai khác không vượt quá một ngưỡng cho trước) trong chuỗi genome Ngoài ra một số công cụ khác như RepeatScout, RepeatFinder, PILER cũng sử dụng kỹ thuật tìm kiếm ngay
từ đầu, kết quả trả về là họ các đoạn repeat (repeat family), có thể sử dụng để hoàn thiện dần các thư viện cho phương pháp đầu tiên Nội dung khóa luận sẽ tập trung nghiên cứu các công cụ này, đồng thời từ đó so sánh tìm ra một hướng mới cho tìm kiếm đoạn lặp
Chúng ta xem xét quá trình tìm kiếm các đoạn lặp thành theo 2 giai đoạn Giai đoạn thứ nhất có nhiệm vụ thực hiện những tìm kiếm đầu tiên của các đoạn lặp Giai đoạn thứ hai, xác định ra họ các thành phần lặp, được tập trung vào việc nhận biết các biên của các thành phần lặp và từ đó rút ra đoạn tổng hợp cho mỗi họ (tức là đoạn DNA “phân tử giả” tổng hợp lại và đại diện cho tất cả các thành phần trong một họ, trong đó mỗi một nucleotide trong chuỗi tổng hợp được đặc trưng bởi base có khả năng xuất hiện cao nhất ở vị trí ấy, so sánh giữa tất cả các đoạn lặp trong họ với nhau) Dưới đây chúng ta sẽ xem xét các thuật toán và công cụ thực hiện tìm kiếm đoạn lặp với cái khung là hai giai đoạn đã được nói tới ở trên
2.2.1 Giai đoạn một: Nhận dạng bước đầu các đoạn lặp
Để khám phá ra các họ thành phần lặp trong phương pháp tìm kiếm ngay từ đầu, tất cả đều phải bắt đầu với việc nhận dạng các đoạn tương đối ngắn có xuất hiện một
Trang 10số lần (lớn hơn hay bằng 2) trong chuỗi hay tập chuỗi truy vấn Có năm nhóm cách tiếp cận cơ bản (nhưng chưa phải tất cả) trong việc nhận dạng ban đầu và phân cụm các đoạn lặp.
Tự so sánh: so sánh chuỗi DNA với chính nó để từ đó phân cụm được thành các
đoạn tương tự nhau
RECON, một trong số các công cụ được dùng rộng rãi hiện nay, cũng là dựa vào việc tìm kiếm bởi BLAST RECON bắt đầu với việc phân tích BLAST tất cả các đoạn với nhau (RECON có khả năng làm việc với định dạng multi-fasta, tức nhiều chuỗi genome trong cùng một file) sử dụng công cụ WU-BLASTN
PILER sử dụng thủ tục bắt cặp cục bộ hai chuỗi PALS để nhận dạng các thành phần lặp trong các vùng genome hợp (chuỗi genome duy nhất, liên tiếp, không bị chia nhỏ) Để tăng tính hiệu quả, chỉ có tọa độ vị trí của những “hit” (những vùng được bắt cặp) là được ghi lại PALS sử dụng tìm kiếm theo dải, tức là bắt cặp cục bộ các chuỗi
có vị trí nằm trong một vùng nào đó của chuỗi còn lại
K-mer: liệt kê rõ ràng các chuỗi con xuất hiện một cách thường xuyên (gọi là các
k-mer hay “từ”) trong chuỗi truy vấn
Cách tiếp cận này (gọi là k-mer hay đếm từ) coi một đoạn lặp là một chuỗi con w
có độ dài k xuất hiện nhiều hơn một lần trong một chuỗi S có độ dài n Một chuỗi con lặp đi lặp lại w không thể mở rộng thêm nữa mà không được xảy ra sai khác gọi là một
lặp lớn nhất (maximal repeat) Bởi vì có tất cả 4k từ với độ dài k, các cách tiếp cận theo
hướng này thường yêu cầu k nhỏ nhất phải là log4(n), trong đó n là độ dài của chuỗi genome hay của cả tập hợp các chuỗi mà ta quan tâm Ví dụ các công cụ dựa k-mer
như ReAS, RepeatScout đều khuyến cáo một giá trị k lớn hơn log4(n) Giá trị k được
yêu cầu trong genome hợp của cây là khoảng từ 12 đến 19, dựa trên đánh giá về kích
thước của chúng Tăng giá trị của k sẽ giảm độ nhạy (sensivity) của thủ tục tìm kiếm
đoạn lặp, trong khi giảm kích thước của seed sẽ tăng độ phức tạp trong tính toán của thuật toán và xác suất xảy ra nghiệm ngẫu nhiên
REPuter[7] là một trong số những công cụ đầu tiên áp dụng một thuật toán tìm
kiếm k-mer để tìm các đoạn lặp Thành phần máy tìm kiếm của nó, REPfind, sử dụng
một cấu trúc dữ liệu cây hậu tố hiệu quả phát triển bởi Weiner [17] để lưu trữ tất cả
Trang 11các k-mer lặp chính xác trong chuỗi, có độ dài lớn hơn hoặc bằng một ngưỡng do
người sử dụng đặt ra trước đấy Cấy hậu tố có thể được sử dụng trong tìm kiếm chuỗi
với thời gian và không gian lưu trữ tuyến tính với độ phức tạp O(n+z) trong đó z là số
lặp lớn nhất Điều đó cho phép thuật toán áp dụng được với các chuỗi rất lớn trong
genome của tế bào nhân chuẩn Cách tiếp cận k-mer của REPuter cũng được sử dụng
trong các công cụ khác Ví dụ, cả RepeatFinder[16] và RepeatGluer[10] đều sử dụng REPuter để sinh ra danh sách ban đầu của các lặp lớn nhất RepeatFinder cũng có thể
sử dụng output của các công cụ sử dụng cây hậu tố khác như RepeatMatch, một module trong MUMmer[2]
Trong khi REPuter xây dựng các cụm ban đầu bởi việc tìm tất cả các thành phần
lặp có độ dài lớn hơn một giá trị ngưỡng, các công cụ sử dụng k-mer khác nhóm các đoạn dựa vào đoạn k-mer chung có tấn số xuất hiện cao với độ dài đã được định trước Các chuỗi được nhận dạng bởi một k-mer cụ thể sau đó được mở rộng bởi một số cơ chế nào đó Sử dụng k-mer có độ dài cố định giảm được độ phức tạp về thời gian và không gian lưu trữ của quá trình tìm kiếm RepeatScout xây dựng một thư viện các k- mer có độ dài cố định và tần số xuất hiện cao, sau đó sử dụng chúng như là các seed
cho thuật toán tìm kiếm tham lam trong giai đoạn xác định họ lặp[11] RepeatScout sử dụng một phiên bản đã được cải tiến của thuật toán gióng hàng cục bộ bởi việc kết hợp thêm một hệ thống tính điểm phạt Chi tiết hơn về các công cụ này sẽ được trình bày trong phần sau
Seed có cách quãng (spaced seed): tương tự như cách tiếp cận k-mer trừ việc các
seed sử dụng trong quá trình matching có một mức độ sai khác được xác định từ trước
Nói cách khác, đây là một mở rộng của cách tiếp cận k-mer Thay vì phải tìm kiếm các nghiệm lặp một cách chính xác có độ dài k, thuật toán seed có cách quãng đúng như
tên gọi, thực hiện tìm kiếm sử dụng các seed có chứa một mức độ biến thiên trong tính đồng nhất hay về độ dài
Ma trận điểm: xây dựng biểu đồ điểm giữa chuỗi đầu vào với chính nó Đây là
một trong số các kỹ thuật tìm kiếm đoạn lặp xuất hiện sớm nhất và đơn giản nhất
Tính chu kỳ: biến đổi dữ liệu chuỗi từ vùng chuỗi (thời gian) sang vùng tần số và
thực hiện phép phân tích trên dữ liệu tần số này Đây là một hướng tiếp cận khác hoàn toàn so với những kỹ thuật đã nói ở trên Kỹ thuật này sử dụng biến đổi Fourier để
Trang 12phân tích chuỗi DNA trong vùng tần số thay vì vùng thời gian thường được sử dụng hơn (vùng mà một chuỗi chữ cái được xem như là một dãy thời gian) Phổ công suất của chuỗi sinh ra từ biến đổi Fourier được sử dụng để nhận dạng sự tự tương quan cả ngắn hạn và dài hạn của chuỗi với chính nó Các cực đại có cường độ cao trong phổ công suất của chuỗi thể hiện những khả năng xuất hiện các thành phần lặp Các khả năng này sau đó được dùng như seed trong một tìm kiếm gióng hàng cục bộ để tìm ra các thành phần tương tự và quyết định chuỗi tổng hợp của họ lặp Do độ mạnh của tín hiệu bị giảm đối với các đoạn lặp rời rạc, phương pháp này chỉ thích hợp nhất đối với các đoạn lặp bộ (tandem repeat), cho dù vẫn có thể được dùng để nhận dạng một số
các đoạn lặp rời Độ phức tạp về thời gian cho thuật toán này là O(n2)
2.2.2 Giai đoạn hai: Định nghĩa họ các thành phần lặp
Các phương pháp mô tả ở các phần trên được sử dụng để sinh ra các tập các thành phần tương tự nhau, trong khi các phần tiếp theo sẽ thảo luận về các kỹ thuật được sử dụng để mở rộng và kết nối các thành phần lại thành các họ lặp khi có thể, và sau đó rút ra các mô tả về chuỗi tổng hợp (hay chuỗi nguyên mẫu) cho mỗi họ lặp Có hai cách tiếp cận cho giai đoạn này, đó là phân cụm và mở rộng xâu
Phân cụm: Một số công cụ thực hiện việc nhận dạng các họ lặp bởi việc phân
cụm sâu hơn để định ra họ lặp cuối cùng
RepeatFinder [16] bắt đầu với một tập các lặp chính xác ban đầu (sử dụng cấu trúc suffix tree như đã nói ở trên) sau đó gộp các đoạn lặp chính xác đứng gần nhau (gộp với tham số khoảng cách) hay chồng lên nhau (gộp sử dụng tham số overlap) để sinh
ra một tập các đoạn lặp đã được gộp Các đoạn lặp này sau đó được phân nhóm vào các mục; hai tập các đoạn lặp gộp là cùng một mục nếu nó chứa ít nhất cùng một lặp chính xác Vòng cuối cùng của quá trình phân cụm được thực hiện mà trong đó BLAST được sử dụng để so sánh mỗi mục với tất cả các mục còn lại Sau vòng cuối cùng này, một thành phần lặp sẽ được chọn ra từ mỗi mục kết quả như một chuỗi đại diện (gọi là nguyên mẫu) cho họ lặp; một hàm mục tiêu sẽ được xác định cho mỗi giao thức phân cụm (gộp sử dụng chồng hay gộp sử dụng khoảng cách) và một nguyên mẫu mục sẽ được đưa ra mà làm cho hàm mục tiêu tương ứng nhỏ nhất Phép toán phân cụm được thực hiện với việc chỉ sử dụng những tọa độ vị trí (là một cấu trúc dữ liệu
Trang 13gọn gàng hơn) do đó nâng cao hiệu quả về thời gian và bộ nhớ Thời gian chạy của RepeatFinder phụ thuộc chủ yếu vào bước so sánh các mục với BLAST và yêu cầu bộ nhớ của thuật toán REPuter [16] Yêu cầu bộ nhớ cho cấu trúc cây hậu tố có thể tăng lên vài gigabyte cho các chuỗi genome có kích thước từ trung bình trở lên.
PILER[3] tuân theo một hướng tiếp cận heuristic mới để nhận dạng và mô tả đoạn lặp trong một vùng genome hợp Thuật toán PILER được thiết kế để phân tích một vùng genome hợp và chỉ tìm những họ lặp mà cấu trúc của chúng chính là đặc điểm của các lớp con của các chuỗi lặp đã biết PILER hoạt động với tiền đề toàn bộ chuỗi DNA được hợp lại với một số lỗi nhỏ hợp lý vì thuật toán hoàn toàn phụ thuộc vào vị trí các đoạn lặp trong chuỗi genome cho tất cả sự phân lớp Output của bước phân cụm được ghi lại theo tọa độ bắt đầu và kết thúc Các thành phần tương tự sau đó sẽ được phân cụm thành các “đống” Các đống này thực ra là các tập của các lặp chồng nhau tương tự như các mục trong RepeatFinder Thời gian cần thiết để tạo ra các đống tăng tuyến tính với độ dài của chuỗi genome Các đặc điểm của các thành phần lặp được phân vào một đống sau đó được so sánh với bốn lược tả (profile) được tác giả định nghĩa trước (các mảng lặp theo bộ, các họ lặp rời, pseudosattelite, và các lặp cuối) Chương trình gióng hàng MUSCLE được sử dụng sau đó để sinh ra chuỗi tổng hợp cho mỗi họ lặp tìm ra được trong bước phân loại Những chuỗi tổng hợp này sau đó được sử dụng để tạo ra các thư viện cho RepeatMasker hoặc BLAST để thực hiện tìm kiếm các thành phần lặp hoàn toàn hay bộ phận trong chuỗi genome[3]
Mở rộng xâu: đối với thuật toán được nói đến trong phần này, phân cụm các
k-mer có tần số xuất hiện cao là bước đầu tiên, sau đó triển khai kỹ thuật mở rộng xâu là
bước thứ hai trong quá trình tìm họ lặp
REPuter là một trong các cộng cụ tìm kiếm đoạn lặp đầu tiên sử dụng phương pháp này[7] Tác giả thực hiện một cách tiếp cận thuần toán học, không heuristic để tìm các đoạn lặp Đầu ra của REPfind, mô đun tìm kiếm của REPuter, được xử lý sâu hơn để tìm ra các đoạn lặp suy biến, trong mô hình khoảng cách Hamming (còn gọi là mismatch distance) hay mô hình khoảng cách thêm bớt (edit distance) Tiếp cận theo khoảng cách thêm bớt (hay còn gọi là khoảng cách Levenshtein) sẽ có độ phức tạp về
thời gian là O(n+zk3), trong đó n là độ dài chuỗi và z là số k-mer được phát triển
REPuter phát triển các lặp lớn nhất sang cả hai phía với một số sai khác được định ra
Trang 14trước như một ngưỡng không thể vượt qua.Mỗi một chuỗi tổng hợp riêng biệt sẽ được gán một giá trị E [9] Cụ thể về thuật toán của chương trình này sẽ được nghiên cứu trong chương sau, khi mà phương pháp tôi đưa ra có áp dụng và đề cập đến REPuter RepeatScout[11] sinh chuỗi tổng hợp bằng cách trước hết là tìm ra một tập lặp đi
lặp lại nhiều lần các k-mer có độ dài cố định trong một vùng genome hợp như đã mô tả
ở trên Thuật toán rút ra một trong số mỗi k-mer và vùng xung quanh nó, sau đó mở
rộng một cách tham lam các biên ở cả hai đầu, tạo ra một chuỗi tổng hợp của họ lặp
chứa k-mer đấy RepeatScout xử lý mỗi thành phần lặp sử dụng RepeatMasker để tìm tất cả các thành phần tương tự cho họ lặp và điều chính lại các tần số của các k-mer
khác trong trường hợp bị chồng nhau Tập hợp các chuỗi tổng hợp cuối cùng tìm ra bởi RepeatScout có thể lại được so sánh với các file chứa tọa độ chú thích vùng gene cho các cơ thể sinh vật để lọc ra các họ lặp được đặt trong các vùng gene hay các đoạn
bị nhân đôi (gene duplication) sử dụng một script được đưa ra bởi tác giả
Trang 15Chương 3: Phương pháp đề xuất
Qua tham khảo và đánh giá thực nghiệm các phương pháp và hướng tiếp cận của các công cụ tìm kiếm đoạn lặp đã được chỉ ra ở các phần trước, tôi đề xuất phát triển một chương trình thực hiện tìm kiếm các đoạn lặp rời trên một chuỗi genome hợp Chương trình cũng bao gồm hai bước: tìm ra tập các đoạn lặp ban đầu (sử dụng spaced seeds), sau đó phân cụm các đoạn lặp và xác định ra các họ lặp, đồng thời tìm ra được các chuỗi tổng hợp đại diện cho mỗi họ
Bước thứ nhất sẽ sử dụng thuật toán phát triển xâu của chương trình REPuter, sau khi đã tìm được các lặp lớn nhất bởi module RepeatMatch
Sau đó ở bước hai sử dụng thuật toán phân cụm của RepeatFinder để tìm ra các họ lặp từ tập các đoạn lặp trả về ở bước đầu tiên
Để có cái nhìn tổng quan về phương pháp nghiên cứu, ta hãy tìm hiểu kỹ hơn về các thuật toán trong từng giai đoạn
3.1 Thuật toán tìm kiếm đoạn lặp trong REPuter
Trong phần này ta sẽ tìm hiểu 2 thuật toán mở rộng xâu MMR và MDR, từ đó có
so sánh giữa hai phương pháp và quyết định hướng đi của phương pháp nghiên cứu Dưới đây sẽ sử dụng nội dung được trình bày trong [7] và [8] để giới thiệu 2 thuật toán này
Các ký hiệu và thuật ngữ
Giả sử S là một chuỗi có độ dài |S| = n trong một bộ chữ cái ∑.
- S[i] : chỉ ra ký tự thứ i trong S
- S-1 : chuỗi đảo của chuỗi S.
- S[i][j]: chuỗi con của S, bắt đầu từ ký tự thứ i và kết thúc bởi ký tự j - viết tắt
là (i, j).
Trang 16- S[0] và S[n+1] là 2 ký tự biên của chuỗi, không xuất hiện ở bất kỳ đâu trong
chuỗi S
- Ta nói chuỗi con (i 1 ,j 1 ) chứa (i 2 ,j 2 ) khi i 1 ≤ i 2 và j 2 ≤ j 1
- Một cặp 2 chuỗi con R = ((i 1 ,j 1 ), (i 2 ,j 2 )) là một lặp chính xác
⇔ (i 1, j 1 ) ≠(i 2, j 2) và S[i 1, j 1 ] = S[i 2, j 2]
- Một lặp chính xác được gọi là tối đa nếu S[i 1 -1] ≠S[i 2 -1] và S[j 1 -1] ≠S[j 2-1]
- Khoảng cách Hamming của 2 chuỗi S1 và S2 có độ dài bằng nhau: d H (S 1 , S 2 )
là số vị trí mà ở đó S1 khác S2
- Khoảng cách soạn thảo (edit distance) hay khoảng cách Levenshtein của S1
và S2 ký hiệu là d E (S 1 , S 2 ), cũng chính là số các bước edit nhỏ nhất (chèn, xóa
, sửa) để chuỗi S1 trở thành chuỗi S2
3.1.1 Tìm kiếm các lặp chính xác
Cách tiếp cận chuẩn của việc tính các lặp chính xác tối đa là dựa vào phương pháp băm Thông thường là lập bảng cho mỗi chuỗi DNA w có độ dài cố định r các vị trí
P(w) trong S mà w xuất hiện Với mỗi w và i, j thuộc P(w), i < j, ((i, i+r-1), (j, j+r-1))
là một lặp chính xác với độ dài r Để tìm các lặp chính xác tối đa mà độ dài ít nhất là l,
mỗi lặp chính xác phải được mở rộng sang trái và sang phải để kiểm tra xem nó có được bao trong một lặp chính xác tối đa với độ dài yêu cầu hay không Sự mở rộng được thực hiện bới các phép so sánh ký tự trong bắt cặp chuỗi, và do đó thời gian chạy
không chỉ phụ thuộc vào số lặp chính xác, mà còn vào độ dài của chúng Thực tế, r
khoảng từ 10 đến 13 do giới hạn của kỹ thuật băm Mặt khác, l thường có độ dài ít nhất là 20, vì thế lặp để mở rộng lớn hơn nhiều so với các lặp tối đa thực tế thu được
Vì thế tỷ lệ “hit” thường là thấp, gây lãng phí tài nguyên
Sử dụng cấu trúc suffix tree cho S (mô đun Repeatmatch trong MumMer), chúng ta không cần phải lọc ra số ít các đoạn lặp tối đa từ rất nhiều trường hợp như trên Thay vào đó, chúng ta sử dụng thuật toán của Gusfield để tính trực tiếp các lặp
tối đa với độ phức tạp O(n+z) với z là số lặp tối đa Vì thế thời gian chạy được tối ưu
Trang 17và không phụ thuộc vào độ dài của các lặp Chi tiết về thuật toán và cài đặt có thể tham khảo trong [4][8].
Sau đây chúng ta sẽ nghiên cứu các thuật toán để tìm các lặp suy biến dựa vào 2
mô hình khoảng cách: khoảng cách Hamming và khoảng cách Levenshtein, với
ngưỡng lỗi là k ≥ 0 và ngưỡng độ dài l > 0 đã được cho.
3.1.2 Thuật toán MMR (Maximal mismatches repeat)
Các lặp k-mismatch(k-khác biệt) dựa theo mô hình khoảng cách Hamming Một cặp các xâu con có độ dài bằng nhau R = ((i 1 , j 1 ), (i 2 , j 2)) là một lặp k-khác biệt khi và chỉ khi (i 1 , j 1 ) ≠(i 2 , j 2 ) và dH(S[i 1 , j 1 ], S[i 2 , j 2 ]) = k
Độ dài của R, ký hiệu l(R) = j 1 – i 1 + 1 = j 2 – i 2 + 1
Một lặp k-khác biệt là phủ tối đa nếu nó không bị chứa bới bất kỳ một lặp k-khác biệt khác nào
Vấn đề đặt ra là liệt kê tất cả các lặp k-khác biệt phủ tối đa có độ dài ngắn nhất là l
xuất hiện trong S Thuật toán tìm MMR dựa vào quan sát sau: nếu R = ((i 1 , j 1 ), (i 2 , j 2))
là một lặp k-khác biệt, thì các khác biệt sẽ chia S[i 1 , j 1 ] và S[i 2 , j 2] thành các lặp chính
xác tối đa w 0 , w 1, w k Các lặp chính xác w0 và wk xuất hiện ở 2 biên của các xâu là tối
đa vì R là phủ tối đa; các lặp khác hiển nhiên cũng là tối đa Mà maxi ∊[0,k] |w i| là đạt giá trị nhỏ nhất nếu các cặp ký tự khác biệt được phân phối đều trên R Hiển nhiên rằng
với phân phối đều như thế độ dài của w i lớn nhất, ký hiệu là li max sẽ thỏa mãn:
li max ≥⎾(l-k)/(k+1)⎾= ⎾l/(k+1)⎾
Vì thế, mọi đoạn lặp k-khác biệt R phủ tối đa có độ dài l sẽ chứa một lặp chính xác tối đa với độ dài limax ≥⎾l/(k+1)⎾ Nói cách khác, ta có thể tìm ra các lặp k-khác biệt phủ tối đa bằng cách phát triển các seed có độ dài lớn hơn một ngưỡng nào đấy
Bài toán có thể phát biểu như sau:
Đối tượng: chuỗi genome truy vấn S cùng một danh sách các lặp chính xác có độ dài
vượt quá một ngưỡng cho trước (gọi là các seed).
Trang 18Vấn đề: từ các lặp chính xác (seed), tìm tất cả các cặp lặp với k-khác biệt (tính theo
khoảng cách Hamming) xuất hiện trong chuỗi truy vấn.
Giải pháp : duyệt qua tất cả các seed và kiểm tra mỗi seed xem nó có thể mở rộng
thành một lặp k-khác biệt hay không
Nói một cách chi tiết hơn, với mỗi seed ((i 1 , j 1 ), (i 2 , j 2 )), tính toán các bảng H left và
H right với kích thước k+1 sao cho với mỗi q ∈[0,k]:
H right (q) là số p lớn nhất sao cho dH(S[j 1 +1, j 1 +p], S[j 2 +1,j 2 +p]) = q, tức là S[j 1+1,
j 1 +p] và S[j 2 +1,j 2 +p] bắt cặp với nhau với q khác biệt
Tương tự, Hleft(q) là số lớn nhất p sao cho dH(S[i 1 -p, i 1 -1], S[i 2 -p,i 2 -1]) = q
Sau đó với mỗi q ∈[0,k], kiểm tra xem j 1 – i 1 + 1 + H left (q) + H right (k-q) ≥ l hay không Nếu có, in ra kết quả lặp k-khác biệt phủ tối đa
(i 1 - H left (q), j 1 + H right (k-q)), i 2 - H left (q), j 2 + H right (k-q))
Độ phức tạp chung cho cả thuật toán là O(n+zk)
Mô phỏng thuật toán bởi mã giả được thể hiện như sau:
Thuật toán MMR
INPUT: chuỗi S cùng danh sách L các seed
OUTPUT: danh sách các cặp lặp k-khác biệt
1 for each seed ((i 1 , j 1 ), (i 2 , j 2)) in L
Trang 193.1.3 Thuật toán MDR (Maximal diffrences repeat)
Chúng ta mở rộng kỹ thuật trên bởi việc cho phép thao tác chèn và xóa Một cặp R
= ((i 1 , j 1 ), (i 2 , j 2 )) 2 xâu con là một lặp k-differences (k-hiệu chỉnh) khi và chỉ khi
(i 1 , j 1 ) ≠(i 2 , j 2 ) và dH(S[i 1 , j 1 ], S[i 2 , j 2 ]) = k.
Độ dài của R là l(R) = min(j 1 -i 1 +1, j 2 -i 2 +1) Một lặp k-hiệu chỉnh là phủ tối đa nếu
nó không bị chứa trong bất kỳ một lặp k-hiệu chỉnh nào khác.
Vấn đề tìm kiếm lặp sửa đổi là liệt kê ra tất cả các lặp k-hiệu chỉnh phủ tối đa mà
có độ dài bé nhất là l Thuật toán này cũng dựa vào quan sát như trên, tức là với mỗi lặp k-hiệu chỉnh phủ tối đa R với độ dài l luôn chứa một lặp chính xác tối đa có độ dài
lớn hơn hoặc bằng⎾ l/(k+1)⎾
Đối tượng: chuỗi genome truy vấn S cùng một danh sách các lặp chính xác có độ dài
vượt quá một ngưỡng cho trước ( các seed).
Vấn đề: từ các lặp chính xác (seed), tìm tất cả các cặp lặp với k-hiệu chỉnh (tính
theo khoảng cách Levenshtein) xuất hiện trong chuỗi truy vấn.
Giải pháp : tính toán tất cả các seed và cố gắng mở rộng chúng thành các lặp k-hiệu
chỉnh như trong hình 2
Nói một cách chính xác hơn như sau, với mỗi seed ((i 1 , j 1 ),(i 2 , j 2)) tính các bảng
Eleft và Eright được xác định như sau:
Trang 20E right (q) là tập tất cả các cặp (x r , y r)∈[1,m]x[1,n] sao cho :
dE(S[j 1 +1, j 1 +x r ], S[j 2 +1,j 2 +y r ]) = q tức là S[j 1 +1, j 1 +x r ] và S[j 2 +1,j 2 +y r ] bắt cặp với nhau với q sửa đổi.
Một cách tương tự, E left (q) là tập tất cả các cặp (x l , y l)∈[1,m]x[1,n] sao cho dE(S[i 1
-x l , i 1-1]-1, S[j 1 -x l , j 1-1]-1) = dE(S[i 1 -x l , i 1 -1], S[j 1 -x l , j 1 -1]) = q.
Sau đó với mỗi q∈[0,k], với mỗi cặp (x l , y l)∈Eleft (q) và (x r , y r)∈Eright (k-q) nếu j 1-
i 1 +1 + x r + x l ≥ l và j 2 - i 2 +1 + y r + y l ≥ l thì in ra các lặp k-hiệu chỉnh phủ tối đa:
((i 1 - x l , j 1 + x r ), (i 2 - y l , j 2 + y r))
Hình 2(nguồn [7]) : mở rộng một seed.
Sử dụng thuật toán quy hoạch động chuẩn để mở rộng seeds sẽ có độ phức tạp
theo thời gian O(n2) Tuy nhiên chúng ta có thể sử dụng một thuật toán của Ukkonen
trong bài báo của ông về bắt cặp chuỗi xấp xỉ (1985)[14] để tính E left và E right trong thời
gian O(kn) nhờ tính toán được front(k) của ma trận quy hoạch động Nhờ đó khâu mở