perl如何提取指定基因的fasta序列

发布时间:2022-02-23 11:58:08 作者:小新
来源:亿速云 阅读:357

小编给大家分享一下perl如何提取指定基因的fasta序列,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

简便好用的序列提取的perl脚本

这里,介绍一个非常简便好用的序列提取的perl脚本,用法非常简单。

用法如下:

perl /share/work/huangls/piplines/01.script/get_fa_by_id.pl <id><fa><OUT>

例如:

perl /share/work/huangls/piplines/01.script/get_fa_by_id.pl  id.txt  input.fasta  out.fa

其中 id.txt 为要提取的序列ID,input.fasta 为输入序列文件,out.fa 是输出提取的序列文件。

id.txt 格式如下:

TRINITY_DN116733_c6_g37
TRINITY_DN116733_c6_g70
TRINITY_DN95808_c0_g7
TRINITY_DN104586_c1_g2
TRINITY_DN108413_c2_g23
TRINITY_DN37223_c0_g1
TRINITY_DN107955_c0_g8
TRINITY_DN117047_c0_g2
TRINITY_DN78058_c0_g1

这里是脚本代码:

die "perl $0 <id><fa><OUT>" unless(@ARGV==3);use Math::BigFloat;use Bio::SeqIO;use Bio::Seq;$in  = Bio::SeqIO->new(-file => "$ARGV[1]" ,   -format => 'Fasta');$out = Bio::SeqIO->new(-file => ">$ARGV[2]" ,   -format => 'Fasta');my%keep;open IN ,"$ARGV[0]" or die "$!";while(<IN>){chomp;next if /^#/;#next unless />>/;my@tmp=split(/\s+/);$keep{$tmp[0]}=1;}close(IN);my$i=0;while ( my $seq = $in->next_seq() ) { my($id,$sequence,$desc)=($seq->id,$seq->seq,$seq->desc); if(exists $keep{$id}){   $out->write_seq($seq); }}$in->close();$out->close();

脚本使用了Bio::SeqIO模块来处理序列文件,简洁而高效,先使用哈希来存储要提取的序列ID,然后利用Bio::SeqIO遍历序列文件,判断每条序列是否是要提取的序列,是的话就输出。

看完了这篇文章,相信你对“perl如何提取指定基因的fasta序列”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. fasta序列如何按指定格式输出
  2. 如何计算Kaks时批量提取多对基因的序列

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

perl fasta

上一篇:如何在JavaScript中使用Map()方法

下一篇:perl如何从MEGA进化树分析结果的nwk文件中提取基因ID

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》