perl实现根据序列ID从提取fasta文件序列

usage: perl thisScript.pl query.fa gene.lst outfile
--------------------------------------------------------------------
query.fa 基因组或其他需要从中提取的fasta格式文件
gene.lst 需要提取的基因或染色体名字,有无>均可
outfile 输出文件

#!/bin/perl
#unless(@ARGV==3){
#	die "usage: $0 <input.fa> <lst> <output.fas>\n";
#}
$file=shift;
$lst=shift;
$out=shift;

open FILE,$file;
open LST,$lst;
open OUT,">".$out;

while(<FILE>){
	chomp;
	my $line=$_;
	if($line=~/^>/){
		my @line=split /[ |\t]/,$line;
		our $name=$line[0];
		#print "$name\n";
	}
	else{
		$seq_hash{$name}.=$line;
	}
}
while(<LST>){
	chomp;
	my $line=$_;
	if($line=~/^>/){
		$ID=$line;
		if(exists $seq_hash{$ID}){
			print OUT "$ID\n$seq_hash{$ID}\n";
		}
		else{
			print OUT "error1: ".$ID." no found.\n";
		}
	}
	else{
		my $ID=">".$line;
		if(exists $seq_hash{$ID}){
			print OUT "$ID\n$seq_hash{$ID}\n";
		}
		else{
			print OUT "error2: ".$ID." no found.\n";
		}
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值