專利名稱:全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),適用于已測序的模式生物基因家族新成員的全基因組發(fā)現(xiàn)和搜索,還涉及在各實驗室大量實驗測序數(shù)據(jù)的基因家族發(fā)現(xiàn)和分類中的應(yīng)用。
背景技術(shù):
隨著人類基因組測序計劃的實施,擬南芥、水稻等模式生物的全基因組測序的相繼完成,許多物種的基因組學(xué)研究工作正在全面展開?;蚪M學(xué)技術(shù)的進(jìn)步導(dǎo)致了生物學(xué)數(shù)據(jù)量的大爆炸,這無疑給基因組組織結(jié)構(gòu)和信息結(jié)構(gòu)的研究工作提供了大量的第一手材料,同時也為基因組研究取得突破性進(jìn)展提供了可能。人類對基因的認(rèn)識,將從以往的對單個基因的了解,上升到在整個基因組水平上考察基因的組織結(jié)構(gòu)和信息結(jié)構(gòu),考察基因之間在位置、結(jié)構(gòu)和功能上的相互關(guān)系。
盡管人類現(xiàn)在對基因的了解達(dá)到了前所未有的程度,但是對幾種模式生物基因組測序結(jié)果的分析卻表明還有大量功能未知的基因存在。因此,闡明這些基因的未知功能是后基因組時代的一個重要研究課題。如果能對目的基因進(jìn)行有效的全基因組預(yù)測,再將得到的序列加以實驗驗證,對于新基因的發(fā)現(xiàn)和功能分析,其針對性、正確性和工作效率將會得到明顯的改善。
目前對具有某一類功能的目的基因的全基因組預(yù)測的方法主要有基于序列相似性的Blast搜索法(Altschul et al.,1990),進(jìn)化分析法(Eisen et al.,1998,Pellegrini et al.,1999),基于隱馬爾可夫模型的HMMer搜索法(Eddy et al.,1998),神經(jīng)網(wǎng)絡(luò)預(yù)測法(Jensen et al.,2003)和機(jī)器學(xué)習(xí)預(yù)測法(King et al.,2000,Kinget al.,2001)等。其中使用最廣泛的預(yù)測方法主要是依靠Blast的相似性分析,根據(jù)和已知同源基因序列的相似度來打分,高于一定域值的序列則被判斷為候選基因,如Wang等(Wang et al.,2004),Tian等(Tian et al.,2004),以及最近La等(La et al.,2006)的文章都用到了該方法。但是該方法存在一個難以避免的缺點,即兩個核酸的全序列的相似度較高,并不一定意味著它們就具有相同或類似的核心功能模塊,也許它們的核酸序列中起著表達(dá)調(diào)控的那部分關(guān)鍵序列的相似度并不高;而兩個相似度低于設(shè)定域值的序列,卻有可能擁有相同的功能模塊,只是因為關(guān)鍵序列相對于它們的全長來說并不長,其他部分序列相似度不高,在做全序列Blast分析的時候,這條序列就有可能因為低于域值標(biāo)準(zhǔn)而被篩選掉了。這樣就會導(dǎo)致一部分候選序列并不是需要的結(jié)果,而另一部分具有相同或類似功能的基因卻因為全序列相似度不高而被漏掉?;谝陨系目紤],申請人建立了以序列中功能模塊——結(jié)構(gòu)域(domaln)為基礎(chǔ)的基因全基因組預(yù)測系統(tǒng)。申請人運(yùn)用隱馬爾可夫模型(HMM)(Sonnhammer et al.,1998),利用Perl編程,以已經(jīng)完成全基因組測序的模式生物的蛋白質(zhì)數(shù)據(jù)庫為基礎(chǔ),構(gòu)建了具有特定保守結(jié)構(gòu)域的全基因組目標(biāo)基因家族成員的自動化快速預(yù)測搜索系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),該系統(tǒng)不僅可以應(yīng)用于全基因數(shù)據(jù),或者是某條(如水稻有12條染色體,可以只抽取第10條染色體上的數(shù)據(jù)來檢測)染色體上的數(shù)據(jù),也可以是具體實驗中得到的序列數(shù)據(jù)。該系統(tǒng)具有高通量,快速準(zhǔn)確度高且操作簡易等優(yōu)點,特別在多結(jié)構(gòu)域蛋白家族預(yù)測上更顯優(yōu)勢,更重要的是能夠快速而又準(zhǔn)確的得到檢測結(jié)果,搜索人類、大鼠、小鼠、水稻、擬南芥等模式生物的全基因組數(shù)據(jù)通常只需要幾分鐘的時間就能得到所需結(jié)果。
為了實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)措施一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),該系統(tǒng)包含如下模塊1.數(shù)據(jù)下載模塊a。下載和收集Fasta格式的全基因組蛋白序列(任意物種,任意數(shù)據(jù),只要是Fasta格式的蛋白序列就行)。
2.去冗余序列模塊b。將得到的大量數(shù)據(jù)過濾掉冗余序列,即序列完全相同,命名卻不同的序列。序列相同名字不同的冗余序列被合并為一條序列,其新的命名包含上述所有冗余序列的名字。該模塊b利用了哈希函數(shù),將所有序列調(diào)入內(nèi)存中檢測和計算或檢測,大大提高了檢測速度;原來Fasta格式的序列前面就有名字,該模塊只是將序列相同,名字不同的冗余序列被合并為一條序列,新序列內(nèi)容不變,新序列的名字包含上述所有冗余序列的名字。比如數(shù)據(jù)庫中有3條序列名字雖不一樣,但序列是一模一樣的。該模塊就能自動找到這3條序列,并生成一個新的序列,新的序列名里包含這三條序列原來的序列名。
3.序列格式化模塊c。將去掉冗余序列的數(shù)據(jù)庫格式化成下一步搜索所需的格式;將下載到的序列格式化為下一步計算所需的格式,即下一個程序模塊調(diào)用序列以便計算所需的格式,具體格式可由編程者自由選擇。
4.序列結(jié)構(gòu)域檢測和計算及保存模塊d。將格式化后的序列逐個自動提交給網(wǎng)絡(luò)上的HMM服務(wù)器進(jìn)行檢測和計算,并將所有的序列信息和對應(yīng)的結(jié)構(gòu)域信息保存為一新的文件。該模塊d將需要大量耗時檢測和計算才能得到的所有序列信息和對應(yīng)的結(jié)構(gòu)域信息保存了下來,以后的預(yù)測無需再重復(fù)檢測和計算,大大縮短了將來預(yù)測檢測和計算的時間;結(jié)構(gòu)域即Domain,HMM服務(wù)器可以檢測和計算出來,提交蛋白序列就能檢測和計算出Domain,將該序列名稱、內(nèi)容、以及Domain用相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)保存在一個新的文件中即可。提交過程即用程序來模擬手工提交的過程,需要分析HMM服務(wù)器的網(wǎng)頁結(jié)構(gòu)。
5.包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e。設(shè)定好目標(biāo)序列應(yīng)該含有的結(jié)構(gòu)域名稱,至少含有一個結(jié)構(gòu)域,可以是一個或者任意多個結(jié)構(gòu)域,該方法突出的多個結(jié)構(gòu)域的方便檢測,以及不同類序列的家族名稱,該模塊e調(diào)用模塊d的計算結(jié)果文件,進(jìn)行全自動搜索,自動將得到的結(jié)果按先前設(shè)定好的家族名稱分別保存;特定結(jié)構(gòu)域是指用戶需要搜索的任意結(jié)構(gòu)域,是任意設(shè)定的,只要蛋白家族含有的保守結(jié)構(gòu)域即可。檢測的文件是第4步保存的那個文件。因為該文件已將全基因組序列所有的結(jié)構(gòu)域信息保存了。
6.數(shù)據(jù)庫更新模塊f。利用模塊a下載新數(shù)據(jù)庫后,將新的數(shù)據(jù)庫與老數(shù)據(jù)庫做比較,去除老數(shù)據(jù)庫已有的信息,并完成和模塊b類似的功能,去掉冗余序列后得到一全新的數(shù)據(jù)庫。該模塊利用了哈希函數(shù),將所有序列調(diào)入內(nèi)存中檢測和計算,大大提高了檢測和計算速度。利用該模塊f更新后的數(shù)據(jù)庫相對于全基因組數(shù)據(jù)庫要小得多,在保證預(yù)測結(jié)果完整的前題下大大縮短了預(yù)測所需時間。將新的數(shù)據(jù)庫與老數(shù)據(jù)庫做比較,去除新數(shù)據(jù)庫中老數(shù)據(jù)庫已有的信息,得到一個新的小數(shù)據(jù)庫。這個程序?qū)Ρ绢I(lǐng)域的普通編程人員來說比較容易,相關(guān)程序源碼如下所有程序均為Perl程序,在windows操作系統(tǒng)中使用需先安裝Perl環(huán)境(如ActivePerl)。
1.Filter_fastest.pl去冗余序列模塊#!/usr/bin/perluse strict;
use Cwd;
#Get the current directorymy $CurDir=cwd();
#Get the file wantto filtratemy $File=shift;
my $ResultFile1="Result1_".$File;
my $ResultFile2="Result2_".$File;
my $num=0;
my $all=0;
my%hash_a=";
my%hash_b=";
my $tmp_a=";
my $tmp_b=";
my $sig=0;
my $tmp=";
open(FILE1,$CurDir."\\".$File)or die"Can't open the file $File:";
open(RESULT1,'>'.$CurDir."\\".$ResultFile1)or die"Can't create the file $ResultFile1";
open(RESULT2,'>'.$CurDir."\\".$ResultFile2)or die"Can't create the file $ResultFile1";
print"Fasta File is Loading......\n";
while(my $name=<FILE1>){NEXT: chomp($name);if($name=~/^>/){my $seq=";
while($tmp=<FILE1>){if($tmp=~/^>){$hash_a{$name}=$seq;
$name=$tmp;
$all++;
goto NEXT;
}else{chomp($tmp);
$seq.=$tmp;
}}$hash_a{$name}=$seq;
$all++;}}%hash_b=%hash_a;foreach $trnp_a(keys%hash_a){$sig=0;print"$num/$all--$tmp a\n";$num++;my $result=";foreach $tmp_b(keys%hash_b){if($hash_a{$tmp_a}eq$has_b{$tmp_b}){$sig++;
$result.=$tmp_b."‖";
delete$hash_b{$tmp_b};
}}if($sig>0){$result.="\n".$hash_a{$tmp_a};
printRESULT1"$result\n";}if($sig>1){print RESULT2"$result\n";}print"There are $sig items have the same sequence\n\n";}close RESULT2;close RESULT1;close FILE1;2.Filter_UpdataDatabase.pl數(shù)據(jù)庫更新模塊#!/usr/bin/perluse strict;use Cwd;#Get the current directorymy $CurDir=cwd();#Get the file want to filtratemy $Database=shift;my $File=shift;my $ResultFile1="Result1_".$File;my $ResultFile2="Result2_".$File;my $dbItem=0;my $num=0;my $all=0;my %hash_a=";my %hash_b=";my %hash_db=";my $tmp_a=";my $tmp_b=";my $tmp_db=";my $sig=0;my $tmp=";open(FILE1,$CurDir."\\".$Database)or die"Can't open the file $Database:";print"$Database:\tFasta Old Database is Loading......\n";while(my $name=<FILE1>){NEXT1:chomp($name);if($name=~/^>/){$dbItem++;
my $seq=";
while($tmp=<FILE1>){if($tmp=~/^>/){$hash_db{$name}=$seq;
chomp $tmp;
$name=$tmp;
goto NEXT1;
}else{chomp($tmp);
$seq.=$tmp;
}}$hash_db{$name}=$seq;}}close(FILE1);open(FILE1,$CurDir."\\".$File)or die"Can't open the file $File:";print"$File:\tFasta New Database is Loading......\n";while(my $name=<FILE1>){NEXT: chomp($name);if($name=~/^>/){$all++;
my $seq=";
while($tmp=<FILE1>){if($tmp=~/^>/){$hash_a{$name}=$seq;
chomp$tmp;
$name=$tmp;
goto NEXT;
}else{chomp($tmp);
$seq.=$tmp;
}}$hash_a{$name}=$seq;
$all++;}}close(FILE1);$num=0;foreach$tmp_db(keys%hash_db){print"$num/$dbItem--$tmp_db\n",if($num>0);$num++;foreach $tmp_a(keys%hash_a){if($hash_db{$tmp_db}eq $hash_a{$tmp_a}){delete $hash_a{$tmp_a};
}}}foreach $tmp_db(keys%hash_db){delete $hash_db{$tmp_db};}%hash_b=%hash_a;my $part=0;foreach $tmp_a(keys%hash_a){$part++;}$part--;open(RESULT1,'>'.$CurDir."\\".$ResultFile1)or die"Can't create the file $ResultFile1";open(RESULT2,'>'.$CurDir."\\".$ResultFile2)or die"Can't create the file $ResultFile1";$num=0;foreach $tmp_a(keys%hash_a){$sig=0;$num++;print"$num/$part/$all--$tmp_a\n";my$result=";foreach $tmp_b(keys%hash_b){if($hash_a{$tmp_a}eq $hash_b{$tmp_b}){$sig++;
$result.=$tmp b."‖";
delete $hash_b{$tmp_b};
}}if($sig>0){$result.="\n".$hash_a{$tmp_a};
print RESULT1"$result\n";}if($sig>1){print RESULT2"$result\n";}print"There are $sig items have the same sequence\n\n";}close RESULT2;close RESULT1;3.KeyWordsExtractCDS_Fasta.pl序列格式化模塊use warnings;use Cwd;my $CurDir=cwd(); #get the current directorymy @keyWords;# Set CDS lengthmy $min=1;my $max=100000;# SetKey words@keyWords=("");my $keyWordsNum=@keyWords;my $i=0;my $n=0;my $oneCds="";print"--------------Current Directory is $CurDir--------------\n";opendir(DIR,$CurDir)‖die"Can't open the dir $CurDir:$!\n";#open the current directoryopen(RESULT,'>'.$CurDir.'\CDS.txt');while(defined($file=readdir(DIR))){ #get one file in the current directory
if(($file=~/ExtractCDS/)‖($file=~/CDS/)‖($file=~/SearchResult/)){next;}open(FILE,$CurDir."\\$file")or next;
print"$file\t\tIS BEING EXTRACTED......\n";
while($temp=<FILE>){chomp($temp);
if($temp=~/>/){CDS:$n=0;
$temp=~/>([\w\.\|]+)\s/;
$protein_id=$1;
for(my$num=0;$num<$keyWordsNum;$num++){$temp=~/$keyWords[$num]/i $n++:next;
}if($keyWordsNum=$n){print"$file-----$protein_id\n";
$oneCds="";
while($temp=<FILE>){if($temp=~/>/){if((length($oneCds)>=$min)&&(length($oneCds)<=$max)){print RESULT"filename=\"$file\"\t"."protein_id=\"$protein_id\"\t"."translation=\"$oneCds\"\n"}goto CDS;
}else{chomp($temp);
$oneCds.=$temp;
}}
}}}}close RESULT;close DIR;4.SearchResult序列結(jié)構(gòu)域檢測和計算及保存模塊use strict;use Cwd;use LWP::UserAgent;use HTTP::Request;use HTTP::Response;use HTTP::Request::Common qw(POST);#my $standard1='<a href=\"/cgi-bin/getdesc name=Domain1\">Domain1';#my $standard2='<a href=\"/cgi-bin/getdesc\ name=Domain2\">Domain2';#my $standard3='<a href=\"/cgi-bin/getdesc\ name=Domain3\">Domain3';my $standard1='Domain1';my $standard2='Domain2';my $standard3='Domain3';my $CurDir=cwd(); #get the current directorymy $temp;my@CDS;my $num=1;open(FILE,$CurDir.'\CDS.txt')or die"Can't open the FILE CDS.txt";while($temp=<FILE>){chomp($temp);
my $feedback="";
open(FINISH,'>>'.$CurDir.'\Finish.txt');
open(ERROR,'>>'.$CurDir'\Error.txt');
open(Name,'>>'.$CurDir.'\Name.txt');
open(LOG,'>>'.$CurDir.'\Log.txt');@CDS=split ∧t/,$temp;print"------------------------------------------------------------\n";print"$num--$CDS
--$CDS[1]\tIS RUNNING......\n";$CDS[2]=~/translation="([A-Z]*)"/;my $seq_string=$1;#the Amino Acid sequencemy $query_string='search_mode=merge&cutoff_strategy=ga&protseq='.$seq_string;
my $url='http://pfam.wustl.edu/cgi-bin/hmmsearch';
my $ua=new LWP::UserAgent;$ua->timeout(150);
my $request=POST$url,[protseq=>$seq_string,search_mode=>'merge',cutoff strategy=>'ga'];
my $response=$ua->request($request);
if($response->is_success){$feedback=$response->content;
if($feedback=~/Warning:/){print LOG"$feedback\n";
print ERROR"$temp\n";
print"$num--$CDS
--$CDS[1]\tWEB SITE IS BUSY,PLEASE WAIT 300 SECONDS\n";
sleep 300;
}else{print LOG"$feedback\n";
print FINISH"$temp\n";
print"$mum--$CDS
--$CDS[1]\tIS FOUND IN THE WEB SITE\n";
}
}else{$feedback="";
print LOG"ERROR-----$temp\n";
print ERROR"$temp\n";
print"$num--$CDS
--$CDS[1]\tCAN'T BE FOUND IN THE WEB SITE OR INTERNET ISBUSY!\n";
}if(($feedback=~/name=Domain1/)&&($feedback=~/name=Domain2/)&&($feedback=~/name=Domain3/)){print Name"$temp\n";
print"$num--$CDS
--$CDS[1]\tMATCHED\n";
}else{print"$num--$CDS
--$CDS[1]\tNOT MATCHED\n";
}$num++;
close LOG;
close Name;
close ERROR;
close FINISH;}print"--------$CurDir Is Finished,the Result is saved in $CurDir/Name.txt--------\a";for(my $i=0;$i<10;$i++){print"\a";}close FILE;
5.SearchLog.pl包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊use strict;
use Cwd;
my $standard1='Domain1';
my $standard2='Domain2';
my $standard3='Domain3';
my $temp="";
my $tmp="";
my $CurDir=cwd(); #get the current directoryopen(FILE,$CurDir.'\Log.txt')or die"Can't open the FILE Log.txt";
open(Name,'>>'.$CurDir.'\Name.txt')or die"Can't open the FILE Name.txt";
my $feedback="";
my $sequence="";
while($temp=<FILE>){chomp($temp);
if(($temp=~/<html>/)‖($temp=~/<HTML>/)){while(($temp!~/<∨html>/)&&($temp!~/<∨HTML>/)){$feedback.=$temp;
$temp=<FILE>;
chomp($temp);
}$feedback=~/input type="hidden"name="query_seq"value="([A-Z]*)">/;
$sequence=$1;
#print"------$sequence\n";
if(($feedback=~/name=Domain1/)&&($feedback=~/name=Domain2/)&&($feedback=~/name=Domain3/)){open(PROTEIN,$CurDir.'\CDS.txt')or die"Can't open the FILE CDS.txt";
$tmp=<PROTEIN>;
chomp($tmp);
while(($tmp!~∧Q$sequence/)&&(!eof(PROTEIN))){$tmp=<PROTEIN>;
chomp($tmp);
}if($tmp=~∧Q$sequence/){print Name"$tmp\n";
}close PROTEIN;
}$feedback="";
}}close Name;
print"--------$CurDir Is Finished,the Result is saved in $CurDir/Name.txt--------\a";
for(my $i=0;$i<10;$i++){print"\a";
}close FILE;
本發(fā)明構(gòu)建了一種新的完善的全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),與現(xiàn)有技術(shù)相比具有以下優(yōu)點和效果1、檢測結(jié)果高通量且準(zhǔn)確;2、預(yù)測速度快,對于高等模式生物的大型基因組數(shù)據(jù),得到預(yù)測結(jié)果也僅需計算1-3分鐘時間,加上關(guān)鍵詞設(shè)置的時間,共僅需不到10分鐘;3、操作簡便,不需要具備任何特殊計算機(jī)知識。
4、所有程序均為文本格式,不需編譯,可直接用于任何操作系統(tǒng);5、在蛋白多結(jié)構(gòu)域檢測上更加方便準(zhǔn)確。
圖1為一種全基因組目標(biāo)基因家庭成員的自動化檢測系統(tǒng)方框示意圖。
具體實施例方式
下面結(jié)合附圖1和具體實施例,進(jìn)一步闡述本發(fā)明。應(yīng)當(dāng)理解,這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明要求保護(hù)的范圍。
實施例1根據(jù)附圖1對該系統(tǒng)的具體應(yīng)用步驟如下1、利用模塊a,下載待計算物種的全基因組數(shù)據(jù)(或某條染色體上的數(shù)據(jù),或?qū)嶒炈璧奶囟〝?shù)據(jù))。
2、利用模塊b,去掉下載序列中名字不同,序列卻相同的冗余序列。
3、利用模塊c,提取模塊b處理完后的序列,并格式化為所需格式,以待下一步檢測和計算。
4、利用模塊d,將模塊c格式化后的序列逐個自動提交給網(wǎng)絡(luò)上的HMM服務(wù)器進(jìn)行檢測和計算,并將所有的序列信息和對應(yīng)的結(jié)構(gòu)域信息保存為一新的文件。該模塊將需要大量耗時計算才能得到的所有序列信息和對應(yīng)的結(jié)構(gòu)域信息保存了下來,以后的預(yù)測無需再重復(fù)計算,大大縮短了將來檢測計算的時間。
5、以后若需搜索該物種含有特定某些結(jié)構(gòu)域的蛋白,無需上述步驟的重復(fù)檢測和計算,只須利用模塊e,設(shè)定好目標(biāo)序列應(yīng)該含有的結(jié)構(gòu)域名稱,可以是含有一個或者多個結(jié)構(gòu)域,以及不同類序列的家族名稱,該模塊調(diào)用模塊d的檢測和計算結(jié)果文件,進(jìn)行全自動搜索,自動將得到的結(jié)果按先前設(shè)定好的家族名稱分別保存。
6、如需更新數(shù)據(jù)庫,先用模塊a下載新數(shù)據(jù)庫后,利用模塊f,將新的數(shù)據(jù)庫與老數(shù)據(jù)庫做比較,去除老數(shù)據(jù)庫已有的信息,并完成和模塊b類似的功能,去掉冗余序列后得到一全新的數(shù)據(jù)庫。然后重復(fù)3,4的步驟,將新數(shù)據(jù)庫中所有的序列信息和對應(yīng)的結(jié)構(gòu)域信息保存為一新的文件。該數(shù)據(jù)庫和原全基因組數(shù)據(jù)庫相比小的多,無需重復(fù)計算,大大縮短了再次預(yù)測所需時間。
7、將新老數(shù)據(jù)庫合并,利用第5步驟,得到更新數(shù)據(jù)庫后完整檢測結(jié)果。
實施例2建立模式生物全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng)。
為實現(xiàn)該快速預(yù)測系統(tǒng)的各步驟功能,需用到如下程序1.去冗余序列模塊b(Filter_fastest)利用了哈希函數(shù),去除數(shù)據(jù)庫中重復(fù)序列,數(shù)據(jù)庫要為Fasta格式。
執(zhí)行格式為perl_Filter fastest.pl Database.txt去掉重復(fù)序列,結(jié)果為Result1_Database.txt。
其中Database.txt就是你需要過濾的數(shù)據(jù)庫原文件。必須是Fasta格式。
程序執(zhí)行后將在當(dāng)前目錄生成Result1_Database.txt文件。里面的內(nèi)容即為過濾后的序列。
Result2_Database.txt為重復(fù)的序列(序列相同名字不同),序列相同名字相同的不被記錄(log重復(fù)導(dǎo)致)。
2.數(shù)據(jù)庫更新模塊f(Filter_UpdataDatabase)執(zhí)行格式為Filter_UpdataDatabase.pl OldDatabase NewDatabase。
其中OldDatabase是已經(jīng)用Filter_new.pl處理過的,NewDatabase則是沒有處理的原始數(shù)新?lián)?。運(yùn)行該程序后NewDatabase中會除去和OldDatabase中相同序列的項,并對去除了相同項以后的數(shù)據(jù)進(jìn)行類似Filter_fastest.pl的處理。
3.序列格式化模塊c(KeyWordsExtractCDS_Fasta)格式化Fasta格式的數(shù)據(jù)為searchResult所用。作為更高級功能,該程序可以設(shè)定格式化序列的長度范圍以及序列注釋中包含的關(guān)鍵詞。直接將該文件和原數(shù)據(jù)庫文件放在同一目錄運(yùn)行即可。
4.序列結(jié)構(gòu)域檢測和計算及保存模塊d(SearchResult)自動提交序列登陸Pfam網(wǎng)站(http//pfam.wustl.edu/hmmsearch.shtml)檢測和計算結(jié)構(gòu)域,自動保存所需結(jié)果和Log文件。設(shè)定好關(guān)鍵詞后直接運(yùn)行即可。
5.包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e(SearchLog)從上面的Log文件中找尋需要的特定結(jié)構(gòu)域蛋白序列及其名字。設(shè)定好關(guān)鍵詞(目標(biāo)蛋白家族成員所含一個或多個結(jié)構(gòu)域在Pfam數(shù)據(jù)庫中的名字)后直接運(yùn)行即可。
利用上述程序建立全基因組目標(biāo)基因家族成員的自動化快速預(yù)測搜索系統(tǒng)1.從NCBI網(wǎng)站(http//www.ncbi.nlm.nih.gov/)上下載各模式生物全基因組蛋白序列。
2.用去冗序列模塊b(Filter_fastest.pl)去冗余序列,減少檢測和計算量。
3.用序列格式化模塊c(KeyWordsExtractCDS_Fasta.pl)將序列格式化。
4.用序列結(jié)構(gòu)域檢測和計算及保存模塊d(SearchResult.pl)逐一提交序列登陸Pfam網(wǎng)站檢測或計算結(jié)構(gòu)域,自動保存所有序列的名稱、內(nèi)容及結(jié)構(gòu)域信息。
5.用數(shù)據(jù)庫更新模塊f(Filter_UpdataDatabase.pl)定期維護(hù)和更新數(shù)據(jù)庫。
6.以后預(yù)測只需設(shè)定好目標(biāo)序列所含結(jié)構(gòu)域的關(guān)鍵詞,直接運(yùn)行包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e(SearchLog.pl)便能快速得到所需結(jié)果。
實施例3水稻日本晴MADS-box蛋白家族成員的全基因組快速搜索預(yù)測MADS-box蛋白大多含有SRF-TF和K-box這兩個保守結(jié)構(gòu)域。于是包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e(SearchLog.pl)關(guān)鍵詞設(shè)定如下if(($feedback=~/name=SRF-TF/)&&(($feedback=~/name=K-box/)){print MADS-box"$temp\n";
print"$num--$CDS
--$CDS[1]\tMATCHED\n";
}將用序列格式化模塊c(KeyWordsExtractCDS_Fasta.pl)格式化后的水稻日本晴全基因組蛋白序列和之前包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e(SearchResult.pl)計算所得的結(jié)果放在同一目錄里,直接運(yùn)行該程序,1分鐘后得到所需結(jié)果。
權(quán)利要求
1.一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),該系統(tǒng)包含如下模塊(1)數(shù)據(jù)下載模塊a,下載和收集Fasta格式的全基因組序列;(2)去冗余序列模塊b,將得到的數(shù)據(jù)過濾掉冗余序列,即序列完全相同,序列相同名字不同的冗余序列被合并為一條序列,其命名包含上述冗余序列的名字;(3)序列格式化模塊c,將去掉冗余序列的數(shù)據(jù)庫格式化成下一步搜索所需的格式;(4)序列結(jié)構(gòu)域檢測和計算及保存模塊d,將格式化后的序列逐個自動提交給網(wǎng)絡(luò)上的HMM服務(wù)器進(jìn)行計算,并將序列信息和對應(yīng)的結(jié)構(gòu)域信息保存為一新的文件;(5)包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e,設(shè)定好目標(biāo)序列應(yīng)該含有的結(jié)構(gòu)域名稱,至少含有一個結(jié)構(gòu)域,以及不同類序列的家族名稱,該模塊e調(diào)用模塊d的檢測結(jié)果文件,進(jìn)行全自動搜索,自動將得到的結(jié)果按先前設(shè)定好的家族名稱分別保存;(6)數(shù)據(jù)庫更新模塊f,利用模塊a下載新數(shù)據(jù)庫后,將新的數(shù)據(jù)庫與老數(shù)據(jù)庫做比較,去除老數(shù)據(jù)庫已有的信息,并完成和模塊b類似的功能,去掉冗余序列后得到一全新的數(shù)據(jù)庫。
2.根據(jù)權(quán)利要求1所述的一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),其特征是模塊b利用了哈希函數(shù),將序列調(diào)入內(nèi)存中檢測。
3.根據(jù)權(quán)利要求1所述的一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),其特征是模塊d將序列信息和對應(yīng)的結(jié)構(gòu)域信息保存下來,以后的檢測無需再重復(fù)檢測。
4.根據(jù)權(quán)利要求1所述的一種全基因組目標(biāo)基因家族成員的自動化快速檢測系統(tǒng),其特征是模塊f利用了哈希函數(shù),將序列調(diào)入內(nèi)存中檢測,利用模塊f更新后的數(shù)據(jù)庫相對于全基因組數(shù)據(jù)庫,縮短了檢測時間。
全文摘要
本發(fā)明公開了一種全基因組目標(biāo)基因家庭成員的自動化快速檢測系統(tǒng),該系統(tǒng)包括(1)數(shù)據(jù)下載模塊a,下載和收集全基因組序列;(2)去冗余序列模塊b,將得到的數(shù)據(jù)過濾掉冗余序列;(3)序列格式化模塊c,將去掉冗余序列的數(shù)據(jù)庫格式化成搜索所需的格式;(4)序列結(jié)構(gòu)域檢測和計算及保存模塊d,將格式化后的序列自動提交給服務(wù)器進(jìn)行計算,并保存為一新的文件;(5)包含特定結(jié)構(gòu)域的目標(biāo)序列快速搜索模塊e,設(shè)定好目標(biāo)序列,進(jìn)行全自動搜索,自動將得到的結(jié)果保存;(6)數(shù)據(jù)庫更新模塊f,與老數(shù)據(jù)庫做比較,去掉冗余序列后得到一全新的數(shù)據(jù)庫。本發(fā)明檢測速度快,檢測準(zhǔn)確率高,操作簡便,在蛋白多結(jié)構(gòu)域檢測更加方便準(zhǔn)確。
文檔編號C12Q1/68GK1932040SQ20061012458
公開日2007年3月21日 申請日期2006年9月21日 優(yōu)先權(quán)日2006年9月21日
發(fā)明者張菁晶, 李陽生 申請人:武漢大學(xué)