Sử dụng cửa sổ truy vấn tìm giao giữa các đoạn gen của virus

Một phần của tài liệu (LUẬN văn THẠC sĩ) cây quản lí đoạn và ứng dụng (Trang 51)

Ebola với hệ gen ngƣời

Phát hiện hiện nay về hệ gen virus Ebola gồm 7 đoạn gen. Dữ liệu này đủ ít để có thể kiểm thử tính đúng đắn của chương trình một cách thủ công. Vì thế, sử dụng lần lượt dữ liệu về các đoạn gen đã biết của virus Ebola để kiểm thử cho chương trình truy vấn cửa sổ tìm giao của từng đoạn gen này trong hệ gen người là hợp lí. Kết quả truy vấn trả ra một cách nhanh chóng, đúng đắn.

Dữ liệu vào:

 Tệp dữ liệu về hệ gen người, gồm 60726 đoạn gen chứa trong 23 nhiễm sắc thể. Xét riêng nhiễm sắc thể 1 có 5677 đoạn gen.

 7 đoạn gen của virus Ebola cần xác định có giao với những đoạn gen nào của nhiễm sắc thể số 1 trong hệ gen người.

Kết quả ra: Kết quả kiểm thử với lần lượt truy vấn từng đoạn gen như trong

Bảng 3.1. Kết quả kiểm thử cửa sổ truy vấn

Đoạn gen g của virus Ebola

Số lượng đoạn gen giao giữa đoạn gen g với các đoạn gen trên nhiễm sắc

thể số 1 hệ gen người 55 3026 0 3031 4407 0 4389 5894 0 5899 8305 0 8287 9740 0 9884 11518 0 11500 18282 14

3.3.2. Tìm giao giữa hệ gen ngƣời và hệ gen chuột

Gen chồng chéo trong hệ gen động vật có vú là hiện tượng bất ngờ mặc dù hàng trăm cặp protein mã hóa gen chồng chéo đã được báo cáo cho đến nay. Gen chồng chéo có thể được chia thành các loại khác nhau dựa trên định hướng của phiên mã cũng như về trình tự phân đoạn được chia sẻ giữa vùng mã hóa chồng chéo [6].

Năm 2005, các nhà khoa học Anh đã cấy thành công nhiễm sắc thể số 21 của người vào chuột để gây bệnh Down nhằm phục vụ nghiên cứu và phát triển phương pháp điều trị mới cho những người bị rối loạn gen. Thông thường, hầu hết mọi người đều có 23 cặp nhiễm sắc thể. Người bị bệnh Down (thiểu năng trí tuệ) lại có ba nhiễm sắc thể 21 thay cho hai nhiễm sắc thể bình thường. Nhóm nghiên cứu đã tạo ra một giống chuột mang trong cơ thể bản sao giống nhiễm sắc thể số 21, trong đó có hơn 200 gen của người, bằng cách lấy nhiễm sắc thể từ tế bào người và cấy vào các tế bào phôi của chuột. Qua vài thế hệ, giống chuột này có những triệu chứng của bệnh Down như rối loạn

trí nhớ, rối loạn chức năng não và rối loạn cấu tạo tim. Việc cấy ghép thành công có thể giúp các nhà khoa học nghiên cứu sâu hơn những vấn đề mà bệnh nhân Down gặp phải. Hội chứng Down ảnh hưởng tới 1/800 ca sinh nở, gây ra sự chậm chễ trong việc phát triển thể chất và thần kinh. Những người bị bệnh này cũng gặp vấn đề về tim, thính giác và có nguy cơ cao mắc bệnh máu trắng và mất trí nhớ. Nghiên cứu này được đánh giá là một tiến bộ kỹ thuật quan trọng trong nghiên cứu bệnh Down và những bệnh khác do sự không bình thường của nhiễm sắc thể.

