从核苷酸序列的每个核苷酸位置开始提取给定长度的所有子串

时间:2012-04-23 12:59:14

标签: perl

如何从Perl语言的fasta文件读取DNA序列并将其存储在一个数组中并从每个核苷酸位置开始提取给定长度的所有子串? 我的意思是我想读一个非常大的序列 然后将其分成从每个核苷酸位置开始的许多序列 这意味着第一个序列从第一个核苷酸开始到七十个 然后第二个序列从第二个核苷酸开始到七十一个,依此类推。

1 个答案:

答案 0 :(得分:0)

使用Bioperl的捆绑发行版中的Bio::SeqIO,我想出了一个例子(如果这是你所追求的)。

#!/usr/bin/perl
use strict;
use warnings;
use Bio::SeqIO;

my $in  = Bio::SeqIO->new(-file   => "fasta.txt",
                          -format => 'Fasta');

while ( my $seq = $in->next_seq() ) {
    print "Sequence ", $seq->id, "\n";
    for my $i (1 .. length($seq->seq) - 10) {
        print $seq->subseq($i,$i+10), "\n";
    }
}


__END__
*** Contents of fasta.txt

>chr1
AACCCCCCCCTCCCCCCGCTTCTGGCCACAGCACTTAAACACATCTCTGC
CAAACCCCAAAAACAAAGAACCCTAACACCAGCCTAACCAGATTTCAAAT
TTTATCTTTAGGCGGTATGCACTTTTAACAAAAAANNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
GCCCATCCTACCCAGCACACACACACCGCTGCTAACCCCATACCCCGAAC
CAACCAAACCCCAAAGACACCCCCCACAGTTTATGTAGCTTACCTCNNNN
>chrM
GATCACAGGTCTATCACCCTATTAACCACTCACGGGAGCTCTCCATGCAT
TTGGTATTTTCGTCTGGGGGGTGTGCACGCGATAGCATTGCGAGACGCTG
GAGCCGGAGCACCCTATGTCGCAGTATCTGTCTTTGATTCCTGCCTCATT
CTATTATTTATCGCACCTACGTTCAATATTACAGGCGAACATACCTACTA
AAGTGTGTTAATTAATTAATGCTTGTAGGACATAATAATAACAATTGAAT
GTCTGCACAGCCGCTTTCCACACAGACATCATAACAAAANAATTTCCACC