Đặc biệt đó là bài toán tìm sự tương đồng của các trình tự.Sequence Similarity Searching Tuy nhiên, hiện nay số lượng các trình tự trong các cơ sở dữ liệu sinh học lớn trên thế giới như
Trang 1LỜI CẢM ƠN
Lời đầu tiên tôi xin chân thành cám ơn đến PGS TS Trần Văn Lăng đã tận tình giúp đỡ tôi trong suốt thời gian học tập vừ qu và h ớng dẫn tôi hoàn thành luận văn này
Tôi chân thành cám ơn thầy cô Khoa Công nghệ thông tin nơi tôi học tập
và nghiên cứu đã tạo điều kiện và hỗ trợ tôi trong suốt thời gian qua
Tôi cũng xin chân thành cám ơn ng ời thân, bạn bè đã giúp đỡ và động viên tôi trong suốt thời gian học tập cũng nh trong thời gian thực hiện luận văn Chân thành cám ơn !
Biên Hòa, ngày 25 tháng 05 năm 2013
Phạm Đông Phong
Trang 2LỜI CAM ĐOAN
Tôi xin c m đo n đây là công trình nghiên cứu của bản thân Các số liệu, kết quả trình bày trong luận văn này là trung thực Những t liệu đ ợc sử dụng trong luận văn có nguồn gốc và trích dẫn rõ ràng đầy đủ
Biên Hòa, ngày 25 tháng 05 năm 2013
Học viên
Phạm Đông Phong
Trang 3TÓM TẮT
Bắt cặp các trình tự (Sequence Alignment) sinh học DNA, Protein là một bài toán cơ bản và đòi hỏi nhiều thời gian xử lý trong lĩnh vữc sinh tin học (Bioinfomatics) Trong đó, Smith-Waterman là một thuật toán bắt cặp cục bộ nhằm giải quyết bài toán này Trên cơ sở bài toán bắt cặp này, có thể ứng dụng cho nhiều bài toán khác Đặc biệt đó là bài toán tìm sự tương đồng của các trình tự.(Sequence
Similarity Searching)
Tuy nhiên, hiện nay số lượng các trình tự trong các cơ sở dữ liệu sinh học lớn trên thế giới như NCBI, EMBL, DDBJ đang gia tăng nhanh chóng dẫn đến việc các thuật toán xử lý trên khối lượng lớn dữ liệu trở nên kém hiệu quả Luận văn này trình bày một phương pháp triển khai thuật toán Smith-Waterman trên môi trường phân tán MPI kết hợp với kiến trúc chia sẻ GPU-CPU nhằm tăng tốc thuật toán Môi trường phân tán MPI với các thuật toán xử lý song song phù hợp cho phân hoạch dữ liệu giúp cải thiện hiệu suất tìm kiếm và kiến trúc chia sẻ sử dụng CUDA
cho phép song song hóa bài toán bắt cặp trình tự
Từ khoá: Sinh tin học, bắt cặp trình tự, CUDA, GPU, MPI
Trang 4MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
TÓM TẮT iii
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT vi
DANH MỤC HÌNH vii
DANH MỤC BẢNG ix
DANH MỤC BIỂU ĐỒ x
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN 5
1.1 Giới thiệu vấn đề 5
1.2 Tổng quan về sinh tin học 7
1.2.1 Amino acid và tính chất 7
1.2.2 DNA và RNA 8
1.2.3 Protein 10
1.2.4 Ngân hàng dữ liệu và phần mềm trong sinh tin học 11
1.3 Bắt cặp trình tự 13
1.4 Song song hoá dữ liệu trên môi trường phân tán dùng MPI 14
1.5 Công nghệ CUDA giải quyết bài toán sắp hàng trình tự 15
CHƯƠNG 2 CÁC PHƯƠNG PHÁP SẮP HÀNG TRÌNH TỰ 19
2.1 Khái niệm alignment 19
2.1.1 Ký tự ―gap‖ 19
2.1.2 Hàm đánh giá 20
2.1.3 Phân loại bắt cặp trình tự 22
2.2 Bắt cặp hai trình tự (Pairwise Sequence Alignment-PSA) 22
2.3 Bắt cặp đa trình tự (Multiple Sequence Alignment-MSA) 23
2.4 Các thuật toán so sánh các trình tự sinh học 24
2.4.1 Thuât toán Needleman – Wunsch 24
2.4.2 Thuật toán Smith-Waterman 27
CHƯƠNG 3 MÔI TRƯỜNG LẬP TRÌNH CUDA VÀ MPI 30
3.1 Khái niệm và thuật ngữ 30
3.1.1 Kiến trúc máy tính Von Neumann 30
3.1.2 Phân loại theo Flynn 31
3.2 Môi trường lập trình CUDA 34
3.2.1 Giới thiệu bộ xử lý đồ hoạ - GPU 34
3.2.2 Môi trường lập trình CUDA 38
3.3 Môi trường lập trình truyền thông điệp với MPI 44
3.3.1 Lịch sử MPI 44
3.3.2 Đặc điểm của MPI 45
Trang 53.3.3 Cấu trúc chương trình MPI 45
3.3.4 Cách lập trình MPI 45
CHƯƠNG 4 GIẢI THUẬT VÀ PHƯƠNG PHÁP HIỆN THỰC HÓA GIẢI THUẬT TRÊN MÔI TRƯỜNG MPI KẾT HỢP CÔNG NGHỆ CUDA 47
4.1 Thuật toán Smith-Waterman 47
4.2 Xây dựng giải thuật song song và cài đặt trên môi trường CUDA 51
Xây dựng giải thuật 51
4.3 Song song hoá xử lý dữ liệu dựa trên mô hình truyền thông điệp MPI 54
4.3.1 Lý do chọn mô hình truyền thông điệp MPI 54
4.3.2 Mô tả bài toán 54
4.3.3 Mô tả thuật toán 54
CHƯƠNG 5 KẾT QUẢ THỰC NGHIỆM 58
5.1 So sánh thời gian chạy chương trình 59
5.2 So sánh độ chính xác 62
KẾT LUẬN 64 TÀI LIỆU THAM KHẢO
Trang 6DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Trang 7DANH MỤC HÌNH
Hình 1.1 Cơ bản cấu trúc của một acid α-amino 8
Hình 1.2 Cấu tạo một nucleotide 9
Hình 1.3 Chuỗi xoắn kép DNA 9
Hình 1.4 Hình thức của protein 11
Hình 1.5 Biểu đồ năng lực tính toán CPU-GPU 17
Hình 2.1 Các loại GAP 20
Hình 2.2 Bắt cặp hai trình tự 22
Hình 3.1 Kiến trúc máy tính Von Neumann 30
Hình 3.2 Kiến trúc máy SISD 32
Hình 3.3 kiến trúc máy SIMD 32
Hình 3.4 Kiến trúc máy MISD 33
Hình 3.5 Kiến trúc máy MIMD 34
Hình 3.6 Kiến trúc GPU GF100 35
Hình 3.7 Cấu trúc của một SM 36
Hình 3.8 Kiến trúc bộ phần mềm CUDA 39
Hình 3.9 Các thao tác thu hồi và cấp phát bộ nhớ 40
Hình 3.10 Vùng nhớ dùng chung mang dữ liệu gần ALU hơn 40
Hình 3.11 Khối luồng 42
Hình 3.12 Mô hình bộ nhớ 43
Hình 4.1 Bước khởi tạo 49
Hình 4.2 Điền giá trị vào ma trận 50
Hình 4.3 Tìm ô ( i max, j max) có điểm cao nhất trong ma trận 50
Hình 4.4 Quay lui tìm kết quả 50
Hình 4.5 Phương pháp song song tính giá trị các phần tử ma trận đánh giá 53
Trang 8Hình 4.6 Sơ đồ biểu diễn Server gửi chuỗi DNA về Client 55 Hình 4.7 Sơ đồ biểu diễn Server gửi vị trí các trình tự DNA trong ngân hàng về Client 56 Hình 4.8 Sơ đồ biểu diễn Client bắt cặp từng trình tự DNA trong ngân hàng với chuỗi truy vấn DNA muốn tìm 57 Hình 5.1 Kết quả chạy chương trình với file cơ sở dữ liệu db1b 59 Hình 5.2 File lưu trữ kết quả sắp hàng đa trình tự 59
Trang 9DANH MỤC BẢNG
Bảng 1.1 Bảng các amino acid 8
Bảng 2.1 Ma trận M và σ 24
Bảng 2.2 Tạo vết từ ma trận Mnm và σij 26
Bảng 2.3 Các phần tử của ma trận Hij 27
Bảng 2.4 Viết lại ma trận Hij 28
Bảng 2.5 Tạo vết xuất phát từ Hnmax,mmax 29
Bảng 3.1 Ma trận phân loại theo Flynn 31
Bảng 5.1 Kết quả sắp hàng đa trình tự với nhóm 1 Mỗi nhóm tiến hành chạy thử nghiệm 10 lần và lấy thời gian trung bình 59
Bảng 5.2 Kết quả sắp hàng đa trình tự với nhóm 2 Mỗi nhóm tiến hành chạy thử nghiệm 10 lần và lấy thời gian trung bình 60
Bảng 5.3 Kết quả sắp hàng đa trình tự với nhóm 3 Mỗi nhóm tiến hành chạy thử nghiệm 10 lần và lấy thời gian trung bình 60
Bảng 5.4 Kết quả sắp hàng đa trình tự của chương trình CUDA và chương trình CPU với lần lượt 9 nhóm dữ liệu Thời gian chạy tính bằng giây 61
Trang 10DANH MỤC BIỂU ĐỒ
Biểu đồ 5.1 Biểu đồ tương quan về thời gian chạy của 3 nhóm 60 Biểu đồ 5.2 Biểu đồ tương quan về thời gian chạy của 2 chương trình với 9 nhóm dữ liệu 61 Biểu đồ 5.3 Biểu đồ tương quan về độ chính xác của 2 chương trình với 2 nhóm dữ liệu 63
Trang 11MỞ ĐẦU
Lý do thực hiện luận văn
Nhu cầu tính toán trong lĩnh vực khoa học, công nghệ ngày càng cao và trở thành một thách thức lớn Từ đó các giải pháp nhằm tăng tốc độ tính toán đã được
ra đời, từ năm 2001 đến năm 2003 tốc độ của Pentium 4 đă tăng gấp đôi từ 1.5GHz lên đến 3GHz Tuy nhiên hiệu năng của CPU (Central Processing Unit) không tăng tương xứng như mức gia tăng xung của CPU và việc gia tăng tốc độ xung của CPU nhanh chóng chạm phải ngưỡng tối đa mà cụ thể trong khoảng thời gian 2 năm từ năm 2003 đến năm 2005 tốc độ của CPU chỉ tăng từ 3GHz lên 3.8GHz Trong quá trình tăng tốc độ xung của CPU các nhà sản xuất đã gặp phải vấn đề về nhiệt độ của CPU sẽ quá cao và các giải pháp tản nhiệt khí đã đến mức tới hạn không thể đáp ứng được khả năng làm mát khi CPU hoạt động ở xung quá cao như vậy Vì vậy việc gia tăng xung hoạt động của CPU không sớm thì muộn cũng sẽ đi vào bế tắc Trước tình hình này, các nhà nghiên cứu vi xử lý đã chuyển hướng sang phát triển công nghệ đa lõi, nhiều lõi, với cơ chế xử lý song song trong các máy tính nhằm tăng hiệu năng và tiết kiệm năng lượng
Một trong các công nghệ xử lý song song ra đời đó là GPU (Graphics Processing Unit - bộ xử lý đồ họa) Ban đầu, việc chế tạo GPU chỉ với những mục đích công việc phù hợp với khả năng là tăng tốc độ xử lý đồ họa, cũng như trong ngành trò chơi là chủ yếu Nhưng đến thời điểm GPU NV30 của NVIDIA ra đời, GPU bắt đầu tham gia vào những công việc khác ngoài đồ họa như: Hỗ trợ tính toán dấu chấm động đơn, hỗ trợ tính toán lên cả ngàn lệnh Vì thế đã nảy sinh ra ý tưởng dùng GPU để xử lý, tính toán song song những chương trình không thuộc đồ họa Câu hỏi được đặt ra là làm thế nào để ứng dụng GPU vào việc xử lý tính toán song song Câu hỏi này nhanh chóng được giải quyết bằng công nghệ CUDA (Compute Unified Device Architecture) của NVIDIA ra đời năm 2007 Với CUDA, các lập trình viên nhanh chóng phát triển các ứng dụng song song trong rất nhiều lĩnh vực khác nhau như: Điện toán hóa học, sắp xếp, tìm kiếm, mô phỏng các mô hình vật lý, chuẩn đoán y khoa, thăm dò dầu khí, … CUDA là bộ công cụ phát triển
Trang 12phần mềm trên GPU được xây dựng bằng ngôn ngữ lập trình C Với CUDA các lập trình viên dùng để điều khiển GPU để xử lý, tính toán song song các dữ liệu lớn Việc tăng tốc trong quá trình tính toán không những đòi hỏi những thiết bị GPU có khả năng xử lý tốc độ cao với dữ liệu khổng lồ mà cần phải có những giải thuật song song hữu hiệu
Xuất phát từ nhu cầu trên, luận văn tập trung xây dựng các module chương trình giải quyết vấn đề xếp hàng trình tự trên hệ thống phân tán và tìm sự tương đồng giữa các trình tự sinh học
Mục tiêu luận văn
Khảo sát thuật toán Smith - Waterman để sắp hàng trình tự trên hệ thống phân tán dùng MPI và kiến trúc chia sẻ với CUDA
– Luận văn tập trung nghiên cứu khả năng giải quyết bài toán sắp hàng trình tự cục bộ bằng cách xử lý song song hóa dữ liệu trình tự trên môi trường phân tán MPI và song song hoá xử lý của thuật toán Smith-Waterman và hiện thực trên kiến trúc chia sẻ đa nhân đồ hoạ GPU nhằm gia tăng hiệu năng tính toán
– Cung cấp thực nghiệm cho các nghiên cứu khác sâu hơn hoặc phát triển các ứng dụng phục vụ nhu cầu thực tiễn
Nội dung thực hiện
Để hoàn thành được mục tiêu đề ra cần luận văn cần nghiên cứu các nội dung như sau:
− Thu thập các tài liệu có liên quan đến vấn đề bắt cặp trình tự
− Khảo sát và cài đặt thuật toán Smith – Wateman với các môi trường khác nhau như MPI, CUDA để tìm kết quả bắt cặp cho sự tương đồng và không tương đồng của hai phần tử trong hai trình tự
− Tìm hiểu các giải thuật tính toán song song và các cách thiết kế mẫu trong tính toán song song xử lý song song hóa dữ liệu trên môi trường MPI và xây dựng giải thuật toán song song trên thiết bị đồ họa GPU
− Đánh giá kết quả theo yêu cầu của luận văn
Trang 13− Sử dụng thuật toán Smith - Waterman để thực hiện trên một số trình tự cần
so sánh Thuật toán này bắt cặp cục bộ để tìm vùng tương đồng giữa hai trình
tự nucleotide hay protein, thuật toán tìm các đoạn hay các miền có độ tương đồng cao từ đó đánh giá mức độ tương đồng của hai trình tự
Dự kiến kết quả đạt được
− Về lý thuyết: Tài liệu về vấn đề khai thác kiến trúc phân tán và chia sẻ tìm
sự tương đồng của các trình tự sinh học
− Về sản phẩm: Module chương trình về sự tương đồng của các trình tự sinh học
Dự kiến tên công trình công bố trên tạp chí hoặc hội thảo khoa học:
Khai thác kiến trúc phân tán và chia sẻ để tìm sự tương đồng của các trình tự sinh học
Trang 14truyền gói tin MPI Chương thứ tư trình bày giải thuật và phương pháp hiện thực hóa giải thuật trên môi trường MPI kết hợp công nghệ CUDA Chương thứ năm
trình bày kết quả thực hiện, đánh giá thực nghiệm và phần kết luận
Chương 1: Tổng quan
Trong chương này giới thiệu về sự cần thiết việc ứng dụng công nghệ thông tin vào sinh học Tổng quan về sinh tin học và vấn đề bắt cặp trình tự nhằm giải quyết bài toán tìm sự tương đồng giữa các trình tự sinh học Giới thiệu song song hóa dữ liệu trên môi trường MPI và công nghệ CUDA giải quyết bài toán sắp hàng trình tự
Chương 2: Các phương pháp sắp hàng trình tự
Trong chương này, luận văn đưa ra khái niệm alignment, vấn đề bắt cặp trình
tự để tìm sự tương đông giữa hai trình tự hoặc đa trình tự trong đó, luận văn cũng giới thiệu hai thuật toán cơ bản được áp dụng trong vấn đề bắt cặp như: Needleman – Wunsch, Smith – Waterman
Chương 3: Môi trường lập trình CUDA và MPI
Trong chương này, luận văn giới thiệu kiến trúc máy tính Von Neumann và phân loại theo Flynn Cũng như môi trường lập trình CUDA và môi trương truyền thông điệp MPI
Chương 4: giảu thuật và phương pháp thực hiện giải thuật trên môi trường MPI kết hôp công nghệ CUDA
Trong chương này, giới thiệu thuật toán Smith – Waterman giúp nhận ra những miền tương đồng giữa hai chuỗi tìm kiếm cho việc sắp hàng chuỗi cục bộ tối
ưu hơn Xây dựng các giải thuật song song và cài đặt trên môi trường CUDA vấn
đề song song hóa dữ liệu trên môi trường MPI
Chương 5: Kết quả thực nghiệm
Trong chương này, thực hiện so sánh thời gia chạy cũng như độ chính xác Cũng như nhận xét chương trình chạy trên CUDA vượt trội hơn chương trình CPU
ở các trường hợp các trình tự có độ dài chuỗi lớn và số trình tự nhiều
Trang 15ra các loại thuốc chữa bệnh mới…
Các lĩnh vực lớn đang được sinh tin học giải quyết hiện nay:
Genomic: nghiên cứu cấu trúc và chức năng của gen
Proteinomics: phân tích một tỉ lệ lớn các protein của một sinh vật
Pharmacogenomics: phát triển các loại thuốc mới nhắm đến một căn bệnh xác định
Micro Array: nghiên cứu về DNA chip, protein chip
Mục tiêu hàng đầu của sinh tin học gắn liền với quá trình phân tích các thông tin sinh học Điều này được thể hiện qua các nghiên cứu về:
Tìm kiếm các gen trên các trình tự DNA ở các sinh vật khác nhau
Phát triển các phương pháp nhằm dự đoán cấu trúc RNA, cấu trúc và chức năng của các protein mới được phát hiện
Tập hợp các trình tự có sự tương đồng cao để đưa ra mô hình protein
So sánh các trình tự DNA tương đồng và thành lập cây phả hệ mô tả mối quan hệ tiến hóa
Bắt cặp các trình tự hay sắp hàng các trình tự sinh học nhằm xác định sự tương đồng giữa chúng là một bài toán lớn đòi hỏi nhiều tài nguyên tính toán và mất nhiều thời gian để xử lý, đặc biệt trong bối cảnh hiện nay khi mà các ngân hàng dữ liệu sinh học đã thu thập và lưu trữ được một số lượng trình tự rất lớn của nhiều chủng loài sinh vật Có hai loại bắt cặp trình tự: bắt cặp toàn cục và bắt cặp cục bộ Bắt
Trang 16cặp toàn cục đòi hỏi sắp xếp và so sánh về trình tự một cách toàn bộ Trong loại này, trình tự đầu vào thường tương tự và có độ dài xấp xỉ bằng nhau Bắt cặp cục bộ tập trung vào tính tương đồng của các bộ phận cục bộ Các thuật toán liên kết cục
bộ thường cố gắng sắp hàng các trình tự để có được phần giống nhau dài nhất Liên kết cục bộ phù hợp với trình tự có độ dài khác nhau
Đối với bắt cặp toàn cục, thuật toán được phát triển nhất là Wunsch [7] Đây là một phương pháp sắp xếp dựa vào quy hoạch động, để tính điểm cho quá trình liên kết Mặt khác, các thuật toán BLAST [8] cho phép tìm kiếm trình tự con (subsequences) giống như trình tự truy vấn BLAST sử dụng phương pháp heuristic vì vậy tốc độ đặc biệt nhanh khi thực hiện trên các ngân hàng gen lớn Điều này đã làm BLAST trở thành công cụ phổ biến Mặc dù với tốc độ thấp hơn thuật toán BLAST, nhưng với một độ chính xác cao hơn, nên thuật toán Smith-Waterman [9] được xem là một trong những thuật toán phổ biến nhất của việc giải quyết các vấn đề về sắp hàng trình tự cục bộ Việc cài đặt thuật toán Smith-Waterman đòi hỏi một lượng lớn các tính toánnên không thể chấp nhận cho hệ thống máy tính thông thường
Needleman-Đã có nhiều giải pháp đưa ra để giải quyết bài toán, trong đó việc xử lý song song trên môi trường phân tán với kỹ thuật truyền thông điệp MPI hoặc sử dụng công nghệ CUDA (Compute Unified Device Architecture) trên GPU đa nhân là hướng tiếp cận được nhiều tác giả quan tâm Nhóm tác giả Fa Zhang, Xiang-Zhen Qiao, Zhi-Yong Liu trong [10] trình bày phương pháp song song hoá dữ liệu với kỹ thuật chia để trị, nhóm tác giả M.Noorian, H.Pooshfam, Z.Noorian, R.Abdullah trong [11] đề xuất một thuật toán lai dựa trên các hệ thống phân tán MPI và OpenMP triển khai trên cụm máy chủ SMP Hướng tiếp cận hiện nay là dựa trên kiến trúc chia sẻ đa nhân đồ hoạ GPU có khá nhiều công trình nghiên cứu, điển hình
là các công trình được nêu trong các tài liệu [12], [13], đây có thể xem là hướng tiếp cận có nhiều triển vọng do công nghệ đồ hoạ đa nhân đang phát triển mạnh mẽ Tuy nhiên việc tập trung xử lý trên môi trường chia sẻ bộ nhớ của một máy tính với công nghệ CUDA, OpenCL hoặc các công nghệ dựa trên đa nhân đồ hoạ khác chưa giải quyết trọn vẹn vấn đề với số lượng dữ liệu trình tự lớn mà chỉ nhằm tăng tốc xử
lý cho thuật toán quy hoạch động vốn đòi hỏi nhiều tài nguyên tính toán Một nhánh
Trang 17nghiên cứu khác triển khai thuật toán Smith-Waterman trên nền tảng phần cứng được thiết kế riêng cho bài toán bắt cặp cục bộ như trong các bài báo [14], [15] Ở Việt Nam, cũng có một số tác giả nghiên cứu về vấn đề này như nhóm tác giả Nguyễn Thanh Thuý, Nguyễn Hữu Đức, Phạm Hồng Phong, Tạ Minh Ngọc, Dương Nhật Tân, Lê Đức Hùng trong bài báo [6] đề xuất giải pháp tăng tốc thuật toán Smith-Waterman trên môi trường chia sẻ cụm thiết bị đồ hoạ GPU, hay tác giả Trương Văn Hiệu trong luận văn thạc sĩ tại trường Đại học Đà Nẵng [2] năm 2011 trình bày một số thuật toán song song sử dụng công nghệ CUDA, tác giả Nguyễn Ngọc Điệp trong luận văn thạc sĩ tại Trường Đại học Lạc Hồng [1] năm 2012 trình bày phương pháp gia tăng hiệu năng tính toán cho bài toán sắp hàng đa trình tự dựa trên công nghệ CUDA
Luận văn đề xuất một giải pháp sử dụng kết hợp thuật toán song song trên môi trường phân tán truyền thông điệp MPI và kiến trúc chia sẻ xử lý đa nhân đồ hoạ GPU với công nghệ CUDA nhằm tăng khả năng tính toán để giải quyết bài toán sắp hàng trình tự cục bộ bằng thuật toán Smith-Waterman trên khối lượng dữ liệu trình tự lớn
1.2 Tổng quan về sinh tin học
Sinh tin học là một ngành khoa học mà trong đó có sự kết hợp giữa sinh học,
khoa học máy tính và công nghệ thông tin Sinh tin học sử dụng các thuật toán phân tích tối ưu xử lý dữ liệu sinh học thông qua các thiết bị phần cứng và hệ thống
mạng
1.2.1 Amino acid và tính chất
Amino acid là những chuỗi tạo thành protein Một amino acid là một phân tử
có chứa cả hai carboxyl và amin nhóm chức năng Một α-amino acid như trong hình 1.1 là một trong các nhóm amino (nhóm R) và chức năng carboxylate được gắn vào cùng một nguyên tử cacbon, được gọi là α-carbon Các α-amino acid khác nhau bởi các thành phần tạo nên chúng Nhóm R trong hình 1.1 xác định amino acid, R có thể là một trong 20 amino acid tiêu chuẩn như trong Bảng 1.1
Trang 18Hình 1.1 Cơ bản cấu trúc của một acid α-amino [22]
Cách phân loại amino acid phổ biến là dựa vào gốc R và được chia làm 5 nhóm: nhóm I gồm 7 amino acid có R không phân cực, kỵ nước; nhóm II gồm 3 amino acid có gốc R chứa nhân thơm; nhóm III gồm 5 amino acid có R phân cực, không tích điện; nhóm IV gồm 3 amino acid có R tích điện dương; nhóm V gồm 2 amino acid có R tích điện âm
20 amino acid có liên quan đến sinh tổng hợp protein và được quy định bởi
mã di truyền, cùng với một số thuộc tính của chúng, được thể hiện trong Bảng 1.1
Bảng 1.1 Bảng các amino acid [3]
Amino Acid 3-letter 1-letter Amino Acid 3-letter 1-letter
1.2.2 DNA và RNA
DNA là chữ viết tắt của axit 2‘-deoxyribonucleic, được nhà sinh học người Thụy Điển Miescher tìm ra vào năm 1869 trong nhân tế bào bạch cầu (tế bào mủ) Đầu tiên ông gọi nó là nuclein có nghĩa là hạch nhân Sau đó, ông đã phát hiện ra nó
có bản chất axit và gọi nó là axit nucleic Sau hơn 80 năm cùng với sự tranh cãi của nhiều nhà khoa học, đến năm 1952, người ta mới công nhận DNA là vật chất di truyền DNA là một chuỗi các nucleotic sắp xếp kế tiếp nhau Nucleotic có 4 loại
Trang 19và được ký hiệu là A (Adenine), G (Guanine), C (Cytosine), T (Thymine) Ta có bộ
ký hiệu cho các nucleotic như sau: Nuc={A, C, G, T}
DNA gồm 3 thành phần chính: bazơ nitơ dạng purine và pyrimidine (A,T,C,G), đường pentose (đường 5 carbon) và axit phosphoric (H3PO4) Ba thành phần này có tỷ lệ 1:1:1 và chúng liên kết với nhau tạo thành một nucleotide
Hình 1.2 Cấu tạo một nucleotide [1]
Cấu trúc của DNA được Watson-Crick khám phá ra Đó là chuỗi xoắn kép cong nhẹ nhàng, có cấu trúc không gian 3 chiều, gồm hai sợi song song, đối xứng
và bổ sung cho nhau (hình 1.3.) theo một qui luật nghiêm ngặt: A bắt cặp với T và
C bắt cặp với G nhờ các liên kết hydro Cấu trúc xoắn kép của Watson- Crick là chiếc chìa khóa để mở ra những kỹ thuật của sự sống
Hình 1.3 Chuỗi xoắn kép DNA [3]
Trang 20RNA (Ribonucleic Acid) là 1 loại acid nucleic (như ADN), cấu tạo từ các nguyên tố C, H, O, N, P RNA là một đại phân tử, cấu tạo theo nguyên tắc đơn phân
mà các đơn phân là các Ribonucleotide (riboNu) RNA tương tự như DNA có 3 điểm khác nhau:
Là chuỗi xoắn đơn
Trong tế bào có 3 loại RNA chính, tham gia vào quá trình dịch mã sang protein:
mRNA là RNA thông tin Đây là các bản sao của các trình tự trên DNA, nhằm chuyển hóa thông tin mã hóa trên DNA đến bộ máy giải
mã protein tương ứng
tRNA là các RNA vận chuyển, đóng vai trò vận chuyển các Amino acid dịch mã để tổng hợp ra protein từ mRNA tương ứng
của tế bào Ribosome là một thành phần trong bộ máy dịch mã của tế bào, được tạo thành bằng cách kết hợp rRNA với protein
Ngoài ra còn có RNA mạch đơn, kép là vật chất di truyền ở virus, nhiều phân
tử RNA rất nhỏ có chức năng điều hoà, RNA có chức năng như 1 enzim (ribozim) Mỗi loại RNA có cấu trúc, thời gian tồn tại trong tế bào khác nhau phù hợp với chức năng
1.2.3 Protein
Protein là hợp chất hữu cơ gồm 4 nguyên tố cơ bản C, H, O, N thường có
thêm S và đôi lúc có P Có hơn 20 loại axit amin khác nhau tạo nên các protein, mỗi axit amin có 3 thành phần: gốc cacbon (R), nhóm amin (-NH2) và nhóm cacboxil (-
COOH), chúng khác nhau bởi gốc R Protein được tạo thành từ các amino acid bố
trí trong một chuỗi tuyến tính và liên kết với nhau bằng các peptide xương sống giữa carboxyl và nhóm amin của amino acid liền kề (Hình 1.4)
Trang 21Hình 1.4 Hình thức của protein [21]
Trong Hình 1.4, R1 là một amino acid và R2 là một amino acid khác R1 và R2 có thể là một trong hai mươi amino acid có sẵn Khi amino acid được nối với nhau, chúng tạo thành một liên kết peptide, các liên kết peptide liên kết hóa học các amino acid monome trong một chuỗi protein Mỗi protein có duy nhất chuỗi amino acid của nó, được gọi là cấu trúc chính Amino acid có thể được liên kết với nhau theo các tuần tự khác nhau để tạo thành một số lượng lớn các protein Tùy thuộc vào cách các acid amino được kết hợp, chức năng của các amino acid khác nhau
1.2.4 Ngân hàng dữ liệu và phần mềm trong sinh tin học
Hiện nay, trên thế giới đã có những ngân hàng dữ liệu sinh học nổi tiếng như:
NCBI - Trung tâm Quốc gia về Thông tin Công nghệ Sinh học
(National Center for Biotechnology Information) của Mỹ Tính đến
tháng 2/2013 đã có 150.141.354.858 base và 162.886.727 trình tự
EMBL - Phòng thí nghiệm Sinh học phân tử (European Molecular
Biology Laboratory) của Châu Âu Ngân hàng EMBL chứa
247.335.689 trình tự bao gồm 429.512.389.024 nucleotide tính đến tháng 09/2012
DDBJ - Ngân hàng dữ liệu DNA, Nhật Bản (DNA Data Bank of
Japan) Tính đến 03/2013 có 163,017,305 entries với 150,760,062,903
nucleotits
Về phần mềm, trên thế giới có nhiều phần mềm giúp xử lý các trình tự sinh học DNA và protein như: phần mềm FastA, Blast, Cn3D, Phylip, PepTool, GeneTool, ClustalX, BioEdit, SeqVISTA, SAGA, Primer3, PC-Genes, Discovery Studio Gene, DNASIS, DNAMAN, VECTOR NTI, AnnHyb, DNA Club, Plasmid Processor, Oligos, v.v Những phần mềm này có một số chức năng:
Trang 22 Chuyển mã trình tự DNA sang RNA
Hiển thị cặp trình tự chính và trình tự bắt cặp
Tìm vị trí của một enzyme giới hạn trong một trình tự
Vẽ bản đồ plasmid, hỗ trợ thiết kế phân tử
Tìm kiếm các đoạn mồi (primer)
So sánh mức độ tương đồng (similarity) giữa các trình tự
Vẽ cây biểu diễn mức độ tương đồng giữa các trình tự (biểu đồ dendogram)
Tìm kiếm các trình tự, các đoạn lặp (motif), các enzyme trong cơ sở dữ liệu
Ở Việt Nam, lĩnh vực này cũng chỉ xuất hiện ở các viện nghiên cứu, trong một vài trường đại học lớn, và cũng chỉ dừng lại ở trong giới nghiên cứu về Công nghệ sinh học Hoạt động của khoa Công nghệ sinh học, trường đại học Khoa Học Tự Nhiên TP Hồ Chí Minh; Viện Công nghệ sinh học, Viện Khoa học và Công nghệ Việt Nam; Trường đại học Y Dược TP Hồ Chí Minh là những minh chứng
Phân viện Công nghệ thông tin tại TP Hồ Chí Minh, từ năm 2004 đã hợp tác với một số nhà nghiên cứu của Viện Công nghệ Sinh học; của NCBI/NLM/NIH và NIAID/NIH đã xây dựng phần mềm HiBio [4] phục vụ việc nghiên cứu Công nghệ Sinh học với các chức năng:
– Thiết kế mồi để hiển thị cặp mồi tốt nhất, các đoạn mồi xuôi, các đoạn mồi ngược, hoặc sắp xếp theo các tính chất
– Thiết kế bản đồ plasmid với các tính năng cần thiết ở các dạng khác nhau, trong đó có cả việc đề xuất những enzym cắt
– Có thể sử dụng để dự đoán cấu trúc protein bậc 2, xem cấu trúc bậc 3 của một protein nào đó
– Sử dụng để vẽ cây sinh loài theo hai dạng có gốc và không gốc
– Vấn đề tìm kiếm motif cũng được đặt ra trong HiBio
…
Ngoài phần mềm trên, Sở Khoa học và Công nghệ Tp Hồ Chí Minh cũng quản lý dự án về Xây dựng mô hình và công cụ tin học để xử lý thông tin về gene,
Trang 23hỗ trợ nghiên cứu ứng dụng trong công nghệ sinh học ở Việt Nam Nhưng cũng mới dừng lại ở việc thể hiện các khái niệm cơ bản và cấu trúc của protein
1.3 Bắt cặp trình tự
Trong lĩnh vực nghiên cứu phân tích cấu trúc và chức năng của gen và protein, phân tích trình tự chuỗi DNA, protein đóng vai trò quan trọng Để đơn giản, trình tự DNA, protein sẽ được tuần tự hóa và nghiên cứu dưới dạng chuỗi các ký tự Thông thường khi một gen được phát hiện, một trong những yêu cầu quan trọng là làm thế nào xác định được chức năng của gen này, yêu cầu tương tự cũng được đặt ra khi phát hiện ra protein mới Một phương pháp tiếp cận phổ biến là so sánh, đánh giá sự tương đồng của chuỗi DNA, protein này với những chuỗi DNA, protein đã biết, từ
đó có thể đưa ra dự đoán về chức năng cũng như cấu trúc của những gen mới phát hiện Quá trình tiến hóa của loài người là một quá trình biến đổi đa dạng, từ một gen
tổ tiên dưới tác động của quá trình tiến hóa đã biến đổi tạo nên những khác biệt so với gen gốc ban đầu Do đó việc nhận định sự giống nhau của các đoạn gen, trình tự
là một vấn đề lớn của sinh tin học Vấn đề được đặt ra là làm thế nào để có được phép so sánh tốt cho các trình tự DNA, khi số lượng tế bào trong cơ thể khoảng 1014
và mỗi tế bào mang khoảng 3.109 ký tự trong đoạn DNA của chúng
Trong việc giải quyết bài toán sắp hàng trình tự, trước hết phải xem xét bài toán bắt cặp 2 trình tự (Pairwise Sequence Alignment – PSA) Bài toán này đã được giải quyết trọn vẹn bằng nhiều phương pháp khác nhau Đồng thời với việc giải quyết bài toán này, xuất hiện nhu cầu về việc so sánh nhiều trình tự, để so sánh nhiều đoạn gen hoặc tìm ra một phần tử đại diện cho một tập các gen nhằm đáp ứng nhu cầu ngày càng cao của việc tìm kiếm dự đoán cấu trúc của các gen, protein, khi kho dữ liệu sinh học được tập hợp ngày càng lớn
Sắp hàng trình tự là một thủ tục cực kỳ quan trọng trong tin sinh học, nó được xem là nền tảng cho tất cả các thủ tục khác Vấn đề đặt ra là tạo ra những sự sắp hàng giữa các nucleotide thông qua việc chèn các ký tự gap, làm cho khoảng cách giữa hai trình tự tức chi phí sửa chữa (là tổng chi phí cho các sự kiện chèn – xóa, thay thế các nucleotide) giữa hai trình tự là nhỏ nhất (hoặc lớn nhất)
Trang 24Đầu vào là 2 trình tự X = (x1, x2, …xp) và Y = (y1, y2, …yq), sắp hàng trình tự X và Y là cách chèn các kí tự trống (gap) vào hai trình tự X và Y sao cho chúng có độ dài bằng nhau và khoảng cách (chi phí sửa chữa) giữa hai trình tự là nhỏ nhất (hoặc lớn nhất)
Các thuật toán quy hoạch động đầu tiên cho việc sắp hàng giữa các chuỗi ký
tự được trình bày bởi Levenshtein với độ phức tạp về thời gian và bộ nhớ là O(n2) Needleman và Wunsch [7] lần đầu tiên áp dụng thuật toán này vào lĩnh vực sinh tin học năm 1970 Waterman [9], tiến hành thực nghiệm trên một khối lượng lớn các trình tự với trọng số cho việc chèn gap với độ phức tạp thời gian là O(n3) nhưng cho kết quả chính xác cao hơn Lý do của việc tăng độ phức tạp về thời gian là do bổ sung thêm tính toán chi phí chèn – xóa gap trong các trường hợp
1.4 Song song hoá dữ liệu trên môi trường phân tán dùng MPI
Xử lý song song dựa trên hai kiến trúc cơ bản: Bộ nhớ phân tán và bộ nhớ dùng chung Máy tính song song theo kiến trúc bộ nhớ phân tán thực chất là một tập các máy tính tuần tự (gọi là các nút – nodes) cùng làm việc để giải quyết một vấn
đề Mỗi nút có khả năng truy cập nhanh vào bộ nhớ riêng của nó và truy cập vào bộ nhớ của nút khác thông qua mạng giao tiếp, thường là mạng giao tiếp có tốc độ cao
Dữ liệu được trao đổi giữa các nút là các gói tin được truyền trên mạng giao tiếp Máy tính song song bộ nhớ dùng chung, nhiều bộ xử lý dùng chung một không gian
bộ nhớ bằng một bộ bus bộ nhớ tốc độ cao Không gian bộ nhớ dùng chung cho phép các bộ xử lý trao đổi và chia sẻ việc truy cập dữ liệu một cách hiệu quả Số lượng bộ xử lý dùng trong mô hình bộ nhớ dùng chung là có giới hạn nhỏ Lý do là
số lượng dữ liệu được truyền tải qua bus bộ nhớ đến các bộ xử lý là có giới hạn Thế
hệ tiếp theo của máy tính song song hiện nay sử dụng kết hợp giữa kiến trúc bộ nhớ phân tán và bộ nhớ dùng chung Mỗi nút là một nhóm các bộ xử lý dùng chung bộ nhớ và các nút được kết nối bằng một mạng giao tiếp tốc độ cao
Trong mô hình phân tách dữ liệu hay song song hóa dữ liệu, dữ liệu được chia thành các phần có kích thước xấp xỉ nhau tương ứng với các bộ xử lý khác nhau Mỗi bộ xử lý sau đó làm việc trên phần dữ liệu tương ứng với nó, các bộ xử lý có thể cần phải trao đổi dữ liệu với nhau sau những khoảng thời gian nhất định
Trang 25Mô hình song song hóa dữ liệu chỉ có một luồng điều khiển Một giải thuật song song dữ liệu bao gồm các phép xử lý tuần tự phù hợp với dữ liệu: Một phép xử
lý được bắt đầu chỉ khi phép xử lý trước nó đã kết thúc Mô hình đơn chương trình
đa dữ liệu (Single-Program-Multiple-Data (SPMD)) trong đó chương trình được cài đặt ở tất cả các bộ xử lý thỏa mãn mô hình song song hóa này
Chiến lược này phù hợp với các giải thuật sắp hàng trình tự, trong đó các bộ
xử lý có thể tính toán sắp hàng chuỗi truy vấn với một chuỗi trong tập dữ liệu trình
tự có kích thước lớn đã được phân hoạch, sự trao đổi dữ liệu giữa các tiến trình đang thực hiện song song hầu như không xảy ra
MPI được coi như là một chuẩn thực hiện của mô hình ―truyền gói tin‖ trong tính toán song song Quá trình tính toán song song bao gồm một số lượng tiến trình, mỗi tiến trình làm việc với một bộ dữ liệu cục bộ Mỗi tiến trình có các biến cục bộ,
và không có cơ chế nào để một tiến trình có thể truy cập trực tiếp vào bộ nhớ của một tiến trình khác Trao đổi dữ liệu giữa các tiến trình được thực hiện bằng cách truyền gói tin, là phương tiện duy nhất để thực hiện gửi và nhận dữ liệu giữa các tiến trình Lý do chính khiến mô hình này trở nên hữu dụng vì về bản chất mọi kiểu tính toán song song đều có thể thực hiện trên mô hình truyền gói tin Thêm vào đó,
mô hình này:
– Có thể thực hiện trên nhiều nền tảng khác nhau, từ kiến trúc nhiều bộ xử lý dùng chung bộ nhớ đến trạm làm việc thậm chí là một máy đơn bộ xử lý
– Cho phép quản lý dữ liệu và tiến trình chi tiết hơn so với ứng dụng song song theo mô hình bộ nhớ dùng chung Hơn nữa chương trình có thể tạo ra một hiệu năng xử dụng cao hơn
1.5 Công nghệ CUDA giải quyết bài toán sắp hàng trình tự
Bài toán sắp hàng trình tự có một lịch sử nghiên cứu và phát triển khá lâu, nhưng tới thời điểm hiện tại vẫn là một bài toán quan trọng cần phải tiếp tục tập trung nghiên cứu và phát triển để giải quyết các đòi hỏi ngày một cao của lĩnh vực sinh học Với khối lượng dữ liệu sinh học khổng lồ ngày một phình to đòi hỏi tiêu tốn rất nhiều tài nguyên máy tính Vì thế, cải thiện năng lực xử lý của phần cứng
Trang 26máy tính là một nhiệm vụ cấp bách và cần thiết Để giải quyết khó khăn này, người
ta đã nghiên cứu tăng tốc độ tính toán bằng hai phương pháp hoặc kết hợp cả hai:
Phương pháp 1: Cải tiến công nghệ, tăng tốc độ xử lý của máy tính Công việc này đòi hỏi nhiều thời gian, công sức và tiền của, nhưng tốc
độ cũng chỉ đạt được đến một giới hạn nào đó
chạy song song trên nhiều bộ xử lý
Việc gia tăng tốc độ tính toán theo phương pháp thứ hai được thực hiện dựa vào công nghệ tính toán song song, đó là việc sử dụng đồng thời nhiều tài nguyên tính toán để giải quyết bài toán Các tài nguyên tính toán có thể bao gồm một máy tính với nhiều bộ vi xử lý, một tập các máy tính kết nối mạng hay là một sự kết hợp của hai dạng trên Công nghệ tính toán song song cho phép giảm thời gian thực thi bài toán tùy thuộc cách phân chia và số bộ xử lý thực thi chương trình Nguyên tắc quan trọng nhất của tính toán song song chính là tính đồng thời hay xử lý nhiều tác
vụ cùng một lúc Lập trình song song tập trung vào việc phân chia bài toán tổng thể
ra thành các công việc con nhỏ hơn rồi định vị các công việc đó đến từng bộ xử lý
và đồng bộ các công việc để nhận được kết quả cuối cùng Hướng tiếp cận là phân tích và chia nhỏ bài toán cần thực hiện thành nhiều nhiệm vụ có thể được xử lý cùng một lúc bằng cách tận dụng khả năng xử lý tác vụ trên nhiều lõi của card đồ họa Nvidia với công nghệ CUDA
Trong vài năm gần đây, năng lực tính toán của các bộ xử lý đồ họa tăng lên đáng kể so với CPU Tính đến tháng 6/2008, dòng GPU GT200 của nVidia đã đạt ngưỡng 933 Gflops, gấp hơn 10 lần so với bộ xử lý 2 lõi Intel Xeon 3.2 GHz tại cùng thời điểm
Hình 1.5 thể hiện sự tăng tốc về năng lực tính toán của các GPU nVidia so với CPU của Intel
Trang 27Hình 1.5 Biểu đồ năng lực tính toán CPU-GPU [17]
Tuy vậy, sự vượt trội về hiệu năng này không đồng nghĩa với sự vượt trội về công nghệ GPU và CPU được phát triển theo 2 hướng khác biệt: trong khi công nghệ CPU cố gắng tăng tốc cho một nhiệm vụ đơn lẻ thì công nghệ GPU lại tìm cách tăng số lượng nhiệm vụ có thể thực hiện song hành Vì vậy, khi mà số lượng lõi tính toán trong CPU đạt đến con số 8 lõi thì số lượng lõi xử lý của GPU đã đạt đến 240 và hứa hẹn ngày càng tiếp tục được tăng lên Để trả giá cho năng lực tính toán, GPU hy sinh tính linh động của các lõi xử lý Hiện tại các lõi của GPU tại một thời điểm chỉ thực hiện được một nhiệm vụ duy nhất, do vậy chỉ thích hợp với những bài toán song song dữ liệu trong đó cùng một đoạn mã chương trình được thực thi song song cho nhiều bộ dữ liệu khác nhau
Bên cạnh việc phát triển các bộ xử lý đồ họa có năng lực tính toán lớn, các hãng sản xuất cũng quan tâm tới môi trường phát triển ứng dụng cho các bộ xử lý
đồ họa này CUDA là môi trường phát triển ứng dụng trên các GPU của nVidia, bao gồm ngôn ngữ lập trình song song, dữ liệu cùng với các công cụ biên dịch, gỡ rối và giám sát thực thi cho các ứng dụng hoạt động dựa vào công nghệ này Một số đặc điểm chính của công nghệ CUDA:
CUDA dựa trên nền tảng ngôn ngữ C, do đó nó quen thuộc với đa số nhà phát triển ứng dụng
Mã CUDA chia làm 2 phần: phần thực thi trên CPU và phần thực thi trên GPU Phần thực thi trên GPU, còn gọi là kernel, khi được gọi có
Trang 28thể thực thi song song trên hàng ngàn tiến trình riêng biệt Mỗi tiến trình có một định danh riêng để xác định nhiệm vụ của tiến trình đó
Để tránh sự phụ thuộc vào phần cứng, CUDA cho phép người lập trình tùy ý xác định số lượng tiến trình song song, tuy nhiên các tiến trình này cần được phân theo từng block với số lượng tối đa là 512 Cách chia block giúp người lập trình không cần quan tâm tới năng lực phần cứng, đồng thời giúp việc thực thi được hiệu quả ngay cả trên nhiều loại GPU khác nhau
Bộ nhớ được tổ chức phân cấp theo các lớp sau:
Bộ nhớ chính: vùng bộ nhớ dành cho phần mã CPU Chỉ có phần mã này có thể truy cập và chỉnh sửa thông tin trên đó
Bộ nhớ toàn cục GPU: vùng bộ nhớ mà tất cả các tiến trình của GPU có thể truy cập Có thể chuyển dữ liệu từ bộ nhớ chính sang bộ nhớ này thông qua một số hàm thư viện của CUDA Bộ nhớ này thông thường được dùng để lưu trữ các dữ liệu đầu vào và đầu ra cho các tiến trình song song trên GPU
Bộ nhớ chia sẻ: vùng bộ nhớ mà chỉ các tiến trình trong cùng một block mới có thể truy cập Bộ nhớ chia sẻ được tích hợp ngay trên chip xử lý nên tốc độ truy cập dữ liệu cao hơn rất nhiều so với bộ nhớ toàn cục
Bộ nhớ này được dùng để lưu trữ các dữ liệu chia sẻ tạm thời nhằm tăng tốc quá trình sử dụng bộ nhớ
Bộ nhớ cục bộ GPU: vùng bộ nhớ được cấp phát cho các biến cục bộ của từng tiến trình GPU và không thể truy cập được từ các tiến trình khác
Với khả năng song song hóa dữ liệu với cực nhiều tiến trình như vậy, công nghệ CUDA là giải pháp thích hợp nâng cao năng lực tính toán cho bài toán sắp hàng trình tự, trong đó mỗi tiến trình có thể đảm nhận việc sắp hàng 2 trình tự một trong toàn bộ chuỗi dữ liệu cần thực hiện
Trang 29CHƯƠNG 2 CÁC PHƯƠNG PHÁP SẮP HÀNG TRÌNH TỰ 2.1 Khái niệm alignment
Sắp hàng hay bắt cặp trình tự là quá trình nghiên cứu sự giống nhau giữa các chuỗi trình tự, đo lường sự giống nhau giữa các chuỗi trình tự Nó là sự so sánh giữa hai hay nhiều trình tự dựa trên việc so sánh một chuỗi các thành phần của trình
tự để tìm ra điểm tương đồng, giống nhau giữa các trình tự Các trình tự là các chuỗi DNA, RNA hoặc các trình tự amino acid Sắp hàng trình tự giúp cho quá trình dự báo sự giống nhau về chức năng của các trình tự, dự báo cấu trúc bậc 3 của DNA, protein Trong việc tìm hiểu một gene mới cho phép xác định những đặc điểm để phân biệt gene đồng thời đưa ra những giả thuyết về chức năng của gene Chức năng của gene thường dựa vào những giải thuật đánh giá sự giống nhau, tương đồng giữa các trình tự
Mục đích của vấn đề bắt cặp trình tự, hay là sắp xếp thẳng hàng trình tự (Sequence Alignment) nhằm đạt đến sự giống nhau đến mức tối đa của các trình tự Việc bắt cặp được thực hiện bằng cách thêm các ―gap‖ vào các vị trí có thể sao cho các cột giống nhau hoặc tương tự nhau
2.1.1 Ký tự “gap”
Trong quá trình tiến hóa, các trình tự có thể thêm hoặc bớt một số phần tử trong trình tự, các sinh vật có họ hàng gần nhau có thể khác nhau ở phần thêm vào giữa các trình tự Vì vậy khi so sánh trong mô hình toán học cho phép có phần trống, được mô tả bằng gạch nối ngang (gap) để có thể tìm được các phần trình tự giống nhau nhất Tuy nhiên, khả năng thêm hay bớt trong các trình tự là quá trình tiến hóa lâu dài, vì vậy khi đánh giá các sinh vật nào gần nhau thì cũng có ít phần trống hơn Do đó trong mô hình toán học có đưa thêm vào điểm phạt cho phần trống gap sao cho đáp ứng giống bài toán thực tế Các loài gần nhau sẽ có trình tự giống
Trang 30nhau các đoạn liên tục và dài cho nên các mô hình toán học còn thêm điểm phạt cho mỗi một đoạn trống
Bên cạnh đó, trong quá trình tiến hóa cũng có sự đột biến hoặc mất đi tại một
số phần tử trong trình tự Do vậy ký tự ―gap‖ được chia thành 2 loại là deletion gap
và insertion gap tương ứng với quá trình thêm vào hoặc mất đi các phần tử di truyền
Ví dụ, cho hai trình tự như sau
match
mismatch insertion
deletion
Trang 31 Chẳng hạn, nếu
– Giống nhau ở cùng vi trí: giá trị là +2
– Không giống nhau: giá trị là -1
– Gap: giá trị là -2
Giá trị càng cao thì sự giống nhau càng nhiều
Định nghĩa: Mức độ tương đồng (điểm đánh giá) của 2 trình tự bắt cặp S1‘
và S2‘ là đại lượng: na x match + ni x mismatch + ng x gap
Trang 322.1.3 Phân loại bắt cặp trình tự
Việc phân loại bắt cặp trình tự được chia thành hai loại nhằm tìm sự tương đồng giữa các trình tự tùy thuộc vào phạm vi áp dụng là trên toàn bộ trình tự hoặc trên một số phần tử của các trình tự cần so sánh
– Bắt cặp toàn cục (Global Alignment) là phép sắp hàng được áp dụng trên toàn bộ trình tự để tìm sự tương đồng giữa các trình tự Thuật toán được sử dụng trong vấn đề bắt cặp toàn cục là giải thuật Needleman – Wunsch Thuật toán có những đặc điểm sau:
o Tìm so sánh đối xứng toàn cục tốt nhất giữa hai trình tự bất kỳ
Số phần tử so khớp giữa hai trình tự lớn nhất và cho phép chèn
ký tự trống (gap)
o Tất cả các phần tử của hai trình tự sẽ được sử dụng để tạo ma trận hai chiều mọi khả năng so sánh đối xứng đều có thể biểu diễn thông qua ma trận này
– Bắt cặp cục bộ (Local Alignment) là phép toán sắp hàng được áp dụng trên một số phần tử của các trình tự cần so sánh Nó có ý nghĩa sinh học hơn bắt cặp toàn cục vì thông thương không phải tất cả các phần tử trong trình tự tham gia vào việc xác định đặc tính sinh học của trình tự Thuật toán được sử dụng trong vấn đề bắt cặp cục bộ thương được sử dụng hiện nay là Smith - Waterman
2.2 Bắt cặp hai trình tự (Pairwise Sequence Alignment-PSA)
Cho 2 trình tự sinh học S1, S2 Hãy tìm 2 trình tự S1‘, S2‘ bằng cách thêm các
Hình 2.2 Bắt cặp hai trình tự [2]
Trang 332.3 Bắt cặp đa trình tự (Multiple Sequence Alignment-MSA)
Cho k trình tự sinh học S1, S2, …, Sk Hãy tìm k trình tự S1‘, S2‘,…, Sk‘ bằng cách thêm các ký tự ‗-‘ sao cho:
– di truyền lại (giữ lại)
Ví dụ: Với đoạn trình tự ―ACTCGATT‖
– Mất T,C ở vị trí 3, 4: ―ACGATT‖
– Đột biết vị trí 2 (thay C bằng G), vị trí 3 (thay G bằng C), vị trí 6 (thay
T bằng C): ―AGCATC‖
– Thêm TA vào vị trí 4: ―AGCTAATC‖
– Nhƣ vậy, từ ―ACTCGATT‖ sẽ tiến hóa ―AC GATT‖, ―AG CATC‖,
Khi đó, ký tự ―gap‖ vừa:
– deletion gap: mất đi
– insertion gap: thêm vào
Trang 342.4 Các thuật toán so sánh các trình tự sinh học
2.4.1 Thuât toán Needleman – Wunsch
Cho 2 trình tự
– U = ―U1U2…Un‖ – V = ―V1V2…Vm‖
Ma trận tương đồng σ của 2 trình tự được cho dựa trên giá trị match và
Với d = gap
Ví dụ, cho hai trình tự U và V như sau:
Dòng thứ nhất và cột thứ nhất của ma trận được lấy giá trị không
Ma trận đánh giá được tính như sau:
1},21,1{}
,2,
{
1},20,1{}
,2,
{
0},22,1{}
,2,
{
2},21,2{}
,2,
{
1},2,1{}
,2,
{
05 14
15 04 15
04 13
14 03 14
03 12
13 02 13
02 11
12 01 12
01 10
11 00 11
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
1}1,21,10}
,2,
{
1}0,20,12}
,2,
{
0}2,22,11{}
,2,
{
2}1,20,20}
,2,
{
15 24
25 14 25
14 23
24 13 24
13 22
23 12 23
12 21
22 11 22
11 20
21 10 21
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Trang 35,2,
{
3}1,21,21}
,2,
{
1}1,21,10}
,2,
{
1}0,20,12}
,2,
{
0}2,20,10}
,2,
{
25 34
35 24 35
24 33
34 23 34
23 32
33 22 33
22 31
32 21 32
21 30
31 20 31
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
1}3,20,11{}
,2,
{
0}1,20,11}
,2,
{
0}1,22,10}
,2,
{
2}0,20,20}
,2,
{
45 44
45 34 45
34 43
44 33 44
33 42
43 32 43
32 41
42 31 42
31 40
41 30 41
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
0}1,22,10}
,2,
{
2}0,21,20}
,2,
{
1}0,20,12}
,2,
{
0}2,20,10}
,2,
{
45 54
55 44 55
44 53
54 43 54
43 52
53 42 53
42 51
52 41 52
41 50
51 40 51
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
4}0,20,22}
,2,
{
0}2,21,11}
,2,
{
1}1,21,10}
,2,
{
1}0,20,10}
,2,
{
55 64
65 54 65
54 63
64 53 64
53 62
63 52 63
52 61
62 51 62
51 60
61 50 61
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Trang 36 (i,j) →(i-1,j): đi lên
U i và “-” đƣợc ghi vào (deletion gap đƣợc sinh ra)
(i,j) →(i,j-1): đi lui
“-” và Vj đƣợc ghi vào (insertion gap đƣợc sinh ra)
σ
Trang 372.4.2 Thuật toán Smith-Waterman
Thuật toán Smith-Waterman là một thuật toán quy hoạch động dùng để tìm kiếm cơ sở dữ liệu phát triển bởi TF Smith và MS Waterman vào năm 1981 và dựa trên một mô hình thích hợp trước đó có tên Needleman và Wunsch [7] Thuật toán Smith-Waterman là thuật toán sắp hàng cặp chuỗi cục bộ dựa trên quy hoạch động
để tìm vùng tương đồng giữa 2 trình tự nucleotide hoặc protein Thay vì tìm trong toàn bộ trình tự, thuật toán tìm các đoạn hay các miền có mức độ tương đồng cao từ
đó đánh giá mực độ tương đồng của 2 trình tự
• Đặt giá trị đánh giá
• σij = +2 nếu Ui và Vj giống nhau
• σij = -1 nếu Ui và Vj khác nhau
• Hi0 = H0j = 0, với mọi i, j
• Hij = Max {0, Hi-1,j-1 + σij, Hi,j-1 + d, Hi-1,j + d}
• Ví dụ, với U = ―ACA‖, V = ―AGCA‖, với d = -1 ta có các phần tử của ma trận H như sau: