Xem mẫu
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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