暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Perl实例--统计GC占总长度的比例

EasyPerl 2020-07-25
230

我们在处理数据中, 有时候需要统计一些数据的次数 ,以及占总长度的比例。 一般情况下, 需要计数的情景, 我们往往第一时间想到的应该就是哈希, 哈希是最适合来进行频率统计的方法了。 


我们来看下面的例子:

我们有一个文件,data.txt,它里面有以下内容

>abc

TGCGACGAGGGCA


我们需要统计GC的次数以及占第二行数据的比例。


我们来看怎么进行处理:


首先我们读取文件

my $file = 'data.txt';

open my $fh, '<', $file or die "failed to open file:$file\n";


定义2个变量用来存储gc的个数,以及总长度

my $count = 0;

my $total = 0;

逐行读入数据

while(<$fh>){

        过滤掉>开头的行

next if /^>/;

chomp;

my @vals = split '';

for my $vals(@vals){

$total++;

                 这边如果只是gc, 使用eq效率会比正则高, 一般只有少数选项的时候, 我们可以考虑直接使用比较, 而不是使用正则

$count++ if $vals eq 'G' || $vals eq 'C';

}

}

定义一个变量, 用来计算并存储gc所占的比例, 我们这边使用的是百分比, 因此需要乘以100, 如果对小数位有特定要求, 则后续可以自己format一下就可以了

my $ratio = $count * 100 / $total;


print "GC number: $count, total: $total, ratio: $ratio % \n";


这样就可以了,是不是很简单。

文章转载自EasyPerl,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论