Come posso ottenere funzionalità geniche nel formato di Nucleotide Facta da NCBI utilizzando Perl?

StackOverflow https://stackoverflow.com//questions/22073986

Domanda

Sono in grado di scaricare manualmente un file FASTA che sembra:

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

Facendo clic su "Invia a" e selezionando "Caratteristiche del gene", Fasta Nucleotide è l'unica opzione (che va bene perché è tutto ciò che voglio) su Questa pagina .

Con uno script come questo:

#!/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);
.

Ottengo un file che sembra:

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

con tutta la sequenza genomica grumellata insieme. Come posso ottenere informazioni come nel primo file (manualmente scaricato)?

Ho guardato un paio di altri post:

così come Questa sezione da EUTITIVILY Cookbook .

Ho provato a recuperare e salvare un file Genbank (dal momento che sembra avere sequenze separate per ogni gene nel file .gb Io ottenendo), ma quando vado a lavorare con esso usando Bio :: Seqio, otterrò solo 1 grande Sequenza.

È stato utile?

Soluzione

Con quel numero di adesione e il tipo di ritorno, si ottiene la sequenza completa del genoma.Se si desidera ottenere le sequenze geniche individuali, specificare che si desidera il file Genbank completo, analizza i geni.Ecco un esempio:

#!/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   => 'foo@bar.com',
                                       -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!
    } 
}
.

Questo scriverà ogni gene allo stesso file (se lo reindirizza, ora scrive a Stdout) ma ho indicato dove potresti fare un piccolo cambiamento per scriverli per separare i file.Parsing Genbank può essere un po 'complicato a volte, quindi è sempre utile leggere i documenti e in particolare, l'eccellente Feature Annotation Howto .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top