- 论坛徽章:
- 7
|
- #!/usr/bin/perl
- use Bio::SeqIO;
- use strict;
- my $file=shift @ARGV or die "Usage:\t$0\tseq_file\n";
- my $SeqIO=Bio::SeqIO->new(-file=>"$file",-format=>"fasta") or die "Open seq_file failed!\n";
- my ($flag,$length,%ids,@out)=();
- while(my $seq=$SeqIO->next_seq()){
- (my $id= $seq->id)=~s/\_[\s\S]+$//;
- my $tag=$seq->id;
- my $len=$seq->length;
- if(! $ids{$id}){
- $ids{$id}++;
- if($length and $flag){
- my $pos=$flag."\t".$length;
- push @out,$pos;
- }
- $length=$len;
- $flag=$tag;
- }else{
- if($length<$len){
- $length=$len;
- $flag=$tag;
- }
- }
- }
- my $pos=$flag."\t".$length;
- push @out,$pos;
- while(my $pos=shift @out){
- print $pos,"\n";
- }
复制代码
|
|