perl实战练习-计算fastq文件中每条序列的长度

计算FASTA文件中每条序列的长度
输入文件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 文件无法打开,$f";
open(OUT,">$out")||die $!;
$/=">";<DATA>; #设置输入记录分隔符为">",并去除第一个">"
while(<DATA>){
    $line=$_;
    my $id=$1 if($line=~/^(\S+)/); #获取序列ID
    chomp $line; #去掉末尾的换行
    $line=~s/^.+?\n//; #删除第一行
    $line=~s/\s//g; #删除序列中的空白字符
    my $len=length($line); #计算序列长度
    print OUT "$id\t$len\n"; #输出结果到输出文件中
}
close IN;
close OUT;

运行脚本如下,脚本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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。