如何使用biopython编辑和保存genbank文件的序列到新的genbank文件?

时间:2016-04-07 01:43:11

标签: python biopython genbank

我有一个错误的.gbk文件,而且我的修正列表遵循

的格式

"核苷酸的地址:正确的核苷酸"

1:T
2:C
4:A
63:A
324:G
etc...

我知道如何用

打开和解析确切的原始序列
list(SeqIO.parse(sys.argv[1], "genbank"))[0].seq 

我只需要知道如何用我自己的核苷酸校正替换它。我试过了

seq_records[0].seq = "".join(dna_refseq)

dna_refseq是a只是一个构成整个基因组的列表

我确实无法在文档或在线的任何地方找到此特定操作,直观地说,这是biopython应该具备的功能。

1 个答案:

答案 0 :(得分:1)

您正在分配一个字符串,其中需要Bio.Seq个对象。 对我来说,这有效:

from Bio import Seq
from Bio import SeqIO

my_entries = list(SeqIO.parse('my_file.gb', 'genbank'))
my_entry = my_entries[0]

# Make a new Seq object and assing to my_entry.seq. 'TTT' is just an example sequence
my_entry.seq = Seq.Seq('TTT', my_entry.seq.alphabet) 

# Write back to file
SeqIO.write(my_entries, 'my_updated_file.gb', 'genbank')

如果您的Genbank文件只有一个条目,您可以考虑使用SeqIO.read

my_entry = SeqIO.read('my_file.gb', 'genbank')

my_entry.seq = Seq.Seq('TTT', my_entry.seq.alphabet)
SeqIO.write(my_entry, 'my_updated_file.gb', 'genbank')

或者,您可以直接将序列转换为可变序列并直接操作:

from Bio import SeqIO

my_entry = list(SeqIO.parse('my_file.gb', 'genbank'))[0]
my_entry.seq = my_entry.seq.tomutable()

my_entry.seq[0] = 'T'  # Remember that Genbank position 1 is 0 in seq
my_entry.seq[1] = 'C'
....
SeqIO.write(my_entry, 'my_updated_file.gb', 'genbank')