我一直在努力找出一种方法,让我的序列在单独的行中按顺序打印出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几天了,如果我的问题看起来很简单,我很抱歉。
谢谢!
答案 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