【问题标题】:BioPerl: extract CDS errorBioPerl:提取 CDS 错误
【发布时间】:2014-10-23 08:44:28
【问题描述】:

我正在尝试使用 BioPerl 从 GenBank 文件中提取 CDS 和相应的氨基酸序列。脚本如下所示:

while (my $seq_object = $in->next_seq){
for my $feat_object ($seq_object->get_SeqFeatures) {
    if ($feat_object ->primary_tag eq "CDS") {
    #   warn("all tags are ", join ("," , $feat_object->get_all_tags),"\n");        
        if ($feat_object->has_tag ("protein_id")){
            my ($protein_id) = $feat_object->get_tag_values('protein_id');
            my ($pseq) = $feat_object->get_tag_values('translation') ;
            my ($pepseq) = Bio::Seq->new(-id => $protein_id , -description => $seq_object -> accession_number,
                -seq => $pseq);
            $out->write_seq($pepseq);   
        }
    }
}

}

我收到如下错误消息: 文件句柄 GEN1 仅为 /Library/Perl/5.12/Bio/Root/IO.pm 第 533 行第 148 行的输入打开。

请帮我解决这个问题。

提前致谢

【问题讨论】:

  • 您没有向我们展示整个脚本。你是如何创建$out 的?那是Bio::SeqIO 对象吗?
  • 是的,$out 文件是一个 Bio::SeqIO 对象,由以下方法创建: my $out = Bio::SeqIO->new( -file => "Oct_test.fasta", -格式 => 'fasta');

标签: bioperl genbank


【解决方案1】:

我会将其添加为答案,因为它可能是错误的根源。在为输出创建Bio::SeqIO 对象时,您必须遵循open 的普通Perl 规则并指定文件用于输出。因此,请尝试以下操作:

my $out = Bio::SeqIO->new( -file => ">Oct_test.fasta", -format => 'fasta');

这是一件很容易忘记的事情,错误消息可能更具描述性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多