Vì thế, tiến hành kiểm thử chương trình trên hai tập dữ liệu các đoạn gen của hệ gen người và hệ gen chuột, xem xét các đoạn giao nhau của từng cặp nhiễm sắc thể, mục đích đánh giá tính đúng đắn của chương trình tìm giao của hai tập các đoạn gen, kết quả được mô tả như bảng 3.2. Khoảng 90% gen của chuột có các gen tương ứng trên người, đúng như mô tả trong tài liệu [6].

Bảng 3.2. Kết quả kiểm thử tính đúng đắn chương trình tìm giao giữa hai hệ gen

Hệ gen người (số đoạn gen)

Hệ gen chuột (số đoạn gen)

Số lượng đoạn gen giao nhau chr1 5677 chr1 3893 5662 chr2 3780 chr2 1877 2692 chr3 3132 chr3 2237 3383 chr4 2122 chr4 1754 1256 chr5 2519 chr5 1763 2616 chr6 3177 chr6 1278 2180 chr7 2925 chr7 1646 2735 chr8 1883 chr8 1542 1862 chr9 2428 chr9 1085 1501 chr10 2325 chr10 2193 3717

chr11 3323 chr11 770 1591 chr12 2767 chr12 849 1353 chr13 1061 chr13 949 949 chr14 2126 chr14 948 1378 chr15 2689 chr15 986 1461 chr16 2382 chr16 792 1750 chr17 3241 chr17 862 1810 chr18 884 chr18 693 945 chr19 3408 chr19 701 1486 chr20 1432 chr20 840 1266 chr21 2170 chr21 1439 1565

3.3.3. Tìm giao giữa hệ gen chuột nhắt và hệ gen chuột cống

Chuột chia thành khoảng 35 họ. Mỗi họ có khoảng 350 loài. Trong những loài này có cả chuột nhắt hay chuột nhà và chuột cống. Xã hội chuột trong tự nhiên được tổ chức theo kiểu phân tán để tồn tại. Nhờ có chuột, hàng loạt loại thuốc đã ra đời để trị bệnh cho con người.

Về di truyền học, chuột cống có 22 cặp nhiễm sắc thể với 2,75 triệu cặp bazơ nitơ trong khi chuột nhắt chỉ có 20 cặp nhiễm sắc thể với 2,6 triệu cặp (người có 2,9 triệu). Cặp nhiễm sắc thể cuối cùng là cặp nhiễm sắc thể giới tính. Khoảng 90% gen của chuột cống có các gen tương ứng trên chuột nhắt [6].

Tiến hành chạy thử chương trình với dữ liệu vào là hai tập dữ liệu hệ gen chuột nhắt và chuột cống, tính số lượng gen giao nhau theo từng nhiễm sắc thể, quan sát thời gian thực hiện chương trình cho kết quả như trong bảng 3.3. Mục đích thử nghiệm: đánh giá thời gian, hiệu năng chạy chương trình.

Bảng 3.3. Thời gian (s) trung bình chạy chương trình Hệ gen chuột nhắt Hệ gen chuột cống Số lượng đoạn gen giao nhau Thời gian (s) chạy thuật toán dùng cây quản lí

đoạn

Thời gian (s) chạy thuật toán tìm kiếm tuần tự chr1 1697 chr1 3893 1769 0.453 chr2 2782 chr2 1877 936 0.593 chr3 1508 chr3 2237 1238 0.449 chr4 1950 chr4 1754 661 0.353 chr5 1736 chr5 1763 1187 0.250 chr6 1634 chr6 1278 1091 0.460 chr7 2808 chr7 1646 1698 0.182 chr8 1490 chr8 1542 1288 0.154 chr9 1645 chr9 1085 1009 0.228 chr10 1506 chr10 2193 1709 0.209 chr11 2344 chr11 770 931 0.106 chr12 1019 chr12 849 342 0.020 chr13 1160 chr13 949 681 0.094 chr14 1116 chr14 948 593 0.059 chr15 1075 chr15 986 525 0.033 chr16 970 chr16 792 555 0.040 chr17 1501 chr17 862 936 0.076 chr18 745 chr18 693 539 0.040 chr19 908 chr19 701 513 0.192 Tổng cộng 18201 3.991 31.918

