【发布时间】:2017-06-14 09:41:21
【问题描述】:
我想编写一个以 FASTA 文件作为参数并打印出序列(不带标题)的子例程。 子程序应检查序列是否包含除 DNA 碱基(A、T、G、C)以外的任何其他字母。
这是我的代码:
scalar_sequence ("sequence.fa");
sub scalar_sequence {
my $file = $_[0];
my $sequence;
open (READ, $file) || die "Cannot open $file: $!.\n";
while (<READ>){
if (/^>/){
next;
}
if (/^[ATCG]/){
$sequence .= $_;
} else {
die "invalid sequence\n";
}
}
print $sequence, "\n";
}
当我运行此代码时,我得到“无效序列”作为输出。 当我将“else”省略时,即使序列包含另一个字母,它也会打印出序列。
有什么问题?
提前致谢!
【问题讨论】:
-
^应该在[]中:if (/[^ATCG]/) -
好的,现在它打印序列而不是错误消息,但是:即使它包含无效字母,它也会打印序列
-
也不起作用:/
-
请注意:bioperl 的
seqIO比在本机 perl 中读取 fasta 文件快约 10 倍。如果您正在处理高等生物(大基因组),这可能是一个巨大的福音。
标签: regex perl bioinformatics dna-sequence bioperl