Perl 解析GenBank文件

Perl 解析GenBank文件,perl,Perl,我试图解析一个GenBank文件,以便获得登录号、定义、文件大小和DNA序列 有没有一种方法可以修改我的代码并使其更短,然后像在书中那样一次声明所有变量,并用一两段代码解析文件?如果您有权访问,您可能会找到如下解决方案 #!/usr/bin/perl use strict; use warnings; use Bio::SeqIO; my $in = Bio::SeqIO->new( -file => "input.txt",

我试图解析一个GenBank文件,以便获得登录号、定义、文件大小和DNA序列

有没有一种方法可以修改我的代码并使其更短,然后像在书中那样一次声明所有变量,并用一两段代码解析文件?

如果您有权访问,您可能会找到如下解决方案

#!/usr/bin/perl
use strict;
use warnings;
use Bio::SeqIO;

my $in  = Bio::SeqIO->new( -file   => "input.txt",
                           -format => 'GenBank');

while ( my $seq = $in->next_seq ) {
    my $acc = $seq->accession;
    my $length = $seq->length;
    my $definition = $seq->desc;
    my $type = $seq->molecule;
    my $organism = $seq->species->binomial;

    if ($type eq 'mRNA'              &&
        $organism =~ /homo sapiens/i &&
        $acc =~ /[A-Za-z]{2}_[0-9]{6,}/ )
    {
        print "$acc | $definition | $length\n";
        print $seq->seq, "\n";
        print "\n";
    }
}

我能够从一个示例GenBank文件(input.txt)中捕获5个变量。它应该简化您的代码。

我使用了严格和警告。什么部位凹痕严重?我不知道是什么原因导致这种错误没有显示(多行)记录数组还是(单行)数组?是的,我试图将其全部拆分为多行字符串我已经整理了你的Perl代码。我还根据您显示的数据运行了它。它不会产生你所说的输出,但会消失,因为你显示的数据中没有分子类型信息。如果你让我们不断地请求你提供一些零碎的信息,那么你不可能得到一个有用的答案。请阅读并返回我们可以运行的内容,以获得与您相同的结果。到目前为止,这应该是一个新的概念question@HåkonHægland:my$record=$gbfiles[$i]语句意味着
@gbfiles
包含GenBank记录。(使
@gbfiles
成为一个可怕的标识符!)而且因为
@gbfiles
是从
拆分(/\/\/\s*/s,$gbfile)
创建的,我怀疑这些记录是否是单行文本。我们真的需要更多的信息