使用 Biopython 更改 fasta 文件中的 DNA 序列
Change DNA sequences in fasta file using Biopython
我有一个包含多个 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
我认为这个可能有效:
records = SeqIO.parse("ma-all-mito.fa", "fasta")
with open("outfile.fa", "w") as f:
for r, s in zip(records,newSequences_ok):
f.write(r.seq.seq.split('\n')[0] + '\n')
f.write(s + '\n')
如果不是(即使是)——您真的需要仔细阅读 Biopython 的工作原理。您将 SeqIO.parse
视为直接 returns 文件行的内容。相反,它 returns SeqRecord
具有 seq
属性的对象 returns Seq
本身具有两个属性的对象,一个 seq
属性(其中是你似乎想要的)和一个 alphabet
属性。在尝试修改之前,您应该集中精力提取您感兴趣的信息。
我有一个包含多个 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
我认为这个可能有效:
records = SeqIO.parse("ma-all-mito.fa", "fasta")
with open("outfile.fa", "w") as f:
for r, s in zip(records,newSequences_ok):
f.write(r.seq.seq.split('\n')[0] + '\n')
f.write(s + '\n')
如果不是(即使是)——您真的需要仔细阅读 Biopython 的工作原理。您将 SeqIO.parse
视为直接 returns 文件行的内容。相反,它 returns SeqRecord
具有 seq
属性的对象 returns Seq
本身具有两个属性的对象,一个 seq
属性(其中是你似乎想要的)和一个 alphabet
属性。在尝试修改之前,您应该集中精力提取您感兴趣的信息。