我正在嘗試在Python中編寫一段代碼,以便遍歷fasta文件中的每個序列,並使用1000個核苷酸的滑動窗口打印每個序列的新列表,但我不確定是什麼是錯的。在1000個核苷酸窗口中對序列進行迭代
"Traceback (most recent call last):
File "<stdin>", line 4, in <module>
TypeError: expected a string or other character buffer object"
這裏是我的代碼:
from Bio import SeqIO
for record in SeqIO.parse("fasta.txt", "fasta"):
pos=0
if pos<len(record)+1:
dna_1000.write("\n"+">"+record.id+"_"+pos+"\n"+record[pos:pos+1000])
pos=pos+1000
我嘗試了略有不同:
from Bio import SeqIO
for record in SeqIO.parse("fasta.txt", "fasta"):
for pos in range(0,len(record)+1,1000):
dna_1000.write("\n"+">"+record.id+"_"+"\n"+record[pos:pos+1000])
但我也收到此消息:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: expected a string or other character buffer object
非常感謝您抽出寶貴一看這個!
謝謝Trevor的解釋。我知道Python不能組合字符串和整數,但是我在編寫代碼時很難應用這條規則。 您的建議確實有幫助。我只需要將「if」循環更改爲「while」循環,因爲否則它僅顯示所有記錄的「第一個」滑動窗口,因爲if語句爲true(pos在外部定義)。它現在很好用。非常感謝! –