Xem mẫu

  1. Phần phụ lục 163 KVM-6 Reverse primer 5'-TGTCCAATCGTAAGCGTTCCT-3' adh 1S-Intron2 (IVS2) and phosphinothricin N-acetyl transferase (pat) 55 maize Bt11 IVS2-2 gene Forward primer 5'-CTGGGAGGCCAAGGTATCTAAT-3' PAT-B Reverse primer 5'-GCTGCTGTAGCTGGCCTAATCT-3' phosphinothricin N-acetyl transferase (pat) gene and CaMV 56 maize T25 T25-F7 35S terminator Forward primer 5'-ATGGTGGATGGCATGATGTTG-3' T25-R3 Reverse primer 5'-TGAGCGAAACCCTATAAGAACCC-3' 5' junction between the host maize genome and the CaMV 35S promoter of the 57 maize MON810 VW01 transgene Forward primer 5'-TCGAAGGACGAAGGACTCTAACG-3' VW03 Reverse primer 5'-TCCATCTTTGGGACCACTGTCG-3' maize invertase 58 IVR1-F gene Forward primer 5'-CCGCTGTATCACAAGGGCTGGTACC-3' IVR1-R Reverse primer 5'-GGAGCCCGTGTAGAGCATGACGATC-3' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  2. Phần phụ lục 164 Roundup 59 soya 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' cryIA(b) synthetic 61 maize Event 176 CRY2-F gene Forward primer 5'-CCCATCGACATCAGCCTGAGC-3' CRY2-R Reverse primer 5'-CAGGAAGGCGTCCCACTGGC-3' maize high- mobility-group 62 ZM1-F (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' Maize StarLink 64 maize (CBH 351) Cry9C-5' Forward primer 5'-CCTATAGCTTCCCTTCTTCC-3' (?) 35Ster-3' Reverse primer 5'-TGCTGTAATAGGGCTGATGA-3' (?) Nos terminator and Papaya 55-1, CaMV 35S 65 papaya 66-1 NosC-5' promoter Forward primer 5'-TTACGGCGAGTTCTGTTAGG-3' CaMN-3' Reverse primer 5'-CATGTGCCTGAGAAATAGGC-3' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  3. Phần phụ lục 165 Potato NewLeaf Plus (RBMT21- 129, RBMT21- 350, RBMT22- 66 potato 082) p-FMV02-5' Forward primer 5'-AAATAACGTGGAAAAGAGCTGTCCTGA-3' PLRV01-3' Reverse primer 5'-AAAAGAGCGGCATATGCGGTAAATCTG-3' Potato NewLeaf Plus (RBMT21- 129, RBMT21- 350, RBMT22- 67 potato 082) PLRV-rep1-5' Forward primer 5'-CTTCTTTCACGGAGTTCCAG-3' PLRV-rep1-3' Reverse primer 5'-TCGTCATTAAACTTGACGAC-3' Potato NewLeaf Y (RBMT15- 101, SEMT15-02, 68 potato SEMT15- p-FMV05-5' Forward primer 5'-AAAAGAGCTGTCCTGACAGC-3' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  4. Phần phụ lục 166 15) PVY02-3' Reverse primer 5'-TCCTCCTGCATCAATTGTGT-3' Potato NewLeaf Y (RBMT15- 101, SEMT15-02, SEMT15- 69 potato 15) PVY01-5' Forward primer 5'-GAATCAAGGCTATCACGTCC-3' PVY01-3' Reverse primer 5'-CATCCGCACTGCCTCATACC-3' MON 863 70 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' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  5. Phần phụ lục 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' EPSPS RR Soy- 81 specific Forward primer 5'-TGGCGCCCAAAGCTTGCATGGC-3' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  6. Phần phụ lục 168 EPSPS RR Soy- specific Reverse primer 5'-CCCCAAGTTCCTAAATCTTCAAGT-3' Cry1A(b) (specific 82 Cry1Ab for Bt Maize) Forward primer 5'-ACCATCAACAGCCGCTAGAACGACC-3' Cry1A(b) (specific Cry1As 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' ADH-F3 5‟-CgTCgTTTCCCATCTCTTCCTCC-3‟ 88 forward primer Forward primer NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  7. Phần phụ lục 169 ADH-R4 5‟- CCACTCCgAgACCCTCAgTC-3‟ reverse primer Reverse primer Bt113JFor 5‟-gCggAACCCCTATTTgTTTA-3‟ 89 primer Forward primer Bt113JRev 5‟-TCCAAgAATCCCTCCATgAg-3‟ primer Reverse primer 90 Ap1 AmpR(AF427133) Forward primer 5'-TATTCAACATTTCCGTGTCGC-3' Ap2 Reverse primer 5'-TTTCGTTCATCCATAGTTGCC-3' 5‟-ttggcaataaagtttcttaagattgaat-3‟ 91 Nost5'F Forward primer 5'-acatgcttaacgtaattcaacagaaatt -3‟ Nost5'R Reverse primer 5‟-gccatgttgttaatttgtgccat-3‟ 92 RRS-F Forward primer 5‟-gaagttcatttcatttggagaggac-3‟ RRS-R Reverse primer 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' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  8. Phần phụ lục 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' MCRA013 and CW14-11 98 mutant allent Forward primer 5'-AGAAATTTGAGAAGCAGATTGAGCAG-3' MCRA013 and CW14-11 mutant allent Reverse primer 5'-TCAATTTTGTCACATTCAACGAGC-3' MC14-11 99 mutant allele Forward primer 5'-CTGACAAGGCAAGAGGAGTTGTT-3' MC14-11 mutant allele Reverse primer 5'-ACAGCTGGTGCAGACTTTATGCTTA-3' 5´-CCg ACA gTg gTC CCA Aag Atg gAC-3´ 100 CaMV promoter Forward primer 5´-ATATagAggAagggTCTTgCgAAgg-3´ Reverse primer Roundup Ready 5´-TCATTTCATTTggAgAggACACg-3´ 101 Soybean Forward primer 5´-ggAATTgggATTAagggTTTgTATC-3´ Reverse primer NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  9. Phần phụ lục 171 5´-gAATCCTgTTgCCggTCTTgCgATg-3´ 102 NOS terminator Forward primer 5´-TCgCgTATTAAATgTATAATTgCgggACTC-3´ Reverse primer 5´-gCgTAYACAACAAgTCagCAAACA-3´ 103 CaMV virus Forward primer 5´-TCCTggAgATTATTACTCgggTAgA-3´ Reverse primer 5´-CCAgAAgAACATTgggTCAATgC-3´ 104 Forward primer 5´-ATAgCTgACAgAAgTTgTTgCCg-3´´ Reverse primer 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' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  10. Phần phụ lục 172 nos plt1 primer Reverse primer 5'-GAGAACTACCTTCTCACCGCATT-3' 110 RR-F Forward primer 5'-GCCATGTTGTTAATTTGTGCCAT-3' RR-R Reverse primer 5'-GAAGTTCATTTCATTTGGAGAGGAC-3' β-amylase gene 111 primer1 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' NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  11. Phần phụ lục 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: NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  12. Phần phụ lục 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); NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  13. Phần phụ lục 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; NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  14. Phần phụ lục 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 = ; NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  15. Phần phụ lục 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")){ NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  16. Phần phụ lục 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; NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  17. Phần phụ lục 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); } NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  18. Phần phụ lục 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****************"; NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  19. Phần phụ lục 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"){ NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
  20. Phần phụ lục 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 = "http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&qty=1& 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; NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
nguon tai.lieu . vn