0

1 つの生物に関連付けられているすべての fasta ファイルを ncbi からダウンロードしようとしています。

wget -r -l3 -A "*.fna.gz" ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/Microcystis_aeruginosa/3 番目のレベルから .fna.gz で終わるすべてのファイルを取得しようとしましたが、次の出力ですべてが拒否されます。

「ftp.ncbi.nlm.nih.gov/genomes/refseq/bacteria/Microcystis_aeruginosa/latest_assembly_versions/.listing」を削除。「GCF_000010625.1_ASM1062v1」を拒否します。「GCF_000307995.1_ASM30799v2」を拒否します。「GCF_000312165.1_ASM31216v1」を拒否します。「GCF_000312185.1_ASM31218v1」を拒否します。「GCF_000312205.1_ASM31220v1」を拒否します。「GCF_000312225.1_ASM31222v1」を拒否します。「GCF_000312245.1_ASM31224v1」を拒否します。「GCF_000312265.1_ASM31226v1」を拒否します。「GCF_000312285.1_ASM31228v1」を拒否します。「GCF_000312725.1_ASM31272v1」を拒否します。「GCF_000330925.1_MicAerT1.0」を拒否します。「GCF_000332585.1_MicAerD1.0」を拒否します。「GCF_000412595.1_spc777-v1」を拒否します。「GCF_000599945.1_Mic70051.0」を拒否します。「GCF_000787675.1_ASM78767v1」を却下。「GCF_000981785.1_ASM98178v1」を拒否します。

これらのディレクトリを拒否する理由について何か考えはありますか? ご協力いただきありがとうございます。

4

2 に答える 2

0

ここからこのタスクの達成に近づく perl スクリプトを見つけました。残念ながら、このスクリプトは実際の配列ではなく、ゲノムの ID を返すだけです。

たとえば、私の出力の頭は次のとおりです。

gi|425458296|ref|NZ_CAIN00000000.1|NZ_CAIN01000000 Microcystis aeruginosa PCC 9808、全ゲノム ショットガン シーケンス プロジェクト

gi|425448636|ref|NZ_CAIK00000000.1|NZ_CAIK01000000 Microcystis aeruginosa PCC 7941、全ゲノム ショットガン シーケンス プロジェクト

何が起こっているか知っている perl ユーザーはいますか?

use strict;
use LWP::Simple;
my ($name, $outname, $url, $xml, $out, $count, $query_key, $webenv, $ids);
my @genomeId;
my $base = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/';
my $limit = 'wgs[prop]+AND+srcdb+refseq[prop])';
my @species = ('Microcystis aeruginosa');

foreach my $s (@species) {
  undef @genomeId;
  $query_key = $webenv = '';
  $s =~ s/ /+/g;

  # ESearch
  $url = $base . "esearch.fcgi?db=genome&term=$s";
  $xml = get($url);
  $count = $1 if ($xml =~ /<Count>(\d+)<\/Count>/);

  if ($count > 30) {
    $url = $base . "esearch.fcgi?db=genome&term=$s&retmax=$count";
    $xml = get($url);
  }

  while ($xml =~ /<Id>(\d+?)<\/Id>/gs) {
    push(@genomeId, $1);
  }

  $ids = join(',', @genomeId);

  # ELink
  $url = $base . "elink.fcgidbfrom=genome&db=nuccore&cmd=neighbor_history&id=$ids&term=$limit";
  $xml = get($url);
  $query_key = $1 if ($xml =~ /<QueryKey>(\d+)<\/QueryKey>/);
  $webenv = $1 if ($xml =~ /<WebEnv>(\S+)<\/WebEnv>/);

  # EFetch
  $url = $base . "efetch.fcgidb=nuccore&query_key=$query_key&WebEnv=$webenv&rettype=fasta&retmode=text";
  $out = get($url);

  open (OUT, ">$s.fna");
  close OUT; 
} 
于 2016-02-24T19:58:17.963 に答える