Thu thập nguồn gene và tổ chức dữ liệu gene
Trang 1KVM-6 Reverse primer 5'-TGTCCAATCGTAAGCGTTCCT-3'
adh 1S-Intron2 (IVS2) and phosphinothricin N-acetyl transferase (pat) gene Forward primer 5'-CTGGGAGGCCAAGGTATCTAAT-3'
phosphinothricin N-acetyl transferase (pat) gene and CaMV 35S terminator Forward primer 5'-ATGGTGGATGGCATGATGTTG-3'
5' junction between the host maize genome and the CaMV 35S promoter of the transgene Forward primer 5'-TCGAAGGACGAAGGACTCTAACG-3'
maize invertase gene Forward primer 5'-CCGCTGTATCACAAGGGCTGGTACC-3'
Trang 259 soya
Roundup
cryIA(b) synthetic gene Forward primer 5'-CCCATCGACATCAGCCTGAGC-3'
maize mobility-group (hmg) gene Forward primer 5'-TTGGACTAGAAATCTCGTGCTGA-3'
64 maize
Maize StarLink
Trang 366 potato
Potato NewLeaf Plus (RBMT21-
129, RBMT21-
350, RBMT22-
67 potato
Potato NewLeaf Plus (RBMT21-
129, RBMT21-
350, RBMT22-
68 potato
Potato NewLeaf Y (RBMT15-
101, SEMT15-02,
Trang 415)
69 potato
Potato NewLeaf Y (RBMT15-
101, SEMT15-02, SEMT15-
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'
Trang 574 XTPCM-S P35S Forward primer 5'-caggtggcagtcaTCATTGCGATAAAGGAAAGG-3'
EPSPS RR specific Forward primer 5'-TGGCGCCCAAAGCTTGCATGGC-3'
Trang 6
EPSPS RR specific Reverse primer 5'-CCCCAAGTTCCTAAATCTTCAAGT-3'
Cry1A(b) (specific for Bt Maize) Forward primer 5'-ACCATCAACAGCCGCTAGAACGACC-3'
Cry1A(b) (specific for Bt Maize) Reverse primer 5'-TGGGGAACAGGCTCACGATGTCCAG-3'
ADH-F3 forward primer Forward primer 5‟-CgTCgTTTCCCATCTCTTCCTCC-3‟
Trang 7
ADH-R4 reverse primer Reverse primer 5‟- CCACTCCgAgACCCTCAgTC-3‟
Bt113JFor primer Forward primer 5‟-gCggAACCCCTATTTgTTTA-3‟
Bt113JRev primer Reverse primer 5‟-TCCAAgAATCCCTCCATgAg-3‟
Trang 8mhmg-rev Reverse primer 5'-GCTACATAGGGAGCCTTGTCCT-3'
MCRA013 and CW14-11 mutant allent Forward primer 5'-AGAAATTTGAGAAGCAGATTGAGCAG-3'
MCRA013 and CW14-11 mutant allent Reverse primer 5'-TCAATTTTGTCACATTCAACGAGC-3'
MC14-11 mutant allele Forward primer 5'-CTGACAAGGCAAGAGGAGTTGTT-3'
MC14-11 mutant allele Reverse primer 5'-ACAGCTGGTGCAGACTTTATGCTTA-3'
101
Roundup Ready
Trang 9102 NOS terminator Forward primer 5´-gAATCCTgTTgCCggTCTTgCgATg-3´
nos 1 NEST primer Reverse primer 5'-GCGCGGTGTCATCTATGTTA-3'
Trang 10nos plt1 primer Reverse primer 5'-GAGAACTACCTTCTCACCGCATT-3'
Trang 11PHỤ 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
# Đọ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")); }
Trang 12} }elsif( -d "$directory/$file") {
Trang 13print join (“\n”, @filetext);
# Đọ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")); }
- 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)
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;
Trang 14Cá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:
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)
Trang 15my %hash_ket_qua = tao_hash_acc ($filename);
print join(“\n”, keys %hash_ket_qua);
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;
Trang 16} print FH (values %hash);
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;
Trang 17print "\n********************************************\n";
print "Day la chuong trinh loc Accession number\n";
print "Nhap du lieu theo huong dan\n";
print join("\n",keys %hash);
my $tongso_acc = scalar(keys %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;
Trang 18# 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
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****************";
Trang 19# Mo file chua accession number tu ban phim
print "\nNhap duong dan toi file chua accession number can load :";
$path1 = <STDIN>;
chomp ($path1);
# Tao file chua noi dung load
print "\nNhap duong dan de chua file load:";
$path2 = <STDIN>;
chomp ($path2);
# Tao thư mục chua noi dung khong load duoc
print "\nFile khong tai duoc, tao thu muc chua chung:";
$path3=<STDIN>;
chomp ($path3);
# Mo file chua so accession number
open(ACC,$path1)||die("Can't open file accession:$!");
@content=<ACC>;
print "\n**************************\n";
print "Chon:\n";
print " *Load tuy chon \"option\"\n";
print " *Load tat ca \"all\"\n";
} }
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 = <STDIN>;
chomp $acc;
if ($acc ne "load"){
Trang 20} } until ($acc =~ /load/i);
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à
Trang 21use 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 = <STDIN>;
chomp $dir;
#Nhap vao thu muc tao folder
print " \nNhap vao thu muc tao folder:";
#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);
Trang 22sẵ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:
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