1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lp rap de novo trong gii tinh t gene

26 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 1,23 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

2 LỜI MỞ ĐẦU Trong bài này, tôi sẽ trình bày phương pháp lắp ráp các đoạn reads rời rạc thành một đoạn ADN hoàn chỉnh sử dụng phép duyệt rộng cũng như duyệt sâu để tìm kiếm tất cả đường

Trang 1

LẮP RÁP DE NOVO TRONG GIẢI TRÌNH TỰ GENE

THẾ HỆ TIẾP THEO

THÀNH PHỐ HỒ CHÍ MINH, THÁNG 6, NĂM 2016

GIẢNG VIÊN HƯỚNG DẪN: PSG TS Phạm Thế Bảo

SINH VIÊN THỰC HIỆN: Võ Hoàng Trọng

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA TOÁN – TIN HỌC

ĐỀ TÀI MÔN XỬ LÝ ĐA CHIỀU

Trang 2

1

MỤC LỤC

LỜI MỞ ĐẦU 2

1 GIỚI THIỆU 3

1.1 Tổng Quan về ADN và Gene 3

1.2 Trình Tự Thế Hệ Gene Đầu Tiên 4

1.3 Trình Tự Thế Hệ Gene Tiếp Theo 5

1.4 Xử Lý Dữ Liệu 6

2 THUẬT TOÁN LẮP RÁP BẰNG ĐỒ THỊ DE BRUIJN 6

2.1 Cơ Sở Lý Thuyết 6

2.2 Xây Dựng Đồ Thị de Bruijn 7

2.3 Áp Dụng Đồ Thị de Bruijn vào Lắp Ráp Gene 8

2.3.1 Xây Dựng Đồ Thị dựa trên 𝑘_𝑚𝑒𝑟 8

2.3.2 Kết Quả Thực Nghiệm 13

2.3.3 Xây Dựng Đồ Thị dựa trên 𝑘_𝑚𝑒𝑟 Kép 14

3 THỬ THÁCH 18

4 HƯỚNG PHÁT TRIỂN TIẾP THEO 19

5 TÀI LIỆU THAM KHẢO 20

PHỤ LỤC 1: KHẢO SÁT THỜI GIAN CHẠY CHƯƠNG TRÌNH SỬ DỤNG BFS VÀ 𝑘_𝑚𝑒𝑟 ĐƠN 21

Trang 3

2

LỜI MỞ ĐẦU

Trong bài này, tôi sẽ trình bày phương pháp lắp ráp các đoạn reads rời rạc thành một

đoạn ADN hoàn chỉnh sử dụng phép duyệt rộng cũng như duyệt sâu để tìm kiếm tất

cả đường đi Euler trên đồ thị de Bruijn, đánh giá ưu, nhược điểm của phương pháp và

đề xuất hướng nghiên cứu tiếp theo

Nội dung của bài này gồm 6 phần:

- Phần 1: Giới thiệu những kiến thức cơ bản về ADN cũng như trình tự thế hệ

gene đầu tiên và tiếp theo, cách xử lý dữ liệu trên trình tự gene thế hệ tiếp theo

- Phần 2: Trình bày cơ sở lý thuyết của phương pháp sử dụng đồ thị de Bruijn,

cách lắp ráp chuỗi ADN sử dụng đồ thị này kết hợp với phép duyệt rộng hoặc

duyệt sâu Ngoài ra, phần này còn trình bày thêm một phương pháp khác có thể

lắp ráp nhanh hơn phương pháp đề ra trong lý thuyết

- Phần 3; Trình bày một số thử thách thực tế khi lắp ráp

- Phần 4: Trình bày hướng phát triển tiếp theo của đề tài này

- Phần 5: Giới thiệu một số tài liệu tham khảo mà tôi đã sử dụng phục vụ cho đề

Trang 4

3

1 GIỚI THIỆU

1.1 Tổng Quan về ADN và Gene

