0

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

4

1 回答 1

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
于 2012-04-23T15:42:21.187 回答