F.strip.txt 和 R.strip.txt的数据都是一样格式的:
代码如下,哪位帮忙解释下什么意思,逻辑是怎样的:
#!/usr/bin/perl
my $name=$ARGV[0];
my $dir=$ARGV[1];
my $cmd1="cat " . $dir . "/" . $name . ".F.strip.txt";
my $cmd2="cat " . $dir . "/" . $name . ".R.strip.txt";
my @qual_f=`$cmd1`;
my @qual_r=`$cmd2`;
my %f,%r;
# my $count_f=`cat quality/*F.strip.txt | wc -l`;
# $count_r=`cat quality/*R.strip.txt | wc -l`;
foreach(@qual_f){
chomp;
my ($pos,$avg,$mid,@others)=split;
eval(${f}{$pos}{sum}+=$mid);
${f}{$pos}{count}+=1;
}
foreach(@qual_r){
chomp;
my ($pos,$avg,$mid,@others)=split;
eval(${r}{$pos}{sum}+=$mid);
${r}{$pos}{count}+=1;
}
my $f_trim;
my $r_trim;
# print "processing R1...\n";
foreach my$k(sort {$b <=> $a} keys %f){
my$value=${f}{$k}{sum}/${f}{$k}{count};
# print $k,":",$value,"\n";
$f_trim=(split(/-/,$k))[1];
if($value > 28){last;}
}
# print "processing R2...\n";
foreach my$k(sort {$b <=> $a} keys %r){
my$value=${r}{$k}{sum}/${r}{$k}{count};
# print $k,":",$value,"\n";
$r_trim=(split(/-/,$k))[1];
if($value > 28){last;}
}
$f_trim +=5;
$r_trim +=5;
$f_trim=260 if $f_trim < 260;
$r_trim=240 if $r_trim < 235;
print "$name $f_trim $r_trim\n";