Vì sao mỗi loài vật là có những đặc điểm riêng biệt? Trong cùng một bộ Linh trưởng, con người khác con đười ươi ở những điểm nào? Nếu chỉ nhìn vào những đặc điểm bên ngoài thì ta không khó để trả lời những câu hỏi này, nhưng đối với các nhà khoa học thì họ muốn tìm hiểu sâu xa hơn thế, họ muốn tìm hiểu sâu hơn cái gì đã tạo nên hình dạng bàn tay con người khác với tay con đười ươi, hay trong những bộ phim viễn tưởng có những cảnh con chuột biến thành con người, điều này trong Sinh học có thể xảy ra hay không?

Vào thế kỷ 20, người ta đã khám phá ra ADN, một khám phá có ý nghĩa rất quan trọng trong khoa học ADN ta có thể hiểu nôm na là một thứ chứa thông tin di truyền, bàn tay người khác với bàn tay đười ươi là do cấu trúc ADN của tay người khác với tay đười ươi, giống như 2 chương trình máy tính khác nhau là do 2 mã nguồn tạo nên chương trình đó khác nhau vậy Mỗi loài trên Trái Đất này đều có một trình tự ADN riêng biêt (giống như dấu vân tay ở mỗi người), điều này tao nên nét độc đáo ở mỗi sinh vật Do đó, muốn biến con chuột thành con người, ta chỉ việc biến cấu trúc ADN của chuột thành cấu trúc ADN của người (đương nhiên tôi chỉ nói về lý thuyết) Nếu nói về khái niệm ADN thuần tuý khoa học thì đây là một phân tử Acid nucleic, ADN là tên viết tắt của từ Acid Deoxyribonucleic (một số nước gọi là DNA – Deoxyribonucleic Acid), phân tử này được tạo từ 4 base cơ bản là Adenin (A), Cytosine (C), Guanine(G) và Thymine (T) Trong tế bào, ADN có dạng chuỗi xoắn kép (tức 2 nhánh ADN xoắn lại với nhau), chuỗi này được liên kết bằng mỗi liên kết hydro, trong đó base A liên kết với base T và base G liên kết với base C

Trang 5

4

Hình 1.1 Cấu trúc dạng xoắn kép của phân tử ADN trong tế bảo, 2 nhánh đơn liên

kết với nhau bằng mối liên kết hydro (A – T, G - C) Nguồn ảnh: www.iptv.org Gene là một đoạn ADN nhằm quy định một chức năng nào đó, ví dụ như gene quy định màu tóc, màu mắt, kích thước bàn tay chẳng hạn

Khái niệm ADN và gene đơn giản vậy thôi, thế nhưng tại sao các nhà khoa học là bỏ nhiều thời gian từ ngày này sang ngày khác để nghiên cứu về nó? Vì nghiên cứu về gene (cũng như ADN) có nhiều ứng dụng cho đời sống con người Ví dụ như con người hễ ai mang căn bệnh ung thư thì điều đó đồng nghĩa với một “án tử” dành cho

họ Cho đến nay, bệnh ung thư vẫn chưa có một phương pháp hay liều thuốc nào trị triệt để Tuy nhiên, loài cá mập lại có một khả năng đặc biệt: Chúng miễn dịch với tất

cả các loại bệnh, kể cả ung thư Điều gì đã khiến loài cá mập có khả năng này? Cấu trúc gene nào trong loài cá mập quy định khả năng đó? Nếu ta biết cách “cấy” cấu trúc gene đó ra và “ghép” những tế bào bị ung thư thì quá tuyệt diệu Hay ta có thể tìm hiểu các chức năng của gene người thông qua gene tương tự của ruồi hay thậm chí là vi khuẩn

1.2 Trình Tự Thế Hệ Gene Đầu Tiên

