【问题标题】:How do I edit AND SAVE the sequence of a genbank file to a NEW genbank file using biopython?如何使用 biopython 编辑和保存 genbank 文件的序列到新的 genbank 文件?
【发布时间】:2016-04-08 04:41:43
【问题描述】:

我有一个错误的 .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 只是一个构成整个基因组的列表

我在文档或在线的任何地方都找不到这个特定的操作,直观地说,这是 biopython 应该具备的能力。

【问题讨论】:

    标签: python biopython genbank


    【解决方案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')
    

    【讨论】:

    • “TTT”有什么用?
    • 我将如何返回将其保存到 genbank?
    • @Tom:'TTT'只是一个序列的例子,在你的情况下,你可以把你更新的序列放在这里。使用SeqIO.write() 写入文件。我已经编辑了我的答案。
    • 我想我最终使用了 seq_records[0].seq = Seq("".join(dna_refseq),IUPAC.unambiguous_dna)。好像我错过了神秘的 IUPAC.ambiguous_dna 部分。显然,这使您能够强制将原子数据结构保存为 seq 类对象。
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多