.5 Ma trận chứa tất cả các phép quay đầu vào của xâu ATGTAC

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng thuật toán burrows wheeler transform trong quá trình giải mã hệ gen lúa tại việt nam (Trang 42)

Bước 3: Sắp xếp lại các dòng của ma trận theo thứ tự từ điển

Hình 2.6 Chuỗi BWT Thu được bằng cách sắp xếp ma trận L * L theo thứ tự từ điển

Cột cuối của ma trận (kí hiệu L) là chuỗi chuyển đổi BWT cần tìm

BWT(“ATGTAC$”) = “CT$ATGA”

Bước 4: Trích xâu từ các kí từ cuối ở mỗi dịng, thơng báo xâu này và cho biết từ gốc là thứ tự thứ mấy trong ma trận nhận được ở bước 2.

Ta có kết quả („CT$ATGA‟,4). Xâu CT$ATGA chính là xâu để thực hiện tìm kiếm trong các bước tiếp theo.

Tuy nhiên, thay vì sử dụng khơng gian O (n2) để lưu trữ ma trận L * L như đã đươ ̣c đề xuất thì ta có thể tạo ra một mảng R[1. . . n] tham chiếu đến các xâu đã được quay trongvăn bản đầu vào T.

Khởi tạo R[i]=i với i = (1, n) để biểu diễn danh sách chưa được sắp xếp . Sau đó nó được sắp xếp bằng cách sử dụng xâu con bắt đầu tại T[R[i]] như là khóa so sánh.

xuất hiện trước đó).

Ƣu điểm: Sự phân cụm này làm cho quá trình tìm kiếm trở nên tập trung theo

từng kí tự và trở nên dễ dàng hơn

Nhƣơ ̣c điểm: Do chuyển đổi Burrows Wheeler làm việc theo phương pháp từng

khới (block-wise), vì vậy nó khơng thể xử lý văn bản theo từng ký tự một , mà phải đọc một khối (thường là hàng chu ̣c KB ) và sau đó nén nó . Điều này không có mô ̣t giới hạn với hầu hết các mục đích, nhưng khơng loa ̣i trừ mơ ̣t sớ ứng du ̣ng phải xử lý dữ liệu xen chương trình chạy (on-the-fly) khi nó đến. Mục đích quan trọng khác là văn bản phải được săp xếp.

Trong suốt luâ ̣n văn này, ta giả thiết viê ̣c sắp thứ tự duy nhất trên các ký tự hoă ̣c các biểu tượng trong văn bản để các xâu con có thể được so sánh bằng các thuậtto án sắp xếp.

Ngoài ra một nhược điểm lớn của phương pháp trên là dung lượng bộ nhớ tốn kém khi phải lưu trữ và sắp xếp ma trận xoay vịng L*L. Văn bản X càng có độ dài lớn thì phương pháp trên càng không khả thi khi thực hiện trên thực tế. Do vậy phương pháp trên đã được cải tiến như sau:

Phƣơng pháp cải tiến:

Bƣớc 1: Cho xâu ban đầu là X. Điền kí tự “$” vào cuối xâu X

Bƣớc 2: Xâu nhận được được hoán vị xoay vịng, đồng thời xóa các kí tự sau kí tự

“$” trong mỗi xâu mới nhận được.

Bƣớc 3: Thực hiện sắp xếp lại các chuỗi nhận được theo thứ tự chữ cái.

X[SA[i] – 1] nếu SA[i] > 0

“$” nếu SA[i] = 0

Ví dụ: X = “agcagcagact”

Bƣớc 1: Thêm kí tự “$” vào cuối xâu X, ta nhận được: X = “agcagcagact$

Bƣớc 2: Xâu nhận được được hốn vị xoay vịng, đồng thời xóa các kí tự sau kí tự “$”

trong mỗi xâu mới nhận được.

Bƣớc 3,4 : Sắp xếp lại các chuỗi nhận được theo thứ tự từ điển. Nhận được mảng SA[]

Hình 2.9 Tính chuỗi chuyển đổi BWT

Như vậy, phương pháp cải tiến để tính tốn chuỗi chuyển đổi BWT tối ưu hơn về mặt thời gian chạy cũng như không gian nhớ.

2.3.2 Chuyển đổi Burrows-Wheeler nghi ̣ch Input: Chuỗi chuyển đổi BWT của văn bản X Input: Chuỗi chuyển đổi BWT của văn bản X Output: Khôi phục lại văn bản X ban đầu