Năm 1977, Frederick Sanger lần đầu tiên xác định được trình tự gene vi khuẩn 𝜑𝑋174 bằng phương pháp do ông tìm ra – phương pháp Sanger Ta có hiểu đơn giản cách của ông làm đó là sao chép gnene này thành 4 phần, cho vào 4 hũ A, C, G, T, mỗi hũ có nhiệm vụ phát hiện base tương ứng trong gene, khi phát hiện ra, hũ đó sẽ tạo phản ứng chuỗi trùng hợp (PCR) bằng phóng xạ lên một bản gel Cuối cùng, ta sẽ được bản gel chứa các vạch là vị trí của mỗi base trong ADN Ví dụ với chuỗi ATGCTCAG, sau phản ứng, ta được bản gel sau:

Trang 6

5

Hình 1.2 Ảnh bản gel sau phản ứng

Từ hình 1.2, ta đọc từ dưới lên sẽ thấy trình tự xác vạch suất hiện ứng với base tương ứng là A, T, G, C, T, C, A, G → ATGCTCAG

Phương pháp này trong một lần chạy có thể xác định được 500 base nhưng có hạn chế

là tốc độ chậm, chi phí cao (Vào năm 2004, chi phí để xác định trình tự gene vào khoảng 10 triệu USD) và độ chính xác phụ thuộc vào vật liệu phóng xạ Do đó, nếu sử dụng phương pháp Sanger để xác định trình tự gene người (khoảng 3 tỷ base) và dùng

96 chiếc máy trình tự thì mỗi lần chạy, ta được 48 000 base Do đó, ta cần chạy 96 chiếc máy này 62 500 lần, nếu lấy 1 ngày chạy 10 lần (1 lần chạy khoảng 2 tiếng) thì phải đến 17 năm sau ta mới có kết quả

Vì vậy, các nhà khoa học phải tìm một phương pháp xác định trình tự mới sao cho tốc

độ xác định nhanh với chi phí thấp

1.3 Trình Tự Thế Hệ Gene Tiếp Theo

Nếu phương pháp Sanger xác định trình tự toàn bộ gene trong một lần chạy gây tốn nhiều thời gian thì ở thế hệ genen tiếp theo, về cơ bản người ta vẫn sử dụng phương pháp Sanger nhưng họ sẽ bẻ ADN thành nhiều đoạn nhỏ hơn, xác định cùng lúc trình

tự trên những đoạn nhỏ đó rồi ghép các kết quả lại Quy trình này gọi lại “Sắp xếp trình tự lớn song song – Massively Parallel Sequencing” giúp giảm chi phí từ 10 triệu USD xuống còn 5 000 USD đến 8 000 USD

Năm 2005 đánh dấu một kỷ nguyên mới trong quá trình phân giải DNA khi phương pháp mới ra đời đã đạt hiệu quả ở 4 hướng:

- Giảm chi phí phân giải

- Tăng tốc độ trong quá trình phân giải

- Tự động thực hiện các quy trình còn lại

- Tăng độ chính xác kết quả phân giải

Lần đầu phân giải gene người mất khoảng 10 năm với hàng triệu USD thì với phương pháp này, việc phân giải chỉ mất khoảng 1 ngày với chi phí xấp xỉ 5 000 USD

Trang 7

6

Hình 1.3 Sau khi trình tự thế hệ gene tiếp theo ra đời, từ khoảng năm 2007, chi phí

phân giải giảm rõ rệt

Như vậy, bài toán đặt ra đó là với những đoạn ADN rời rạc, ta phải có một cách lắp ráp để ra được đoạn ADN hoàn chỉnh

1.4 Xử Lý Dữ Liệu

Với trình tự thế hệ gene tiếp theo, sau khi phân giải, ta sẽ được tập các đoạn ADN rời rạc, nhiệm vụ của tôi sẽ ghép những đoạn ADN rời rạc đó thành một đoạn ADN hoàn chỉnh

Input: Tập các đoạn ADN rời rạc

Output: Đoạn ADN hoàn chỉnh

Hiện có 2 thuật toán chính dùng để lắp ráp: OLC và đồ thị de Bruijn, bài này chủ yếu nói về thuật toán sử dụng đồ thị de Bruijn

