Chinaunix首页 | 论坛 | 博客
  • 博客访问: 225751
  • 博文数量: 36
  • 博客积分: 1188
  • 博客等级: 军士长
  • 技术积分: 802
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 21:45
文章分类

全部博文(36)

文章存档

2020年(1)

2017年(2)

2015年(1)

2014年(1)

2013年(1)

2012年(3)

2011年(27)

分类: WINDOWS

2011-08-27 15:04:35

A.把序列切割成等长且有一定重叠的小段,放在一个FASTA格式的文件中。
B.拆分好的序列名字为原来的序列名字加位置信息(在原来序列上的起始和终止位置),如原来的序列名为E.coli,新的就是E.coli_1-100、E.coli_81-180、......
  1. #use Acme::PerlTidy;
  2. use Bio::Seq;
  3. use Bio::SeqIO;
  4. my $len = '100';
  5. my $offset = '20';
  6. my $in = Bio::SeqIO->new( -format => 'fasta', -file => 'example.fa' );
  7. my $out = Bio::SeqIO->new( -format => 'fasta', -file => '>>out.fa' );
  8. while ( my $seq = $in->next_seq ) {
  9.     my $desc_seq = $seq->desc();
  10.     my ( $str1, $str2 ) = ( split( '\s', $desc_seq ) )[ 0, 1 ];
  11.     my $desc_tem = substr( $str1, 0, 1 ) . '.' . $str2;
  12.     my $len_seq = $seq->length();
  13.     my ($end,$i) = ('0','0');
  14.     while ( $end < $len_seq ) {
  15.         $i++;
  16.         my $start =
  17.           ( $i > 1 ) ? $len * ( $i - 1 ) + 1 - $offset * ( $i - 1 ) : 1;
  18.         my $end_tem = $start + $len - 1;
  19.         $end = ( $end_tem < $len_seq ) ? $end_tem : $len_seq;
  20.         my $desc = $desc_tem . '_' . $start . '-' . $end;
  21.         my $seqstr = Bio::Seq->new(
  22.             -display_id => $desc,

  23.             #-desc=>$desc_seq,
  24.             -seq => $seq->subseq( $start, $end )
  25.         );

  26.         $out->write_seq($seqstr);
  27.     }
  28. }
example.fa: example.rar   
阅读(2028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~