thường hai mảng chỉsố O (n) sẽ cần thiết , cộng với hai mảng O (|Σ|) để đếm các ký tự trong đầu vào. Có nhiều cách để thực hiện viê ̣c giải mã.

Thuật toán chuyển đổi nghịch được thực hiện qua các bước đơn giản như sau: Bước 1: Lấy các kí tự trong xâu cuối cùng , sắp xếp lại theo thứ tự từ điển Bước 2: (Lặp)

- Lấy các kí tự ở xâu cuối cùng, thêm vào các xâu đã có. - Sắp xếp lại theo thứ tự từ điển

Hình 2.10 Minh họa việc giải mã BWT xâu „CT$ATGA‟

Thuật toán kết thúc khi xâu nhận được có đủ độ dài L và xâu văn bản đầu vào là văn bản nhận được cuối cùng khi có kí tự kết thúc “$”. Theo ví dụ trên, văn bản đầu vào tìm được là xâu “ATGTAC$” ở vị trí thứ 2.

Mã giả của phương pháp giải mã:

Def inverseBWT(s):

B = [s1, s2, s3, …., sn]

For I = 1 …n:

Input: Xâu kí tự W, văn bản X

Output: vị trí xuất hiện của xâu W trong văn bản X

Phân tích ví dụ sau: Tìm kiếm những vị trí xuất hiện của chuỗi kí tự W = “gca” trong chuỗi X = “agcagcagact”

B1: Lấy chuỗi kí tự BWT theo phương pháp đã hướng dẫn ở phần trên: Ví dụ:

+ Chuỗi gốc ban đầu: X = “agcagcagact”

+ Thêm kí tự đặc biêt “$” vào làm kí tự kết thúc của chuỗi X: X = “agcagcagact$”

+ Lấy các chuỗi xoay vòng của X, sắp xếp các chuỗi theo thứ tự từ điển + Lấy giá trị kí tự của cột cuối cùng là chuỗi BWT thu được

B2: Tìm kiếm chuỗi W=“gca” trong chuỗi ban đầu X = “agcagcagact$”

Đánh giá: Dựa vào ma trận xoay vòng L * L ta thấy : tất cả các lần xuất hiện

của 1 chuỗi con trong ma trận xoay vịng L*L đều xuất hiện bên cạnh nhau (vì ma trận L*L nhận được là ma trận đã được sắp xếp theo thứ tự từ điển).

Ví dụ: Kí tự “a” xuất hiện trong khoảng hàng [1,4] của ma trận L*L, tương ứng với SA[1,4] = {9,7,4,1}. Điều đó có ý nghĩa, kí tự “a” xuất hiện trong chuỗi ban đầu X tại các vị trí 9, 7, 4, 1

Hình 2.12 Vị trí xuất hiện của kí tự “a” trong chuỗi X =”agcagcagact

Do đó, để tìm vị trí của chuỗi W trong chuỗi X ban đầu, ta xác định 1 khoảng cách :

SA =[ 𝑹 𝑾 , 𝑹 𝑾 ]

Với W=”gca” ta nhận thấy khoảng cách SA được xác định là : SA = [9,10] tương ứng với giá trị {5, 2} trong mảng hậu tố SA. Do đó W=”gca” được xuất hiện trong chuỗi ban đầu X = “agcagcagact $” 2 lần tại vị trí 5 và vị trí 2 như mơ tả dưới:

Hình 2.13 Giá trị SA = [9,10] của chuỗi W=“gca”

Cơng thức tổng qt tính khoảng cách SA[] cho chuỗi W như sau:

𝑹 𝜶𝑾 = 𝑪 𝜶 + 𝑶 𝜶, 𝑹 𝑾 − 𝟏 + 𝟏 𝑹 𝜶𝑾 = 𝑪 𝜶 + 𝑶 𝜶, 𝑹 𝑾

Hình 2.14 Cơng thức tính khoảng cách SA

Nếu W là chuỗi rỗng: R W = 1 và R W = n − 1 ( n là độ dài của chuỗi ban đầu)

C(α): là mảng đánh dấu số lần xuất hiện của những kí tự nhỏ hơn kí tự α trong

bảng chữ cái tại chuỗi X[0,n-2] (Khơng tính kí tự $)

a c g T

C 0 4 7 10

WT t g c c $ g g a a a a c

O(α,i): số lần xuất hiện của kí tự α trong chuỗi WT[0,i]