2 THUẬT TOÁN LẮP RÁP BẰNG ĐỒ THỊ DE BRUIJN 2.1 Cơ Sở Lý Thuyết

Đồ thị de Bruijn do nhà Toán học người Hà Lan tên Nicolaas Govert de Bruijn cùng cộng sự phát triển nhằm giải quyết bài toán sau:

Cho tập 𝑇 gồm các chuỗi 𝑡1, 𝑡2, … , 𝑡𝑛, tìm chuỗi 𝑆 có độ dài nhỏ nhất sao cho mỗi 𝑡𝑖đều là chuỗi con của chuỗi 𝑆 và xuất hiện đúng 1 lần trong 𝑆

Ví dụ: 𝑡1 = 𝐴𝐴, 𝑡2 = 𝐴𝐵, 𝑡3 = 𝐵𝐴, 𝑡4 = 𝐵𝐵, khi đó 𝑆 = 𝐴𝐴𝐵𝐵𝐴

Định nghĩa 2.1: Cho chuỗi 𝑆

- 𝑝𝑟𝑒(𝑆, 𝑘): 𝑘 ký tự đầu tiên của chuỗi 𝑆

- 𝑠𝑢𝑓(𝑆, 𝑘): 𝑘 ký tự cuối cùng của chuỗi 𝑆

Trang 8

7

- 𝑘_𝑚𝑒𝑟(𝑆): Tập tất cả các chuỗi con của chuỗi 𝑆 có độ dài bằng 𝑘

Định nghĩa 2.2: Hai chuỗi 𝑡1 và 𝑡2 gọi là 𝑜𝑣𝑒𝑟𝑙𝑎𝑝 nếu với 𝑘 ∈ ℕ, 𝑝𝑟𝑒(𝑡1, 𝑘) =𝑠𝑢𝑓(𝑡2, 𝑘) hay 𝑠𝑢𝑓(𝑡1, 𝑘) = 𝑝𝑟𝑒(𝑡2, 𝑘)

Định nghĩa 2.3: Một giá trị 𝑎 ∈ ℕ gọi là 𝑜𝑣𝑒𝑟𝑙𝑎𝑝𝑚𝑎𝑥(𝐴) khi 𝑎 là giá trị lớn nhất sao

cho bất kỳ 2 chuỗi 𝑡𝑖, 𝑡𝑗 ∈ 𝐴 thì 𝑝𝑟𝑒(𝑡𝑖, 𝑎) = 𝑠𝑢𝑓(𝑡𝑗, 𝑎) hay 𝑝𝑟𝑒(𝑡𝑗, 𝑎) = 𝑠𝑢𝑓(𝑡𝑖, 𝑎) Nếu như mỗi chuỗi 𝑡𝑖, 𝑡𝑗 (𝑖 ≠ 𝑗) bất kỳ trong tập 𝑇 không overlap thì giải bài toán này không khó, một đáp án đó là ta ghép chuỗi này nối đuôi chuỗi kia tuần tự từ 𝑡1 đến 𝑡𝑛 Vấn đề cần giải quyết đó là tồn tại 2 chuỗi 𝑡𝑖 và 𝑡𝑗 overlap, để giải bài toán đó, ta sẽ xây dựng đồ thị de Bruijn

𝐴𝑇𝐶𝐶𝑇𝐺 𝑇𝐶𝐶𝑇𝐺𝐺 𝐶𝐶𝑇𝐺𝐺𝐶 𝐶𝑇𝐺𝐺𝐶𝐴 𝑇𝐺𝐺𝐶𝐴𝑇 Với mỗi chuỗi 𝑡𝑖, ta tách thành phần 𝑝𝑟𝑒(𝑡𝑖, 5) và 𝑠𝑢𝑓(𝑡𝑖, 5), khi đó, ta được 𝑡𝑖 =𝑝𝑟𝑒(𝑡𝑖, 4) → 𝑠𝑢𝑓(𝑡𝑖, 4), cụ thể:

