【发布时间】:2016-10-03 11:45:04
【问题描述】:
我有一个包含多个 DNA 序列的 fasta 格式文件。我想将每个序列的内容更改为另一个较小的序列,保持相同的序列 ID。 新序列在一个列表中。
with open("outfile.fa", "w") as f:
for seq_record in SeqIO.parse("ma-all-mito.fa", "fasta"):
for i in range(len(newSequences_ok)):
f.write(str(seq_record.id[i]) + "\n")
f.write(str(newSequences_ok[i]) + "\n")
但我明白了:
IndexError: string index out of range
如何更改代码以使其正常工作?我认为问题在于我需要遍历原始 fasta 文件和包含新序列的列表。
原来的fasta文件是这样的:
>Sequence1
ATGATGCATGG
>Sequence2
TTTTGGGAATC
>Sequence3
GGGCTAACTAC
>Sequence4
ATCTCAGGAA
新序列的列表与此类似:
newSequences_ok=[ATGG,TTTC,GGTA,CTCG]
我想得到的输出是:
>Sequence1
ATGG
>Sequence2
TTTC
>Sequence3
GGTA
>Sequence4
CTCG
【问题讨论】:
-
还有,
newSequences_ok是什么? -
请提供有关您的数据结构的更多信息。如果您在不使用 BioPyton 的情况下创建一个最小的工作示例(包括所有
imports等),那将是最简单的。顺便说一句:您使用哪个版本的 BioPython? -
newSequences_ok 是一个列表,其中包含每个记录的新序列的字符串。这是我在 fasta 文件中想要的,而不是之前的序列
-
我使用 Biopython 1.68