¿Cómo puedo obtener gen características en FASTA nucleótidos formato de NCBI con Perl?
Pregunta
Yo soy capaz de descargar un archivo FASTA manualmente que parece:
>lcl|CR543861.1_gene_1...
ATGCTTTGGACA...
>lcl|CR543861.1_gene_2...
GTGCGACTAAAA...
al hacer clic en "Enviar a" y seleccionando "Gen de la Cuenta", FASTA Nucleótidos es la única opción (lo cual está bien porque eso es todo lo que quiero) en esta página.
Con un script como este:
#!/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);
Tengo un archivo que se parece a:
>gi|49529273|emb|CR543861.1| Acinetobacter sp. ADP1 complete genome
GATATTTTATCCACA...
con toda la secuencia genómica que se agrupan. ¿Cómo puedo obtener información como en la primera (descargado manualmente) archivo?
Me miró un par de otros posts:
- cómo descargar secuencia completa del genoma en biopython entrez.esearch (esta respuesta pareció pertinente)
- ¿Cómo puedo descargar todo el GenBank archivo con sólo un número de la accesión?
Así como esta sección de EUtilities libro de cocina.
He intentado buscar y guardar un GenBank archivo (ya que parece haber secuencias separadas para cada gen en el .gb de archivos puedo conseguir), pero cuando voy a trabajar con él usando el Bio::SeqIO, voy a tener sólo 1 secuencia de gran tamaño.
Solución
Con ese número de adhesión y tipo de devolución, está obteniendo la secuencia completa del genoma.Si desea obtener las secuencias de genes individuales, especifique que desea el archivo GenBank completo, analice los genes.Aquí hay un ejemplo:
#!/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!
}
}
Esto escribirá cada gen al mismo archivo (si lo redirige, ahora solo escribe en STDOUT), pero indicé dónde podría hacer un pequeño cambio para escribirlos para separar archivos.El análisis de Genbank puede ser un poco complicado a veces, por lo que siempre es útil leer los documentos y, en particular, el excelente Anotación de características HowTo .