𝐴𝑇𝐶𝐶𝑇𝐺 = 𝐴𝑇𝐶𝐶𝑇 → 𝑇𝐶𝐶𝑇𝐺 𝑇𝐶𝐶𝑇𝐺𝐺 = 𝑇𝐶𝐶𝑇𝐺 → 𝐶𝐶𝑇𝐺𝐺 𝐶𝐶𝑇𝐺𝐺𝐶 = 𝐶𝐶𝑇𝐺𝐺 → 𝐶𝑇𝐺𝐺𝐶 𝐶𝑇𝐺𝐺𝐶𝐴 = 𝐶𝑇𝐺𝐺𝐶 → 𝑇𝐺𝐺𝐶𝐴 𝑇𝐺𝐺𝐶𝐴𝑇 = 𝑇𝐺𝐺𝐶𝐴 → 𝐺𝐺𝐶𝐴𝑇

Trang 9

2.3 Áp Dụng Đồ Thị de Bruijn vào Lắp Ráp Gene

2.3.1 Xây Dựng Đồ Thị dựa trên 𝒌_𝒎𝒆𝒓

Để áp dụng đồ thị de Bruijn, ta cần có cơ sở đảm bảo tính chính xác của đồ thị này Vì vậy tôi sẽ tự cho một đoạn ADN, sau đó lấy tất cả 𝑘_𝑚𝑒𝑟(𝐴𝐷𝑁) và dùng đồ thị de Bruijn để lắp ráp lại thành đoạn ADN ban đầu

Xét đoạn ADN: 𝑇𝐴𝐴𝑇𝐺𝐶𝐶𝐴𝑇𝐺𝐺𝐺𝐴𝑇𝐺𝑇𝑇

Tập 3_𝑚𝑒𝑟(𝐴𝐷𝑁)

= {𝑇𝐴𝐴, 𝐴𝐴𝑇, 𝐴𝑇𝐺, 𝑇𝐺𝐶, 𝐺𝐶𝐶, 𝐶𝐶𝐴, 𝐶𝐴𝑇, 𝐴𝑇𝐺, 𝑇𝐺𝐺, 𝐺𝐺𝐺, 𝐺𝐺𝐴, 𝐺𝐴𝑇, 𝐴𝑇𝐺, 𝑇𝐺𝑇, 𝐺𝑇𝑇} Với mỗi cặp 𝑡𝑖, 𝑡𝑗 trong 3_𝑚𝑒𝑟 đều có tính chất 𝑝𝑟𝑒(𝑡𝑖, 2) = 𝑠𝑢𝑓(𝑡𝑗, 2) hoặc 𝑝𝑟𝑒(𝑡𝑗, 2) = 𝑠𝑢𝑓(𝑡𝑖, 2) và 2 = 𝑜𝑣𝑒𝑟𝑙𝑎𝑝𝑚𝑎𝑥(3_𝑚𝑒𝑟(𝐴𝐷𝑁)), ta tách thành 𝑡𝑖 =𝑝𝑟𝑒(𝑡𝑖, 2) → 𝑠𝑢𝑓(𝑡𝑖, 2), cụ thể:

Trang 10

Dưới đây là hình ảnh đồ thị de Bruijn đã được xây dựng:

Trang 11

10

Hình 2.1 Đồ thị de Bruijn xây dựng từ bảng 2.1 và bảng 2.2

Tiếp theo, ta xác định tất cả đường đi Euler trong đồ thị de Bruijn này Xét node 𝑢 bất

kỳ, ta ký hiệu 𝑖𝑛_𝑑𝑒𝑔(𝑢) là số đường đi kết thúc tại 𝑢, 𝑜𝑢𝑡_𝑑𝑒𝑔(𝑢) là số đường đi bắt đầu tại 𝑢 Ví dụ như trong hình 2.1, ta có 𝑖𝑛_𝑑𝑒𝑔(𝑇𝐺) = 3, 𝑜𝑢𝑡_𝑑𝑒𝑔(𝑇𝐺) = 3 hay 𝑖𝑛_𝑑𝑒𝑔(𝑇𝐴) = 0, 𝑜𝑢𝑡_𝑑𝑒𝑔(𝑇𝐴) = 1

