Có hàng trăm thuật toán đã được đề xuất cho tìm kiếm dữ liệu DNAnhưng nhìn chung các thuật toán tìm kiếm thường được sử dụng là: Phương pháp áp dụng Mô hình Markov ẩn[5] là phương pháp
TỔNG QUAN VỀ CÁC THUẬT TOÁN TÌM KIẾM CHUỖI DNA
Phương pháp tìm kiếm chuỗi DNA sử dụng mô hình Markov ẩn
Mô hình Markov ẩn bắt đầu được xây dựng và công bố từ những năm 1960, là một mô hình toán học về thống kê và xác suất Đến những năm 1980, mô hình này bắt đầu được nghiên cứu để ứng dụng trong lĩnh vực nhận dạng Thuật toán tìm kiếm chuỗi sử dụng mô hình Markov ẩn mô phỏng quá trình tìm kiếm chuỗi dựa trên các tham số quan sát được và các tham số chưa biết, sau đó xác định các tham số chưa biết từ dữ liệu quan sát Các tham số của mô hình được trích xuất để phục vụ các phân tích tiếp theo Với cấu trúc linh hoạt, mô hình Markov ẩn dễ dàng điều chỉnh phù hợp với từng ứng dụng cụ thể, nâng cao hiệu quả trong các lĩnh vực như nhận dạng mẫu và xử lý tín hiệu.
Phương pháp tìm kiếm chuỗi DNA sử dụng mô hình Markov ẩn
Chuỗi so sánh: y = y1y2 yL, (ở mỗi vị trí xn thì có tương ứng yn ).
Xn là số vị trí của giá trị có thể từ tập quan sát O = {O 1 O 2, ,O N}
Yn nhận giá trị từ tập trạng thái S = {1,2, ,M} N và M biểu thị vị trí quan sát và số lượng các trạng thái trong mô hình.
Trong chuỗi Markov, chuỗi trạng thái ẩn xuất hiện đồng thời để mô tả các quá trình phức tạp hơn Điều này có nghĩa là trạng thái đầu vào j sau sẽ phụ thuộc vào trạng thái i trước đó, phản ánh mối liên hệ liên tục giữa các trạng thái Ngoài ra, trạng thái này có thể giữ nguyên mà không thay đổi, giúp mô hình phản ánh chính xác các hiện tượng xảy ra trong thực tế Việc hiểu rõ về chuỗi trạng thái ẩn trong chuỗi Markov là yếu tố quan trọng để nâng cao hiệu quả trong xử lý dữ liệu và dự đoán tương lai.
Trạng thái chuyển từ trạng thái i sang trạng thái j được gọi là trạng thái chuyển tiếp, với hàm chuyển tiếp được ký hiệu là t(i,j) Trạng thái bắt đầu Y1 có thể là bất kỳ trạng thái nào trong tập S, và tại vị trí quan sát xn = x, kết quả chỉ phụ thuộc vào trạng thái yn, giúp mô hình hiểu rõ quá trình chuyển đổi giữa các trạng thái khác nhau.
Với mọi x ∈ O, mọi i ∈ S, và mọi n ≥ 1; e(x|i) là hàm giá trị x tạo ra tại trạng thái i.
Ba độ đo: t(i, j), π(i), and e(x | i) là 3 tham số mô tả cho mô hình HMM Gọi tập
Dựa vào 3 tham số trên, ta có thể tính được chuỗi quan sát x = x 1 x 2 x L sẽ sinh ra chuỗi y = y 1 y 2 y L
Như vậy dựa vào mô hinh khi biết chuỗi trạng tháivà đầu vào ta có thể biết được chuỗi quan sát.
Ví dụ minh họa cho mô hình Markov ẩn:
Hình 1.1 trình bày mô hình Markov ẩn, bắt đầu với sắp xếp các chuỗi ban đầu để thiết lập quá trình Tiếp theo, mô hình này thể hiện dạng bỏ khoảng trống giữa các trạng thái, giúp tối ưu hóa phân tích Cuối cùng, mô hình hóa sự liên kết giữa các trạng thái theo Mô hình Markov ẩn nhằm mô phỏng chính xác quá trình chuyển đổi và xác suất các trạng thái trong hệ thống.
Mô hình Markov ẩn (HMM) is an effective approach for modeling sequence data, especially suitable for structured chain patterns This model features a left-to-right linear architecture without any cycles, making it ideal for modeling sequential information It utilizes three types of states: hidden (delete), observable (insert), and match, allowing for accurate representation of complex sequence relationships HMM is widely used in applications such as speech recognition, bioinformatics, and natural language processing due to its robustness in handling sequential data.
So sánh hai chuỗi sinh học theo Mô hình Markov ẩn giúp xếp hạng các chuỗi dựa trên mức độ giống nhau, tính toán số điểm liên kết và đánh giá các liên kết thống kê Để xác định các liên kết tốt nhất giữa các trình tự, cần xây dựng bảng xếp hạng dựa trên mức độ tương đồng của các chuỗi Việc này cho phép lựa chọn các liên kết nhằm tối đa hóa điểm số liên kết, nâng cao hiệu quả phân tích sinh học.
Hình 1.2 Ví dụ về mô hình cặp HMM [5]
Mô hình cặp -HMM tạo ra cặp liên kết chuỗi Hai chuỗi DNA x và z được đồng thời tạo ra bởi các cặp-HMM, các dãy trạng thái cơ bản là y Các trạng thái y xác định chỉ 1 liên kết duy nhất giữa x và z. Ưu điểm: Phương pháp này đã được sử dụng rộng rãi trong tin sinh học vì độ chính xác cao Cách mô hình hóa dễ sử dụng.
Nhược điểm: Chi phí thời gian lớn và các hàm tính toán phức tạp.
Phương pháp liên kết nhạy cảm đầy đủ
Phương pháp này được sử dụng để tìm sự giống nhau hoặc có độ tương đồng cao của hai chuỗi Bằng cách lập ma trận, tính độ đo để tìm ra sự giống hoặc có độ tương đồng cao của tất cả độ dài các phân đoạn của hai xâu, hai chuỗi protein hoặc nucleotide Với chuỗi đã được tìm kiếm và có độ tương đồng cao trước đó, phương pháp có thể mở rộng phạm vi tìm kiếm về hai phía (trước hoặc sau) Phương pháp này có ưu điểm là độ chính xác cao Tuy nhiên chi phí thời gian lớn Phương pháp đặc trưng của dạng này là phương pháp Smith & Waterman do hai nhà khoa học T.F.Smith & M.S.Waterman công bố năm 1981 [6] Hiện nay, do những cải tiến về máy tính và thuật toán tìm kiếm, phương pháp này có thể tìm kiếm đồng thời nhiều chuỗi cùng lúc khoảng (1000 chuỗi) [18]
Thuật toán Smith-Waterman là một phương pháp quy hoạch động dùng để xác định mức độ tương đồng giữa hai chuỗi, dựa trên mô hình thích hợp Needleman và Wunsch Thuật toán sử dụng bảng ma trận để đánh giá các cặp ký tự trong hai chuỗi, giúp tìm kiếm các miền tương đồng cục bộ tối ưu Điểm nổi bật của Smith-Waterman là khả năng so sánh các phần của chuỗi một cách đối xứng và cục bộ, giúp nhận diện chính xác những đoạn giống nhau giữa hai chuỗi Khác với thuật toán Needleman-Wunsch thực hiện so sánh toàn cục, Smith-Waterman tập trung vào các vùng cục bộ để nâng cao độ chính xác trong việc xác định các đoạn tương đồng Mức độ tương đồng giữa các ký tự a và b, được đo bằng hàm s(a,b), được biểu diễn qua các cặp trong ma trận H giúp xác định các cặp ký tự phù hợp để xây dựng các giải pháp tối ưu trong so sánh chuỗi.
Hij thể hiện mức độ tương đồng của ai,bj Hij được tính bằng công thức:
Hij=max{Hi-1,j-1 + s(ai,bj).max(Hi-k,j - wk}.max{ Hi,j-l - wl},0} (1) k≥1 l≥1 với l ≤ i ≤ n và l ≤ j ≤ m [6]
Công thức Hij tính bởi các giá trị ở cuối các đoạn tại bất kỳ giá trị ai và bj nào.
(1) Nếu ai và bj có liên kết, độ tương tự tính như sau:
(2) Nếu ai tại vị trí cuối của dãy xóa k, độ tương tự tính bằng công thức
(3) Nếu bj là vị trí cuối của vị trí xóa có độ dài l, độ tương tự xác định bởi
(4) Giá trị 0 đã bao gồm biểu thị cho mức độ không tương đồng, nó chỉ ra rằng mức độ không tương đồng cho đến giá trị ai và bj
Giá trị H càng cao thể hiện mức độ tương đồng của Hij càng lớn, giúp xác định chính xác hơn mối liên hệ giữa các chuỗi Đầu tiên, ta cần tìm chỉ số cao nhất trong ma trận để xác định điểm bắt đầu của quá trình so sánh Sau đó, duyệt ngược trở lại từ chỉ số này để xác định mức độ tương đồng cuối cùng của hai chuỗi cần chọn, đảm bảo phương pháp đối chiếu chính xác và hiệu quả hơn trong các phân tích dữ liệu.
- Đầu vào : Hai chuỗi S1 và S2 với chiều dài tương ứng là n, m Ma trận thay thế S.Gap d.
Bước 2 : Điền giá trị vào ma trận Tính H(i, j) theo công thức
H(i, j) = MAX (0, H(i-1,j-1) + S(i,j), H(i-1,j)+d, H(i,j-1) + d) (1) [6] Mỗi khi tính H(i, j) lưu lại chỉ số của số hạng ở vế phải (1)
Bước 3 : Tìm ô (i_max, j_max) có điểm cao nhất (0 i m, 0 j n)
Xuất phát từ ô (i_max, j_max).Dựa vào những chỉ số đã lưu ở bước 2 để tìm giá trị cho đến khi gặp ô H(i,j) = 0 thì dừng.
Nếu đường đi theo chiều ngang hay từ ô (i,j-1) sang ô (i,j) thì thêm “-“ vào S2’ và thêm kí tự S1(j) vào S1’.
Nếu đường đi theo chiều thẳng đứng hay từ ô (i-1, j) xuống ô (i,j) thì thêm “-“ vào S1’ và thêm kí tự S2(i) và S2’.
Nếu đường đi theo đường chéo hay từ ô (i-1, j-1) đến ô (i,j) thì thêm kí tự S1(j) vào S1’ và S2(i) vào S2’
Bước 2: : Điền giá trị vào ma trận: giống nhau = 2, khác = 0, tương đồng = 1
Bước 3: Tìm H (i_max, j_max) có điểm cao nhất :
Bước 4: Duyệt ngược đến khi về H (1,1) thì kết thúc.
Bước 5: Lặp lại bước 2, duyệt trở về đầu ma trận Ta có kết quả:
Ví dụ về ma trận thực hiện so sánh chuỗi của Smith & Waterman:
Hình 1.3 Bảng ma trận độ đo trong ví dụ 2 chuỗi của Smith & Waterman [2]
Chuỗi A-A-U-G-C-C-A-U-U-G-A-C-G-G và chuỗi C-A-G-C-C-U-C-G-C-U-U-A-G được phân tích dựa trên ma trận so sánh, với chỉ số (3-3) có giá trị cao nhất, phản ánh mức độ tương đồng tối đa Quá trình duyệt theo đường chéo giúp xác định giá trị cao nhất, sau đó xem xét các vùng lân cận nếu có giá trị thấp hơn để cập nhật chỉ số Phương pháp duyệt ngược trở lại và lặp lại quá trình này giúp xác định chính xác độ tương đồng giữa hai chuỗi Kết quả cuối cùng là độ tương đồng của hai chuỗi được tính toán dựa trên các bước phân tích này, cung cấp một chỉ số rõ ràng về mức độ giống nhau của chuỗi DNA hoặc protein trong nghiên cứu sinh học.
-G-C-C-A-U-U-G- -G-C-C - U-C-G- Ưu điểm: Do phải duyệt và so sánh lần lượt thứ tự từng nucleotide nên phương pháp này có độ chính xác cao.
Nhược điểm: Chi phí thời gian lớn do phải lập ma trận đánh giá mức độ tương đồng, lập chỉ số so sánh giá trị của các phần tử trong ma trận của các chuỗi Thuật toán cũng phải so sánh các giá trị ở chuỗi mẫu với chuỗi dữ liệu.
Phương pháp tìm kiếm tương tự nhanh
Phương pháp này sử dụng giải thuật so sánh chuỗi dựa trên đánh giá mức độ tương đồng của chuỗi truy vấn và cơ sở dữ liệu chuỗi có sẵn qua một ngưỡng nhất định, giúp xác định độ chính xác của kết quả Dựa trên bảng kết quả đánh giá, hệ thống sẽ đưa ra nhận xét về mức độ phù hợp giữa hai chuỗi, cho phép xử lý nhanh chóng với thời gian ngắn nhưng có thể không chính xác bằng các phương pháp liên kết nhạy cảm đầy đủ Thuật toán nổi bật của phương pháp này là BLAST, hiện nay được sử dụng rộng rãi và có nhiều biến thể phù hợp cho các trường hợp cụ thể khác nhau, đảm bảo hiệu quả tối ưu trong so sánh chuỗi sinh học.
BLAST ban đầu tìm kiếm các chuỗi con ngắn với chiều dài cố định có tính tương tự cao Sau đó, dựa vào kết quả trước, mở rộng phạm vi tìm kiếm để tìm những bắt cặp trình tự có điểm số cao giữa chuỗi truy vấn và các chuỗi trong cơ sở dữ liệu Ở thuật toán bắt cặp trình tự tối ưu của Smith-Waterman, phương pháp đó sẽ rất chậm khi tìm kiếm trong một cơ sở dữ liệu gen quá lớn như Ngân hàng Gen (GenBank) Giải thuật BLAST dùng một hướng tiếp cận heuristic, dù ít chính xác hơn Smith-Waterman nhưng lại cho tốc độ nhanh hơn Tốc độ và sự chính xác tương đối của BLAST là những cải tiến kĩ thuật quan trọng của các chương trình BLAST và những điều đó cho thấy lí do vì sao công cụ này lại là công cụ tìm kiếm phổ biến nhất trong tin sinh học.[7] Đầu vào:
- Chuỗi truy vấn (chuỗi đích)(Định dạng ở dạng FASTA hoặc Genbank).
- Cơ sở dữ liệu chuỗi (Định dạng ở dạng FASTA hoặc Genbank). Đầu ra:
Trong quá trình so sánh chuỗi truy vấn với cơ sở dữ liệu chuỗi, các thuật toán bắt cặp trình tự có khả năng cho ra các điểm số cao, xác định mức độ tương đồng giữa các chuỗi Kết quả của quá trình này có thể được trình bày dưới nhiều định dạng khác nhau như HTML, văn bản hoặc XML để phù hợp với mục đích sử dụng Ví dụ, trang chủ của NBCI thường xuất ra kết quả ở định dạng HTML để đảm bảo khả năng hiển thị rõ ràng và dễ dàng xử lý bởi trình duyệt.
BLAST sẽ tìm kiếm các chuỗi con trong chuỗi truy vấn giống với các chuỗi con trong cơ sở dữ liệu chuỗi Thông thường, khi sử dụng, chuỗi truy vấn là nhỏ hơn rất nhiều so với cơ sở dữ liệu, ví dụ: chuỗi truy vấn có thể chỉ gồm 1 nghìn nucleotide trong khi cơ sở dữ liệu chuỗi có hàng tỉ nucleotide Thuật toán của BLAST có 2 phần, một phần tìm kiếm và một phần đánh giá thống kê dựa trên kết quả tìm được.
Thuật toán tìm kiếm của BLAST bao gồm 3 bước sau:
Chương trình BLAST tìm kiếm các chuỗi con ngắn có chiều dài cố định L, không có khoảng trống_gap, giữa chuỗi truy vấn và các chuỗi trong cơ sở dữ liệu Những chuỗi con này, gọi là "từ", thường có độ dài 3 đối với protein và 11 đối với DNA Các chuỗi con này được đánh giá dựa trên ma trận thay thế như BLOSUM hoặc PAM; nếu điểm số của chúng vượt qua ngưỡng V thì được coi là "hit" (tìm thấy) Ví dụ, với các chuỗi GATTAG và FCATAC, các chuỗi con phù hợp sẽ được xác định dựa trên tiêu chí này để xác định các kết quả phù hợp trong phân tích dữ liệu.
“từ” có chiều dài L = 3, BLAST sẽ xác định chuỗi con TAG và TAC với số điểm theo ma trận PAM là 3 + 2 + 3 = 8 và gọi chúng là một Hit [7]
Bước 2: BLAST tiếp tục tìm kiếp những cặp Hit tiếp theo dựa trên cơ sở những
Hit đã tìm được trong bước 1 Những cặp Hit này được BLAST giới hạn bởi một giá trị cho trước d, gọi là khoảng cách giữa những Hit Những cặp Hits có khoảng cách lớn hơn d sẽ bị BLAST bỏ qua Giá trị d phụ thuộc vào độ dài L ở bước 1,(VD: L = 2 thì có thể chọn d = 18).
Trong bước cuối cùng của quá trình, BLAST mở rộng các cặp Hits đã tìm được theo cả hai chiều và đồng thời gán điểm cho từng cặp, kết thúc khi không thể mở rộng thêm nữa Phiên bản gốc của BLAST không cho phép chỗ trống (gap) trong quá trình mở rộng, nhưng các phiên bản mới hơn đã tích hợp tính năng này để nâng cao độ chính xác Các cặp Hits sau khi mở rộng và đạt điểm số cao hơn ngưỡng S (giá trị ngưỡng) được gọi là "Cặp đoạn điểm số cao" (High-scoring Segment Pair - HSP), giúp xác định các đoạn có ý nghĩa sinh học cao trong phân tích so sánh chuỗi.
Ví dụ, với chuỗi AGTTAHTQ và ACFTAQAC với Hit TAH và TAQ sẽ được mở rộng như sau:
Những cặp HSP đã tìm được được BLAST sắp xếp theo giá trị đánh giá giảm dần, đưa ra màn hình, và thực hiện phần đánh giá thống kê trên những cặp HSP này.Trong phần đánh giá thống kê, BLAST dựa trên cơ sở đánh giá của một cặpHSP để tính ra một giá trị gọi là ''Bit-Score'', giá trị này không phụ thuộc vào ma trận thay thế và được sử dụng để đánh giá chất lượng của các bắt cặp Giá trị càng cao chứng tỏ khả năng tương tựu của các bắt cặp càng cao Ngoài ra BLAST tính toán một giá trị trông đợi E-Score (Expect-Score) phụ thuộc vào Bit-Score Giá trịE-Score này thể hiện xác suất ngẫu nhiên của các bắt cặp, giá trị càng thấp càng chứng tỏ những bắt cặp này được phát sinh theo quy luật tự nhiên, ít phụ thuộc vào tính ngẫu nhiên [7]
Hình 1.4 Thiết lập “từ” với ba “ký tự” để truy vấn theo danh sách [5]
Ngày nay, có rất nhiều chương trình được mở rộng từ BLAST (thường được gọi chung là “họ BLAST”) chẳng hạn như:
Nucleotide-Nucleotide BLAST (BLASTn) là một công cụ phân tích sinh học mạnh mẽ giúp xác định các chuỗi DNA tương tự Khi sử dụng BLASTn với một trình tự DNA truy vấn, chương trình sẽ tìm và trả về các chuỗi DNA gần giống nhất trong cơ sở dữ liệu DNA mà người dùng lựa chọn Đây là công cụ hữu ích trong nghiên cứu gene, xác định các đoạn DNA chức năng và phân tích mối quan hệ di truyền giữa các loài sinh vật.
Protein-Protein BLAST (BLASTp) là công cụ giúp xác định các chuỗi protein có độ tương đồng cao nhất với protein truy vấn của người dùng Khi nhập vào một protein cần phân tích, BLASTp sẽ truy vấn cơ sở dữ liệu protein đã chọn và trả về danh sách các chuỗi protein có điểm giống nhau nổi bật, hỗ trợ xác định chức năng và nguồn gốc của protein đó Đây là bước quan trọng trong phân tích sinh học phân tử, giúp các nhà nghiên cứu hiểu rõ hơn về mối liên hệ giữa các Protein và chức năng sinh học của chúng.
Position-Specific Iterative BLAST (PSI-BLAST) là một trong những chương trình BLAST mới nhất dùng để xác định các mối quan hệ xa của một protein Phương pháp này bắt đầu bằng việc tạo ra danh sách các protein liên quan và hợp nhất chúng thành một "profile" dạng chuỗi trung bình để thực hiện câu truy vấn trên cơ sở dữ liệu protein Quá trình lặp lại giúp mở rộng nhóm protein tìm thấy và cập nhật profile mới, từ đó nâng cao khả năng phát hiện các mối quan hệ tiến hóa xa hơn so với phần mềm BLAST protein-protein thông thường Nhờ vào cơ chế thêm các protein liên quan trong từng vòng lặp, PSI-BLAST mang lại độ chính xác cao hơn trong việc xác định các mối quan hệ phân loại lâu dài của protein.
BLASTx is a tool that compares the six-frame translations of a nucleotide query sequence (both strands) against a protein database This process helps identify potential protein products from nucleotide sequences, aiding in functional annotation and gene prediction However, BLASTx can be computationally intensive and may run slowly, especially with large datasets Utilizing BLASTx efficiently is essential for accurate protein identification and genomic analysis in bioinformatics research.
TBLASTX is the slowest program in the BLAST family, performing six-frame translation of nucleotide query sequences It translates the nucleotide sequences into all six possible reading frames and compares the resulting proteins The primary goal of TBLASTX is to detect distant evolutionary relationships between nucleotide sequences by identifying conserved protein-level similarities This makes TBLASTX especially useful for discovering evolutionary links between highly divergent sequences.
- Protein-nucleotide 6-frame translation (tblastn): Chương trình này chuyển cơ sở dữ liệu đích thành mọi 6-khung (frame) và so sánh với chuỗi protein truy vấn.
Khi so sánh một số lượng lớn các chuỗi đầu vào bằng cách sử dụng công cụ MegaBLAST trong dòng lệnh, phương pháp này vượt trội về tốc độ so với việc chạy nhiều lần BLAST Đặc điểm nổi bật của MegaBLAST là chỉ cần so sánh chuỗi truy vấn với thư viện hoặc cơ sở dữ liệu chuỗi có sẵn, sau đó đối chiếu các kết quả theo một ngưỡng đã định, giúp tiết kiệm thời gian xử lý hiệu quả.
Phương pháp này có nhược điểm chính là độ chính xác không cao, đặc biệt khi so sánh với các phương pháp liên kết nhạy cảm, trong đó phương pháp đầy đủ thường cho kết quả đáng tin cậy hơn.
Phương pháp sử dụng mô hình phù hợp gần đúng
Kỹ thuật tìm kiếm chuỗi phù hợp gần đúng không nhằm tìm chính xác mà tập trung vào hai mục tiêu chính: xác định chuỗi phù hợp gần đúng với các phân đoạn của chuỗi ban đầu và tìm kiếm chuỗi từ điển gần đúng với mẫu truy vấn Phương pháp này thường sử dụng kỹ thuật brute-force để tính toán “độ chỉnh sửa” giữa mẫu và các chuỗi con, chọn ra những chuỗi có độ chỉnh sửa nhỏ nhất để đảm bảo sự phù hợp gần đúng Tuy nhiên, thuật toán này có độ phức tạp thời gian cao, với thứ tự O(n³m), trong đó m là độ dài của chuỗi mẫu và n là độ dài của chuỗi cần truy vấn Một phương pháp tiêu biểu trong mô hình phù hợp gần đúng là tìm kiếm chuỗi Bowtie, lần đầu tiên được giới thiệu bởi nhà khoa học Langmead và cộng sự trên tạp chí Curr Protoc Bioinformatics vào năm 2010, góp phần nâng cao hiệu quả và chính xác trong việc tìm kiếm chuỗi phù hợp gần đúng.
Phương pháp tìm kiếm chuỗi Bowtie
Phương pháp Bowtie do Langmead và cộng sự đề xuất năm 2010 là phương pháp nhanh chóng và tiết kiệm bộ nhớ trong phân tích gen Mô hình của Bowtie sử dụng một tập dữ liệu đầu vào lớn, gồm nhiều liên kết từ gen mẫu, sau đó tách mẫu thành các đoạn ngắn để đọc thông tin và tạo bảng đánh giá chỉ số Các chỉ số này giúp xếp hạng các chuỗi con đã tách ra, từ đó so sánh chúng với các đoạn gen tham khảo để xác định các vị trí phù hợp Trong ví dụ về gen người, chương trình sẽ xác định các chỉ số cho các thành phần bộ gen tham chiếu rồi đọc các trình tự ngắn của gen mẫu dựa trên các chỉ số này, là bước quan trọng trong quy trình so sánh gen Phương pháp này còn có chức năng phát hiện biến thể gen, trong đó các giá trị chỉ số đã được đánh giá trước đó giúp xác định chính xác các chuỗi con và tham chiếu về chuỗi gốc, nâng cao hiệu quả phân tích biến thể gen.
Bước 1: Xác định điểm chung từ các mẫu
Từ tập các mẫu đầu vào, sắp xếp và tìm điểm chung giữa các tập chuỗi.
Bước 2: Phân loại và đo độ ảnh hưởng
Từ các tập mẫu, tính toán và đưa ra độ dài chuỗi dài nhất có thể từ các mẫu
Bước 3: Tìm kiếm và đưa ra kết quả Kết quả hiển thị là tập các chuỗi cần so sánh có bắt cặp trình tự với chuỗi mẫu Thứ tự các chuỗi được sắp xếp theo thứ tự như sau: Chuỗi có ít bắt cặp trình tự đứng trước Các chuỗi có độ dài bắt cặp trình tự lớn đứng sau (theo hình kim tự tháp).
Một đoạn mã nguồn của thuật toán [8] sub quote_params { my %params_2_quote = (' rg' => 1, ' rg-id' => 1,
'-S' => 1, '-U' => 1, '-1' => 1, '-2' => 1 ); my $param_list = shift; my $quoting = 0; for (my $i=0; $i[$i] = "\"".$param_list->[$i]."\""; next;
$quoting = 1 if(exists($params_2_quote{$param_list->[$i]}));
Bowtie sử dụng để sắp xếp các quá trình đọc dữ liệu tham chiếu nhằm nâng cao hiệu quả về tốc độ và bộ nhớ, đặc biệt khi làm việc với các mẫu gen như GRCh37 Chỉ số Bowtie dựa trên các phương pháp sàng lọc FM (Ferragina & Manzini, 2000) và sử dụng Công nghệ Biến đổi Burrows-Wheeler giúp tối ưu hóa hiệu suất về tốc độ và kích thước dữ liệu Người dùng cần xây dựng hoặc tải sẵn các chỉ số phù hợp trước khi thực hiện quá trình liên kết đọc, vì các chỉ số này có thể được truy vấn nhiều lần Các bộ chỉ số cho bộ gen tham chiếu thường được cung cấp miễn phí trên trang web chính thức của Bowtie tại http://bowtie-bio.sf.net Chương trình Bowtie hoạt động dựa trên các giao thức tối ưu hóa để đảm bảo quá trình phân tích dữ liệu diễn ra nhanh chóng và chính xác.
+ Giao thức cơ bản sẽ sắp xếp một bộ các lần “đọc” cho một gen mẫu.
+ Giao thức đánh chỉ số (Indexing Protocol – Alternate Protocol 1) sẽ xây dựng chỉ số cho gen mẫu.
Giao thức “The Consensus and SNP Calling” sử dụng dữ liệu đầu ra từ công cụ SAMtools của Li et al (2009) để xác định độ tương đồng của chuỗi DNA, giúp xác định các biến thể di truyền chính xác Đồng thời, các giao thức tùy chọn dòng lệnh (Alternate Protocol 3) cung cấp một loạt các tùy chọn liên kết linh hoạt, phù hợp cho các phân tích phức tạp và nâng cao trong quy trình phân tích dữ liệu sinh học.
+ Các giao thức hỗ trợ (Support) hướng dẫn cách lưu trữ và cài đặt phần mềm Bowtie.
+ Giao thức hỗ trợ 1 (Support Protocol 1) hướng dẫn cách “build” phần mềm Bowtie từ mã nguồn.
Support Protocol 2 provides guidelines on creating the "pre-build" index from the Bowtie website, building upon Support Protocol 3 These protocols can operate across various environments, including Unix, Linux, Mac OS X, and Windows, ensuring versatility and compatibility in different systems.
The Bowtie program is an open-source software that is freely available for use It can be downloaded at http://www.opensource.org/licenses/artistic-license-1.0.php.
Hình 1.5 Hình ảnh một phiên chương trình Bowtie
Các dòng cuối mô tả:
+ Số chuỗi được xử lý.
+ Thông tin chạy chương trình, đầu ra chuẩn sẽ thể hiện tính hợp lệ.
+ Thông báo về phương pháp thực hiện - phương pháp Bowtie.
+ Có thể có thêm thông tin về chuỗi tìm kiếm
Hình 1.6 Ví dụ quá trình chạy phương pháp Bowtie với đầu ra định dạng SAM.
Mô hình này sử dụng cách tiếp cận brute-force để tính “độ chỉnh sửa” chuỗi mẫu sao cho gần đúng với tất cả các chuỗi con của chuỗi cần truy vấn, sau đó chọn các chuỗi với “độ chỉnh sửa” tối thiểu. Ưu điểm: Có thể tìm kiếm cùng lúc nhiều mẫu Độ chính xác cao.
Nhược điểm: Thuật toán này có chi phí thời gian chạy O(n 3 m) (với m là độ dài chuỗi mẫu, n là độ dài chuỗi cần truy vấn) Sử dụng nhiều bộ nhớ trong quá trình tìm kiếm.
Phương pháp sử dụng mô hình kết hợp chính xác và gần chính xác
Phương pháp đánh dấu tập mẫu chia chuỗi truy vấn thành các chuỗi con cố định để so sánh và tìm kiếm sự tương đồng trong cơ sở dữ liệu Đây là kỹ thuật hiệu quả chính xác để giải trình tự DNA/RNA, cho phép xử lý nhiều mẫu cùng lúc Phương pháp này thường được sử dụng trong việc tìm kiếm hàng loạt các chuỗi DNA/RNA ngắn trong cơ sở dữ liệu, giúp đọc bản đồ trực tiếp trên giao diện Ngoài ra, nó còn hỗ trợ khả năng tìm kiếm ngược và bổ sung mẫu, mặc dù thời gian xử lý trung bình khá phù hợp cho các ứng dụng cần độ chính xác cao.
Phương pháp điển hình của thuật giải này là Mpscan Phương pháp này do các nhà khoa học (Eric Rivals, Leena Salmela, Petteri Kiiskinen, Petri Kalsi, and Jorma Tarhio) từ đại học LIRMM, CNRS and Université de Montpellier 2, Montpelier, Pháp đăng lần đầu vào năm 2009 Chương trình này tìm kiếm đồng thời các tập mẫu ngắn Các mẫu này có thể tìm đồng thời cùng lúc Quá trình tìm kiếm đồng thời có thể lên tới 100000 mẫu [9]
Đầu tiên, tiến hành lọc các mẫu dựa trên tập dữ liệu đầu vào gồm n mẫu với độ dài l Trong bước này, hệ thống sẽ tìm kiếm các đoạn giống nhau có độ dài q=5 trong tất cả các mẫu để xác định các phần tương đồng quan trọng Quá trình này giúp tối ưu hóa việc phân tích và chọn lọc các đặc điểm nổi bật trong dữ liệu, đảm bảo các mẫu được xử lý hiệu quả và chính xác hơn.
Chương trình giả mã cho quá trình lọc mpscan [9]
1: i ← l − q + 1 2: while i ≤ n − q +1 do 3: j = 1; last ← l − q + 1 4: E = B[si] {si is the ith q-mer of the scanned sequence}
5: while true do6: if first bit in E is one then sequence}
7: {the scanned window is a prefix of the pattern}
8: if j = l − q + 1 then 9: verify an occurrence; break 10: end if
13: if E = 0 then 14: break {the scanned window is not a factor of the pattern}
15: end if 16: E ← (E _ 1) & B[s i−j ] {s i−j is the (i−j) the q-mer of the scanned
17: j ← j + 1 18: end while 19: i ← i + last 20: end while
Trong bước 2, bạn cần tối ưu độ phức tạp của thuật toán để nâng cao hiệu quả xử lý Định lý 1 chỉ ra rằng, thời gian trung bình của thuật toán mpscan để tìm kiếm r mẫu có chiều dài l trong văn bản n trên bảng gồm c ký tự là O(n log_c(rl)/l), đặc biệt khi q = Θ(log_c(rl)) Việc tối ưu hóa độ phức tạp này giúp nâng cao hiệu suất của thuật toán trong các ứng dụng xử lý văn bản lớn.
Cho 3 tập mẫu chiều dài l = 8: {P1, P2, P3} = {accttggc, gtcttggc, accttcca}. Tìm các mẫu tương tự trong 3 chuỗi đầu vào có độ dài q = 5.
Phương pháp này giúp đánh dấu sự trùng khớp của các mẫu tại các vị trí và đưa ra kết quả so sánh các đoạn tương đồng, mang lại hiệu quả cao trong việc tìm kiếm tập lớn các chuỗi DNA/RNA ngắn trong cơ sở dữ liệu Ưu điểm nổi bật của phương pháp bao gồm khả năng xem trực tiếp bản đồ trên giao diện, khả năng tìm kiếm ngược và bổ sung mẫu, giúp tối ưu quá trình phân tích dữ liệu gen một cách chính xác và nhanh chóng.
Nhƣợc điểm: So với các phương pháp khác, thời gian thực hiện của phương pháp này ở mức độ trung bình.
Trong các phương pháp tìm kiếm chuỗi DNA phổ biến, phương pháp tìm kiếm tương tự nhanh thường được sử dụng nhất nhờ vào thời gian tìm kiếm rất ngắn Các cải tiến kỹ thuật đã giúp thuật toán này nâng cao về tốc độ, độ chính xác và khả năng xử lý chuỗi đầu vào dài hơn, với khả năng đồng thời tìm kiếm tới 1.000 mẫu (MegaBLAST) Trong khi đó, các thuật toán như mô hình Markov ẩn và phương pháp Smith & Waterman có độ chính xác cao hơn nhưng tốn nhiều thời gian do phương pháp tính toán phức tạp, với độ phức tạp ở cấp hàm mũ Phương pháp Bowtie là một bước tiến mới, kết hợp các thuật toán cải tiến để đạt tốc độ nhanh và tiết kiệm bộ nhớ, dựa trên mô hình sử dụng tập đầu vào lớn, đánh giá chuỗi con, sau đó so sánh với gen mẫu dựa trên các chỉ số đánh giá Ưu điểm nổi bật của phương pháp này là khả năng đưa ra kết quả nhanh, tìm kiếm đồng thời nhiều mẫu, phù hợp cho việc xử lý hàng loạt các chuỗi DNA/RNA ngắn trong cơ sở dữ liệu, đồng thời cho phép đọc bản đồ trực tiếp trên giao diện, hỗ trợ tìm kiếm ngược và bổ sung mẫu, mặc dù thời gian thực thi trung bình.
N-GRAM VÀ PHƯƠNG PHÁP TÌM KIẾM CHUỖI TƯƠNG TỰ NHANH ÁP DỤNG N-GRAM
Mô hình N-Gram
Ngữ liệu: là tập hợp các văn bản, ngôn ngữ đã được số hóa (kho ngữ liệu) hoặc tập huấn luyện trong một số bài báo khoa học.
N-gram: là tần suất xuất hiện của n kí tự (hoặc từ) liên tiếp nhau có trong ngữ liệu.
Với n = 1 (unigram) được tính trên ký tự, chúng ta có thể xác định tần suất xuất hiện nhiều nhất của các chữ cái trong văn bản Thông tin này có thể ứng dụng trong thiết kế bàn phím, giúp bố trí các phím phổ biến nhất ở những vị trí dễ sử dụng nhất, từ đó tối ưu hóa tốc độ và sự tiện lợi khi nhập liệu.
- Với n = 2, ta có khái niệm bigram.Ví dụ với các chữ cái tiếng Anh “th”,
“he”, “in”, “an”, “er” là các cặp ký tự hay xuất hiện nhất Ngoài ra, ta có thể biết thêm rằng sau ký tự “q” thì phần lớn đều là ký tự “u”.
- Với n = 3, ta có trigram.Nhưng vì n càng lớn thì số trường hợp càng lớn nên thường người ta chỉ sử dụng với n = 1,2 hoặc đôi lúc là 3.Ví dụ với các ký tự tiếng Việt, tiếng Việt sử dụng 29 ký tự, vậy với n = 1 thì số trường hợp là 29, n = 2 thì số trường hợp là 29 2 = 841 trường hợp, n = 3 có 23489 trường hợp.
Bigram được sử dụng phổ biến trong phân tích hình thái các ngôn ngữ khó như tiếng Việt, tiếng Nhật, và tiếng Trung Phương pháp này dựa trên tần suất xuất hiện cạnh nhau của các từ để xác định cách chia câu thành các từ sao cho tổng bigram đạt giá trị cao nhất Trong thuật toán phân tích hình thái dựa trên trọng số nhỏ nhất, người ta thường sử dụng n = 1 để tính tần suất xuất hiện của các từ và xác định trọng số tương ứng Để đảm bảo kết quả phân tích chính xác, cần có các bộ dữ liệu (corpus) lớn và đại diện, giúp nâng cao tính thống kê của quá trình phân tích.
2.1.2 Mô hình ngôn ngữ N-gram
Mô hình ngôn ngữ là cho biết xác suất của một câu w1w2 wm là bao nhiêu
Theo công thức Bayes: P(AB) = P(B|A) * P(A) [10]
+ P(A): Xác suất xảy ra sự kiện A
+ P(B): Xác suất xảy ra sự kiện B
+ P(B|A): Xác suất (có điều kiện) xảy ra sự kiện B nếu biết rằng sự kiện A đã xảy ra, thì:
P(w 1 w 2 …w m ) = P(w 1 ) * P(w 2 |w 1 ) * P(w 3 |w 1 w 2 ) *…* P(w m |w 1 w 2 …w m-1 ) [10] Theo công thức này, mô hình ngôn ngữ cần phải có một lượng bộ nhớ vô cùng lớn để có thể lưu hết xác suất của tất cả các chuỗi độ dài nhỏ hơn m Điều này là không thể khi m là độ dài của các văn bản ngôn ngữ tự nhiên (m có thể tiến tới vô cùng) Để có thể tính được xác suất của văn bản với lượng bộ nhớ chấp nhận được, ta sử dụng xấp xỉ Markov bậc n:
Trong mô hình xấp xỉ Markov, xác suất xuất hiện của một từ (wₘ) được coi là chỉ phụ thuộc vào n từ đứng liền trước nó (wₘ₋ₙ, wₘ₋ₙ₊₁, , wₘ₋₁), thay vì phụ thuộc vào toàn bộ dãy từ trước đó (w₁, w₂, , wₘ₋₁) Điều này giúp đơn giản hóa công thức tính xác suất của văn bản, cho phép việc dự đoán và phân tích ngôn ngữ tự nhiên trở nên khả thi hơn trong các ứng dụng xử lý ngôn ngữ tự nhiên.
Với công thức này, ta có thể xây dựng mô hình ngôn ngữ dựa trên việc thống kê các cụm có ít hơn n+1 từ Mô hình ngôn ngữ này gọi là mô hình ngôn ngữ N-gram. Một cụm N-gram là 1 dãy con gồm n phần tử liên tiếp nhau của 1 dãy các phần tử cho trước.
2.1.3 Khó khăn khi xây dựng mô hình ngôn ngữ N-gram :
Vơí mô hình N-gram, sự phân bố không đều trong tập văn bản huấn luyện có thể dẫn đến các ước lượng không chính xác Khi các cụm N-gram phân bố thưa, nhiều cụm n-gram không xuất hiện hoặc chỉ có số lần xuất hiện nhỏ, việc ước lượng các câu có chứa các cụm n-gram này sẽ có kết quả tồi Với V là kích thước bộ từ vựng, ta sẽ có V n cụm N-gram có thể sinh từ bộ từ vựng Tuy nhiên, thực tế thì số cụm N-gram có nghĩa và thường gặp chỉ chiếm rất ít.
Tiếng Việt có hơn 5.000 âm tiết khác nhau, tạo ra tổng số 3-gram có thể lên đến 125 tỷ tổ hợp Tuy nhiên, thống kê thực tế cho thấy chỉ có khoảng 1,5 triệu cụm 3-gram xuất hiện, cho thấy nhiều cụm không xuất hiện hoặc xuất hiện rất ít trong dữ liệu Điều này phản ánh sự đa dạng và phức tạp của ngôn ngữ, đồng thời ảnh hưởng lớn đến việc xử lý ngôn ngữ tự nhiên và xây dựng mô hình ngôn ngữ tiếng Việt.
Khi tính xác suất của một câu trong xử lý ngôn ngữ tự nhiên, thường gặp phải vấn đề về các cụm N-gram chưa xuất hiện trong dữ liệu huấn luyện, dẫn đến xác suất của câu đó bị đánh giá bằng 0 mặc dù câu vẫn đúng về mặt ngữ pháp và nghĩa Để khắc phục vấn đề này, các nhà nghiên cứu đã phát triển nhiều phương pháp, như kỹ thuật smoothing, để xử lý các trường hợp N-gram chưa xuất hiện, đồng thời cải thiện độ chính xác của mô hình ngôn ngữ trong dự đoán các câu mới.
Kích thước bộ nhớ của mô hình ngôn ngữ :
Khi kích thước tập văn bản huấn luyện lớn, số lượng các cụm N-gram và kích thước của mô hình ngôn ngữ cũng rất lớn (tăng theo hàm mũ) Nó không những gây khó khăn trong việc lưu trữ mà còn làm tốc độ xử lý của mô hình ngôn ngữ giảm xuống do bộ nhớ của máy tính là hạn chế Để xây dựng mô hình ngôn ngữ hiệu quả, chúng ta phải giảm kích thước của mô hình ngôn ngữ mà vẫn đảm bảo độ chính xác.
2.1.4 Các phương pháp khắc phục cụm N-Gram phân bố không đều Để khắc phục tình trạng các cụm N-gram phân bố không đều như đã đề cập, người ta đã đưa ra các phương pháp đánh giá chính xác hơn xác suất của các cụm N-gram (làm mịn) Các phương pháp “làm mịn” đánh giá lại xác suất của các cụm N-gram bằng cách:
Gán cho các cụm N-gram có xác suất 0 (không xuất hiện) một giá trị khác 0. Thay đổi lại giá trị xác suất của các cụm N-gram có xác suất khác 0 (có xuất hiện khi thống kê) thành một giá trị phù hợp (tổng xác suất không đổi).
Các phương pháp làm mịn có thể được chia ra thành loại như sau:
Chiết khấu: giảm xác suất của các cụm N-gram có xác suất lớn hơn 0 để bù cho các cụm Ngram không xuất hiện trong tập huấn luyện.
Truy hồi : tính toán xác suất các cụm N-gram không xuất hiện trong tập huấn luyện dựa vào các cụm Ngram ngắn hơn có xác suất lớn hơn 0
Nội suy: tính toán xác suất của tất cả các cụm N-gram dựa vào xác suất của các cụm N-gram ngắn.
Phương pháp tương tự nhanh áp dụng N-gram tìm kiếm chuỗi DNA
Việc đánh chỉ số tuần tự (sequence index) đóng vai trò quan trọng trong các kỹ thuật tìm kiếm nhanh, giúp truy xuất dữ liệu DNA hiệu quả dựa trên bảng các chỉ số đã được thống kê Nhờ đó, việc tạo bảng chỉ số tuần tự phù hợp với dữ liệu DNA khổng lồ, tối ưu hóa tốc độ truy xuất và giảm tải dữ liệu cần tìm kiếm Tuy nhiên, trong nghiên cứu chuỗi DNA, tồn tại hai vấn đề cần được thảo luận để nâng cao hiệu quả của các phương pháp tìm kiếm và phân tích dữ liệu di truyền.
Dữ liệu DNA trong các định dạng thường là các đoạn dài liên tục, không có dấu phân cách rõ ràng để chia thành các từ DNA riêng biệt Việc phân tách các chuỗi DNA thành các "từ DNA" đòi hỏi các phương pháp xử lý dữ liệu tiên tiến, như phân tích ngữ nghĩa, sử dụng thuật toán học máy hoặc trí tuệ nhân tạo để nhận diện các điểm cắt phù hợp, giúp xác định các đơn vị nhỏ hơn mang ý nghĩa sinh học trong chuỗi DNA.
Thứ hai: Chúng ta phải bảo đảm các “từ DNA” không được quá dài Vì nếu dài việc tìm kiếm sẽ tăng theo cơ số mũ Khó khăn cho việc đưa ra kết quả Do đó, trong tài liệu này, người viết sử dụng n là vừa phải, có thể thực hiện được trên máy tính cá nhân để tìm kiếm.
Việc lưu trữ chuỗi DNA yêu cầu dung lượng lớn do dữ liệu khá lớn cần phải được quản lý hiệu quả Để thuận tiện cho việc truy xuất và tìm kiếm dữ liệu, người viết đã chia dữ liệu gốc thành các đoạn ngắn hơn, giúp cải thiện khả năng xử lý và đưa ra kết quả chính xác nhanh chóng.
Chuỗi DNA là chuỗi gồm nhiều ký tự A, T, G, C nằm liền kề, liên tiếp với nhau Giữa các ký tự không có khoảng trống Để thuận tiện cho việc tìm kiếm Ta chia chuỗi DNA thành các đoạn nhỏ hơn, giống như việc chia một cuốn sách thành các chương mục Không có quy định về việc chia một chuỗi DNA có độ dài bằng bao nhiêu thì hợp lý, Có thể chia chuỗi DNA thành các đoạn có độ dài 100, 500,
Trong tài liệu này, tác giả mô tả quá trình chia một chuỗi DNA dài thành các đoạn có độ dài 500 ký tự, được gọi là phân đoạn DNA Mỗi phân đoạn được gán ID riêng biệt nhằm thuận tiện cho việc truy xuất và xử lý dữ liệu sau này Quá trình này giúp quản lý các chuỗi DNA dài một cách hiệu quả hơn, đồng thời tối ưu hóa các thao tác phân tích và tìm kiếm thông tin trong hệ thống Việc phân đoạn và gán ID đóng vai trò quan trọng trong các ứng dụng sinh học phân tử và công nghệ sinh học hiện đại.
Với ngôn ngữ tự nhiên như tiếng Anh, việc xác định câu dễ dàng hơn nhờ vào khoảng trống và dấu ngắt câu giúp phân tách các câu một cách chính xác Tuy nhiên, trong chuỗi DNA, không có khoảng trống hoặc dấu ngắt để phân biệt các đoạn, khiến việc tách câu trở nên khó khăn hơn Để giải quyết vấn đề này, phương pháp n-gram trở thành công cụ hiệu quả để phân đoạn các chuỗi DNA thành các đoạn ngắn hơn Phương thức n-gram giúp phân tích và xác định các phần của chuỗi DNA dựa trên các chuỗi ký tự liên tiếp, tối ưu cho các nhiệm vụ xử lý dữ liệu sinh học Nhờ đó, việc tách chuỗi DNA thành các phần nhỏ hơn trở nên dễ dàng và chính xác hơn, hỗ trợ các nghiên cứu và phân tích sinh học một cách hiệu quả.
1-gram chia chuỗi T thành tập {A, B, C, D, E}.
2-gram chia chuỗi T thành tập {AB, BC, CD, DE}
Trong bài viết này, ta chọn 12-gram để phân chia tập.
2.2.3 Quá trình tìm kiếm chuỗi và hiển thị kết quả Đầu vào chương trình gồm hai chuỗi:
- Chuỗi tìm kiếm là chuỗi được nhập từ bàn phím.
Chuỗi từ điển được trích ra từ cơ sở dữ liệu chuỗi có sẵn, giúp tổ chức và tìm kiếm dữ liệu hiệu quả hơn Đầu tiên, chương trình sắp xếp thứ tự các “từ” chứa trong các chuỗi DNA tìm kiếm dựa trên độ dài cụ thể của chúng Quá trình phân tích chuỗi tìm kiếm thành các “từ” được thực hiện theo mô hình n-gram, trong đó n = 12, để đảm bảo độ chính xác cao trong việc trích xuất thông tin Mỗi “từ” sau đó được ghi vào tệp Index, lưu trữ tên chuỗi và vị trí của chúng trong chuỗi từ điển, giúp xác định chính xác vị trí của các đoạn DNA khác nhau trong kho dữ liệu Việc này cho phép mở rộng khả năng tìm kiếm và phân tích chuỗi DNA một cách hiệu quả, ngay cả khi các đoạn này xuất hiện ở nhiều vị trí khác nhau trong các chuỗi khác nhau.
Lấy giao của các tập trên chúng ta có vị trí chuỗi cần tìm, giá trị này là tập các chuỗi con có thể chứa chuỗi đầu vào.
Chuỗi đầu vào cần search là {W1, W3, W4} Tìm trong bảng trên
Tính giao của các tập
Tập R2 được đánh giá tốt hơn tập R1 vì nó chứa cả 2 tập từ của giá trị đầu vào, tốt hơn chỉ một tập từ so với tập R1
Hình 2.1 Định dạng FASTA gen Caenorhabdit elegans I
Chương trình được thực hiện có đầu vào gồm các gen mẫu có định dạng theo chuẩn FASTA.
Trong bài viết này, chúng tôi trình bày cách xử lý chuỗi gen dựa trên dữ liệu có sẵn trong CSDL và chuỗi nhập từ bàn phím Độ dài của chuỗi này thường là 12 ký tự, phù hợp với khả năng xử lý của các máy tính cá nhân hiện nay Ví dụ về chuỗi DNA gồm các ký tự A, T, G, C, cho thấy tính ứng dụng cao trong các phân tích gen Quá trình so sánh và truy xuất thông tin gen giúp hỗ trợ nghiên cứu sinh học và di truyền học hiệu quả hơn.
G, C, khi n tổng số chuỗi có thể có là 4 12 chuỗi Với n càng lớn, việc thống kê kết quả tăng theo cơ số mũ) Đưa ra các đoạn giống nhau của hai chuỗi gen đã cho.
- Tạo tệp n-gram thống kê tất cả các trường hơp T, G,C) có thể tao nên từ 4 ký tự (A,
Để tách chuỗi gen CSDL thành các phân đoạn có độ dài 500 ký tự, ta tiến hành phân chia dữ liệu theo định dạng chính xác, sau đó thực hiện thống kê các phân đoạn này để kiểm tra tính toàn vẹn thông tin Các phân đoạn sau khi tách được lưu vào file riêng biệt kèm theo chỉ số đánh số thứ tự, giúp dễ dàng quản lý và truy vết Đồng thời, vị trí của từng đoạn trong chuỗi gen gốc cũng cần được lưu lại chính xác để đảm bảo dữ liệu có thể được khôi phục hoặc phân tích sau này, thuận tiện cho quá trình xử lý và phân tích dữ liệu gen trong hệ thống CSDL.
Dưới đây là các đoạn nội dung đã được tách nhỏ và tối ưu hóa cho SEO từ bài viết của bạn: 1 "Chia đoạn dài thành các phần nhỏ giúp dễ đọc hơn." 2 "Các đoạn nhỏ chỉ có khoảng 12 ký tự." 3 "Lưu ý xuất các đoạn này vào tập tin để tiện truy cập." 4 "Tối ưu nội dung phù hợp với công cụ tìm kiếm." 5 "Chia nhỏ giúp cải thiện trải nghiệm người đọc." 6 "Lưu các đoạn trong file để phục vụ công tác quản lý." 7 "Sử dụng các đoạn ngắn giúp tăng khả năng tiếp cận nội dung." 8 "Tập trung vào các thông tin quan trọng từ đoạn dài." 9 "Việc chia nhỏ nội dung giúp từng phần rõ ràng hơn." 10 "Chuỗi các đoạn này sẽ hỗ trợ tốt cho công tác SEO."
- Quá trình tìm kiếm chuỗi là việc so sánh chuỗi nhập từ bàn phím với chuỗi đã đươc đánh chỉ muc trước đó Với chuỗi đươc tìm thấy, quá trình hiển thị kết quả là quá trình truy xuất ngược lại để tìm địa chỉ chuỗi trong chuỗi gen CSDL.
- Hiển thị kết quả lên màn hình.
Chương trình được thực hiện qua hai bước chính:
+ Duyệt lần lượt các file gen FASTA đầu vào Chia đoạn gen mẫu thành các đoạn nhỏ Mỗi đoạn gồm 500 ký tự A, T, G, C Đồng thời đánh dấu DocID cho
*.n-gram: file tách các chuỗi DNA thành các dạng N-Gram và tần suất xuất hiện của chuỗi n-gram đó trong file FASTA Nội dung các file được sắp xếp theo trình tự file có tần suất xuất hiện cao ở trước, tần suất xuất hiện thấp ở sau.
Hình 2.2 Nội dung file *.n-gram.
Chức năng của đoạn mã là chia nhỏ nội dung của file FASTA thành nhiều tài liệu riêng biệt Mỗi tài liệu sẽ gồm hai dòng chính: dòng đầu là tiêu đề FIELD_TI, ghi rõ tiêu đề của chuỗi DNA, vị trí bắt đầu, và vị trí kết thúc của chuỗi trong file gốc Đây là công đoạn quan trọng giúp tổ chức dữ liệu DNA một cách rõ ràng và dễ quản lý cho các phân tích sinh học tiếp theo Việc phân chia này hỗ trợ tối ưu hoá quá trình xử lý dữ liệu, đồng thời đảm bảo thông tin về vị trí của chuỗi DNA trong file gốc luôn được bảo toàn.
+ Dòng 2: FIELD_CO (field content): Nội dung chuỗi DNA được tách Trong bài viết này, người viết chọn chiều dài “field content” là 500 ký tự (Nếu file
FASTA gồm nhiều chuỗi DNA thì length của doc có thể sẽ nhỏ hơn 500 nếu chuỗi DNA không chia hết cho 500) Đánh thứ tự docId cho chuỗi được tách.
Hình 2.3 Nội dung file *.div
*.idx: Đầu vào tạo file này là file *.div Nội dung gồm docID (số thứ tự đếm tăng dần), vị trí offset của doc trong file *.div.
Hình 2.4 Nội dung file *.idx
*.seg: đầu vào là file *.div và *.idx Nội dung bao gồm docId và chia nội dung của từng docId theo dạng n-gram.
Hình 2.5 Nội dung file *.seg
*.frd: đầu vào là file *.seg: tạo forward index Nội dung gồm docId và nội dung từng đoạn chia trong file *.seg.
Hình 2.6 Nội dung file *.frd
*.inv.idx và *.inv: đầu vào là file *.frd và *.idx: tạo invert index Nội dung file
*.inv.idx bao gồm nội dung đoạn chia trong file *.frd + offset bên file *.inv Nội dung file *.inv bao gồm đoạn chia trong file *.frd và docId.
Hình 2.7 Nội dung file *.inv.idx
Hình 2.8 Nội dung file *.inv
Tìm kiếm và đƣa ra kết quả:
+ Tách chuỗi tìm kiếm thành các segment theo n-gram với n được nhập vào từ bàn phím.
+ Lấy danh sách offset của từng segment đã tách trong file *.inv.idx
+ Lấy danh sách docId của từng segment đã tách trong file *.inv
+ Lấy danh sách của từng segment trong file *.n-gram Do file *.n-gram đã được sắp xếp nên danh sách này cũng được sắp xếp theo tần suất xuất hiện.
+ Lấy 3 danh sách offset, docId, segment để đưa ra vị trí chuỗi cần tìm.
Bảng kết quả các lần thử phương pháp tìm kiếm chuỗi tương tự nhanh áp dụng N-Gram
2.3.1 Định dạng chuỗi cơ sở dữ liệu
Định dạng FASTA là tiêu chuẩn phổ biến trong lĩnh vực tin sinh học để lưu trữ các chuỗi nucleotide hoặc amino axit trong các tệp văn bản Dòng đầu tiên của tệp FASTA, gọi là dòng tiêu đề, bắt đầu bằng ký tự ">" hoặc ";" và chứa thông tin mô tả về chuỗi, bao gồm tên, chú thích, mã chuỗi, vị trí bắt đầu và kết thúc trong chuỗi gốc, cùng tên loài Các ký tự không hợp lệ như khoảng trắng hay dấu hoa thị trong dòng tiêu đề sẽ bị bỏ qua khi chương trình đọc tệp Nhờ cấu trúc đơn giản và tiện lợi, FASTA đã trở thành định dạng tiêu chuẩn trong các trình phân tích dữ liệu sinh học.
Ngoại trừ dòng đầu tiên, tất cả các dòng tiếp theo mô tả trình tự chuỗi nucleotide hoặc amino axit dưới dạng số hóa, thường có độ dài dưới 80 ký tự Chuỗi nucleotide gồm các ký tự A, T, G, C liên tiếp, có thể xen kẽ hoặc lặp lại nhiều ký tự giống nhau Chuỗi amino axit bao gồm các ký tự như A, B, C, D và có thể chứa dấu gạch ngang “-” để biểu thị các đoạn không xác định hoặc gãy đoạn trong chuỗi Đây là cách trình bày phổ biến trong các file dữ liệu sinh học để biểu diễn dữ liệu di truyền một cách dễ dàng và rõ ràng.
“*”) Do sự đơn giản của FASTA nên nhiều công cụ như Python, Ruby, PERL, C+ +… có thể dễ dàng truy xuất và thao tác trên định dạng này [17]
>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken
>gi|5524211|gb|AAD44166.1| cytochrome b [Elephas maximus maximus]
LCLYTHIGRNIYYGSYLYSETWNTGIMLLLITMATAFMGYVLPWGQMSFWGATVITNLFSAIPYIGTNLV EWIWGGFSVDKATLNRFFAFHFILPFTMVALAGVHLTFLHETGSNNPLGLTSDSDKIPFHPYYTIKDFLG LLILILLLLLLALLSPDMLGDPDNHMPADPLNTPLHIKPEWYFLFAYAILRSVPNKLGGVLALFLSIVIL GLMPFLHTSKHRSMMLRPLSQALFWTLTMDLLTLTWIGSQPVEYPYTIIGQMASILYFSIILAFLPIAGX IENY
Hình 2.10 Ví dụ định dạng tệp FASTA
2.3.2 Bảng kết quả các lần thử phương pháp tìm kiếm chuỗi tương tự nhanh áp dụng N-Gram
Tất cả các dữ liệu được thử nghiệm trên các bộ dữ liệu chuẩn Dữ liệu đầu vào là các tệp định dạng FASTA trích xuất từ chuỗi gen gốc của ngân hàng dữ liệu gen NCBI, gen được tải về miễn phí phục vụ cho mục đích nghiên cứu Chuỗi cần tìm kiếm được nhập từ bàn phím Chuỗi cần tìm kiếm sẽ được so sánh với dữ liệu từ điển trong tệp FASTA để biết được chuỗi nhập từ bàn phím cần tìm kiếm có trong dữ liệu từ điển đó không, có bao nhiêu chuỗi có mặt trong dữ liệu từ điển đó Kết quả quá trình tìm kiếm sẽ được hiển thị lên màn hình Chương trình được thực hiện qua hai bước Bước một: tiền xử lý và bước hai: tìm kiếm và hiển thị kết quả Chi tiết các bước đã được người viết đề cập ở mục 2.2.
Chương trình đã thực hiện tổng cộng 11 lần thử nghiệm, dựa trên các cơ sở dữ liệu mẫu được trích xuất trực tiếp từ bộ gen gốc trong cơ sở dữ liệu gen của NCBI Mỗi lần thử đều được ghi nhận và trình bày rõ ràng trong bảng 2.1, đảm bảo tính minh bạch và chính xác của quá trình nghiên cứu Các kết quả này giúp cung cấp những dữ liệu quan trọng để phân tích và đánh giá các đặc điểm của bộ gen, đồng thời tối ưu hóa hoạt động nghiên cứu trong lĩnh vực di truyền học.
STT Tên loạigen Dung lượng tệp đầu vào (byte) Bộ nhớ RAM sử dụng (byte)
Thời gian (giây) xử lýTiền Tìm kiếm Hiển thị kết quả
Bảng 1 Chi tiết các lần chạy thử chương trình.
2.4 Đánh giá phương pháp tìm kiếm chuỗi tương tự nhanh áp dụng N-Gram Ở phần đánh giá này, người viết trình bày kết quả tìm kiếm chuỗi trong một đoạn gen được lấy từ cơ sở dữ liệu gen của NCBI Quá trình tìm kiếm thu được kết quả về bộ nhớ được sử dụng khi tìm kiếm, thời gian tìm kiếm và hiển thị kết quả ra màn hình để so sánh hiệu quả của phương pháp tìm kiếm tương tự nhanh áp dụng N-Gram với phương pháp cùng loại là BLAST Đồng thời so sánh hiệu quả của phương pháp này với phương pháp tìm kiếm nhạy cảm đầy đủ Smith&Waterman để thấy được những cải tiến của phương pháp đề xuất đã thực sự mang lại hiệu quả về thời gian tìm kiếm và tiết kiệm dung lượng bộ nhớ trong quá trình tìm kiếm Do luận văn tập trung nghiên cứu chính là cải thiện thời gian tìm kiếm nên sau đây người viết sẽ tập trung mô tả cách thức và những cải thiện đạt được về việc cải thiện thời gian đưa ra kết quả của các thuật toán Hiệu quả về thời gian và dung lượng bộ nhớ trong quá trình tìm kiếm cũng được đưa ra như một kết quả của việc nghiên cứu Mỗi kiểm tra được thực hiện 10 lần và kết quả thể hiện giá trị trung bình.
2.4.1 Cải thiện thời gian tìm kiếm
Với việc chia đoạn gen cơ sở dữ liệu ban đầu thành các đoạn nhỏ hơn, sau đó sử dụng phương pháp đánh chỉ mục cho các đoạn nhỏ hơn đó, việc truy xuất kết quả chỉ thực hiện trên các bảng chỉ mục này Việc đánh chỉ mục là rõ ràng vì được đánh theo số thứ tự cụ thể nên không có sự nhập nhằng trong quá trình tìm kiếm.Hơn nữa các bảng chỉ mục có sự liên kết với nhau thông qua các định dạng tệp được chia nhỏ trong quá trình tiền xử lý Các định dạng tệp được đánh chỉ mục bằng số thứ tự, có vị trí bắt đầu, vị trí kết thúc đoạn theo cơ sở dữ liệu chuỗi đầu vào Chính vì vậy việc tìm kiếm chỉ diễn ra ở những đoạn đã được chia Với độ lớn khoảng 2000 kb mỗi đoạn, việc máy tính cá nhân tìm kiếm dữ liệu khoảng 80 kb đến 200 kb trong các đoạn 2000 kb là hoàn toàn có thể thực hiện được một cách nhanh chóng Ví dụ: Ở bảng 2.1 từ quá trình tìm kiếm đến việc đưa ra kết quả cho một đoạn mẫu 12 nucleotide trong một tệp cơ sở dữ liệu 1 kb đầu vào chỉ mất khoảng 3 giây Trong khi đó, với phương pháp khác là Smith&Water Man quá trình tìm kiếm đến hiển thị kết quả là 4 giây.
2.4.2 Tiết kiệm bộ nhớ trong quá trình tìm kiếm
Chương trình được thực hiện qua hai bước chính là tiền xử lý và tìm kiếm, đưa kết quả ra màn hình Ở bước đầu tiên – tiền xử lý, chương trình đã chia nhỏ tệp cơ sở dữ liệu thành các đoạn nhỏ hơn – với độ dài 500 ký tự, sau đó lập bảng, đánh chỉ mục cho các đoạn nhỏ này Nên việc truy xuất trong quá trình tìm kiếm sẽ là việc truy xuất vào các đoạn dữ liệu này Với tốc độ của máy tính hiện nay, việc truy xuất và tìm kiếm một đoạn khoảng vài chục byte trong một cơ sở dữ liệu độ lớn khoảng 4000 byte là thực hiện được và có thể thực hiện được nhanh chóng Ví dụ: Ở bảng 2.1 từ quá trình tìm kiếm đến việc đưa ra kết quả cho một đoạn mẫu 12 nucleotide trong một tệp cơ sở dữ liệu 1 kb đầu vào chỉ mất khoảng 1kb bộ nhớRAM thì với phương pháp Smith&Water Man quá trình tìm kiếm đến quá trình hiển thị kết quả bộ nhớ RAM cần sử dụng tổng cộng 500 kb.
THỰC NGHIỆM SO SÁNH PHƯƠNG PHÁP TÌM KIẾM TƯƠNG TỰ NHANH DỰA TRÊN N-GRAM VỚI PHƯƠNG PHÁP BLAST VÀ PHƯƠNG PHÁP SMITH-WATERMAN
Môi trường thực nghiệm
Tất cả thực nghiệm được thực hiện trên máy tính cá nhân Dell Vostro 15
3000 Series với cấu hình như sau:
CPU: Intel(R) Core(TM) i5-5250M CPU @ 1.6GHz / L2 cache
Bộ nhớ: 4GB RAM (1x2GB, 1x2GB)/ DIMM
Dung lượng: 500GB/ SCSI/ Disk drives TOSHIBA MQ01ABF050
Phần mềm của chúng tôi vận hành trên nền tảng Linux kernel 64-bit, đảm bảo hiệu suất ổn định và an toàn Các chương trình được viết và chỉnh sửa bằng ngôn ngữ C++ trong môi trường QT Creator, phiên bản 1.7.0 build 40-b43, đem lại giao diện thân thiện và dễ dàng tùy chỉnh Ngoài ra, các thuật toán phân tích sinh học như BLAST và SMITH-WATERMAN cũng được phát triển và chỉnh sửa bằng ngôn ngữ C++, nhằm tối ưu hóa độ chính xác và tốc độ xử lý dữ liệu.
Các kích thước dữ liệu được đo bằng byte, ví dụ 1MB tương đương với 1024 byte Trong nghiên cứu thực nghiệm, người viết đã so sánh hiệu suất của ba thuật toán tìm kiếm trên hai tập dữ liệu sinh học quan trọng: tập hợp gen của con người và tập hợp gen của khuẩn Escherichia coli Các kết quả này giúp đánh giá khả năng ứng dụng của các thuật toán trong xử lý dữ liệu sinh học lớn.
Dữ liệu gen người được lấy từ cơ sở dữ liệu của NCBI để phục vụ các nghiên cứu chuyên sâu Mỗi loại gen được trích xuất thành các chuỗi liên kết nằm trên các nhiễm sắc thể khác nhau, ký hiệu theo định dạng Chr-# (ví dụ, Chr-1 biểu diễn nhiễm sắc thể số 1) Các chuỗi lấy từ cùng một nhiễm sắc thể thường có độ tương đồng cao hơn so với các chuỗi từ các nhiễm sắc thể khác Tổng cộng, có 23 tập dữ liệu gen người, gồm Chr-1 đến Chr-22 và Chr-X, trong đó Chr-1 có kích thước lớn nhất với 65,63 triệu byte (62,6MB), còn Chr- là tập dữ liệu nhỏ nhất.
22 với 9953567 byte (10MB) và kích thước H-* khoảng 50000000 byte (5Gb).
(2) Các tập dữ liệu Escherichia coli được lấy từ cơ sở dữ liệu của NCBI Tập hợp tất cả tập dữ liệu Escherichia coli được kí hiệu là Ec-* Tập dữ liệu Escherichia coli nhỏ nhất là Ec_K-12 substr W3110 với 4646332 byte (4,6Mb). Tập lớn nhất là Ec_CI5 với 8,092,977 byte (8,1Mb) và kích thước Ec-* vào khoảng
Dữ liệu trong tệp gen có dạng chuỗi Các hình 3.1, 3.2 và 3.3 dưới đây thể hiện định dạng chuỗi gen trong các tập dữ liệu thực nghiệm.
Hình 3.1 Định dạng Fasta chuỗi gen khuẩn E Coli K12 – DH10B
Hình 3.2 Định dạng FASTA chuỗi gen Hs7_807
Thực nghiệm đánh giá phương pháp tìm kiếm tương tự nhanh áp dụng N-
Trong bài viết này, chúng tôi so sánh hiệu quả của ba phương pháp tìm kiếm gen phổ biến: phương pháp tìm kiếm tương tự nhanh BLAST, phương pháp N-Gram và phương pháp liên kết nhạy cảm đầy đủ Smith-Waterman Thực nghiệm được thực hiện bằng cách lựa chọn ngẫu nhiên các chuỗi gene từ từng loài và nhiễm sắc thể, sau đó áp dụng các thuật toán phù hợp để phân tích các chuỗi này Kết quả thu thập bao gồm kích thước gen sau quá trình tìm kiếm và thời gian thực thi của từng thuật toán, giúp đánh giá hiệu quả và độ chính xác của các phương pháp trong quá trình phân tích gen Điều này cung cấp cái nhìn rõ ràng về hiệu suất của các thuật toán dựa trên các tiêu chí về tốc độ và độ chính xác trong các ứng dụng sinh học phân tử.
Kết quả sau khi thực nghiệm các phương pháp tìm kiếm chuỗi cho thấy thời gian đưa ra kết quả của BLAST khá tốt trong khi số lượng chuỗi tìm thấy được ở mức chấp nhận được Hầu hết thời gian các lần tìm kiếm của BLAST đều nhanh hơn phương pháp Smith-Waterman khi tìm kiếm với chuỗi từ điển có dung lượng nhỏ và khi tìm kiếm với chuỗi từ điểm có dung lượng lớn Số chuỗi tìm kiếm được của BLAST trong các lần tìm kiếm với các đoạn chuỗi dung lượng nhỏ đều xấp xỉ với Smith-Waterman và N-Gram Ở các lần tìm kiếm với chuỗi từ điển dung lượng lớn, phương pháp Smith-Waterman tìm thấy nhiều kết quả nhất, sau đó đếnBLAST, cuối cùng là N-Gram Khi tìm kiếm với các chuỗi từ điển dung lượng nhỏ(khoảng dưới 2 Mb), thời gian đưa ra kết quả của N-Gram là nhanh nhất, tiếp theo là BLAST, cuối cùng là Smith-Waterman Khi tìm kiếm với chuỗi từ điển có dung lượng lớn hơn ( >5 Mb), phương pháp N-Gram vẫn đưa ra kết quả nhanh nhất nhưng số kết quả tìm được không bằng BLAST và Smith-Waterman Với dung lượng chuỗi từ điển 5Mb-10Mb, N-Gram vẫn tiết kiệm bộ nhớ hơn BLAST và Smith-Waterman Khi dung lượng chuỗi từ điển >50Mb, bộ nhớ sử dụng của phương pháp N-Gram tăng đáng kể > 2Gb Như vậy, có thể thấy phương pháp tìm kiếm tương tự nhanh áp dụng N-Gram đạt hiệu quả cao về tiết kiệm bộ nhớ, thời gian tìm kiếm, số lượng kết quả tìm được khi tìm kiếm với các chuỗi từ điển dung lượng nhỏ Mặc dù khi sử dụng phương pháp này với các chuỗi có dung lượng lớn, thời gian đưa ra kết quả vẫn nhanh hơn hai phương pháp còn lại nhưng số kết quả tìm được không nhiều bằng hai phương pháp còn lại Hiệu số kết quả tìm được của BLAST và Smith-Waterman so với N-Gram tăng dần theo độ lớn của dung lượng chuỗi từ điển.
Hình 3.3 Minh họa kết quả chạy BLAST độ dài chuỗi truy vấn là 12 với mẫu gen thử Chr-4
Hình 3.4 Minh họa kết quả chương trình sử dụng phương pháp Smith-Waterman với độ dài chuỗi truy vấn là 12
Phân tích và đánh giá kết quả thực nghiệm
Bộ dữ liệu được tải về khá lớn, tổng cộng khoảng gần 100GB nhưng do môi trường thực nghiệm có hạn nên người viết chỉ lựa chọn ra một số chuỗi với dung lượng phù hợp để thực hiện quá trình tìm kiếm và so sánh.
Phương pháp tìm kiếm chuỗi Smith-Waterman sử dụng kỹ thuật quy hoạch động, cho phép tận dụng kết quả từ các lần tìm kiếm trước để mở rộng phạm vi tìm kiếm cho các chuỗi mới Đặc điểm nổi bật của phương pháp này là khả năng hiển thị kết quả rất trực quan, giúp người dùng dễ dàng nhận diện các mối liên hệ giữa các chuỗi Tuy nhiên, nó đòi hỏi thời gian tìm kiếm chậm và yêu cầu bộ nhớ lớn hơn so với các phương pháp khác Trong ba phương pháp tìm kiếm, Smith-Waterman nổi bật với số lượng kết quả tìm được nhiều nhất trong mọi trường hợp, cho ra nhiều chuỗi liên quan hơn so với hai phương pháp còn lại.
Phương pháp BLAST là phương pháp tìm kiếm chuỗi tuy có thời gian tìm kiếm nhanh hơn Smith-Waterman nhưng khi tìm kiếm với các chuỗi từ điển dung lượng lớn, số lượng kết quả đưa ra của phương pháp này tuy nhiều hơn N-Gram nhưng không bằng phương pháp Smith-Waterman.
Phương pháp N-Gram có hiệu quả cao về số kết quả tìm kiếm, tốc độ xử lý nhanh và tiêu thụ ít bộ nhớ đối với các chuỗi từ điển dung lượng nhỏ dưới 8MB so với các phương pháp như BLAST và Smith-Waterman, đây là lợi thế lớn của N-Gram Tuy nhiên, khi đối mặt với các chuỗi từ điển có dung lượng lớn hơn 10MB, số lượng kết quả tìm kiếm của N-Gram thường ít hơn so với hai phương pháp còn lại, mặc dù vẫn duy trì tốc độ nhanh Nguyên nhân chính là do quá trình chia tách tệp dữ liệu từ điển đầu vào không triệt để, dẫn đến việc các đoạn gen nằm ở cuối phần chia và đầu phần tiếp theo có thể bị bỏ sót, gây ra mất dữ liệu trong kết quả tìm kiếm.
Bảng 2 trình bày kết quả thống kê các lượt tìm kiếm chuỗi DNA sử dụng phương pháp BLAST, phương pháp tìm kiếm nhanh dựa trên N-Gram, và phương pháp liên kết nhạy cảm đầy đủ Smith&Waterman đối với chuỗi DNA dài 12 nucleotide Các chuỗi tìm kiếm được lựa chọn ngẫu nhiên, và các thử nghiệm được thực hiện với các dung lượng khác nhau của cơ sở dữ liệu (CSDL) để đánh giá hiệu quả của từng phương pháp.
Kết quả thực nghiệm cho thấy, với tệp cơ sở dữ liệu từ điển có dung lượng dưới 2MB, thuật toán N-Gram đạt hiệu quả về thời gian tìm kiếm tối ưu hơn so với các phương pháp khác như tìm kiếm chuỗi tương tự nhanh BLAST và phương pháp tìm kiếm chuỗi nhạy cảm đầy đủ Smith-Waterman Thời gian trung bình để tìm kiếm trên các tệp dữ liệu này chỉ khoảng 100 giây, trong khi đó, BLAST mất khoảng 160 giây và Smith-Waterman tiêu tốn khoảng 190 giây Những kết quả này chứng minh tính ưu việt của N-Gram trong xử lý tìm kiếm chuỗi sinh học với dữ liệu nhỏ, giúp tối ưu thời gian phân tích và nghiên cứu.
N-Gram là thuật toán không chỉ tối ưu về thời gian tìm kiếm mà còn tiết kiệm dung lượng bộ nhớ khi thực hiện Các kết quả thực nghiệm cho thấy, với các chuỗi từ điển dưới 2MB, bộ nhớ cần thiết cho N-Gram chỉ khoảng 6MB, so với BLAST yêu cầu khoảng 10MB và phương pháp Smith-Waterman cần đến khoảng 14MB.