perl 将长序列分割为指定的长度

这里的长序列格式是fasta 格式:
格式如下

>1
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

直接上代码:这里指定的是70的长度

#!/usr/bin/perl -w 
use strict;

open A,"hp.fa" or die;
while(<A>){
    chomp;
    if (/>/){
        print "$_\n";
    }else{
        my $len = length $_;
        my $num = int ($len / 70);
        #print "$num\n"; 
        for my $i (0 .. $num){
            #print  "$i\n";
            my $data = substr($_, $i*70,70 );
            print "$data\n";
        }
    }
}

按这个长度分割,担心是不是出现错误,那就直接还原回去吧。
代码如下:

#!/usr/bin/perl -w 
use strict;
open A,"hp70.fa" or die;
$/=">";<A>;
while(<A>){
    my $id=$1 if(/^(\S+)/);
    print ">$id\n";
    $/='>';
    chomp;
    s/^.+?\n//;
    s/\s//g;
    print "$_\n";
}
$/="\n";
close A;

END

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容