perl實(shí)戰(zhàn)練習(xí)-計(jì)算fastq文件中每條序列的長度

計(jì)算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>; #設(shè)置輸入記錄分隔符為">",并去除第一個">"
while(<DATA>){
    $line=$_;
    my $id=$1 if($line=~/^(\S+)/); #獲取序列ID
    chomp $line; #去掉末尾的換行
    $line=~s/^.+?\n//; #刪除第一行
    $line=~s/\s//g; #刪除序列中的空白字符
    my $len=length($line); #計(jì)算序列長度
    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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容