Chuyển đổi Burrows-Wheeler thuâ ̣n

Một phần của tài liệu Ứ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 41 - 47)

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN

2.3 Thuật toán Burrows – Wheeler Tranform (BWT )

2.3.1 Chuyển đổi Burrows-Wheeler thuâ ̣n

Input: Văn bản X gồm n kí tự X[1..n]. trên một bảng chữ cái Σ gồm |Σ| kí tự.

Output: Chuỗi chuyển đổi BWT

Chuyển đổi thuâ ̣n về bản chất liên quan đến việc sắp xếp tất cả các phép quay của xâu đầu vào , nhóm các ký tự xuất hiện trong các ngữ cảnh tương tự la ̣i với nhau . Từng bước xác định chuỗi chuyển đổi BWT được thực hiện như sau:

Bước 1: Thêm kí tự “$” làm kí tự kết thúc của xâu

Bước 2: Xâu cần mã hóa được dịch chuyển vòng tròn và tạo thành một ma trận L*L (với L là độ dài xâu kí tự)

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

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.

Ví Dụ: Xâu đầu vào X = “ATGTAC”

33

Bước 1: Thêm kí tự “$” vào làm kí tự kết thúc xâu. Ta được X‟ = “ATGTAC$”

Bước 2: Dịch chuyển vòng xâu X‟ để nhận được 1 ma trận L * L (L là độ dài xâu)

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

34

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.

Chuyển đổi Burrows Wheeler không làm cho chuỗi “ATGTGC$” ngắn đi, nhưng lại làm xuất hiện các run (xâu gồm các ký tự giống nhau hoặc rất gần với sự

35

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.

Bước 4: Trích xâu từ các kí từ cuối ở mỗi dòng, Đánh dấu 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. Đánh dấu này được ghi nhận thành mảng SA[]

Bước 5: Từ mảng SA[] nhận được từ bước 4, tính ra các kí tự của chuỗi BWT chuyển đổi bằng công thức sau:

36

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 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.

Hình 2.7 Xoay vòng cải tiến xâu X ban đầu

BWT = {

37

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.8 Tính toán giá trị mảng SA[]

Bước 5: Tính giá trị chuỗi chuyển đổi BWT.

38

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 toá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ớ.

Một phần của tài liệu Ứ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 41 - 47)

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

(80 trang)