6.5 perl--去掉换行符

因为blast2go来注释go和interpro的时候,需要blast.xml结果和interpro.xml。更可恶的是interpro指向的是文件夹,文件夹里面包含以序列名命名的.xml文件。这样就提出这样个问题,是把包含所有序列的fasta文件通过interproscan注释成.xml文件,然后提取单个序列的注释结果,然后单独生成文件夹;还是说将包含所有序列的fasta文件先分成若干个以序列名命名的的单一的fasta文件,然后分别用Interproscan注释。

我采用的第二种方式,首先编了一个perl脚本,将fasta文件切割为以序列号命名的单个序列的fasta文件,但后来发现我的fasta文件太不正规了。正常来说,应该是一条序列名,以>,下面一行跟序列,但是我用Prodial预测出来的基因,将后面跟的序列切成了很多条。导致我那个脚本不可用,那好,现在写的这个脚本就是要将非标准的fasta文件转换为标注的fasta文件,去掉序列行间的换行符。

#!/usr/bin/perl
use warnings;
use strict;
my ($in,$out)=@ARGV;
open (IN,'<',$in);
open (OUT,'>',$out);

while ( < IN > ){
  if (/^>/){
  print OUT "\n$_";
    }

   else
     {chomp;
   print OUT $_;
  }
}

close IN;
close OUT;

这个脚本有一个问题,需要手动删掉第一行的空行。

个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学