3.4. Đánh giá độ phức tạp và kết quả thực hiện chƣơng trình

Tuy trong trường hợp xấu nhất, khi mà đoạn cần tìm giao bao cả cây, chương trình có độ phức tạp tương đương với việc duyệt thông thường. Nhưng với các bộ dữ liệu thực tế, chương trình nhanh chóng loại các tập đoạn không phù hợp và trả về kết quả trong thời gian cho phép.

Việc đọc dữ liệu từ tệp tiêu tốn thời gian bởi tốc độ đọc tệp chậm hơn khả năng xử lý, độ phức tạp O(n).

Việc thêm một đoạn vào cây như chương trước đã đề cập mất O(lgn), vì thế thao tác xây dựng cây mất O(nlg(n)), và xây dựng rừng các cây quản lí đoạn itContainer mất O(n.k.lg(n)) với k là số nhiễm sắc thể khác nhau trong

một tập gen hay là số cây quản lí đoạn khác nhau dựng được từ tệp ban đầu. Tốc độ xử lý chương trình: đối với dữ liệu gen hiện có việc tìm giao hai đoạn không quá 3s là kết quả chấp nhận được, điều này có ý nghĩa thực tiễn cao trong việc đưa ra được một công cụ lượng hóa mối quan hệ có ý nghĩa thống kê giữa các đặc tính di truyền, giải mã các đầu mối tiến hóa, chẩn đoán cấu trúc và chức năng của các gen.Việc so sánh các bộ dữ liệu đa dạng di truyền là căn bản để hiểu hệ gen sinh học. Các nhà nghiên cứu có thể sử dụng công cụ này để khám phá nhiều bộ dữ liệu lớn về các đoạn gen, để đặt các kết quả thí nghiệm của họ trong một bối cảnh rộng hơn, tìm lời giải cho các giả thuyết khoa học, từ đó thực hiện những khám phá mới.

Mối quan hệ giữa các tập hợp dữ liệu về gen thường được đo bằng cách xác định các đoạn giao nhau, nghĩa là, chúng chồng lên nhau và do đó chia sẻ một đoạn gen chung. Việc tìm ra phương pháp hiệu quả để đo mối quan hệ có ý nghĩa thống kê giữa nhiều bộ tính năng di truyền là rất quan trọng đối với những phát hiện trong tương lai.

3.4. Mở rộng hƣớng nghiên cứu

Chương trình thử nghiệm mới chỉ áp dụng hai trường hợp tìm giao các đoạn gen và đưa ra đoạn gen giao nhau giữa các tập này. Ta có thể sử dụng câu trúc cây quản lí đoạn trong cài đặt này để thực hiện thêm một số công việc sau:

 Tìm ra các đoạn gen trong tập A không giao với bất kì đoạn gen nào trong tập B.

 Tìm ra các đoạn gen trong tập B không giao với bất kì đoạn gen nào trong tập A.

 Tìm số cặp ba zơ giao nhau của đoạn giao (độ dài đoạn gen giao nhau).

 Tính xác suất các đoạn gen giao nhau trên tổng số đoạn gen. Con số này có ý nghĩa trong bài toán thống kê đặc tính di truyền.

 Tìm đoạn gen trong tập các đoạn gen có vị trí gần nhất so với một đoạn gen biết trước.

 Bài toán cũng có thể được mở rộng phạm vi trong trường hợp dữ liệu về các đoạn gen là phức tạp, người dùng có nhu cầu lưu trữ và tìm kiếm các thuộc tính là các chú giải gen.

 Tìm giao của nhiều tập các đoạn gen một cách đồng thời. Chẳng hạn, nhu cầu tìm giao của tập các đoạn gen của virus sởi qua từng mùa bệnh khác nhau (các năm khác nhau, mỗi năm có một hệ gen khác nhau). Hay tìm giao các đoạn gen giữa các tập dữ liệu hệ gen của các chủng virus cúm (có tới hàng trăm loại virus cúm).v.v.

