2014-02-27 16 views
5

ich in der Lage bin eine FASTA-Datei zum Herunterladen sieht manuell dass wie:Wie bekomme ich Genfunktionen im FASTA-Nukleotidformat von NCBI mit Perl?

>lcl|CR543861.1_gene_1... 
ATGCTTTGGACA... 
>lcl|CR543861.1_gene_2... 
GTGCGACTAAAA... 

indem Sie auf „Senden an“ und „Gene Features“, FASTA Nucleotid ist die einzige Option (was in Ordnung ist die Auswahl, weil das alles, was ich will) auf this page.

Mit einem Skript wie folgt:

#!/usr/bin/env perl 
use strict; 
use warnings; 
use Bio::DB::EUtilities; 

my $factory = Bio::DB::EUtilities->new(-eutil => 'efetch', 
             -db  => 'nucleotide', 
             -id  => 'CR543861', 
             -rettype => 'fasta'); 
my $file = 'CR543861.fasta'; 
$factory->get_Response(-file => $file); 

ich eine Datei, die wie folgt aussieht:

>gi|49529273|emb|CR543861.1| Acinetobacter sp. ADP1 complete genome 
GATATTTTATCCACA... 

mit der ganzen genomischen Sequenz zusammen in einem Topf geworfen. Wie bekomme ich Informationen wie in der ersten (manuell heruntergeladenen) Datei?

ich bei ein paar anderen Beiträgen sah:

Neben this section from EUtilities Cookbook.

Ich habe versucht, eine GenBank-Datei zu holen und zu speichern (da es getrennte Sequenzen für jedes Gen in der .gb-Datei zu haben scheint), aber wenn ich mit Bio :: SeqIO arbeite, bekomme ich nur 1 große Sequenz.

+0

Probieren Sie Bio :: SeqIO mit der Fasta-Datei. Verwenden Sie dann anstelle der Genbank Fasta als Format. 'Bio :: SeqIO-> neu (-file => $ datei, -format => 'fasta');' Ich habe derzeit keine Bio-Perl installiert, aber ich habe diese Methode in der Vergangenheit erfolgreich angewendet. – Nate

+1

Was ich versuche ist, eine Fasta-Datei, wie die erste, aus NCBI mit einem Skript zu ziehen, anstatt manuell zu laden (und so habe ich die erste). Die zweite Datei ist immer noch eine Fasta-Datei, aber das gesamte Genom ist in einer Sequenz. Wenn ich 'SeqIO :: next_seq()' in einer Schleife verwende, erhält es nur eine Sequenz. – user2509933

Antwort

3

Mit dieser Zugriffsnummer und dem Rückgabetyp erhalten Sie die vollständige Genomsequenz. Wenn Sie die einzelnen Gensequenzen erhalten möchten, geben Sie an, dass Sie die vollständige Genbankdatei haben möchten, und analysieren Sie dann die Gene. Hier ein Beispiel:

#!/usr/bin/env perl 

use 5.010; 
use strict; 
use warnings; 
use Bio::SeqIO; 
use Bio::DB::EUtilities; 


my $factory = Bio::DB::EUtilities->new(-eutil => 'efetch', 
             -email => '[email protected]', 
             -db  => 'nucleotide', 
             -id  => 'CR543861', 
             -rettype => 'gb'); 
my $file = 'CR543861.gb'; 
$factory->get_Response(-file => $file); 

my @gene_features = grep { $_->primary_tag eq 'gene' } 
        Bio::SeqIO->new(-file => $file)->next_seq->get_SeqFeatures; 

for my $feat_object (@gene_features) { 
    for my $tag ($feat_object->get_all_tags) { 
     # open a filehandle here for writing each to a separate file 
     say ">",$feat_object->get_tag_values($tag); 
     say $feat_object->spliced_seq->seq; 
     # close it! 
    } 
} 

Dies wird jedes Gen in die gleiche Datei schreiben (wenn Sie es umleiten, jetzt schreibt sie gerade an STDOUT), aber ich angezeigt, wo Sie eine kleine Änderung, sie schreiben machen könnten Dateien trennen . Parsing Genbank kann manchmal ein bisschen schwierig sein, so ist es immer hilfreich, die Dokumente und insbesondere die ausgezeichnete Feature Annotation HOWTO zu lesen.