2010-09-14 30 views
0

Nucleotide BLAST search page獲得BLASTN數據庫編程

是有辦法獲得編程中的「選擇搜索設置」中列出的數據庫? 也許是XML格式? (沒關係使用的編程語言)

在此先感謝

+1

僅供參考:http://biostar.stackexchange.com/是另一個不錯的地方問這種與生物信息學有關的問題 – Pierre 2010-09-14 18:35:05

+0

謝謝!的確非常有用 – 2010-09-20 16:13:30

回答

3

我不認爲你可以得到這個信息扔NCBI Web服務。

使用XSLT

<?xml version='1.0' encoding="ISO-8859-1" ?> 
<xsl:stylesheet 
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform' 
    version='1.0' 
    > 

<xsl:output method="text"/> 
<xsl:template match="/"> 
<xsl:apply-templates select="//select[@id='DATABASE']"/> 
</xsl:template> 


<xsl:template match="select[@id='DATABASE']"> 
<xsl:for-each select=".//option"> 
<xsl:value-of select="@value"/> 
<xsl:text> </xsl:text> 
<xsl:value-of select="."/> 
<xsl:text> 
</xsl:text> 
</xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

和xsltproc的:

xsltproc --html stylesheet.xsl "http://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastn&BLAST_PROGRAMS=megaBlast&PAGE_TYPE=BlastSearch&SHOW_DEFAULTS=on&LINK_LOC=blasthome" 2> /dev/null 

返回;

dbindex/9606/ref_contig dbindex/9606/alt_contig_HuRef dbindex/9606/rna Human genomic plus transcript (Human G+T) 
dbindex/10090/alt_contig dbindex/10090/ref_contig dbindex/10090/rna  Mouse genomic plus transcript (Mouse G+T) 
nr  Nucleotide collection (nr/nt) 
refseq_rna  Reference mRNA sequences (refseq_rna) 
refseq_genomic Reference genomic sequences (refseq_genomic) 
chromosome  NCBI Genomes (chromosome) 
est  Expressed sequence tags (est) 
est_others  Non-human, non-mouse ESTs (est_others) 
gss  Genomic survey sequences (gss) 
htgs High throughput genomic sequences (HTGS) 
pat  Patent sequences(pat) 
pdb  Protein Data Bank (pdb) 
alu  Human ALU repeat elements (alu_repeats) 
dbsts Sequence tagged sites (dbsts) 
wgs  Whole-genome shotgun reads (wgs) 
env_nt Environmental samples (env_nt) 
2

我不完全,你打算用這個東西,而是一套完整的由NCBI使用的數據庫是在他們的FTP站點:ftp://ftp.ncbi.nih.gov/blast/db/ 如果你只在數據庫名稱感興趣,只是看在第一個位置之前。 - 大部分數據庫都足夠大,可以分割。 爲了做好一大堆過濾(例如生物體),他們使用別名文件,這些文件通過GI編號來限制這些較大的數據庫中的一個或多個。

0

你的問題對我來說還不清楚。但是,這裏是一個使用BioPerl的程序,它將從任何數據庫(在'db'下指定)和任何搜索項(在'term'下指定)獲取信息。然後這將在給定數據庫中保存一個文件,其中包含與您的搜索詞相關的所有NCBI序列。

########## http://www.bioperl.org/wiki/HOWTO:EUtilities_Cookbook ######### 

#!/usr/bin/perl -w 

BEGIN {push @INC,"path to BioPerl";} 
use Bio::DB::EUtilities; 
my $factory = Bio::DB::EUtilities->new(-eutil  => 'esearch', 
             -email  => '[email protected]', 
             -db   => 'nucleotide', 
             -term  => 'search terms here', 
             -usehistory => 'y'); 

my $count = $factory->get_count; 
# get history from queue 
my $hist = $factory->next_History || die 'No history data returned'; 
print "History returned\n"; 
# note db carries over from above 
$factory->set_parameters(-eutil => 'efetch', 
         -rettype => 'fasta', 
         -history => $hist); 

my $retry = 0; 
my ($retmax, $retstart) = (500,0); 

open (my $out, '>', 'db:protein_term-VP1_AND_Parvovirus-NOT_dependovirus,patent,partial.fa') || die "Can't open file:$!"; 

RETRIEVE_SEQS: 
while ($retstart < $count) { 
    $factory->set_parameters(-retmax => $retmax, 
          -retstart => $retstart); 
    eval{ 
     $factory->get_Response(-cb => sub {my ($data) = @_; print $out $data}); 
    }; 
    if ([email protected]) { 
     die "Server error: [email protected] Try again later" if $retry == 5; 
     print STDERR "Server error, redo #$retry\n"; 
     $retry++ && redo RETRIEVE_SEQS; 
    } 
    #say "Retrieved $retstart"; 
    $retstart += $retmax; 
} 

close $out;