美文网首页Perl小推车Raku Programming Language码神之路:Perl篇
perl实战练习-计算fastq文件中每条序列的长度

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

作者: 下午三点的闲暇 | 来源:发表于2019-11-06 11:24 被阅读0次

    计算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
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/lqzybctx.html