Trong đồ thị có hướng, để xác định đồ thị có tồn tại đường đi hay chu trình Euler hay không, ta áp dụng định lý sau:

Định lý 2.1: Một đồ thị 𝐺 có hướng có đường đi Euler khi và chỉ khi 𝐺 tồn tại đúng 2

node 𝑢 và 𝑣 sao cho 𝑜𝑢𝑡_𝑑𝑒𝑔(𝑢) = 𝑖𝑛_𝑑𝑒𝑔(𝑢) + 1 và 𝑜𝑢𝑡_𝑑𝑒𝑔(𝑣) = 𝑖𝑛_𝑑𝑒𝑔(𝑢) −

1 và 𝑜𝑢𝑡_𝑑𝑒𝑔(𝑥) = 𝑖𝑛_𝑑𝑒𝑔(𝑥) với các node 𝑥 còn lại trong đồ thị Đường đi bắt đầu tại 𝑢 và kết thúc tại 𝑣

Định lý 2.2: Một đồ thị 𝐺 có hướng có chu trình Euler khi và chỉ khi mỗi node 𝑥 ∈ 𝐺

Trang 12

Dựa vào đồ thị, xét các phần tử trên dòng của node 𝑖, phần tử 𝑗 nào có giá trị khác 0 tức 𝑀(𝑖, 𝑗) ≠ 0 thì ta trừ giá trị của 𝑀(𝑖, 𝑗) xuống 1 đơn vị, lấy node 𝑗 làm chuẩn và thực hiện lại quy trình trên cho đến khi không thể tìm được phần tử trong dòng có giá trị khác 0 Xuất kết quả đường đi Euler khi ma trận thành ma trận không Ta áp dụng điều này vào đồ thị:

- Xuất phát từ 𝑇𝐴, xét dòng 𝑇𝐴 chỉ có 𝑀(𝑇𝐴, 𝐴𝐴) = 1 ≠ 0, thực hiện 𝑀(𝑇𝐴, 𝐴𝐴) = 𝑀(𝑇𝐴, 𝐴𝐴) − 1 và lấy 𝐴𝐴 làm chuẩn

- Xuất phát từ 𝐴𝐴, xét dòng 𝐴𝐴 chỉ có 𝑀(𝐴𝐴, 𝐴𝑇) = 1 ≠ 0, thực hiện 𝑀(𝐴𝐴, 𝐴𝑇) = 𝑀(𝐴𝐴, 𝐴𝑇) − 1 và lấy 𝐴𝑇 làm chuẩn

- Xuất phát từ 𝐴𝑇, xét dòng 𝐴𝑇 chỉ có 𝑀(𝐴𝑇, 𝑇𝐺) = 3 ≠ 0, thực hiện 𝑀(𝐴𝑇, 𝑇𝐺) = 𝑀(𝐴𝑇, 𝑇𝐺) − 1 và lấy 𝑇𝐺 làm chuẩn

- Xuất phát từ 𝑇𝐺, xét dòng 𝑇𝐺, có 𝑀(𝑇𝐺, 𝐺𝐶) = 𝑀(𝑇𝐺, 𝐺𝐺) = 𝑀(𝑇𝐺, 𝐺𝑇) =

1 ≠ 0, ta nên lấy 𝐺𝐶, 𝐺𝐺 hay 𝑇𝐺 làm chuẩn?

Vấn đề phát sinh khi từ một node có thể có nhiều đường đi đến các node khác Do đó

để tìm tất cả đường đi Euler, tôi sử dụng ý tưởng của phép tìm kiếm duyệt rộng (Breadth – First Search - BFS) hoặc tìm kiếm duyệt sâu (Deep – First Search - DFS)

