0

Nucleotide BLAST 搜索页面中

有没有办法以编程方式获取“选择搜索集”框中列出的数据库?也许是 XML 格式?(使用的编程语言无关紧要)

4

4 回答 4

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)
于 2010-09-14T18:34:04.750 回答
2

我不完全是您打算使用它的目的,但 NCBI 使用的完整数据库集位于他们的 FTP 站点: ftp: //ftp.ncbi.nih.gov/blast/db/ 如果您只感兴趣在数据库名称中,只需查看第一个 . -- 大多数数据库都足够大,可以进行分段。为了进行大量过滤(例如按生物体),他们使用别名文件,这些文件通过 GI 编号限制这些较大的数据库中的一个或多个。

于 2010-10-19T17:16:47.220 回答
0

需要一些 FTP API 以编程方式获取这些库。然而,这些文件相当大,即使在压缩时也是如此。可能您至少应该检查下载站点上可用的版本是否与您已经下载的缓存版本不同。Java FTP 库在http://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp.html进行了审查。

于 2012-07-05T14:24:59.320 回答
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      => 'mymail@foo.bar',
                                       -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 ($@) {
        die "Server error: $@.  Try again later" if $retry == 5;
        print STDERR "Server error, redo #$retry\n";
        $retry++ && redo RETRIEVE_SEQS;
    }
    #say "Retrieved $retstart";
    $retstart += $retmax;
}

close $out;
于 2012-09-13T02:02:56.750 回答