4- NGÀY HOÀN THÀNH NHI ỆM VỤ :
2.3. Các phương pháp giải quyết bài toán so sánh trình tự
Hiện nay đã có nhiều cách tiếp cận khác nhau của các nhà nghiên cứu về vấn đề này, Pairwise Sequence Alignment-PSA đã được giải quyết khá triệt để, tuy nhiên bài toán Multiple Sequence Alignment-MSA dựa trên phương pháp đánh giá Sum-of-Pair vẫn còn là một vấn đề để ngỏ.
Wang và Jiang [32] đã chứng minh rằng việc tìm kiếm phép Alignment tối
ưu cho bài toán Multiple Alignment là bài toán NP.
Đã có nhiều mô hình, thuật giải được áp dụng để giải quyết bài toán này: Kỹ thuật quy hoạch động(Dynamic Programming), sử dụng mô hình Markov ẩn (Hidden Markov Model), các kỹ thuật tìm kiếm cục bộ(Local Search)…. Hầu hết các phương pháp giải quyết rất tốt bài toán PSA. Tuy nhiên vì MSA là bài toán NP nên các kỹ thuật đưa ra đều không thể đánh giá chính xác về mức độ tốt xấu của từng giải thuật, mỗi giải thuật sẽ có ưu điểm trong từng trường hợp cụ thể [6], [28], [35].
Việc giải quyết bài toán được chia thành 2 hướng:
Phương pháp tính toán chính xác, tìm ra MSA tối ưu Phương pháp tính toán gần đúng tìm ra MSA cận tối ưu.
Phương pháp tính toán chính xác: bao gồm phương pháp quy hoạch động tổng quát(Needleman-Wuns)[22], và một số giải pháp phần cứng.
Phương pháp tính toán cận tối ưu: Phương pháp này sử dụng các tiếp cận heuristic để giải quyết bài toán trên tập dữ liệu lớn theo hướng tìm ra các lời giải cận tối ưu, có thể chấp nhận được về độ chính xác cũng như thời gian và không gian bộ nhớ sử dụng. Phương pháp này chia thành 2 nhóm:
Progressive Algorithm Iterative Algorithm
Progressive Algorithm: về cơ bản phương pháp này vẫn dựa trên nền tảng của dynamic programming. Ý tưởng của Progressive Algorithm là tìm MSA gần tối ưu thông qua việc align các sequence với nhau, dựa trên việc áp dụng bài toán PSA lặp đi lặp lại nhiều lần. Ưu điểm của phương pháp này giúp tìm lời giải nhanh hơn. Chi tiết về phương pháp này sẽ đề cập trong chương 3. Một số chương trình hiện thực theo
phương pháp này: CLUSTALW, MULTALIGN, PILEUP, BLAST, FASTA. MULTAL, DIALIGN.
Iterative Algorithm:Ý tưởng của các giải thuật theo phương pháp này là : đầu tiên sẽ xây dựng một MSA mà không quan tâm đến độ tốt xấu, sau đó sẽ cải thiện chất lượng của MSA này theo thời gian thông qua các bước lặp.
Một số các giải thuật theo phương pháp này: Giải thuật di truyền, Mô hình Markov ẩn.
So sánh Progressive Algorithm và Iterative Algorithm: Cả 2 phương pháp đều có ưu điểm và khuyết điểm, tùy theo điều kiện cũng như yêu cầu cụ thể mà chúng ta có thể lựa chọn phương pháp hợp lý nhất.
Iterative Algorithm thông thường cho lời giải có độ chính xác cao hơn tuy nhiên trong một số trường hợp, phương pháp này có thể cho ra các lời giải không tốt. Iterative Algorithm đòi hỏi thời gian tính toán cao, một số trường hợp giải thuật có thể cho thời gian tính toán cao hơn so với cách tiếp cận theo phương pháp tính toán chính xác của Needlman-Wuns(Nicholas, 2002)[23]. Đây là một trong những nhược điểm lớn của phương pháp này.
Hình 2.10 Mối tương quan giữa các chương trình hiện thực cho các phương pháp. 2.3.1. Phương pháp Quy hoạch động(Dynamic Programming)
Đây là phương pháp phổ biến và cơ bản nhất để tiếp cận bài toán so sánh trình tự. Kỹ thuật dynamic programming giải quyết bài toán dựa trên lý thuyết về Edit distance được đưa ra bởi Vladimir Levenshtein, khoảng cách này định nghĩa số các thao tác nhỏ nhất để có thể chuyển đổi một chuỗi trình tự này thành một chuỗi trình tự khác. Edit distance có thể biểu diễn cho quá trình tiến hóa của một đoạn gene, DNA, protein
UPGMA Multalign, Pileup NJ ClustalW GA Saga HMM Hmmt Iterative Progressive Mutal Dialign
theo thời gian. Điều này hoàn toàn hữu dụng cho lý thuyết về so sánh trình tự. Kỹ thuật dynamic programming có thể tính được edit distance. Bằng việc xây dựng các ma trận đánh giá k chiều với mỗi chiều của ma trận tương ứng với một trong k trình tự của bài toán, phương pháp dynamic programming có thể tìm ra được giá trị hàm đánh giá tối ưu cho ma trận này, từ đó sử dụng kỹ thuật lưu vết để tìm ra được phép so sánh nhiều trình tự tối ưu nhất.
Needleman-Wuns đã xây dựng phương pháp tìm MSA tối ưu của k sequence dựa trên việc tổng quát hóa giải thuật quy hoạch động cho 2 sequence. Trong giải thuật này các tác giả đã thay thế việc tính toán điền các giá trị cho ma trận 2 chiều bằng ma trận
n chiều. Giải thuật phụ thuộc vào số sequence, chiều dài cũng như sự khác biệt của các sequence. Giải thuật này đòi hỏi độ phức tạp là hàm số mũ theo chiều dài và số trình tự
( )nk
θ . Trong thực tế việc hiện thực giải thuật này đòi hỏi chi phí tiêu tốn rất cao về mặt thời gian cũng như bộ nhớ sử dụng. Khi n và k đủ lớn việc thực thi giải thuật là không thực tế. Một mini-supercomputer với 4GB bộ nhớ có thể align 20 sequence thuộc nhóm phospholipase A2, mỗi sequence có khoảng 130 amino acid[23]. Đã có một số phương pháp cải thiện giải thuật của Needleman-Wuns, bằng cách áp dụng heuristic vào giải thuật này, tuy nhiên vẫn có hạn chế về giá trị của n, k.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 G A A T T C G G A T C 2 2 5 4 3 1 0 -1 1 3 5 3 2 -1 -3 -1 1 3 4 0 -2 -2 -2 -1 1 2 -1 -1 -1 -1 0 5 4 3 1 0 -1 1 3 5 3 2 -1 -3 -1 1 3 4 0 -2 -2 -2 -1 1 2 -1 -1 -1 -1 0
Hình 2.11 Phương pháp tính toán chính xác bằng dynamic programming 2.3.2. Sử dụng các thiết bị phần cứng
Phương pháp sử dụng thiết bị phần cứng để hiện thực hóa kỹ thuật dynamic programming, hoặc sử dụng các thiết bị phần cứng để song song hóa, chia nhỏ bài toán. Các phương pháp này sẽ giúp thực thi bài toán nhanh hơn tuy nhiên cả hai phương pháp này đều đòi hỏi chi phí quá cao.
2.3.3. Phương pháp tìm kiếm cục bộ(Local Search)
Các kỹ thuật tìm kiếm cục bộ sử dụng các kỹ thuật lặp với các tham số đầu vào xác định, giải quyết bài toán so sánh nhiều trình tự theo hướng tìm ra lời giải gần tối ưu nhất dựa trên các bước di chuyển tốt của của mỗi trạng thái của lời giải so với các trạng thái xung quanh nó trong mỗi vòng lặp xác định. Chủ yếu được sử dụng cho việc giải quyết bài toán so sánh theo hướng toàn cục. Phương pháp này có ưu điểm thừa kế được các ưu điểm của các giải thuật tìm kiếm cục bộ: giảm không gian tìm kiếm của lời giải, tốc độ tìm kiếm nhanh…, tuy nhiên do phương pháp tìm kiếm cục bộ chỉ đảm bảo tính đúng(sound) chứ không đảm bảo tính đầy đủ(complete), và do việc lựa chọn các bước đi để thoát khỏi tình trạng tối ưu cục bộ là ngẫu nhiên nên có thể thuật toán sẽ không tìm ra được lời giải tốt trong một số lần chạy(phụ thuộc vào việc ấn định các tham số đầu vào). Một số giải thuật : Tabu Search, Simulated Annealing(giải thuật luyện kim).
2.3.4. Sử dụng giải thuật Di truyền(Genetic Algorithm)
Phương pháp sử dụng thuật giải di truyền cho bài toán so sánh nhiều trình tự là một phương pháp phù hợp với bản chất sinh học [34]. Ý tưởng tạo ra một quần thể các alignment sau đó chọn ra các lời giải tốt nhất có thể. Phương pháp này tạo dựng một quần thể các phép so sánh trình tự từ các phép toán cơ bản của sinh học, lai tạo, đột biến và cố gắng cải thiện hàm thích nghi của quần thể các phép so sánh trình tự. Phương pháp này cho kết quả tốt, tuy nhiên hạn chế của phương pháp này là thời gian tính toán lớn(đặc điểm chung của giải thuật di truyền). Một số phần mềm:
SAGA(Notredame và Higgins, 1996)[24].
2.3.5. Sử dụng Mô hình Markov ẩn(Hidden Markov Model-HMM).
Áp dụng mô hình Markov ẩn để mô hình hóa bài toán so sánh nhiều trình tự. Ý tưởng của phương pháp này là sử dụng mô hình Markov ẩn để biểu diễn MSA(được giới thiệu bởi Eddy(1995) [8]), sau đó tối ưu khả năng mà một mô hình HMM có thể biểu diễn cho các sequence đã được align. Trong mô hình này các nucleotide(A,C,T,G) hoặc 23 amino acid sẽ là tập các ký tự. Các trạng thái của mô hình sẽ thuộc 3 loại trạng thái: match, insert, delete. Mỗi ký tự sẽ có 1 xác suất xuất hiện nhất định tại mỗi trạng thái. Giữa các trạng thái sẽ có xác suất chuyển đổi từ trạng thái này sang trạng thái khác. Dựa trên mô hình này mỗi chuỗi trình tự bất kỳ trong
sinh học sẽ được sinh ra bằng một con đường tập các trạng thái. Tập hợp các trạng thái của các chuỗi trình tự trong mô hình HMM sẽ là 1 kết quả của bài toán so sánh nhiều trình tự. Và như vậy bài toán so sánh nhiều trình tự sẽ trở thành bài toán tìm xác suất điều kiện cực đại của các chuỗi trình tự khi biết mô hình.
Hình 2.12 Mô hình Markov cho bài toán MSA.
Hình trên minh họa quá trình sinh ra một kết quả của phép so sánh giữa 2 trình tự từ mô hình Markov. Trạng thái match được biểu diễn bằng các hình chữ nhật, trạng thái insert được biểu diễn bởi các hình thoi, trạng thái delete được biểu diễn bởi các hình tròn.
Bài toán tìm xác suất cực đại của các chuỗi trình tự trong mô hình có thể được giải quyết bằng nhiều kỹ thuật: giải thuật Viterbi, Forward-Backward Algorithm, Baum-Welch Algorithm…
Khác với các phương pháp ở trên phụ thuộc vào cơ chế đánh giá(hàm đánh giá). Mô hình HMM sẽ xây dựng bài toán so sánh nhiều trình tự dựa trên chính bản thân thông tin của các trình tự, sự biến đổi của các thông số đánh giá sẽ do chính bản thân các trình tự quyết định. Phần mềm hiện thực theo phương pháp này: HMMT.
Ngoài các phương pháp được trình bày ở trên, vẫn còn một số phương pháp tiếp cận khác để giải quyết bài toán như mạng Neuron …
Tựu trung lại các phương pháp đều có điểm mạnh và điểm khuyết của chúng trong việc giải bài toán so sánh nhiều trình tự. Tuy nhiên như tôi đã trình bày không một phương pháp nào có thể gọi là hoàn hảo và chiếm ưu thế tuyệt đối, tất cả các phương pháp đều hướng đến việc tìm ra một lời giải gần tốt nhất với khoảng thời gian
A1 A2 A3 − A4 − A5
hợp lý, thay vì hướng đến việc tìm ra lời giải tốt nhất với một khoảng thời gian của một bài toán NP. Trong các phương pháp trên phương pháp dynamic programming là phương pháp ra đời sớm nhất, rất hiệu quả với bài toán so sánh 2 trình tự(PSA), tuy nhiên lại không thật sự tốt với bài toán MSA có dữ liệu lớn, điều này có thể được khắc phục nếu tiếp cận thuật giải theo hướng Progressive Algorithm, xây dựng một sự cải tiến bằng cách kết hợp các kỹ thuật heuristic trong quá trình xử lý, giảm thiểu không gian tìm kiếm, loại bỏ cách tiếp cận dynamic programming truyền thống(xây dựng ma trận đánh giá k chiều), đưa về bài toán xử lý dựa trên việc đánh giá tất cả các bài toán so sánh 2 trình tự được sinh ra từ các trình tự của bài toán MSA. Phương pháp dựa trên Progressive Algorithm này sẽ cho phép giảm độ phức tạp của giải thuật, tăng tốc độ tính toán, giúp tìm kiếm lời giải trong khoảng thời gian ngắn, mà vẫn đáp ứng được lời giải gần tốt nhất trong hầu hết các trường hợp. Trong phạm vi nghiên cứu của mình tôi xin đề xuất phương pháp thực hiện này cho việc giải quyết bài toán MSA. Giải pháp
Chương 3. CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP THỰC HIỆN
Chương này xin được giới thiệu về phương pháp quy hoạch động, phương pháp Progressive Algorithm sử dụng heuristic dựa trên quy hoạch động để giải bài toán.
3.1. Giới thiệu về Dynamic Programming
Dynamic Programming [7] là phương pháp giải bài toán bằng cách kết hợp các lời giải của các bài toán con. Đặc điểm của giải thuật dynamic programming:
Các bài toán con không độc lập với nhau: chúng có chung các bài toán con nhỏ hơn.
Giải mỗi bài toán con chỉ một lần, và ghi nhớ lời giải đó trong một bảng để truy cập khi cần đến.
Một giải thuật dynamic programming được xây dựng qua bốn bước: 1. Xác định cấu trúc của một lời giải tối ưu.
2. Định nghĩa đệ quy cho giá trị của một lời giải tối ưu.
3. Tính giá trị của một lời giải tối ưu từ dưới lên (“bottom-up”). 4. Xây dựng lời giải tối ưu từ các thông tin đã tính.
Trong phần này, xin được trình bày tổng quan cách tiếp cận bằng kỹ thuật dynamic programming cho vấn đề so sánh trình tự, từ bài toán so sánh 2 trình tự PSA đến bài toán so sánh nhiều trình tự MSA [25], [27], [30]. Phần trình bày này chỉ xét đối với phép toán Global Alignment.
Vì bài toán PSA chính là nền tảng cho kỹ thuật dynamic programming giúp giải quyết bài toán MSA, nên trong phần đầu tôi sẽ trình bày về bài toán cơ bản PSA.
3.2. Bài toán PSA và cách giải quyết bằng kỹ thuật quy hoạch động hoạch động
Phần 2.1.3 đã giới thiệu về bài toán PSA. Phần này sẽ giới thiệu hướng giải quyết bài toán này bằng quy hoạch động.
Kỹ thuật này sẽ cho phép chúng ta xây dựng một phép alignment tối ưu.
Xét 2 chuỗi trình tự S1 và S2, |S1|=n, |S2|=m, mục đích của chúng ta là tìm kiếm một phép alignment tối ưu cho S1 và S2.
3.2.1. Giải thuật quy hoạch động cho bài toán PSA
Định nghĩa 3.1: Xét định nghĩa về 1 cơ chế đánh giá như sau
Nếu a và b là 2 ký tự đại diện cho các amino acid(nucleotide) trong 2 trình tự. Gọi σ( , )a b là hàm đánh giá của cặp a, b trong trong ma trận đánh giá Hàm giá trị của gap phụ thuộc vào hằng số r>0 và chiều dài k
(γ( )k = −r k* ).
T là một chuỗi, ta định nghĩa |T| là chiều dài của chuỗi T.
Giá trị của phép alignment A của 2 chuỗi S1, S2 với kết quả S’1, S’2:
1 1 2 2 ( '[ ], '[ ]) * σ ∈ − ∑ i K S i S i l r
với K1 là tập các phần tử không là gap, |K1|=l1, l2 là tổng chiều dài của
gap, ' '
1 2 | 1| | 2 |
l + = =l l S = S
Phép alignment tối ưu là phép alignment có giá trị lớn nhất có thể có của 2 chuỗi.
Định nghĩa 3.2: Gọi S(i,j) là giá trị của một phép alignment tối ưu của chuỗi
S1i(S1[1],.., S1[i]) và S2j (S2[1],..,S2[j])( 1≤ ≤i n,1≤ ≤j m) như vậy S(n,m) sẽ là giá trị của một phép alignment tối ưu của S1 và S2. S(i, j) được định nghĩa như sau:
S(0, 0)=0
S(i,0)=S(i-1,0) -r, i>0
S(0,j)=S(0,j-1) -r, j>0
Từ định nghĩa của S(i, j) ta sẽ có công thức tính S(i, j) như sau:
S(i,j)= max { S(i-1, j-1) + σ( [ ], [ ])S i S j1 2 , S(i-1, j) - r ,
S(i, j-1) - r } i>0, j>0
Trong đó S(i-1, j-1) chính là giá trị của một phép alignment tối ưu của 2 chuỗi
S1i(S1[1],.., S1[i-1]) và S2j(S2[1],…,S2[j-1])
Công thức S(i,j) ở trên cho phép ta dễ dàng vận dụng kỹ thuật quy hoạch động.
Ví dụ: Xét 2 chuỗi “ACBCDB” và “CADBD” Hàm đánh giá : ( , ) 2 1 a b a b a b σ = ⎨⎧− =≠ ⎩ Cho r=1
Ta thu được ma trận giá trị S(i,j) của 2 chuỗi trình tự như hình dưới j 0 1 2 3 4 5 i C A D B D 0 0 -1 -2 -3 -4 -5 1 A -1 -1 1 0 -1 -2 2 C -2 1 0 0 -1 -2 3 B -3 0 0 -1 2 1 4 C -4 -1 -1 -1 1 1 5 D -5 -2 -2 1 0 3 6 B -6 -3 -3 0 3 2
Từ ma trận kết quả này ta có S(6,5)=2. Như vậy giá trị của phép alignment tối ưu của 2 chuỗi trên là 2. Từ kết quả này ta sẽ đi tìm các phép alignment tối ưu mà cho