【发布时间】:2013-04-03 19:38:33
【问题描述】:
我正在解析一个大型 EMBL 文件 (>1G) 并将其转换为 gff 文件。它有一些条目与传统的 embl 格式不匹配,因此导致 bioperl 模块抛出异常。我的问题是因为有错误的条目只是总序列的一小部分,我想继续脚本,暂时忽略异常。但是 perl 脚本总是被异常停止。
我在 linux 操作系统下使用 perl 版本 5.8.8
我的 perl 脚本
use strict;
use Bio::SeqIO;
use Bio::Tools::GFF;
use warnings;
use Try::Tiny;
open (E ,">","emblError.txt");
if (@ARGV != 1) { die "USAGE: embl2gff.pl > outputfile.\n"; }
my $in = Bio::SeqIO->new(-file=>$ARGV[0],-format=>'EMBL');
eval {
while (my $seq = $in->next_seq) {
for my $feat ($seq->top_SeqFeatures) {
my $gffio = Bio::Tools::GFF->new(-gff_version => 3);
print $feat->gff_string($gffio)."\n";
}
}
};
if ($@) {
warn "Oh no! [$@]\n";
}
我得到的错误
Name "main::E" used only once: possible typo at embl2GFF3.pl line 7.
--------------------- WARNING ---------------------
MSG: exception while parsing location line [join(9174..9343,14214..14303)complement(9268..9363),complement(9140..9198),complement(8965..9034),complement(8751..8884),complement(8419..8535),complement(8232..8337),complement(7952..8149),complement(7256..7332),complement(7051..7175),complement(6769..6877),complement(6601..6659),complement(4690..6530))] in reading EMBL/GenBank/SwissProt, ignoring feature mRNA (seqid=XcouVSXmac70forkSpecies.Scaffold1050.final):
------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Bad operator 1: had multiple locations 2, should be SplitLocationI
STACK: Error::throw
STACK: Bio::Root::Root::throw /usr/lib/perl5/site_perl/5.8.8/Bio/Root/Root.pm:472
STACK: Bio::Factory::FTLocationFactory::from_string /usr/lib/perl5/site_perl/5.8.8/Bio/Factory/FTLocationFactory.pm:210
STACK: Bio::Factory::FTLocationFactory::from_string /usr/lib/perl5/site_perl/5.8.8/Bio/Factory/FTLocationFactory.pm:204
STACK: Bio::SeqIO::FTHelper::_generic_seqfeature /usr/lib/perl5/site_perl/5.8.8/Bio/SeqIO/FTHelper.pm:133
STACK: Bio::SeqIO::embl::next_seq /usr/lib/perl5/site_perl/5.8.8/Bio/SeqIO/embl.pm:403
STACK: embl2GFF3.pl:14
-----------------------------------------------------------
---------------------------------------------------
--------------------- WARNING ---------------------
MSG: exception while parsing location line [join(14219..14303,14368..14513)complement(9140..9198),complement(8965..9034),complement(8751..8884),complement(8419..8535),complement(8232..8337),complement(7952..8149),complement(7256..7332),complement(7051..7175),complement(6769..6877),complement(6601..6659),complement(6461..6530))] in reading EMBL/GenBank/SwissProt, ignoring feature CDS (seqid=XcouVSXmac70forkSpecies.Scaffold1050.final):
------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Bad operator 1: had multiple locations 2, should be SplitLocationI
STACK: Error::throw
STACK: Bio::Root::Root::throw /usr/lib/perl5/site_perl/5.8.8/Bio/Root/Root.pm:472
STACK: Bio::Factory::FTLocationFactory::from_string /usr/lib/perl5/site_perl/5.8.8/Bio/Factory/FTLocationFactory.pm:210
STACK: Bio::Factory::FTLocationFactory::from_string /usr/lib/perl5/site_perl/5.8.8/Bio/Factory/FTLocationFactory.pm:204
STACK: Bio::SeqIO::FTHelper::_generic_seqfeature /usr/lib/perl5/site_perl/5.8.8/Bio/SeqIO/FTHelper.pm:133
STACK: Bio::SeqIO::embl::next_seq /usr/lib/perl5/site_perl/5.8.8/Bio/SeqIO/embl.pm:403
STACK: embl2GFF3.pl:14
-----------------------------------------------------------
---------------------------------------------------
Oh no! [Can't call method "isa" on an undefined value at /usr/lib/perl5/site_perl/5.8.8/Bio/Seq.pm line 1142, <GEN0> line 538764.
]
注意:我没有两次发布异常,它只是以这种方式发生,似乎只有一个异常被捕获。
这是导致问题的 embl 文件块。 mRNA 进入导致第一个异常,CDS 导致第二个异常。
FT mRNA join(9174..9343,14214..14303)
FT complement(9268..9363),complement(9140..9198),
FT complement(8965..9034),complement(8751..8884),
FT complement(8419..8535),complement(8232..8337),
FT complement(7952..8149),complement(7256..7332),
FT complement(7051..7175),complement(6769..6877),
FT complement(6601..6659),complement(4690..6530))
FT /gene="ENSXMAG00000014948"
FT /note="transcript_id=ENSXMAT00000015030"
FT CDS join(14219..14303,14368..14513)
FT complement(9140..9198),complement(8965..9034),
FT complement(8751..8884),complement(8419..8535),
FT complement(8232..8337),complement(7952..8149),
FT complement(7256..7332),complement(7051..7175),
FT complement(6769..6877),complement(6601..6659),
FT complement(6461..6530))
FT /gene="ENSXMAG00000014948"
FT /protein_id="ENSXMAP00000015010"
FT /note="transcript_id=ENSXMAT00000015030"
FT /db_xref="HGNC_transcript_name:ENO3-201"
【问题讨论】:
-
您需要向我们展示代码。
-
对不起,我打错了,脚本和例外都列出来了
标签: perl exception eval bioperl