TRF–Tandem Repeat Finder,是基因组注释中检测串联重复序列的软件,其结果主要存入了一个空格分割的.dat文件中,利用perl可以简单地转成fasta格式。
#!/usr/bin/perl
use strict; use warnings;
my $usage = "trf_2_fasta.pl <trf dat file>";
die "$usage" unless (@ARGV == 1);
my $seq_counter = 0;
my $header;
while(<>){
#跳过空行
next if (m/^$/);
#提取序列名
if (m/^Sequence: (.*)/){
$header = $1;
$seq_counter++;
}
#对满足TRF结果数据格式的行进行分析
next unless (m/^\d+ \d+ \d+ \d+\.\d /);
#提取结果中的拷贝数、长度、起始位点、终止位点,以及重复序列的model并打印
my ($start,$end,$period,$copies,$length,$identity,$indels,$score,$a,$c,$g,$t,$entropy,$seq) = split(/\s+/);
print ">".$header."_".$copies."_".$length."_".$start."_".$end."\n";
print "$seq\n";
}
稍微改一下输出还能转成bed文件:
print $header."\t".$start."\t".$end."\t".$header."_".$copies."_".$length."\n";