a c g t 0 0 0 1 0 0 1 1 0 1 1 1 0 2 1 1 0 2 1 1 0 2 2 1 0 2 3 1 1 2 3 1 2 2 3 1 3 2 3 1 4 2 3 1 4 3 3 1

Tính tốn SA với W=”gca”, X=”agcagcagact$” từng bước như sau: B1: W’ = “a” Có 𝑅 "" = 1 và 𝑅 "" = 𝑛 − 1 = 11 C(a) = 0 ta có: 𝑅 "𝑎" = 𝐶 "𝑎" + 𝑂 "𝑎", 𝑅 "" − 1 + 1 = 0 + 𝑂 "𝑎", 0 + 1 = 0 + 0 + 1 = 1 𝑅 "𝑎" = 𝐶 a + 𝑂 a, 𝑅 "" = 0 + 𝑂 a, 11 = 0 + 4 = 4  SA(“a”) = [1,4]

(SA[1,4] = {9,7,4,1} => Cho thấy kí tự “a” xuất hiện tại các vị trí 9,7,4,1 của chuỗi X ) B2: W’ = “ca” = “cW’” 𝑅 "𝑐𝑎" = 𝐶 "𝑐" + 𝑂 "𝑐", 𝑅 "𝑎" − 1 + 1 = 4 + 𝑂 c, 1 − 1 + 1 = 4 + 0 + 1 = 5 𝑅 "𝑐𝑎" = 𝐶 c + 𝑂 c, 𝑅 𝑎 = 4 + 𝑂 c, 4  SA(“ca”) = [5,6]

 (SA[5,6] = {6,3} => Cho thấy kí tự “ca” xuất hiện tại các vị trí 6, 3 của chuỗi X)

= 7 + 𝑂 g, 6 = 7 + 3 = 10

 SA(“gca”) = [9,10]  SA[9,10] = {5,2}

 Cho thấy chuỗi kí tự W = “gca” xuất hiện tại vị trí 5 và 2 trong chuỗi X = “agcagcagact$”.

Kết thúc quá trình tìm kiếm:

+ Mã giả của q trình tìm kiếm chính xác

Backward_Search( P[1, p] )

{

i = p, c = P [ p], First = C [ c]+1, Last = C [ c+1];

while ( ( First ≦ Last) and i ≧ 2 )

{

c = P [ i-1];

First = C[ c] + Occ( c, First-1)+1; Last = C[ c] + Occ( c, Last); i = i-1;

}

if ( Last < First )

then return “no occurrence” ;

else

return ( First, Last ); }

2.3.4 Tìm kiếm có sai khác khơng nhiều hơn z vị trí (Inexact matching) Input: chuỗi gốc ban đầu X Input: chuỗi gốc ban đầu X

Chuỗi tìm kiếm W

Ví dụ: X = “TTAACGTTTATTACGTTTAAGTTTAACCTT”

W= “AACG”

Số lượng sai khác cho phép: z = 2

Ý tƣởng thuật tốn: Thực hiện tìm kiếm chính xác theo kỹ thuật đã được giới thiệu ở

trên từ phải sang trái của chuỗi W xuất hiện trong chuỗi ban đầu X. Khởi tạo 1 ngân sách z. Nếu Quá trình tìm kiếm phát hiện 1 điểm sai khác, ngân sách sẽ được giảm đi 1. Dừng lại khi ngân sách trở về 0 hoặc đã tìm thấy đủ chuỗi W trong X.

Các trường hợp sai khác có thể xảy ra tại 1 kí tự:

+ W được tìm thấy trong X nhưng thừa 1 kí tự (insertion) + W được tìm thấy trong X nhưng thiếu 1 kí tự (deletion) + W được tìm thấy chính xác trong X (match)

+ W được tìm thấy trong X nhưng bị thay đổi 1 kí tự (mismatch)

Để giảm khơng gian tìm kiếm, Inexact matching sử dụng mảng D[] trong đó D (i) là giới hạn dưới của các số sai khác trong W [0… i]

D[i] được tính tốn như sau:

CALCULATED(W)

z  0 j  0

for i = 0 to |W| - 1 do

if W[j…i] is not a substring of X then z  z + 1

j  I + 1 D(i)  z

Ví dụ với chuỗi ban đầu: X = “gaagax” và W=”xag” ta sẽ tính tốn được với vịng lặp từ 0 đến 2 ta có: D(0) = 0, D(1) = 1, D(2) = 1

