Perl生信日常编程-从fa文件批量根据id列表提取序列

Posted 沈梦圆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl生信日常编程-从fa文件批量根据id列表提取序列相关的知识,希望对你有一定的参考价值。

示例文件

从一个fasta文件中根据多个id列表批量提取对应的序列存为独立的fasta文件。

ID列表如下图所示,格式是“No:空格ID空格ID”; 要求根据每行的ID提取一次,并且输出为No.fa文件

代码记录

#! /usr/bin/perl -w
use strict;
my($lines,@lines,$line_nums,@b,$j);

open(ID,"count_all");
@lines = <ID>;
$line_nums = @lines;
foreach $_(@lines){
   chomp;
   @b=split/\s/;
   $b[0]=~s/://;
   #print "$b[0]\n";
   open(FW,">$b[0].txt");
   for ($j=1;$j<@b ;$j++) {
           print FW "$b[$j]\n";
   # 调用了爪爪的seqkit,因为懒得把以前写的代码加进来,这个方法更快嘛
   system("~/software/seqkit grep -f $b[0].txt ../total.faa >$b[0].fa")
   }
   close(FW);
}


~ 爪爪的工具很棒的哦 ~

以上是关于Perl生信日常编程-从fa文件批量根据id列表提取序列的主要内容,如果未能解决你的问题,请参考以下文章

perl 语言一些常见生信处理脚本

生信编程Perl教案大纲

Perl编程基础

perl编程:正则匹配

生信人值得拥有的编程模板-Perl

手把手教你学perl编程之题目篇