Khóa luận Thu thập và tổ chức dữ liệu gene phục vụ nghiên cứu cây trồng biến đổi di truyền

MỤC LỤC Nội dung Trang Trang tựa ii Lời cảm ơn . iii Tóm tắt . iv Sumary v Mục lục vi Danh sách các chữ viết tắt x Danh sách các sơ đồ và bảng xi Danh sách các hình . xii PHẦN A: GIỚI THIỆU . 1 I.Đặt vấn đề . 1 II.Mục đích của đề tài 2 III.Yêu cầu của đề tài 2 IV.Các giai đoạn tiến hành 3 V. Giới hạn 3 PHẦN B: TỔNG QUAN TÀI LIỆU . 4 I.GIỚI THIỆU VỀ SINH HỌC 4 I.1. Cơ sở sinh học về gene 4 I.1.1. Thuật ngữ và quan niệm về gene 4 I.1.2. DNA ở các sinh vật khác nhau 5 I.1.2.1. Sự khác nhau giữa các phân tử DNA . 5 I.1.2.2. Cấu trúc acid nucleic 6 I.1.3 Mã di truyền . 8 I.1.3.1. Thuật ngữ 8 I.1.3.2. Từ điển mã di truyền . 8 I.1.3.3. Ba đặc tính quan trọng của mã di truyền 10 I.1.4 Cấu trúc căn bản của một gene eukaryote 12 I.2. Cơ sở sinh học về chuyển gene 13 vii I.2.1. Các vấn đề chủ yếu trong việc cải biến di truyền 14 I.2.2. Các phương pháp chuyển gene . 14 I.2.3. Những khó khăn trong chuyển gene . 17 I.2.4. Sản phẩm của kỹ thuật di truyền . 18 I.2.5. Tiềm năng của chuyển gene 19 I.2.5.1. Các chức năng mới trong cải biến di truyền thực vật . 19 I.2.5.2. Các tính trạng mới (News traits) . 20 I.2.5.3. Sự biểu hiện gene 21 I.2.6. Locus chuyển gene 22 I.3. Hiện trạng sản xuất cây trồng chuyển gene trên thế giới 24 II.GIỚI THIỆU VỀ BIOINFORMATICS . 28 II.1. Khái niệm về Bioinformatics 28 II.2. Vài nét về các cơ sở dữ liệu Sinh học 29 II.2.1. NCBI . 29 II.2.2. EMBL . 29 II.2.3. DDBJ 30 II.3. Vài công cụ Bioinformatics hiện nay . 31 II.3.1. Readseq 31 II.3.2. BLAST . 31 II.3.3. BLAT . 32 II.3.4. ClustalW . 32 II.3.5. HMMER . 32 II.3.6. MEME/MAST . 33 II.3.7. EMBOSS 33 II.4. Ngôn ngữ dùng trong Bioinformatics . 34 III.CƠ SỞ TIN HỌC CHO VIỆC XÂY DỰNG CƠ SỞ DỮ LIỆU TRÌNH TỰ . 35 III.1. Khái niệm về lập trình . 35 III.2. Ngôn ngữ Perl dùnh trong Bioinformatics 39 III.2.1. Giới thiệu Perl . 39 III.2.2. Thành phần cơ bản trong Perl . 39 III.3. Công nghệ Java ứng dụng trong công việc xử lý dữ liệu Bioinformatics 50 III.3.1. Biojava 50 viii III.3.2. Biojava và CSDL 50 III.3.3. Tổng quan về công nghệ servlet cho các ứng dụng trên Web 51 III.3.4. Chức năng cơ bản của servlet . 52 III.3.5. Thuận lợi của servlet so với các công nghệ thiết kế web khác 53 III.3.6. Sự xây dựng ứng dụng servlet 55 PHẦN C: PHưƠNG TIỆN VÀ PHưƠNG PHÁP TIẾN HÀNH 57 I.PHưƠNG TIỆN 57 I.1. Thiết bị . 57 I.2. Thời gian và địa điểm xây dựng CSDL . 57 II.TÌM KIẾM DỮ LIỆU BÀI BÁO 58 II.1. Tìm kiếm tổng hợp tính trạng . 58 II.2. Tổng hợp dữ liệu Primer dùng trong phát hiện GMO 64 III.TÌM KIẾM DỮ LIỆU TRÌNH TỰ 66 III.1. Tìm kiếm trình tự bằng Keyword 66 III.2. Tìm kiếm trình tự bằng Primer 70 PHẦN D: KẾT QUẢ VÀ THẢO LUẬN . 82 I.Kết quả thu được từ quá trình tìm kiếm ấn phẩm khoa học 82 II.Kết quả thu được từ quá trình tìm kiếm trình tự trên NCBI 82 II.1. Kết quả tìm kiếm trình tự bằng keyword 83 II.2. Kết quả tìm kiếm trình tự bằng Primer . 84 II.3. Dùng Perl xử lý kết quả thu được . 85 II.3.1. Loại bỏ trùng lắp dữ liệu, tổng hợp danh sách tổng hợp . 85 II.3.2. Tải trình tự . 90 III.Các kết quả thu được từ quá trình tải trình tự từ Genbank 92 IV.Tổ chức dữ liệu 93 IV.1. Cách thức tổ chức dữ liệu . 93 IV.2. Tiến hành tổ chức, phân loại dữ liệu . 94 V.Java xử lý dữ liệu . 98 V.1. Các yêu cầu đặt ra 98 V.2. Xử lý yêu cầu bằng Java và Biojava 99 V.3. Thiết kế giao diện . 101 V.4. Lập trình hiển thị giao diện sử dụng 104 ix VI. Kết quả giao diện tìm kiếm với dữ liệu tập hợp được 108 PHẦN E: KẾT LUẬN VÀ ĐỀ NGHỊ . 118 I.Kết luận 118 II.Đề nghị . 119 TÀI LIỆU THAM KHẢO 121 Phụ lục A 126 Phụ lục B 139 Phụ lục C 152 Phụ lục D 173 Phụ lục E . 197 . THU THẬP VÀ TỔ CHỨC DỮ LIỆU GENE PHỤC VỤ NGHIÊN CỨU CÂY TRỒNG BIẾN ĐỔI DI TRUYỀN

