循环序列输出 - python

时间:2015-02-19 21:17:53

标签: python

我一直在努力找出一种方法,让我的序列在单独的行中按顺序打印出6-mer。如此(注意每行的间距):

atgctagtcatc
 tgctag
  gctagt
   ctagtc
    tagtca
     etc

到目前为止,我已经能够在字符串中显示我的序列,如下所示:

from Bio import SeqIO
record = SeqIO.read(open("testSeq.fasta"), "fasta")
sequence = str(record.seq)

然而,我似乎唯一想要打印6-mer的方法是:

print sequence 
print sequence[0:5]
print "", sequence[1:6]
print "", "", sequence[2:7]
print "", "", "", sequence [3:8]
etc

我觉得应该有一种更简单的方法来做到这一点。我试过这个,但它似乎不起作用:

x = 0
y = 6
for sequence in sequence[x:y]
    print sequence
    x = x + 1
    y = y + 1

对于我应该如何尝试完成此任务的任何意见将不胜感激。我现在只使用python几天了,如果我的问题看起来很简单,我很抱歉。

谢谢!

2 个答案:

答案 0 :(得分:2)

这应该有效:

width = 6
for i in range(len(sequence) - width):
    print " " * i + sequence[i:i+width]

答案 1 :(得分:0)

您可以尝试以下操作(据我所知,您正在使用python2)

seq = "atgctagtcatc"
spaces = " "
for i in range(0, len(seq)):
    print spaces*i+seq[i:i+6]

输出:

atgcta
 tgctag
  gctagt
   ctagtc
    tagtca
     agtcat
      gtcatc
       tcatc
        catc
         atc
          tc
           c