計(jì)算FASTA文件中每條序列的長(zhǎng)度
輸入文件fasta.txt
>con1
GTTCATAACTTACCATTGACTGTTCATGATTTAAACTGTGTCTTCCTGTTCTTTTAGTTGCTTTGGATACTATAAGGTCAGAACTAGAA
>con2
GGGACCAGGTGGGAAGCTGCTGCTTTCTTTTCCCTTTTGGTCTTCTTGGGCCCACCCTTCAGCTTCTGCTTTTCTTCATCTTCTCGGTTTTGAGGCCAGGAGGCAGCCAGTATCCTGGCCGCTTCTGCTTGAGAGCTGGTCCCCTCCTCT
>con3
TCCAGAGCCAGTTCCCTGACGATGCCGAGGTTTACCGGCTCATCGAGGTGACTGGCCTTGCCAGGAGCGAGATCAAGAAGTGGTTCAGTGACCACCGATATCGGTGTCAAAGGGGCATCGTCCACATCACCAG
>con4
TTTTCCTCCAAGTGTACAAGACTGATCTGGAGAAGGACATTATTTCGGACACATCTGGTGACTTCCGCA
>con5
GTTTGCATCGTCATCCAATTTTTTTTCATATGCCCCAAACCCATTCAATTTCTGATTGTGTTGTGTTCCCTGGTGTAAGATATCTCCCAGGAGAGGGCCACACATTCCCCAGAGGTGGACCTTCTTGGTACATACACC
?
?
?
?
?
?
?
?
?
?
?
?
腳本如下麻汰,腳本名:get_fasta.pl
#!/usr/bin/perl
my ($f,$out)=@ARGV;
open(DATA,$f) or die "infile 文件無(wú)法打開,$f";
open(OUT,">$out")||die $!;
$/=">";<DATA>; #設(shè)置輸入記錄分隔符為">",并去除第一個(gè)">"
while(<DATA>){
$line=$_;
my $id=$1 if($line=~/^(\S+)/); #獲取序列ID
chomp $line; #去掉末尾的換行
$line=~s/^.+?\n//; #刪除第一行
$line=~s/\s//g; #刪除序列中的空白字符
my $len=length($line); #計(jì)算序列長(zhǎng)度
print OUT "$id\t$len\n"; #輸出結(jié)果到輸出文件中
}
close IN;
close OUT;
運(yùn)行腳本如下,腳本get_fasta.pl搔扁,輸入文件為fasta.txt ,輸出文件為out.txt
perl get_fasta.pl fasta.txt out.txt
得到輸出文件out.txt 如下:
con1 89
con2 150
con3 133
con4 69
con5 138