để thực hiện với các node trong cây tìm kiếm chính là trạng thái của ma trận

2.3.1.1 Sử Dụng BFS

Thuật toán 2.1 Sử dụng BFS để tìm tất cả đường đi Euler

1

input: Ma trận ban đầu (matrix), vị trí xuất phát

(start), kích thước 1 hàng của ma trận (n)

2 output: Tất cả đường đi Euler

3 Tạo queue map,path;

Trang 13

input: Ma trận ban đầu (matrix), vị trí xuất phát

(start), kích thước 1 hàng của ma trận (n), đường

Trang 14

13

Đối với thuật toán BFS có thể tính với dữ liệu lớn nhưng tốc độ chậm, còn thuật toán DFS cho ra tốc độ nhanh nhưng không thể tính dữ liệu lớn do gây nặng máy tính Sau khi thực hiện thuật toán trên, ta được 2 kết quả:

Tôi xây dựng chương trình có chức nặng tạo một chuỗi ADN có độ dài do người dùng

tự nhập (điều kiện độ dài lớn hơn 25), chương trình sẽ tự động chọn 𝑘 bằng 18% độ dài chuỗi ADN, sau đó chương trình sẽ tính toàn bộ tập 𝑘_𝑚𝑒𝑟 và lưu vào trong tập

tin reads.txt Chương trình sẽ tự động sử dụng nội dung trong tập tin này và xây dựng

đồ thị de Bruijn và áp dụng BFS để lắp ráp Cuối cùng, tôi viết một hàm để đối chiếu các kết quả với chuỗi ADN ban đầu để xác định có tồn tại kết quả đúng hay sai Kết quả:

Hình 2.2 Kết quả khảo sát thời gian lắp ráp sử dụng BFS với chuỗi ADN có độ dài

từ 25 đến 374, thời gian trung bình 8.1045 giây, độ chính xác 100% Xem thêm trong

Phụ lục 1

Sử dụng hàm polyfit trong MATLAB, ta có độ phức tạp thuật toán là 𝑂(𝑁2)

Trang 15

14

2.3.3 Xây Dựng Đồ Thị dựa trên 𝒌_𝒎𝒆𝒓 Kép

Ở hướng đi trên, dù ta đã lắp ráp được thành chuỗi ban đầu nhưng ta bị thừa đi 1 kết quả, điều này làm cho chương trình phải tốn thời gian để giải ra kết quả sai này, do đó trong phần này tôi trình bày cách khắc phục bằng ý tưởng 𝑘_𝑚𝑒𝑟 kép, ý tưởng này đã được thực hiện trong phần mềm SPAdes do trường Đại học St Petersburg và trường Đại học San Diego, California thực hiện

Ta sẽ xây dựng đồ thị de Bruijn sao cho đồ thị này xuất ra càng ít kết quả càng tốt mà vẫn đảm bảo tính chính xác của kết quả Một hướng đi để giảm số lượng kết quả đó là giảm số lượng node cũng như được đi trong đồ thị

Định nghĩa 2.4: 𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑎|𝑏) là một chuỗi kép tạo thành từ 2 chuỗi 𝑎 và 𝑏 có độ dài

bằng nhau Khi đó 𝑝𝑟𝑒(𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑎|𝑏), 𝑟) = 𝑝𝑟𝑒 (𝑏𝑖𝑙𝑎𝑏𝑒𝑙 (𝑝𝑟𝑒(𝑎, 𝑟)|(𝑝𝑟𝑒(𝑏, 𝑟))))

và 𝑠𝑢𝑓(𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑎|𝑏), 𝑡) = 𝑠𝑢𝑓 (𝑏𝑖𝑙𝑎𝑏𝑒𝑙 (𝑠𝑢𝑓(𝑎, 𝑡)|(𝑠𝑢𝑓(𝑏, 𝑡))))

