来个小程序perl如下序列:E078 10 CTACATCCAACA 21 100E034 10 ATCCACATCAA

来个小程序perl
如下序列:
E078 10 CTACATCCAACA 21 100
E034 10 ATCCACATCAAGGATT 25 100
E012 59 CCAAGTTTT 67 100
E012 62 CAGAATCGGAGGAGGAAA 79 100
E056 39 AAGGTTTACAAGGTTCACCTC 59 100
E012 36 GCTGCCAACACCAA 49 100
E012 24 GACCAAATCGTCAAGATGGCCAA 46 100
E034 21 AACAAGATC 29 100
E012 4 CCGAGAAGCGCGGAAAGCGTCA 25 100
E034 57 AACCTTCCAAACGTC 71 100
目的:1 把有E012开头的行都提出来.2算出E012开头的序列,占总序列的百分比.
结果如下:
E012 59 CCAAGTTTT 67 100
E012 62 CAGAATCGGAGGAGGAAA 79 100
E012 36 GCTGCCAACACCAA 49 100
E012 24 GACCAAATCGTCAAGATGGCCAA 46 100
E012 4 CCGAGAAGCGCGGAAAGCGTCA 25 100
占据率:0.5(E012有5个,E开头行有10个,故5/10=0.5)
o好人 1年前 已收到1个回答 举报

同意说不 春芽

共回答了20个问题采纳率:85% 举报

my $E_num = 0;
my $E_total = 0;
my $res = 0;
while ()
{
if ($_ =~m/^E012.*?/g)
{
$E_num = $E_num + 1;
print $_;
}
if ($_ = ~m/^E.*?/g)
{
$E_total = $E_total +1;
}
}
$res = $E_num/$E_total;
print "占据率:$res(E012有 $E_num个,E开头行有$E_total个,故$res)";
以上假设命令行文件读取,可以参照自行修改

1年前 追问

2

o好人 举报

谢谢你,新年快乐。。 #!usr/bin/perl -W open IN,"E文件.txt"; open OUT,">E结果文件.txt"; my $E_num = 0; my $E_total = 0; my $res = 0; while (<>){ if ($_ =~m/^E012.*?/g) { $E_num = $E_num + 1; print OUT $_; } if ($_ = ~m/^E.*?/g) { $E_total = $E_total +1; } } $res = $E_num/$E_total; print OUT "占据率:$res";

举报 同意说不

这个有点小错误:修改下吧! 1.open OUT,">E结果文件.txt";这句改成 open OUT,">>E结果文件.txt"; 2.while (<>){ 这句改成 while (){ 最后关闭文件: close(IN); close(OUT);
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 1.192 s. - webmaster@yulucn.com