Как получить функции гена в формате нуклеотида Fasta из NCBI, используя Perl?

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

Вопрос

Я могу загрузить файл fasta вручную, который выглядит как:

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

Нажав «Отправить на» и выбора «Функции гена», нуклеотид Fasta - единственный вариант (который в порядке, потому что это все, что я хочу) на Эта страница .

со сценарием, как это:

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

Я получаю файл, который выглядит как:

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

со всей геномной последовательностью, смешанной вместе. Как получить информацию, как в первый (загруженный вручную) файл?

Я посмотрел на пару других постов:

, а также как В этом разделе «В разделе». A>.

Я попробовал выбирать и сохранить файл GenBank (поскольку, поскольку, кажется, имеет отдельные последовательности для каждого гена в файле .gb, который я получаю), но когда я иду работу с ним, используя Bio :: Seqio, я получу только 1 большой последовательность.

Это было полезно?

Решение

С этим номером вступления и тип возврата, вы получаете полную последовательность генома.Если вы хотите получить отдельные последовательности генов, укажите, что вы хотите заполнить полный файл GenBank, затем проанализируйте гены.Вот пример:

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

Это напишет каждый ген в тот же файл (если вы перенаправляете его, теперь он просто пишет на STDOUT), но я указывал, где вы можете сделать небольшое изменение, чтобы написать их в разделение файлов.Разборка GenBank иногда может быть немного сложным, поэтому всегда полезно читать документы и, в частности, превосходное Функция Annotation Howto .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top