#!/usr/bin/perl -w
unless(@ARGV==2){
die "Usage: perl $0 <input_fasta> <output> error:$!\n";
}
my($input, $output)=@ARGV;
open INPUT, $input;
open OUTPUT, ">$output";
#==================Store sequences in hash================================================
while(<INPUT>){
chomp;
if($_ =~ /^>..*/){
@keys = split(/ /, $_)
}
else{
$hash{$keys[0]} .= $_;
}
}
#====================calculate GC% and AT% in each sequences==============================
print OUTPUT "ID\tGC\tAT\tGC%\tAT%\n";
while(($k, $v) = each(%hash)){
$len = length($v);
$GC = $v =~ tr/gcGC/gcGC/;
$GC_percent = $GC/$len;
$AT = $v =~ tr/atuATU/atuATU/;
$AT_percent = $AT/$len;
print OUTPUT $k."\t".$GC."\t".$AT."\t".$GC_percent."\t".$AT_percent."\n";
$total .= $v;
}
#====================calculate GC% and AT% of total sequences==============================
$Total_len = length($total);
$Total_GC = $total =~ tr/gcGC/gcGC/;
$Total_GC_percent = $Total_GC/$Total_len;
$Total_AT = $total =~ tr/atuATU/atuATU/;
$Total_AT_percent = $Total_AT/$Total_len;
print OUTPUT "Total\t".$Total_GC."\t".$Total_AT."\t".$Total_GC_percent."\t".$Total_AT_percent."\n";
perl实现计算GC含量
最新推荐文章于 2021-06-17 12:34:14 发布