perl实现计算GC含量

#!/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";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值