Nucleotide BLASTの検索ページで
「Choose Search Set」ボックスにリストされているデータベースをプログラムで取得する方法はありますか? おそらくXML形式ですか?(使用するプログラミング言語は問いません)
Nucleotide BLASTの検索ページで
「Choose Search Set」ボックスにリストされているデータベースをプログラムで取得する方法はありますか? おそらくXML形式ですか?(使用するプログラミング言語は問いません)
この情報は、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)
私は完全にあなたがこれを使用しようとしているわけではありませんが、NCBI が使用するデータベースの完全なセットは、FTP サイトにあります : ftp://ftp.ncbi.nih.gov/blast/db/データベース名で、最初の . -- ほとんどのデータベースは、セグメント化するのに十分な大きさです。フィルタリングの適切なチャンクを (生物ごとなどで) 実行するために、これらの大きなデータベースの 1 つまたは複数を GI 番号で制限するエイリアス ファイルを使用します。
これらのライブラリをプログラムで取得するには、いくつかの FTP API が必要です。ただし、これらのファイルは、圧縮してもかなり大きくなります。おそらく、ダウンロード サイトで入手できるバージョンが、ダウンロード済みのキャッシュされたバージョンと同じでないかどうか、少なくとも確認する必要があります。Java FTP ライブラリはhttp://www.javaworld.com/javaworld/jw-04-2003/jw-0404-ftp.htmlでレビューされています。
あなたの質問は私にはわかりません。ただし、これは 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;