pdf215 trang | Chia sẻ: maiphuongtl | Lượt xem: 2039 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Khóa luận Thu thập và tổ chức dữ liệu gene phục vụ nghiên cứu cây trồng biến đổi di truyền, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ủa References. Chỉ dẫn: Nếu tìm kiếm cho một nội dung đặc biệt không trích đƣợc những record mong muốn, hãy cố gắng với những nội dung khác mà những tác giả đó phải dùng, nhƣ: cụm từ cùng nghĩa, câu đầy đủ, hoặc chữ viết tắt. Chức năng “những Record có liên quan (related records)” của tìm kiếm Entrez còn cho phép bạn mở rộng tìm kiếm của bạn bởi những record trích đƣợc với những trình tự tƣơng đồng, không quan tâm đến những nội dung đƣợc diễn tả bởi những ngƣời submit. Journal MEDLINE là chữ viết tắt của tên một tạp chí. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 148 Cách tìm kiếm: Journal Name [JOUR] Chỉ dẫn: tên tạp chí có thể đƣợc nhập vào chữ đầy đủ hoặc viết tắt của MEDLINE. Bạn có thể tìm kiếm trƣờng tên tạp chí trong danh mục (Index) để xem danh mục cho trƣờng đó và chọn một hoặc nhiều tên tạp chí nhập vào trong tìm kiếm của bạn. MEDLINE Số xác định duy nhất trên MEDLINE (UID). Những sự tham khảo bao gồm MEDLINE UIDs chứa những liên kết từ record trình tự đến record MEDLINE tƣơng ứng. Ngƣợc lại, những record MEDLINE chứa số Accession trong trƣờng SI (secondary source identifier - nguồn xác định thứ cấp) chứa những liên kết ngƣợc lại record trình tự. Cách tìm kiếm: Không thể tìm kiếm ở cơ sở dữ liệu trình tự nucleotide và protein bởi số MEDLINE UID. Tuy nhiên, bạn có thể tìm kiếm ở cơ sở dữ liệu tài liệu (PubMed) của Entrez cho MEDLINE UID, và sau đó liên kết tới những record trình tự có quan hệ. PUBMED Số xác định PubMed (PMID). Những tham khảo bao gồm IDs PubMed chứa những liên kết từ record trình tự tới record PubMed tƣơng ứng. Ngƣợc lại, những record PubMed chứa số Accession trong trƣờng SI (nguồn ID thứ cấp) chứa những liên kết ngƣợc lại record trình tự. Cách tìm kiếm: Không thể tìm kiếm ở cơ sở dữ liệu trình tự nucleotide và protein bởi số PubMed ID. Tuy nhiên, bạn có thể tìm kiếm tài liệu ở cơ sở dữ liệu PubMed của Entrez cho số PubMed ID, và sau đó liên kết đến những record trình tự có quan hệ. Direct Submission Thông tin liên lạc của ngƣời submit, nhƣ là viện/cơquan và địa chỉ bƣu điện. Đây là sự trích dẫn sau cùng trong trƣờng References. Một vài record cũ không chứa tham khảo “Direct Submission”. Tuy nhiên, nó đƣợc yêu cầu trong tất cả những record mới. Trƣờng con Authors chứa tên của ngƣời submit, Title chứa những từ “Direct Submission”, và Journal chứa địa chỉ. Ngày của trƣờng con Journal là ngày mà tác giả sửa submission. Trong Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 149 nhiều trƣờng hợp, nó còn là ngày mà trình tự đƣợc thừa nhận bởi nhóm GenBank. Cách tìm kiếm: dùng Field Author [AUTH] nếu tìm kiếm theo tên của tác giả. Dùng All Fields [ALL] nếu tìm kiếm với những thông tin về tác giả nhƣ địa chỉ tác giả, …(ví dụ: Yale University). Chú ý, những record đƣợc trích lấy phải chứa tên của cơ quan trong trƣờng (field) nhƣ lời dẫn giải, nhiều chi tiết phần tham khảo Submit trực tiếp, vì thế bạn có thể lấy một vài danh mục sai. Chỉ dẫn: thỉnh thoảng có một sự hữu dụng khi dùng cả từ đủ nghĩa kết hợp với từ viết tắt trong tìm kiếm, ví dụ “Washington University” OR “WashU”, bởi vì việc viết đúng đƣợc dùng cũng có một sức mạnh riêng. FEATURES Chứa thông tin về các gene và những sản phẩm của gene, chính xác là những vùng sinh học quan trọng đƣợc báo cáo lên trong một record trình tự. Những điều này bao gồm những vùng trình tự mã hóa những phân tử protein và phân tử RNA, đúng hơn là có một đặc trƣng (fearures) khác nhau. Một danh sách feature hoàn chỉnh có thể có những phần sau đây: (có thể xem chi tiết hơn ở Appendix III, Appendix IV trong phần 3.4.12.1 của file GenBank notes). Một record mẫu đƣợc đƣa ra ở trên chỉ bao gồm một số nhỏ những thành phần của features (nhƣ nguồn, CDS, và gene, tất cả những mô tả bên dƣới nó). Những phần Features khác, bên dƣới, cung cấp những liên kết tới một vài GenBank record mà ở đó có trình diễn những feature truyền thống khác. Cách tìm kiếm: Feature Key [FKEY] Chỉ dẫn: để xem danh các features có sẵn, tham khảo Bảng Feature (phiên bản 6.2). Sau đó, bạn có thể chọn một hoặc nhiều feature từ trong danh mục bao gồm luôn yêu cầu của bạn. Ví dụ, bạn có thể giới hạn tìm kiếm của bạn tới những record chứa vừa primer gắn lẫn đặc tính promoter. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 150 source Cách tìm kiếm: All Fields [ALL] bạn có thể dùng để tìm kiếm một vài yếu tố trong trƣờng source, nhƣ chủng loại, dòng, loại mô. Dùng trƣờng Sequence Length [SLEN] để tìm kiếm chiều dài và trƣờng Organism [ORGN] để tìm kiếm tên sinh vật. Taxon Là số ID duy nhất, ổn định của phân loại nguồn gốc sinh vật. Số phân loại ID đƣợc ấn định cho mỗi phân loại (loài, giống, họ, …) trong cơ sở dữ liệu NCBI. Cách tìm kiếm: Số ID phân loại thì không thể tìm kiếm trong trƣờng Organism của trang Entrez nhƣng có thể tìm kiếm ở trang Taxonomy Browser. CDS Coding sequence. Trình tự mã hóa; là vùng nucleotide tƣơng ứng với trình tự amino acids trong một phân tử protein (vị trí từ codon mở đều cho đến codon kết thúc). Điểm đặc trƣng của CDS bao gồm sự dịch amino acid. Tác giả có thể chỉ rõ CDS tự nhiên bằng cách dùng từ hạn định “/evidence=experimental” hoặc “/evidence=not_experimental”. Ngƣời gởi còn đƣợc khuyến khích chú giải phần đặc tính của mRNA, bao gồm vùng không mã hóa 5‟ (5‟UTR), trình tự mã hóa (CDS, exon), và vùng mã hóa 3‟. Cách tìm kiếm: Feature Key [FKEY] Chỉ dẫn: Bạn có thể dùng trƣờng này để giới hạn tìm kiếm của bạn những record chứa 1 đặc tính (feature) đặc biệt, nhƣ CDS. Để làm hiện lên danh mục những đặc tính có giá trị, xem trƣờng Feature Key trong chọn lựa danh mục.  <1..206 : phần mở rộng base của đặc tính sinh học đƣợc chỉ ra bên trái, trong trƣờng hợp này là đặc tính CDS. Đặc tính có thể hoàn chỉnh, một phần trên đầu 5‟ () hay trên mạch bổ sung (complement(3300..4037)). protein_id Số xác định trình tự protein, tƣơng tự số version của trình tự nucleotide. Cách tìm: sử dụng “All Fields” GI “GenInfo Identifier” số xác định trình tự, trong trƣờng hợp này cho sản Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 151 phẩm protein. Cách tìm: “All Fields” translation Sự dịch mã aminoacid tƣơng ứng CDS. Trong nhiểu trƣờng hợp, sự dịch mã chỉ là giả định. Cách tìm: không thể dùng Entrez tìm kiếm trƣờng con translation. Nếu bạn muốn dùng chuỗi amino acid nhƣ query để lấy trình tự protein tƣơng đồng, dùng BLAST. gene Vùng sinh học quan tâm đƣợc xác định nhƣ là gene và đƣợc đặt tên. Cách tìm kiếm: Feature Key [FKEY] complement Chỉ ra rằng đặc tính nằm trên mạch bổ sung. Các đặc tính khác Trong các record khác chỉ ra rất nhiều đặc tính sinh học khác. Ví dụ:  AF165912 (gene, promoter, TATA signal, mRNA, 5'UTR, CDS, 3'UTR)  AF090832 (protein bind, gene, 5'UTR, mRNA, CDS, 3'UTR)  L00727 (alternatively spliced mRNAs) BASE COUNT Số lƣợng A, C, T, G trong trình tự. ORIGIN Thông tin trình tự bắt đầu ngay sau từ ORIGIN. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 152 PHỤ LỤC C BẢNG THỐNG KÊ CÁC PRIMER DÙNG TRONG CHẨN ĐOÁN GMO (Tổng hợp từ các tài liệu tham khảo 15, 16, 17, 20, 21, 23, 25, 27, 31, 34, 36, [12] ) STT Species Events PCR system Name Target gene Orientation Sequence 1 maize YieldGard® MON810 Mapping integrated cryIA(b) CRY2235R CryIA(b) Reverse primer 5'-GATGTAGCCGCGGAGCTGGTAGCGAGTGTAA-3' CRY2571R Reverse primer 5'-GCTTCTCGCGCTTGTCCCTCCACTTCTTCTCA-3' 2 3-junction PCR CRY2388F Forward primer 5'-GCCCACCACAGCCACCACTTCTCC-3' GENOMONR Reverse primer 5'-TCCCGAGCTCATGGCGAAAAATCAC-3' 3 TAIL-PCR CRY1213F Forward primer 5'-GGCACGGTGGATTCCCTGGACGAGAT-3' CRY1825F Forward primer 5'-GTCACCTTCGAAGCCGAGTACGACCTGGAGAG-3' AD2a Arbitrary primer 5'-(AGCT)GTCGA(GC)(AT)GA(AGCT)A(AT)GAA-3' 4 Long PCR 810Fb Forward primer 5'-CGAAGGACTCTAACGTTTAACATCCT-3' GENOMONR Reverse primer 5'-TCCCGAGCTCATGGCGAAAAATCAC-3' 5 Real-time quantitative PCR MONF Forward primer 5'-CAAGTGTGCCCACCACAGC-3' MONR Reverse primer 5'-GCAAGCAAATTCGGAAATGAA-3' 7 MONP Forward probe FAM-5‟-CGACCTGAACGAGGACTTTCGGTAGCC-3‟-TAMRA Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 153 6 Brassica napus real-time acc1 BnACCg8 (X77576) Forward primer 5'-GGTGAGCTGTATAATCGAGCGA-3' real-time and conventional acc2 Reverse primer 5'-GGCGCAGCATCGGCT-3' 7 conventional acc3 Forward primer 5'-GAGAATGAGGAGGACCAAGCTC-3' real-time accp Probe 5'-AACACCTATTAGACATTCGTTCCATTGGTCGA-3' 8 Lectin1 Le1 (soya lectin) 5'-GACGCTATTGTGACCTCCTC-3' Lectin6 Le1 (soya lectin) 5'-GAAAGTGTCAAGCTTAACAGCGACG-3' 9 RRO1 EPSPS (specific for Roundup Ready® Soya) 5'-TGGCGCCCAAAGCTTGCATGGC-3' RRO4 EPSPS (specific for Roundup Ready Soya) 5'-CCCCAAGTTCCTAAATCTTCAAGT-3' 10 maize Ivr1A Ivr (maize invertase) 5'-CCGCTGTATCACAAGGGCTGGTACC-3' Ivr1B Ivr (maize invertase) 5'-GGAGCCCGTGTAGAGCATGACGATC-3' 11 maize Cry1Ab Cry1A(b) (specific for Bt Maize) 5'-ACCATCAACAGCCGCTAGAACGACC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 154 Cry1As Cry1A(b) (specific for Bt Maize) 5'-TGGGGAACAGGCTCACGATGTCCAG-3' 12 maize CryIA(b)-V3 I41419 5'-CCTGACCAAGAGCACCAACCTGG-3' CryIA(b)-V4 I41419 5'-GCTCATGGTGGCGCTGAAGTTGC-3' 13 MSS-S AF023159 5'-TCAACATCCGTGGATTGCATC-3' MSS-A AF023159 5'-TTCAGGGAAATCATCAGTTAATTGC-3' 14 tomato Tomato Nema 282F Single PCR PG34L polygalacturonase (PG) gene from Lycopersicon esculentum Mill. Forward primer 5'-GGATCCTTAGAAGCATCTAGT-3' t-Nos nos terminator from Agrobacterium tumefaciens Reverse primer 5'-CATCGCAAGACCGGCAACAG-3' 15 PG34L polygalacturonase gene (PG) Forward primer 5'-ggATCCTTAgAAgCATCTAgT-3' PG34R Reverse primer 5'-CGTTGGTGCATCCCTGCATGG-3' 16 tomato Tomato Nema 282F Single PCR 35S-1 CaMV 35S promoter Forward primer 5'-GCTCCTACAAATGCCATCA-3' 35S-2 Reverse primer 5'-GATAGTGGGATTGTGCGTCA-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 155 17 maize Event 176 Single PCR Cry03 maize calcium- dependent protein kinase (CDPK) promoter and synthetic cryIA(b) gene Forward primer 5'-CTCTCGCCGTTCATGTCCGT-3' Cry04 Reverse primer 5'-GGTCAGGCTCAGGCTGATGT-3' 18 IVR1-F invertase gene Forward primer 5'-CCGCTGTATCACAAGGGCTGGTACC-3' IVR1-R Reverse primer 5'-GGAGCCCGTGTAGAGCATGACGATC-3' 19 soya Roundup Ready TM Single PCR p35S-af2 35S promoter and chloroplast-transit- signal peptide (CTP) from Petunia hybridaepsps gene Forward primer 5'-TGATGTGATATCTCCACTGACG-3' petu-ar1 Reverse primer 5'-TGTATCCCTTGAGCCATGTTGT-3' 20 GM03 lectin gene Forward primer 5'-GCCCTCTACTCCACCCCCATCC-3' GM04 Reverse primer 5'-GCCCATCTGCAAGCCTTTTTGTG-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 156 21 maize Event 176 Competitive PCR Cry03 maize calcium- dependent protein kinase (CDPK) promoter and synthetic cryIA(b) gene Forward primer 5'-CTCTCGCCGTTCATGTCCGT-3' Cry04 Reverse primer 5'-GGTCAGGCTCAGGCTGATGT-3' 22 Tomato Tomato Nema 282F Single PCR NOS-1 NOS-Terminator Forward primer 5'-GAATCCTGTTGCCGGTCTTG-3' NOS-3 Reverse primer 5'-TTATCCTAGTTTGCGCGCTA-3' 23 Tomato Tomato Nema 282F Single PCR APH2 short Neomycin phospho- transferase (nptII) gene Forward primer 5'-CTCACCTTGCTCCTGCCGAGA-3' APH2 reverse Reverse primer 5'-CGCCTTGAGCCTGGCGAACAG-3' 24 Tomato Tomato Nema 282F Single PCR TN5-1 Neomycin phospho- transferase gene (nptII) Forward primer 5'-GGATCTCCTGTCATCT-3' TN5-2 Reverse primer 5'-GATCATCCTGATCGAC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 157 25 maize Event 176 Single PCR btsyn-bf1 maize calcium- dependent protein kinase (CDPK) promoter and synthetic cryIA (b) gene Forward primer 5'-TCGACATCAGCCTGAGCCTG-3' btsyn-br1 Reverse primer 5'-TGGTTGATCAGCTGCTCGATC-3' 26 soya Roundup Ready TM Single PCR 35S-1 CaMV 35S promoter Forward primer 5'-GCTCCTACAAATGCCATCA-3' 35S-2 Reverse primer 5'-GATAGTGGGATTGTGCGTCA-3' 27 potato B33-INV Single PCR B1 hygromycin phospho- transferase (hph) gene Forward primer 5'-CGCCGATGGTTTCTACAA-3' B2 Reverse primer 5'-GGCGTCGGTTTCCACTAT-3' 28 A1 cloroplast tRNA gene Forward primer 5'-CGAAATCGGTAGACGCTACG-3' A2 Reverse primer 5'-GGGGATAGAGGGACTTGAAC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 158 29 maize Event 176 Single PCR Cry05 pollen-specific promoter of the calcium-dependent protein kinase (CDPK) and cryIA (b) gene (Bacillus thuringiensis toxin) Forward primer 5'-CCGCAGCCGATCCAACAATG-3' Cry06 Reverse primer 5'-GCTGATGTCGATGGGGGTGTAG-3' 30 soya Roundup Ready TM Simplex Real Time RR1-F CaMV 35S promoter and chloroplast-transit- signal peptide (CTP ) from Petunia hybrida EPSPS gene Forward primer 5'-CATTTGGAGAGGACACGCTGA-3' RR1-R Reverse primer 5'-GAGCCATGTTGTTAATTTGTGCC-3' 31 GM1-F lectin gene Forward primer 5'-CCAGCTTCGCCGCTTCCTTC-3' GM1-R Reverse primer 5'-GAAGGCAAGCCCATCTGCAAGCC-3' 32 GM01 lectin gene Forward primer 5'-TGCCGAAGCAACCAAACATGATCCT-3' GMO2 Reverse primer 5'-TGATGGATCTGATAGAATTGACGTT-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 159 33 soya Roundup Ready TM GM07 35S promoter and chloroplast-transit- signal peptide (CTP) from Petunia hybrida epsps gene Forward primer 5'-ATCCCACTATCCTTCGCAAGA-3' GM08 Reverse primer 5'-TGGGGTTTATGGAAATTGGAA-3' 34 maize Event 176 35S-cf3 CaMV 35S promoter Forward primer 5'-CCACGTCTTCAAAGCAAGTGG-3' 35S-cr4 Reverse primer 5'-TCCTCTCCAAATGAAATGAACTTCC-3' 35 maize and soya Roundup Ready TM and Bt 176 HA-nos118-f NOS terminator Forward primer 5'-GCATGACGTTATTTATGAGATGGG-3' HA-nos118-r Reverse primer 5'-GACACCGCGCGCGATAATTTATCC-3' 36 soya Roundup Ready TM Double Competitive p35S-cf3 CaMV 35S promoter Forward primer 5'-CCACGTCTTCAAAGCAAGTG-3' p35S-cr4 Reverse primer 5'-TCCTCTCCAAATGAAATGAACTTCC-3' 37 sole-af1 lectin gene Forward primer 5'-GACGCTATTGTGACCTCCTC-3' sole-cr4-1 Reverse primer 5'-TCTTTGTCCCAAATGTGGATG-3' 38 maize Event 176 Double Competitive p35S-af1u CaMV 35S promoter Forward primer 5'-GGGTCTTGCGAAGGATAGTG-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 160 p35S- ar1 Reverse primer 5'-CCTACAAATGCCATCATTGCG-3' 39 HMG-af1 high mobility group (hmgA) gene Forward primer 5'-GAAATCCCTGAGCGAGTCGGTA-3' HMG-ar1 Reverse primer 5'-GCGATGGCCTTGTTGTACTCGA-3' 40 maize Event 176 Competitive 35S-A CaMV 35S promoter Forward primer 5'-AAGGGTCTTGCGAAGGATAG-3' 35S-B Reverse primer 5'-AGTGGAAAAGGAAGGTGGCT-3' 41 maize Event 176 CRYIA3 cryIA(b)-gene Forward primer 5'-CCGCACCCTGAGCAGCAC-3' CRYIA4 Reverse primer 5'-GGTGGCACGTTGTTGTTCTGA-3' 42 SL1 lectin gene Forward primer 5'-ATGGGCTTGCCTTCTTTCTC-3' SL2 Reverse primer 5'-CCGATGTGTGGATTTGGTG-3' 43 soya Roundup Ready TM RRS-F CP4 EPSPS transgene Forward primer 5'-GGCATGTTGTTAATTTGTGCCAT-3' RRS-R Reverse primer 5'-GAAGTTCATTTCATTTGGAGAGGAC-3 44 Lectin-F lectin gene Forward primer 5'-TCCACCCCCATCCACATTT-3' Lectin-R Reverse primer 5'-GGCATAGAAGGTGAAGTTGAAGGA-3' 45 soya Roundup Ready TM 35S-F CaMV 35S promoter Forward primer 5'-GCCTCTGCCGACAGTGGT-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 161 35S-R Reverse primer 5'-AAGACGTGGTTGGAACGTCTTC-3' 46 maize Bt11 Simplex Real Time Bt11 3-5' IVS6 int. from maize alcohol dehydrogenase1 gene (adh1-1S) and synthetic cryIA (b) gene Forward primer 5'-AAAAGACCACAACAAGCCGC-3' Bt11 3-3' Reverse primer 5'-CAATGCGTTCTCCACCAAGTACT-3' 47 SSllb 1-5' maize starch synthase IIb (zSSIIb) gene Forward primer 5'-CTCCCAATCCTTTGACATCTGC-3' SSIIb 1-3' Reverse primer 5'-TCGATTTCTCTCTTGGTGACAGG-3' 48 maize Event 176 Simplex Real Time E176 2-5' cryIA(b) synthetic gene and PEPC N. 9 intron Forward primer 5'-TGTTCACCAGCAGCAACCAG-3' E176 2-3' Reverse primer 5'-ACTCCACTTTGTGCAGAACAGATCT-3' 49 maize MON810 Simplex Real Time M810 2-5' N.1 intron from maize hsp70 gene and synthetic cryIA (b) gene Forward primer 5'-GATGCCTTCTCCCTAGTGTTGA-3' M810 2-3' Reverse primer 5'-GGATGCACTCGTTGATGTTTG-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 162 50 maize T25 T25 1-5' pat gene and CaMV 35S terminator Forward primer 5'-GCCAGTTAGGCCAGTTACCCA-3' T25 1-3' Reverse primer 5'-TGAGCGAAACCCTATAAGAACCCT-3' 51 maize GA21 Simplex Real Time GA21 3-5' optimized transit peptide sequence (OTP) and point mutated maize epsps gene Forward primer 5'-GAAGCCTCGGCAACGTCA-3' GA21 3-3' Reverse primer 5'-ATCCGGTTGGAAAGCGACTT-3' 52 soya Roundup Ready TM Simplex Real Time RRS 01-5' junction between Petunia hybrida CTP and Agro- bacterium sp.strain CP4 EPSPS sequence Forward primer 5'-CCTTTAGGATTTCAGCATCAGTGG-3' RRS 01-3' Reverse primer 5'-GACTTGTCGCCGGGAATG-3' 53 Le1n02-5' lectin gene Forward primer 5'-GCCCTCTACTCCACCCCCA-3' Le1n02-3' Reverse primer 5'-GCCCATCTGCAAGCCTTTTT-3' 54 maize T25 Simplex Real Time KVM-5 phosphinothricin N-acetyl transferase (pat) gene Forward primer 5'-TTGAGGGTGTTGTGGCTGGTA-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 163 KVM-6 Reverse primer 5'-TGTCCAATCGTAAGCGTTCCT-3' 55 maize Bt11 IVS2-2 adh 1S-Intron2 (IVS2) and phosphinothricin N-acetyl transferase (pat) gene Forward primer 5'-CTGGGAGGCCAAGGTATCTAAT-3' PAT-B Reverse primer 5'-GCTGCTGTAGCTGGCCTAATCT-3' 56 maize T25 T25-F7 phosphinothricin N-acetyl transferase (pat) gene and CaMV 35S terminator Forward primer 5'-ATGGTGGATGGCATGATGTTG-3' T25-R3 Reverse primer 5'-TGAGCGAAACCCTATAAGAACCC-3' 57 maize MON810 VW01 5' junction between the host maize genome and the CaMV 35S promoter of the transgene Forward primer 5'-TCGAAGGACGAAGGACTCTAACG-3' VW03 Reverse primer 5'-TCCATCTTTGGGACCACTGTCG-3' 58 IVR1-F maize invertase gene Forward primer 5'-CCGCTGTATCACAAGGGCTGGTACC-3' IVR1-R Reverse primer 5'-GGAGCCCGTGTAGAGCATGACGATC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 164 59 soya Roundup Ready TM RR-F Forward primer 5'-CCGGAAAGGCCAGAGGAT-3' RR-R Reverse primer 5'-GGATTTCAGCATCAGTGGCTACA-3' 60 Soya lectin-F lectin gene Forward primer 5'-TGGTCGCGCCCTCTACTC-3' Soya lectin-R Reverse primer 5'-GGCGAAGCTGGCAACG-3' 61 maize Event 176 CRY2-F cryIA(b) synthetic gene Forward primer 5'-CCCATCGACATCAGCCTGAGC-3' CRY2-R Reverse primer 5'-CAGGAAGGCGTCCCACTGGC-3' 62 ZM1-F maize high- mobility-group (hmg) gene Forward primer 5'-TTGGACTAGAAATCTCGTGCTGA-3' ZM1-R Reverse primer 5'-GCTACATAGGGAGCCTTGTCCT-3' 63 Cat-f Forward primer 5'-ATAGCGACGGAGAGTTAG-3' Cat-r Reverse primer 5'-TTTGTATTCTGAGCATAGTGA-3' 64 maize Maize StarLink (CBH 351) Cry9C-5' Forward primer 5'-CCTATAGCTTCCCTTCTTCC-3' (?) 35Ster-3' Reverse primer 5'-TGCTGTAATAGGGCTGATGA-3' (?) 65 papaya Papaya 55-1, 66-1 NosC-5' Nos terminator and CaMV 35S promoter Forward primer 5'-TTACGGCGAGTTCTGTTAGG-3' CaMN-3' Reverse primer 5'-CATGTGCCTGAGAAATAGGC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 165 66 potato Potato NewLeaf Plus (RBMT21- 129, RBMT21- 350, RBMT22- 082) p-FMV02-5' Forward primer 5'-AAATAACGTGGAAAAGAGCTGTCCTGA-3' PLRV01-3' Reverse primer 5'-AAAAGAGCGGCATATGCGGTAAATCTG-3' 67 potato Potato NewLeaf Plus (RBMT21- 129, RBMT21- 350, RBMT22- 082) PLRV-rep1-5' Forward primer 5'-CTTCTTTCACGGAGTTCCAG-3' PLRV-rep1-3' Reverse primer 5'-TCGTCATTAAACTTGACGAC-3' 68 potato Potato NewLeaf Y (RBMT15- 101, SEMT15-02, SEMT15- p-FMV05-5' Forward primer 5'-AAAAGAGCTGTCCTGACAGC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 166 15) PVY02-3' Reverse primer 5'-TCCTCCTGCATCAATTGTGT-3' 69 potato Potato NewLeaf Y (RBMT15- 101, SEMT15-02, SEMT15- 15) PVY01-5' Forward primer 5'-GAATCAAGGCTATCACGTCC-3' PVY01-3' Reverse primer 5'-CATCCGCACTGCCTCATACC-3' 70 MON 863 primer1 Forward primer 5'-GTAGGATCGGAAAGCTTGGTAC-3' MON 863 primer2 Reverse primer 5'-TGTTACGGCCTAAATGCTGAACT-3' 71 adh1 primer 1 Forward primer 5'-CCAGCCTCATGGCCAAAG-3' adh1 primer 2 Reverse primer 5'-CCTTCTTGGCGGCTTATCTG-3' 72 soybean lectin 1a Forward primer 5'-GACCTCCTCGGGAAAGTTAC-3' GM04 Reverse primer 5'-GCCCATCTGCAAGCCTTTTTGTG-3' 73 XTPNT-S TNOS Forward primer 5'-caggtcgctgtcaTTGAATCCTGTTGCCGGTCTT-3' XTPNT-A Reverse primer 5'-caggtcgctgtcaATAATTGCGGGACTCTAATC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 167 74 XTPCM-S P35S Forward primer 5'-caggtggcagtcaTCATTGCGATAAAGGAAAGG-3' XTPCM-A Reverse primer 5'-caggtggctgtgaCGAAGGATAGTGGGATTGTG-3' 75 XTPCP4-S EPSPS Forward primer 5'-caggctgctctgaCGAATATCCGATTCTCGCTGTC-3' XTPCP4-A Reverse primer 5'-gacgacgcactcaCGCCCTCATCGCAATCCAC-3' 76 XTPGUS-S GUS Forward primer 5'-ccgtcactcgtcaCTGCTGTCGGCTTTAACCTC-3' XTPGUS-A Reverse primer 5'-cagcaccaggtcaGCGTCGCAGAACATTACATT-3' 77 XTPNPT-S NPT-II Forward primer 5'-caggtcgctgtcaTTTCTCGGCAGGAGCAAGG-3' XTPNPT-A Reverse primer 5'-caggtcgctgtcaACTGGGCACAACAGACAATC-3' 78 XTPNP-S PNOS Forward primer 5'-caggtcgctgtcaCAAAAGTCGCCTAAGGTCAC-3' XTPNP-A Reverse primer 5'-caggtcgctgtcaTACCGAGGGGAATTTATGGA-3' 79 XTPCpTI-S CpTI Forward primer 5'-caggacgcacagaACCACCTCGGAAGTAATCAT-3' XTPCpTI-A Reverse primer 5'-cagcacgcagtcaGGTTTGTAACAGAAATCAGCAA-3' 80 Spu-35S1-f CaMV promoter Forward primer 5'-CTTCGCAAGACCCTTCCTC-3' Spu-cryVm1-r Cry V gene Reverse primer 5'-GCTGGAGAACGATTGGTGC-3' 81 EPSPS RR Soy- specific Forward primer 5'-TGGCGCCCAAAGCTTGCATGGC-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 168 EPSPS RR Soy- specific Reverse primer 5'-CCCCAAGTTCCTAAATCTTCAAGT-3' 82 Cry1Ab Cry1A(b) (specific for Bt Maize) Forward primer 5'-ACCATCAACAGCCGCTAGAACGACC-3' Cry1As Cry1A(b) (specific for Bt Maize) Reverse primer 5'-TGGGGAACAGGCTCACGATGTCCAG-3' 83 TR03 18S rDNA Forward primer 5'-TCTGCCCTATCAACTTTCGATGGTA-3' TR04 18S rDNA Reverse primer 5'-AATTTGCGCGCCTGCTGCCTTCCTT-3' 84 Zein3 zein Forward primer 5'-AGTGCGACCCATATTCCAG-3' Zein4 zein Reverse primer 5'-GACATTGTGGCATCATCATTT-3' 85 PAT1 patatin Forward primer 5'-GTTATTATCCCTTAGCGTTGC-3' PAT2 patatin reverse primer 5'-AATTGTTTTGTGAATGACGAG-3' 86 PAT3 patatin forward primer 5'-GGATCCAGCATTTTCTTCA-3' PAT4 patatin Reverse primer 5'-TAGCTAACATCCATCGTAGAGG-3' 87 JSF3 Forward primer 5'-CACACAGGAGATTATTATAGGG-3' JSR3 Reverse primer 5'-GGGAATAAGGGCGACACG-3' 88 ADH-F3 forward primer Forward primer 5‟-CgTCgTTTCCCATCTCTTCCTCC-3‟ Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 169 ADH-R4 reverse primer Reverse primer 5‟- CCACTCCgAgACCCTCAgTC-3‟ 89 Bt113JFor primer Forward primer 5‟-gCggAACCCCTATTTgTTTA-3‟ Bt113JRev primer Reverse primer 5‟-TCCAAgAATCCCTCCATgAg-3‟ 90 Ap1 AmpR(AF427133) Forward primer 5'-TATTCAACATTTCCGTGTCGC-3' Ap2 Reverse primer 5'-TTTCGTTCATCCATAGTTGCC-3' 91 Nost5'F Forward primer 5‟-ttggcaataaagtttcttaagattgaat-3‟ Nost5'R Reverse primer 5'-acatgcttaacgtaattcaacagaaatt -3‟ 92 RRS-F Forward primer 5‟-gccatgttgttaatttgtgccat-3‟ RRS-R Reverse primer 5‟-gaagttcatttcatttggagaggac-3‟ 93 35S4-JUNC Forward primer 5'-ctttgaagacgtggttggaa-3' RRS3-JUNC Reverse primer 5'-aaaggaaggtggctcctaca-3' 94 MaiY-F1 Forward primer 5'-TAGTCTTCGGCCAGAATGG-3' MaiY-R3 Reverse primer 5'-CTTTGCCAAGATCAAGCG-3' 95 MaiJ-F2 Forward primer 5'-TTGGACTAGAAATCTCGTGCTGA-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 170 mhmg-rev Reverse primer 5'-GCTACATAGGGAGCCTTGTCCT-3' 96 GBSSI(GT1) Forward primer 5'-CAGCTATTTCCCAATTGGTTG-3' GBSSI(GT1) Reverse primer 5'-GCGGTAGCATAAGTGCCAAG-3' 97 GBSSI(GT2) Forward primer 5'-GCAGGTTTGGATTACCAGGA-3' GBSSI(GT2) Reverse primer 5'-CAGCAATGCCAGTTTTACGA-3' 98 MCRA013 and CW14-11 mutant allent Forward primer 5'-AGAAATTTGAGAAGCAGATTGAGCAG-3' MCRA013 and CW14-11 mutant allent Reverse primer 5'-TCAATTTTGTCACATTCAACGAGC-3' 99 MC14-11 mutant allele Forward primer 5'-CTGACAAGGCAAGAGGAGTTGTT-3' MC14-11 mutant allele Reverse primer 5'-ACAGCTGGTGCAGACTTTATGCTTA-3' 100 CaMV promoter Forward primer 5´-CCg ACA gTg gTC CCA Aag Atg gAC-3´ Reverse primer 5´-ATATagAggAagggTCTTgCgAAgg-3´ 101 Roundup Ready Soybean Forward primer 5´-TCATTTCATTTggAgAggACACg-3´ Reverse primer 5´-ggAATTgggATTAagggTTTgTATC-3´ Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 171 102 NOS terminator Forward primer 5´-gAATCCTgTTgCCggTCTTgCgATg-3´ Reverse primer 5´-TCgCgTATTAAATgTATAATTgCgggACTC-3´ 103 CaMV virus Forward primer 5´-gCgTAYACAACAAgTCagCAAACA-3´ Reverse primer 5´-TCCTggAgATTATTACTCgggTAgA-3´ 104 Forward primer 5´-CCAgAAgAACATTgggTCAATgC-3´ Reverse primer 5´-ATAgCTgACAgAAgTTgTTgCCg-3´´ 105 35S plt1 primer Forward primer 5'-GGTTCCCTATGTTTATTTTAACCTG-3' 35S plt2 primer Reverse primer 5'-CCTTCAATTTAACCGATGC-3' 106 nos 1 primer Forward primer 5'-AGCGCGCAAACTAGGATAAA-3' nos 1 NEST primer Reverse primer 5'-GCGCGGTGTCATCTATGTTA-3' 107 nos 2 primer Forward primer 5'-CTTCATGTTCGGCGGTCT-3' nos 3 primer Reverse primer 5'-AATCGTAGACCCCGACGAG-3' 108 nos 4 primer Forward primer 5'-TGGGAAATTTTAGCGAGATTAT-3' nos 5 primer Reverse primer 5'-TCTGGGAGAAGCAGTTACTTA-3' 109 nos plt2 primer Forward primer 5'-GATCGGAGAAGAACTGTTTGA-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 172 nos plt1 primer Reverse primer 5'-GAGAACTACCTTCTCACCGCATT-3' 110 RR-F Forward primer 5'-GCCATGTTGTTAATTTGTGCCAT-3' RR-R Reverse primer 5'-GAAGTTCATTTCATTTGGAGAGGAC-3' 111 primer1 β-amylase gene Forward primer 5'-TTAAGTCAGGATGTGTGCGTCTTC-3' primer2 Reverse primer 5'-TCAACCAAACGGCACCCTAT-3' 112 primer1 EG1 gene Forward primer 5'-CGAGGTCCATCCCAAGTTGA-3' primer2 Reverse primer 5'-CACCCCCCGGACTTTGTAC-3' 113 primer1 BAR gene Forward primer 5'-GAACTGGCATGACGTGGGTT-3' primer2 Reverse primer 5'-GGTACCGGCAGGCTGAAGT-3' 114 primer1 Ubi-1 gene Forward primer 5'-ATAGGGTTTGGTTTGCCCTTTT-3' primer2 Reverse primer 5'-CAAGTGCACGGCATATATTGAAAT-3' Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 173 PHỤ LỤC D MÃ (Code) CỦA MỘT SỐ ĐOẠN CHƢƠNG TRÌNH ĐÃ ĐƢỢC VIẾT TRONG QUÁ TRÌNH XỬ LÝ KẾT QUẢ I. MÃ CÁC ĐOẠN CHƢƠNG TRÌNH ĐƢỢC XỬ LÝ BẰNG PERL Với từng nhiệm vụ cụ thể ở trên, mã của một số đoạn chƣơng trình xử lý ở mỗi nhiệm vụ nhƣ sau: 1) Nhiệm vụ 1: đọc file từ đƣờng dẫn đƣợc chỉ ra (mở và trả về các file text trong thƣ đƣợc chỉ ra) Đoạn mã: # Mo va tra ve cac file text trong thư mục sub read_dir{ my($directory) = @_; my (@filetext) = (); my @files = (); my @totalfile = (); # Mở đường dẫn unless(opendir(DIRECTORY, $directory)) { print "Cannot open directory $directory!\n"; exit; } # Đọc đường dẫn, bỏ qua các kí tự đặc biệt "." và ".." @files = grep (!/^\.\.?$/, readdir(DIRECTORY)); closedir(DIRECTORY); # Nếu là file, và là file text cất nó vào mảng @filetext. # Nếu là đường dẫn, lặp lại kiểm tra file text trong thành phần của # Nó và cất vào mảng @filetext. foreach my $file (@files) { # Nếu thành phần trong đường dẫn là file if (-f "$directory/$file") { if ("$directory/$file" =~ /^.*\.txt$/) { push (@filetext, "$directory/$file"); } # Nếu bên trong thư mục là một thư mục khác }elsif( -d "$directory/$file") { push (@filetext,read_dir("$directory/$file")); } } #Trả lại mảng @filetext chứa tất cả đường dẫn tới các file text # trong đường dẫn. return @filetext; } Các thành phần trong chương trình con và chức năng của từng thành phần Các phần chính trong chƣơng trình gồm: Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 174  Khai báo chƣơng trình con sub read_dir{ }  Chƣơng trình con nhận tham số truyền vào nhƣ sau: my($directory) = @_;  Khai báo các biến my (@filetext) = (); my @files = (); my @totalfile = ();  Mở đƣờng dẫn unless(opendir(DIRECTORY, $directory)) { print "Cannot open directory $directory!\n"; exit; }  Đọc đƣờng dẫn, bỏ qua các kí tự đặc biệt "." và "..", sau đó đóng đƣờng dẫn lại: @files = grep (!/^\.\.?$/, readdir(DIRECTORY)); closedir(DIRECTORY);  Với mỗi phần tử trong mảng @files, nếu nó là file và là file text thì cất nó vào mảng @filetext; nếu bên trong thƣ mục là thƣ mục khác thì lặp lại việc mở thƣ mục, xét các phần tử trong thƣ mục, nếu nó là file và là filetext thì cất vào mảng @filetext. foreach my $file (@files) { if (-f "$directory/$file") { if ("$directory/$file" =~ /^.*\.txt$/) { push (@filetext, "$directory/$file"); } }elsif( -d "$directory/$file") { push (@filetext,read_dir("$directory/$file")); }  Cuối cùng trả lại mảng chứa các file text @filetext: return @filetext; Ta có thể kiểm tra sự hoạt động của chương trình con này bằng cách tạo ra 1 chương trình hoàn chỉnh như sau: (lƣu file tên là text_sub1.pl) #!/usr/bin/perl use strict; use warnings; # Nhập đường dẫn từ bàn phím print "Nhap vao duong dan toi folder chua file summary can mo:"; my $dir = ; chomp ($dir); Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 175 my @filetext = read_dir($dir); print join (“\n”, @filetext); exit; ################################################## # Chương trình con sub read_dir{ my($directory) = @_; my (@filetext) = (); my @files = (); my @totalfile = (); # mở đường dẫn unless(opendir(DIRECTORY, $directory)) { print "Cannot open directory $directory!\n"; exit; } # Đọc đường dẫn, bỏ qua các kí tự đặc biệt "." và ".." @files = grep (!/^\.\.?$/, readdir(DIRECTORY)); closedir(DIRECTORY); # Nếu là file, và là file text cất nó vào mảng @filetext. # Nếu đường dẫn, lặp lại kiểm tra file text trong thành phần # của nó và cất vào mảng @filetext. foreach my $file (@files) { # If the directory entry is a regular file if (-f "$directory/$file") { if ("$directory/$file" =~ /^.*\.txt$/) { push (@filetext, "$directory/$file"); } # Nếu bên trong thư mục là một thư mục khác }elsif( -d "$directory/$file") { push (@filetext,read_dir("$directory/$file")); } } # Trả lại mảng @filetext chứa tất cả đường dẫn tới các file text # trong đường dẫn return @filetext; } - Sau đó chạy thử chƣơng trình này để kiểm tra. 2) Nhiệm vụ 2: Tạo bảng băm với key là các số Acc.Number, value là nội dung tóm tắt trình tự (khi có một số Acc.Number trùng nhau, số sau sẽ chồng lên số trƣớc và value của Acc.Number này cũng bị thay đổi theo) Đọan mã: sub tao_hash_acc { my ($filename) = @_; my $sum = ''; my $fh; my %hash = (); unless (open ($fh,$filename)){ print "Cannot open this file $filename!!!!"; exit; } while ($sum = get_next_sum ($fh)){ my ($key,$value) = tach_acc_sum ($sum); $hash {$key} = $value; Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 176 } return %hash; } #Tra ve bien vo huong chua summary sub get_next_sum { my ($fh) = @_; my $save_input_seperator = $/; $/ = "\n\n\n"; my $sum = ; $/ = $save_input_seperator; return $sum; } #Tach accession number va summary sub tach_acc_sum { my ($value) = @_; my($key) = ($value =~ /^[0-9]+\:\s{2}([A-Z]+\_*[0-9]{5,}).*/s); return ($key,$value); } Các thành phần trong chương trình con và chức năng của từng thành phần Đoạn mã này bao gồm ba chƣơng trình con tƣơng tác hỗ trợ cho nhau. Chúng đƣợc khai báo nhƣ sau:  sub tao_hash_acc { }  sub get_next_sum { }  sub tach_acc_sum { } Hai chƣơng trình con get_next_sum và tach_acc_sum, mỗi chƣơng trình có một chức năng riêng và cùng hỗ trợ cho chƣơng trình con tao_hash_acc. Chƣơng trình con get_next_sum đƣợc dùng trong vòng lặp, với mỗi vòng lặp chƣơng trình con sẽ trả về một nội dung tóm tắt trình tự trong file kết quả. Chƣơng trình con tach_acc_sum có nhiệm vụ tách Accession number trong một nội dung tóm, trả về hai giá trị là $key chứa Accession number, và $value mang nội dung phần tóm tắt. Cuối cùng chƣơng trình con tao_hash_acc có nhiệm vụ tạo bảng băm với keys chứa tất cả Accession number và values chứa tất cả nội dung tóm tắt tƣơng ứng với giá trị keys. Ta có thể kiểm tra sự hoạt động của chương trình con này bằng cách tạo ra 1 chương trình hoàn chỉnh như sau: (lƣu file tên là text_sub2.pl) #!/usr/bin/perl use strict; use warnings; print “Nhập vào file kết quả:”; my $filename = ; Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 177 chomp $filename; my %hash_ket_qua = tao_hash_acc ($filename); print join(“\n”, keys %hash_ket_qua); exit; ############################################### # Các chương trình con sub tao_hash_acc { my ($filename) = @_; my $sum = ''; my $fh; my %hash = (); unless (open ($fh,$filename)){ print "Cannot open this file $filename!!!!"; exit; } while ($sum = get_next_sum ($fh)){ my ($key,$value) = tach_acc_sum ($sum); $hash {$key} = $value; } return %hash; } #Tra ve bien vo huong chua summary sub get_next_sum { my ($fh) = @_; my $save_input_seperator = $/; $/ = "\n\n\n"; my $sum = ; $/ = $save_input_seperator; return $sum; } #Tach accession number va summary sub tach_acc_sum { my ($value) = @_; my($key) =($value =~ /^[0-9]+\:\s{2}([A-Z]+\_*[0-9]{5,}).*/s); return ($key,$value); } 3) Nhiệm vụ 3: Ghi tất cả kết quả vào một file kết quả tổng hợp Đoạn mã: sub tao_file { my (%hash) = @_; my $i = 1; foreach (keys %hash){ my $value = $hash{$_}; $value =~ s/^[0-9]+/$i/s; $hash{$_} = $value; $i++; } print "Ban co muon luu danh sanh nay \"y\" hay \"n\":"; my $answer = ; chomp $answer; if ($answer =~ /y/i){ print "Nhap vao directory va ten file luu:"; my $filename = ; chomp $filename; unless (open (FH,"+>$filename")){ Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 178 print "Cannot open this file $filename!!!"; } print FH (values %hash); close FH; } } Ta có thể kiểm tra sự hoạt động của chương trình con này bằng cách tạo ra 1 chương trình hoàn chỉnh như sau: (lƣu file tên là text_sub3.pl) #!/usr/bin/perl use strict; use warnings; my %hash = ( 'TCA' => 'Serine', 'TCC' => 'Serine', 'TCG' => 'Serine', 'TCT' => 'Serine', 'TTC' => 'Phenylalanine', 'TTT' => 'Phenylalanine', 'TTA' => 'Leucin', 'TTG' => 'Leucin'); tao_file (%hash); exit; ############################################## #chương trình con sub tao_file { my (%hash) = @_; my $i = 1; #Vòng lặp này đánh số thứ tự #foreach (keys %hash){ # my $value = $hash{$_}; # $value =~ s/^[0-9]+/$i/s; # $hash{$_} = $value; # $i++; #} print "Ban co muon luu danh sanh nay \"y\" hay \"n\":"; my $answer = ; chomp $answer; if ($answer =~ /y/i){ print "Nhap vao directory va ten file luu:"; my $filename = ; chomp $filename; unless (open (FH,"+>$filename")){ print "Cannot open this file $filename!!!"; } print FH (values %hash); close FH; } } 4) Nhiệm vụ 4: Tổng hợp thành 1 file chƣơng trình hoàn chỉnh, với đầy đủ cả 3 chức năng trên và tạo thành một file kết quả tổng hợp. (lƣu file tên là hashloc.pl) #!usr/bin/perl use strict; use warnings; Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 179 # Mo file theo tung sumarry print "\n********************************************\n"; print "Day la chuong trinh loc Accession number\n"; print "Nhap du lieu theo huong dan\n"; print "********************************************\n\n"; print "Nhap vao duong dan toi folder chua file summary can mo:"; my $dir = ; chomp ($dir); my %hash = (); my @filetext = read_dir($dir); foreach (@filetext){ my %hashtam = tao_hash_acc ($_); foreach (keys %hashtam){ $hash{$_} = $hashtam{$_}; } } print join("\n",keys %hash); my $tongso_acc = scalar(keys %hash); print "\n\n**************************************\n"; print " Tong so \:$tongso_acc Accession number"; print "\n**************************************\n"; tao_file (%hash); exit; #################################################################### ######### # Các chương trình con # Tao hash chua key>acc va value>summary cua file text tu genbank sub tao_hash_acc { my ($filename) = @_; my $sum = ''; my $fh; my %hash = (); unless (open ($fh,$filename)){ print "Cannot open this file $filename!!!!"; exit; } while ($sum = get_next_sum ($fh)){ my ($key,$value) = tach_acc_sum ($sum); $hash {$key} = $value; } return %hash; } # Tra ve bien vo huong chua summary sub get_next_sum { my ($fh) = @_; my $save_input_seperator = $/; $/ = "\n\n\n"; my $sum = ; $/ = $save_input_seperator; return $sum; } # Tach accession number va summary sub tach_acc_sum { my ($value) = @_; my($key) = ($value =~ /^[0-9]+\:\s{2}([A-Z]+\_*[0-9]{5,}).*/s); return ($key,$value); } Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 180 # Mo va tra ve cac file text trong directory sub read_dir{ my($directory) = @_; my (@filetext) = (); my @files = ( ); my @totalfile = (); # Open the directory unless(opendir(DIRECTORY, $directory)) { print "Cannot open directory $directory!\n"; exit; } # Read the directory, ignoring special entries "." and ".." @files = grep (!/^\.\.?$/, readdir(DIRECTORY)); closedir(DIRECTORY); # If file, print its name # If directory, recursively print its contents # Notice that we need to prepend the directory name! foreach my $file (@files) { # If the directory entry is a regular file if (-f "$directory/$file") { if ("$directory/$file" =~ /^.*\.txt$/) { push (@filetext, "$directory/$file"); } # If the directory entry is a subdirectory }elsif( -d "$directory/$file") { push (@filetext,read_dir("$directory/$file")); } } return @filetext; } # Tao filetext chua danh sach accession thong ke # Tao filetext chua danh sach accession thong ke sub tao_file { my (%hash) = @_; my $i = 1; foreach (keys %hash){ my $value = $hash{$_}; $value =~ s/^[0-9]+/$i/s; $hash{$_} = $value; $i++; } print "Ban co muon luu danh sanh nay \"y\" hay \"n\":"; my $answer = ; print "\n********************************************\n"; chomp $answer; if ($answer =~ /y/i){ print "Nhap vao directory va ten file luu:"; my $filename = ; chomp $filename; unless (open (FH,"+>$filename")){ print "Cannot open this file $filename!!!"; } print FH (values %hash); close FH; print "****************\n"; print "OK!!!Da ghi xong"; print "\n****************"; Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 181 } } 5) Nhiệm vụ 5: Tải trình tự từ danh sách đƣợc tổng hợp ở trên và lƣu vào thƣ mục đƣợc chỉ ra Đoạn mã: #!usr/bin/perl use strict; use warnings; use LWP::Simple; # Khai bao bien my($path1,$path2,$path3,@content,@accs,$url,$undownacc,$i); print "\n**************************************\n"; print " DAY LA CHUONG TRINH LOAD TRINH TU"; print "\n**************************************\n"; # Mo file chua accession number tu ban phim print "\nNhap duong dan toi file chua accession number can load :"; $path1 = ; chomp ($path1); # Tao file chua noi dung load print "\nNhap duong dan de chua file load:"; $path2 = ; chomp ($path2); # Tao thư mục chua noi dung khong load duoc print "\nFile khong tai duoc, tao thu muc chua chung:"; $path3=; chomp ($path3); # Mo file chua so accession number open(ACC,$path1)||die("Can't open file accession:$!"); @content=; print "\n**************************\n"; print "Chon:\n"; print " *Load tuy chon \"option\"\n"; print " *Load tat ca \"all\"\n"; print "Answer:"; my $answer = ; print "**************************\n"; my $acc = ''; chomp $answer; if ($answer =~ /all/i){ #Tach accession number tu file summary foreach (@content){ if($_=~ /[0-9]+\:/){ ($acc) = ($_ =~ /^[0-9]+\:\s{2}([A-Z]+\_*[0-9]{5,})\s*/); push (@accs,$acc); } } load (\@accs,\$path2,\$path3); }elsif ($answer =~ /option/i){ do{ print "Nhap vao accession number can load roi enter hay \"load\" va enter de thuc hien:"; $acc = ; chomp $acc; if ($acc ne "load"){ Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 182 push (@accs,$acc); } } until ($acc =~ /load/i); load (\@accs,\$path2,\$path3); } exit; #################################################################### ################# sub load { my ($acc,$dir_luu,$dir_undown) = @_; my $i = 1; my $record = ''; my $filename = ''; my $undown = ''; my $undownacc; foreach (@$acc){ my $url = " c_start=1&list_uids="; $url .= $_."&dopt=gb&dispmax=5&sendto=t&from=begin&to=end&extrafeatpresent=1 &ef_MGC=16"; print "\n**************************\n"; print "Dang load trinh tu thu $i\n"; print "**************************\n\n"; print "$url\n"; if ($record = get ($url)){ $filename = $$dir_luu."\\$_\.txt"; open (LOAD,"+>$filename")|| die("Khong luu duoc file DNA\n"); print LOAD $record ; close (LOAD); }else { #Neu ACCESSION nao khong tai duoc thi luu vao tap tin #undown.txt print "$_ tai khong duoc\n"; $undownacc = $_."\n"; $undown = $$dir_undown."\\$_\.txt"; open (UNLOAD, "+>$undown")|| die("Khong luu duoc file DNA\n"); print UNLOAD $undownacc ; close (UNLOAD); } $i++; } print "\n******************\n"; print "OK!!!Da load xong"; 6) Nhiệm vụ 6: Phân loại dữ liệu trình tự theo các trƣờng. (lƣu file tên là group_division.pl) Đoạn mã: #!/usr/bin/perl use strict; use warnings; use File::Copy; Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 183 use File::Path; use lib 'E:\baitap\beginning\giaiquyetthucte'; use module_file; #Chuong trinh phan loai du lieu genbank theo division print "\n********************************************\n"; print "DAY LA CHUONG TRINH PHAN LOAI FILE GENBANK\n"; print " THEO DIVISIONS\n"; print "********************************************\n"; #Khai bao mang cac division my @divs = ("PRI", "ROD", "MAM", "VRT", "INV", "PLN", "BCT", "VRL", "PHG", "SYN", "UNA", "EST", "PAT", "STS", "GSS", "HTG", "HTC"); #Nhap du lieu tu ban phim print "Nhap vao duong dan chua file genbank:"; my $dir = ; chomp $dir; #Nhap vao thu muc tao folder print " \nNhap vao thu muc tao folder:"; my $dir2 = ; chomp $dir2; #Chon che do print "\nBan muon \"copy\" hay \"move\":"; my $answer = ; chomp $answer; #Copy tung file vao division rieng biet foreach (@divs){ #Tap hop du lieu file trong folder my @filenames = read_dir ($dir); foreach my $filename (@filenames){ my $div = extract_div ($filename); print "Dang xu ly file: $filename\n"; if ($_ =~ /$div/){ print "\nMatch successfully!!!\n"; my $folder = make_folder ($dir2,$div); if ($answer =~ /move/i){ move("$filename","$folder")or die "Move failed: $!"; }else{ copy("$filename","$folder")or die "Copy failed: $!"; }else { print "\n Unmatch!!!\n"; next; } } } exit; ############################################################### #Chuong trinh con tach DIVISION tu file genbank sub extract_div { my ($filename) = @_; #mo file my @content = get_file_data ($filename); my $locus = $content[0]; my ($div) = ($locus =~ /^LOCUS.+\s+([A-Z]+)\s\d+\-.*\n/); return $div; } Các thành phần trong chương trình và chức năng của từng thành phần Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 184 Ta thấy chƣơng trình đƣợc viết rất ngắn, ở đây ta chủ yếu sử dụng các module có sẵn:  Module File::Copy; Cú pháp: move ("$filename","$folder") or die "Move failed: $!"; copy ("$filename","$folder") or die "Copy failed: $!"; Chức năng di chuyển hay sao chép một file tới thƣ mục đƣợc chỉ ra.  Module File::Path; Cú pháp: mkpath(["$dir/$foldername"],1, 0711); Chức năng tạo một thƣ mục trong một đƣờng dẫn đƣợc chỉ ra.  Module lib 'E:\baitap\beginning\giaiquyetthucte'; module_file; Đây là module tự tạo ra, module này có nhiều chức năng xử lý file nhƣ đọc file từ thƣ mục, mở file, ghi vào file, tạo thƣ mục. Module này nằm trong thƣ mục 'E:\baitap\beginning\giaiquyetthucte', nên khi dùng ta phải gọi đƣờng dẫn tới module. Để chƣơng trình có thể chạy đƣợc đòi hỏi phải khai báo sử dụng tất cả các module này nhƣ sau: use File::Copy; use File::Path; use lib 'E:\baitap\beginning\giaiquyetthucte'; use module_file; Chƣơng trình có sử dụng một chƣơng trình con, extract_div, chức năng của chƣơng trình con là tách phần division trong file genbank. II. MÃ CÁC ĐOẠN CHƢƠNG TRÌNH ĐƢỢC XỬ LÝ BẰNG JAVA 1. Lớp GetFieldOfGenBank.java: tách trƣờng LOCUS, VERSION, và các trƣờng khác trong record GenBank. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 185 2. Lớp Get FieldInLocVerAcc: tách trƣờng con trong các trƣờng chính LOCUS và VERSION Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 186 3. Lớp GetFieldInSmallFieldOfFeature: Tách các nội dung khác trong trƣờng CDS. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 187 Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 188 4. Lớp Servlet Controller: Nhận tham số do ngƣời dùng gởi tới khi nhấn nút submit Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 189 5. Lớp Check: kiểm tra các điều kiện ngƣời dùng đặt ra. 6. Lớp CheckFieldOfVerAcc: tìm kiếm trong các trƣờng LOCUS, VERSION, ACCESSION. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 190 7. Lớp CheckOtherRequest: cho phép tìm kiếm trong các trƣờng còn lại, nhƣ DEFINITION, TITLE… 8. Lớp CheckFieldInSmallFieldOfFeature: cho phép tìm kiếm các trƣờng trong CDS nhƣ gene, product… Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 191 9. Lớp CheckOriginRequest: cho phép tìm kiếm trình tự trong ORIGIN Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 192 10. Lớp Servlet Result: Nhận các file thỏa kết quả tìm kiếm, tại đây thực hiện việc lấy nội dung các file kết quả và thực hiện xuất kết quả theo yêu cầu ngƣời dùng Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 193 Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 194 11. Lớp Servlet printSummaryHtml: xuất kết quả với thông tin tóm tắt trình tự. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 195 12. Lớp Servlet PrintGenbankHtml: xuất kết quả theo định dạng GenBank Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 196 13. Lớp printCdsNucleotideSeqHtml: xuất kết quả trình tự CDS dƣới dạng FASTA Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 197 14. Lớp ReadGB: cho phép xuất trình tự toàn bộ Nucleotide hay trình tự từ điểm khởi đầu đến điểm kết thúc cho trƣớc. Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 198 15. Lớp Servlet PrintNucleotideSeqFastaHtml: xuất kết quả trình tự nucleotide dƣới dạng FASTA Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 199 16. Lớp Servlet PrintCdsAAcidSeqFastaHtml: xuất kết quả trình tự amino acid dƣới dạng FASTA Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 200 PHỤ LỤC E * Nguyên tắc hoạt động của hai công cụ tìm kiếm Google và Scirus  Google Trong bảng trên cho thấy Google dung lƣợng chỉ mục rộng nhất. Đây là công cụ tìm kiếm mang tính chất mới mẽ dựa trên các chỉ mục tác phẩm khoa học đƣợc trích dẫn (Butler, 2000). Các công cụ tìm kiếm truyền thống sử dụng thuật toán và qui luật đơn giản tạo ra thứ tự các trang dựa trên tần số xuất hiện keywords đƣợc chỉ ra trong query. Google dựa vào việc kết nối giữa các trang web để xếp loại kết quả tìm kiếm. Vì thế các trang web đƣợc trích dẫn cao trên thế giới với nhiều liên kết dẫn đến chúng đƣợc sắp xếp cao nhất trong kết quả tìm kiếm. Đây là một cơ chế tìm kiếm hiệu quả mà bắt hiệu quả chính xác trên các trang web tốt và hay đƣợc dùng nhất trên Internet.  Scirus Sự giới hạn lớn nhất cho các công cụ tìm web là không đƣợc chỉ mục tới đƣợc cơ sở dữ liệu. Vấn đề này xảy ra ở nhiều cơ sở dữ liệu tạo ra internet sinh học, nhƣ cơ sở dữ liệu trình tự và một vài nguồn dựa trên sự cho phép nhƣ các tạp chí full-text, và cơ sở dữ liệu thƣơng mại. Mặc dù nội dung bị giới hạn ở các địa chỉ này, tuy nhiên tài liệu và nội dung tóm tắt vẫn đƣợc liệt kê bởi các công cụ tìm kiếm, nhƣng dữ liệu nằm bên dƣới không có sẵn bởi vì tƣờng lửa (firewalls) của cơ sở dữ liệu khóa sự chỉ mục nội bộ. Trong một nỗ lực để giải quyết vấn đề này, nhà xuất bản Elsevier đã phát triển Scirus ( Đây là một dự án đƣợc kết hợp với FAST, công ty công cụ tìm kiếm của NaUy đã tạo ra các công cụ tìm kiếm chuyên biệt về khoa học. Scirus tăng cƣờng phạm vi và tính chuyên biệt của nó bởi chỉ chỉ mục tới các nguồn với các thông tin khoa học. Các trang web này bao gồm, tạp chí full-text và các tóm tắt của Medline. Điều này khiến cho Scirus là công cụ hiệu quả cho cả hai công cụ tìm tác phẩm và web. Cả hai full-text và tạp chí định dạng PDF đƣợc chỉ mục bởi thực hiện MetaSearch của các nhà cung cấp full-text chủ yếu – Elsevier‟s ScienceDirect và Academic Press‟s IDEAL. Scirus cũng tìm kiếm web dựa vào key words, phạm vi bao Phần phụ lục NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG 201 gồm Medline, các bản quyền từ cơ sở dữ liệu của phòng bản quyền Mỹ (the US Patent Office), các hội nghị và các tóm tắt liên quan khoa học. Cơ sở dữ liệu Medline đƣợc cung cấp trên hệ thống BioMedNet, đòi hỏi đăng nhập BioMedNet miễn phí và mật mã để lấy ra. Scirus cung cấp nhiều tùy chọn qui định cách tìm kiếm để tìm kiếm chỉ trên địa chỉ miễn phí, chỉ trên địa chỉ thành viên hay chỉ trên một địa chỉ đặc biệt. Tháng 3 năm 2002 Scirus đã chỉ mục tới 69 triệu trang liên quan tới khoa học, bao gồm file PDF và các mẫu tin phản biện, vì thế nó bao phủ đa số internet liên quan sinh học.

Các file đính kèm theo tài liệu này:

  • pdfLUAN VAN TOT NGHIEP HOAN CHINH.pdf