大家早上好,我有一些问题要解决……让我们看看你能不能回答我的问题。
我有一个带有核苷酸的 .txt(fasta 文件)。每行包含 124 个核苷酸,我需要读取 4 个核苷酸的密码子(是的,实际上一个密码子由 3 个核苷酸组成,但在这里我真的需要读取 4 x 4)。所以,因为 124 是 4 的倍数,所以我没有问题。
通过这个循环,我在 5 秒内创建了 5 个文件输出:
sub sequence() {
foreach $line (<SEQ>) {
next if (index($line, ">") != -1);
some actions........
但是,如果每行不是 4 的倍数呢?如果每行的长度为 125 个核苷酸怎么办?我已经测试了这种机制(加入所有行,忽略第一行):
sub sequence() { #Joining lines from the sequence.
$one = "";
while ($line = <SEQ>) {
next if (index($line, ">") != -1);
chomp $line;
$one .= $line; }
但是需要50秒!!!而不是我最初的 5 秒。
而不是$one
上面的代码,我也尝试了下面的代码,但它也需要大约 50 秒......
$contents = do { local $/; <SEQ> };
$contents =~ s/\A.*?\n//;
$contents =~ tr/\n//;
所以,如果有任何建议可以让我的脚本更快length($line) % 4 !=0
???
谢谢!