Ngành sinh tin học là một ngành mới và hấp dẫn rất nhiều nhà nghiên cứu trong và ngoài nước tham gia. Với các khám phá mới trong cấu trúc gen đã mở ra nhiều hướng nghiên cứu mới trong y sinh học, điều trị bệnh, phát

hiện tài năng, duy trì và bảo tồn, cải tạo nòi giống; trong giải mã lịch sử tiến hóa, v.v. Với nguồn dữ liệu trong tin sinh học tăng theo từng giờ. Việc tìm kiếm thông tin cũng như khai thác các thông tin chứa trong nguồn dữ liệu đó lúc nào cũng cần thiết. Vì thế, việc có thể tìm kiếm với ít thời gian nhất và có hiệu quả luôn được các nhà nghiên cứu tìm tòi và phát triển. Luận văn được thực hiện với mục tiêu nghiên cứu, áp dụng cấu trúc dữ liệu cây quản lí đoạn và thao tác trên cấu trúc này để giải quyết bài toán tìm giao của các đoạn gen và để tối ưu thời gian xử lý, giới hạn phạm vi nguồn dữ liệu tìm kiếm do nguồn dữ liệu lớn. Việc kiểm thử được ứng dụng tìm giao tập các đoạn gen trên nguồn dữ liệu về hệ gen người, hệ gen chuột, hệ gen virus Ebola cho kết quả đúng đắn, chính xác và nhanh chóng.

KẾT LUẬN

Luận văn đã thu được một số kết quả cơ bản sau:

Luận văn đã hệ thống hóa được các vấn đề xung quanh cấu trúc dữ liệu cây quản lí đoạn.

Luận văn cũng đã đưa ra được một số kỹ thuật được dùng để thực hiện các thao tác trên cây quản lí đoạn.

Luận văn đã đề cập đến một lĩnh vực nghiên cứu mới, hấp dẫn hiện nay là tin sinh học.

Luận văn được thực hiện với mục tiêu nghiên cứu, áp dụng cấu trúc dữ liệu cây quản lí đoạn và thao tác trên cấu trúc này để giải quyết bài toán tìm giao của các đoạn gen, tối ưu thời gian xử lý, giới hạn phạm vi nguồn dữ liệu tìm kiếm trên nguồn dữ liệu lớn.

Luận văn cũng đã đưa ra được các trường hợp ví dụ mẫu điển hình, các trường hợp kiểm thử tiêu biểu áp dụng chương trình cài đặt cấu trúc dữ liệu cây quản lí đoạn và thực hiện các thao tác trên nó.

Như vậy những vấn đề mà luận văn nêu ra là phù hợp với yêu cầu của thực tiễn, nghiên cứu trong giai đoạn hiện nay, các nhiệm vụ đặt ra đã hoàn thành. Luận văn đã đạt được mục đích đề ra.

TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt

[1] Nguyễn Cường (2013), Các cơ sở dữ liệu sinh học,

http://www.tinsinhhoc.org/index.php/genomics/3-bio-database.html, truy cập ngày 13/01/2015.

[2] Hồ Sĩ Đàm (chủ biên), Đỗ Đức Đông, Lê Minh Hoàng, Nguyễn Thanh Hùng (2009), Tài liệu chuyên tin học, NXB Giáo dục Việt Nam, Quyển

2.

[3] Hồ Sĩ Đàm (chủ biên), Nguyễn Thanh Tùng, Lê Minh Hoàng, Nguyễn Thanh Hùng, Đỗ Đức Đông (2011), Tài liệu tập huấn phát triển chuyên môn giáo viên Trường THPT Chuyên (tài liệu lưu hành nội bộ), Bộ giáo

dục và đào tạo.

[4] Vũ Đình Hoà, Giáo trình Toán rời rạc 5, NXB Giáo dục.

[5] Trần Văn Lăng, Ứng dụng Tin học trong việc giải quyết một số bài toán của Sinh học phân tử, NXB Giáo dục, 2008.