Ví dụ: 𝑎 = 𝐴𝐴𝑇𝐺, 𝑏 = 𝑇𝐶𝐺𝐴𝐴𝑇, khi đó:

𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑎|𝑏) = 𝐴𝐴𝑇𝐺|𝑇𝐶𝐺𝐴𝐴𝑇 𝑝𝑟𝑒(𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑎|𝑏), 3) = 𝐴𝐴𝑇|𝑇𝐶𝐺 𝑠𝑢𝑓(𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑎, 𝑏), 2) = 𝑇𝐺|𝐴𝑇

Định nghĩa 2.5: Cho chuỗi 𝑆, với 2 chuỗi 𝑡𝑖, 𝑡𝑗 ∈ 𝑘_𝑚𝑒𝑟(𝑆), 𝑖 ≠ 𝑗, 2 chuỗi này là một 𝑘_𝑚𝑒𝑟 kép của chuỗi 𝑆 với khoảng cách 𝑑 khi:

(i) |𝑡𝑖| = |𝑡𝑗|, ký hiệu |𝑎| là độ dài chuỗi 𝑎

(ii) Khoảng cách từ ký tự cuối cùng của chuỗi 𝑡𝑖 trong chuỗi 𝑆 đến ký tự cuối

cùng của chuỗi 𝑡𝑗 trong chuỗi 𝑆 bằng 𝑑

Ta ký hiệu (𝑘, 𝑑)_𝑚𝑒𝑟(𝑆) là tập tất cả các 𝑘_𝑚𝑒𝑟 kép của chuỗi 𝑆 với khoảng cách 𝑑, chuỗi 𝑥 ∈ (𝑘, 𝑑)_𝑚𝑒𝑟(𝑆) có dạng 𝑥 = 𝑏𝑖𝑙𝑎𝑏𝑒𝑙(𝑡𝑖|𝑡𝑗)

Ta quan sát lại 2 đáp án sau:

1 (TAA|GCC) (TAA|GGG)

Trang 16

Hai tập (3,4)_𝑚𝑒𝑟(𝐾1) và (3,4)_𝑚𝑒𝑟(𝐾2) khác nhau, đồng thời số lượng các phần

tử trong tập (3,4)_𝑚𝑒𝑟(𝐾1) ít hơn tập 3_𝑚𝑒𝑟(𝐾1) Do đó ta hi vọng sẽ xây dựng đồ thị de Bruijn từ tập (3,4)_𝑚𝑒𝑟(𝐾1) với số node cũng như số đường đi ít hơn, số lượng đường đi ít hơn nhưng vẫn đảm bảo tính chính xác

Với mỗi 𝑥𝑖 ∈ (3,4)_𝑚𝑒𝑟(𝐾1), ta tách các thành phần 𝑝𝑟𝑒, 𝑠𝑢𝑓 như sau:

Bảng 2.4 Tách mỗi 𝑥𝑖 thành 𝑝𝑟𝑒(𝑥𝑖, 2) và 𝑠𝑢𝑓(𝑥𝑖, 2) bằng định nghĩa 2.4

𝑖 𝑝𝑟𝑒(𝑥𝑖, 2) → 𝑠𝑢𝑓(𝑥𝑖, 2) 𝑥𝑖

1 (TA|GC) (AA|CC) (TAA|GCC)

2 (AA|CC) (AT|CA) (AAT|CCA)

3 (AT|CA) (TG|AT) (ATG|CAT)

4 (TG|AT) (GC|TG) (TGC|ATG)

5 (GC|TG) (CC|GG) (GCC|TGG)

6 (CC|GG) (CA|GG) (CCA|GGG)

7 (CA|GG) (AT|GA) (CAT|GGA)

8 (AT|GA) (TG|AT) (ATG|GAT)

9 (TG|AT) (GG|TG) (TGG|ATG)

10 (GG|TG) (GG|GT) (GGG|TGT)

11 (GG|GT) (GA|TT) (GGA|GTT)

Ngày đăng: 07/02/2022, 19:10

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w