Comment obtenir des fonctionnalités de gène au format FASTA NUCLEOTIDE de NCBI en utilisant Perl?

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

Question

Je suis capable de télécharger un fichier FASTA manuellement qui ressemble à:

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

En cliquant sur "Envoyer à" et sélectionnez "Fonctions GENE", FASTA NUCLEOTIDE est la seule option (qui va bien parce que c'est tout ce que je veux) sur Cette page .

avec un script comme celui-ci:

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

Je reçois un fichier qui ressemble à:

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

avec toute la séquence génomique regroupée. Comment obtenir des informations comme dans le premier fichier (téléchargé manuellement)?

J'ai regardé deux autres postes:

En plus cette section de livre de recettes EUtilities .

J'ai essayé de récupérer et d'enregistrer un fichier Genbank (puisqu'il semble avoir des séquences séparées pour chaque gène dans le fichier .gb que je reçois), mais quand je vais travailler avec elle à l'aide de Bio :: Seqio, je n'aurai que 1 grand Séquence.

Était-ce utile?

La solution

Avec ce numéro d'adhésion et ce type de retour, vous obtenez la séquence complète du génome.Si vous souhaitez obtenir les séquences de gènes individuelles, indiquez que vous souhaitez le fichier Genbank complet, puis analyser les gènes.Voici un exemple:

#!/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!
    } 
}

Cela écrira chaque gène sur le même fichier (si vous redirrez-le, il vous écrit maintenant sur stdout) mais j'ai indiqué où vous pourriez faire une petite modification pour les écrire pour séparer les fichiers.L'analyse de Genbank peut être un peu délicate parfois, il est donc toujours utile de lire les docs et en particulier, l'excellent Annotation de fonctionnalité HOWTO .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top