Tài liệu tiếng Anh

[6] Chaitanya R Sanna1, Wen-Hsiung Li, Liqing Zhang (2008), Overlapping

gens in the human and mouse genomes,

http://www.biomedcentral.com/1471-2164/9/169, 01/02/2015.

[7] F. P. Preparata and M. I. Shamos (1985), Computational Geometry: An Introduction, Springer-Verlag.

[8] Izabela Makalowska , Chiao-Feng Linb, Wojciech Makalowski (2005),

[9] M. de Berg, O. Cheong, M. van Kreveld, M. Overmars (2000),

Computational Geometry: algorithms and applications, third edition,

Springer.

[10] Paux E, Sourdille P, Salse J (2008), A Physical Map of the 1-Gigabase Bread Wheat Chromosome 3B, Science 322 (5898), p101–104.

[11] Ucsc genome browser website, bed format,

http://genome.ucsc.edu/FAQ/FAQformat.html#format1, 01/02/2015. [12] Ucsc genome browser website, table browser,

PHỤ LỤC A. Xây dựng lớp itContainer package intervaltreeinbios; import java.awt.Color; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; class itContainer {

List<ITtree> listIT = new ArrayList<>(); List<String> chromeName = new ArrayList<>(); public itContainer() {}

void clear() {

listIT = new ArrayList<>(); chromeName = new ArrayList<>(); }

int findChromeName(String chName) {

for (int i = 0; i < chromeName.size(); i++) { if (chromeName.get(i).equals(chName)) { return i; } } return -1; }

void loadFromFile(String pathFile) throws IOException, NumberFormatException {

BufferedReader br = null; try {

br= new BufferedReader(new FileReader(pathFile)); } catch (FileNotFoundException ex) {

Logger.getLogger(itContainer.class.getName()).log(Level.SEVER E, null, ex);

}

String sCurrentLine;

while ((sCurrentLine = br.readLine()) != null) { String sTokens[] = sCurrentLine.split("\\s+"); if ("-1".equals(sTokens[0])) { break; } int t = findChromeName(sTokens[0]); if (t == -1) { chromeName.add(sTokens[0]); listIT.add(new ITtree()); t = chromeName.size() - 1; } int u = Integer.parseInt(sTokens[1]); int v = Integer.parseInt(sTokens[2]); listIT.get(t).addSegment(new Interval(u, v)); } } } B. Lớp ITTree package intervaltreeinbios; import java.util.ArrayList; import java.util.List;

class ITtree {

ITnode root;

public ITtree() {root = null;} void addSegment(Interval i) { if (root == null) {

root = new ITnode(i); return; } int l = root.i.low; if (i.low < l) { root.left.addSegment(i); } else { root.right.addSegment(i); } if (root.max < i.high) { root.max = i.high; } } List<Interval> overlapSearch(Interval i) { if (root == null) {

return new ArrayList<>(); }

List<Interval> tmp = new ArrayList<>();

if (doOverlap(root.i, i)) {tmp.add(root.i);} if (root.left.root != null) { if (root.left.root.max >= i.low) { tmp.addAll(root.left.overlapSearch(i)); } } return tmp; }

private boolean doOverlap(Interval i1, Interval i2) { return i1.low <= i2.high && i2.low <= i1.high; }

public void inorder() { if (root == null) { return; } root.left.inorder(); System.out.println("[" + root.i.low + ", " + root.i.high + "] max = " + root.max); root.right.inorder(); } List<Interval> inorderList(){

List<Interval> ans = new ArrayList<>(); if (root == null) { return ans; } ans.addAll(root.left.inorderList()); ans.add(root.i); ans.addAll(root.right.inorderList()); return ans; }

public String inorderS() {

if (root == null) {return "";}

return root.left.inorderS() + "[" + root.i.low + ", " +root.i.high + "]\n" + root.right.inorderS();

} }

Một phần của tài liệu (LUẬN văn THẠC sĩ) cây quản lí đoạn và ứng dụng (Trang 51)

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

(65 trang)