Tổng quan thuật tốn tìm kiếm Inexact matching được định nghĩa như sau:

InexactSearch(W; z)

{

CalculateD(W)

return InexRecur(W; |W| - 1, z, |X| - 1) }

Trong đó InexRecur(W; i ; z; k; l) trả lại giá trị là khoảng cách SA của chuỗi W trong chuỗi X với số sai khác không quá z sai khác.

W: chuỗi tìm kiếm

i: vị trí đang tìm kiếm W[i] z: số lượng sai khác cho phép

+ Nếu z nhỏ hơn giới hạn dưới của vị trí đang xét thì chương trình dừng. Hàm trả về giá trị null

+ Nếu i < 0, trả về khoảng cách SA cần tìm

+ Khởi tạo I là tập hợp chứa các khoảng cách SA tìm kiếm được.

+ Mỗi kí tự b đang xét b € ∑ = {A, C, G, T}, khoảng cách SA được tính theo cơng thức như đã định nghĩa trong tìm kiếm chính xác:

𝑹 𝜶𝑾 = 𝑪 𝜶 + 𝑶 𝜶, 𝑹 𝑾 − 𝟏 + 𝟏 𝑹 𝜶𝑾 = 𝑪 𝜶 + 𝑶 𝜶, 𝑹 𝑾

Cụ thể ta có:

k = C(b) + O(b, k – 1) + 1 l = C(b) + O(b,l) + 1

+ Khi tìm thấy trong X chèn thêm 1 kí tự của W (insertion), chuyển sang xét kí tự tiếp theo, ngân sách z giảm đi 1 đơn vị

I = I U InexRecur(W, (i-1), (z-1), k, l)

+ Khi tìm thấy trong X mất 1 kí tự của W (deletion), vẫn đứng ở kí tự đang xét, ngân sách z giảm đi 1 đơn vị

I = I U InexRecur(W, i, (z-1), k, l)

+ Khi tìm thấy trong X chính xác W (match), chuyển sang xét kí tự tiếp theo, ngân sách không thay đổi

I = I U InexRecur(W, (i-1), z, k, l)

+ Khi tìm thấy trong X nhưng sai khác 1 kí tự của W (mismatch), chuyển sang xét tiếp kí tự tiếp theo, ngân sách giảm đi 1 đơn vị.

I = I U InexRecur(W, (i-1), (z-1), k, l)

2.4 Kết luận

Trong chương này tác giả đã trình bày ý tưởng và thuật tốn BWT áp dụng trong việc tìm kiếm trên hệ gen tham chiếu trong bài tốn gióng hàng trình tự. Đối với thuật tốn Smith – Waterman khi ứng dụng gióng hàng trên số lượng lớn n read (lên tới hàng triệu read) với một hệ gen reference thì số lượng bài tốn phải giải là n bài toán. Tuy

ra số vị trí sai khác q lớn trong kết quả gióng hàng. Tuy nhiên thuật toán Burrows- Wheeler Transform đã đưa ra giải thuật cho phép giới hạn số vị trí sai khác trong mỗi lần chạy, từ đó kết quả gióng hàng vị trí các read vào hệ gen tham chiếu reference chính xác và hiệu quả hơn.

CHƢƠNG 3 : ỨNG DỤNG THUẬT TOÁN BWT VÀ THỬ NGHIỆM TRÊN DỮ LIỆU SINH HỌC

Tại chương hai của luận văn, tác giả đã trình bày về cơ sở lý thuyết và thuật toán BWT. Để hiểu sâu hơn về mặt ứng dụng của thuật toán, tác giả sẽ giới thiệu chương ba với các kết luận cụ thể về mặt thực nghiệm của thuật toán trên dữ liệu sinh học.

3.1 Quy trình thực nghiệm

Mô phỏng phần thực nghiệm bao gồm các bước sau:

Bƣớc 1: Lựa chọn hệ gen tham chiếu

Bƣớc 2: Giả lập dữ liệu và lựa chọn dữ liệu thực nghiệm

Bƣớc 3: Sử dụng công cụ đã xây dựng – BWTAligner để gióng hàng trình tự trên

dữ liệu giả lập và dữ liệu thực nghiệm

Bƣớc 4: Sử dụng công cụ thông dụng BWA để gióng hàng trình tự trên dữ liệu

giả lập và dữ liệu thực nghiệm

Bƣớc 5: Đánh giá kết quả SNP chạy trên dữ liệu giả lập của 2 phần mềm

BWTAligner và BWA

Bƣớc 6: Đánh giá kết quả SNP chạy trên dữ liệu thực nghiệm của 2 phần mềm

Hình 3.1 Mơ phỏng nhiệm vụ thực nghiệm trong chương 3

Các báo cáo chi tiết của phần thực nghiệm sẽ được trình bày tại các mục tiếp theo của chương 3.

3.2 Cài đặt ứng dụng

Input : Hệ gen tham chiếu (reference genome)

Hệ gen dữ liệu (reads) – là dữ liệu giả lập và dữ liệu thực nghiệm sẽ được mô tả chi tiết trong mục chuẩn bị dữ liệu 3.2

Output : Đưa ra kết quả tìm kiếm Inexact matching của các đoạn dữ liệu reads

trên hệ gen tham chiếu (reference genome)

Hình 3.2 Ví dụ mơ phỏng mục tiêu của ứng dụng

Cùng với sự cộng tác của các thành viên trong phòng Tin – Sinh học, Viện Công nghệ sinh học, Viện Hàn lâm Khoa học và Công nghệ Viêt Nam, chúng tôi đã xây dựng thành cơng cơng cụ gióng hàng trình tự BWTAligner sử dụng thuật tốn BWT đã được giới thiệu chi tiết tại chương 2.

Công cụ BWTAligner được cài đặt trên máy chủ (server) của phịng Tin - Sinh học, Viện Cơng nghệ sinh học (IBT), Viện Hàn lâm Khoa học và Cơng nghệ Viêt Nam (VAST). Các trình biên dịch như perl, C++, thư viện và công cụ cần thiết cũng được

Hệ điều hành Ubuntu 14.10 HDD 6 TB SSD 120 GB CPU X5650 @ 2.67 GHz; 24 processors RAM 198 GB

Bảng 3.1 Thông tin về máy chủ được sử dụng để cài đặt thử nghiệm

3.3 Chuẩn bị dữ liệu

a. Hệ gen tham chiếu

Để tìm kiếm các biến dị trên hệ gen, quá trình thực nghiệm sử dụng phần mềm đã được nhóm xây dựng là BWTAligner và phần mềm BWA (Burrows -Wheeler Aligner) để gióng hàng trình tự. Hệ tham chiếu – định nghĩa tại mục 1.3.3 - được chọn là hệ gen lúa Nipponbare, bản 7.0 từ Dự án chú giải hệ gen lúa (kích thước hệ gen tham chiếu là 373,245,519 bp).

Hệ gẹ Nipponbare được lựa chọn là hệ gen được nghiên cứu bởi các nhà khoa học Nhật Bản. Có nhiều bài báo được công bố, cũng như nhiều nghiên cứu khoa học khác trên thế giới cũng đã lựa chọn và sử dụng hệ gen Nipponbare làm hệ gen tham chiếu. Hệ gen Nipponbare là hệ gen duy nhất được chú giải hoàn toàn chức năng hệ gen tính đến đầu năm 2014. Do vậy hệ gen Nipponbare là hệ gen tham chiếu phù hợp được lựa chọn để tiến hành thực nghiệm.

b. Dữ liệu giả lập

Dữ liệu giả lập là dữ liệu được trích chọn một phần từ hệ gen tham chiếu. Dữ liệu giả lập sẽ được thay đổi sai ngẫu nhiên một số vị trí Nucleotid rồi đưa vào chạy gióng hàng trình tự bởi hai cơng cụ BWTAligner và BWT. Kết quả thu được sau khi gióng hàng trình tự sẽ được đem kiểm chứng với giả thiết trước đó và đưa ra đánh giá hiệu quả của phần mềm.

Dữ liệu giả lập lựa chọn nhiễm sắc thể số 9 của hệ gen tham chiều (kích thước 23,012,720 bp). Dữ liệu đã được thay đổi ngẫu nhiên 0.085% SNP. Để đánh giá phần mềm gióng hàng, dữ liệu được giả lập các độ sâu (depth coverage) khác nhau là 5X, 10X và 30X với chất lượng trình tự tốt .

Các thông số giả lập dữ liệu được thể hiện qua bảng dưới đây :

Thông số Giá trị Tỷ lệ lỗi base 0.020 Tỷ lệ đột biến 0.085%

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng thuật toán burrows wheeler transform trong quá trình giải mã hệ gen lúa tại việt nam (Trang 42)

Tải bản đầy đủ (PDF)

(80 trang)