【问题标题】:Improve genbank feature addition改进 genbank 功能添加
【发布时间】:2015-09-26 06:13:28
【问题描述】:

我正在尝试使用 biopython 将 70000 多个新功能添加到 genbank 文件中。

我有这个代码:

from Bio import SeqIO
from Bio.SeqFeature import SeqFeature, FeatureLocation

fi = "myoriginal.gbk"
fo = "mynewfile.gbk"

for result in results:
     start = 0
     end = 0

     result = result.split("\t")
     start = int(result[0])
     end = int(result[1])

     for record in SeqIO.parse(original, "gb"):
         record.features.append(SeqFeature(FeatureLocation(start, end), type = "misc_feat"))
         SeqIO.write(record, fo, "gb")

结果只是一个列表列表,其中包含我需要添加到原始 gbk 文件中的每个功能的开始和结束。

这个解决方案对我的电脑来说非常昂贵,我不知道如何提高性能。有什么好主意吗?

【问题讨论】:

  • 您的代码中的results 是什么?除此之外,就我所见,在SeqIO.parse(original, "gb") 的for 循环中解析original 的每次迭代都非常昂贵。 original 你的意思是 fi 变量?

标签: performance biopython genbank


【解决方案1】:

您应该只解析一次 genbank 文件。省略 results 包含的内容(我不确切知道,因为您的示例中缺少一些代码片段),我猜这样的事情会提高性能,修改您的代码:

fi = "myoriginal.gbk"
fo = "mynewfile.gbk"

original_records = list(SeqIO.parse(fi, "gb"))

for result in results:
    result = result.split("\t")
    start = int(result[0])
    end = int(result[1])

    for record in original_records:
        record.features.append(SeqFeature(FeatureLocation(start, end), type = "misc_feat"))
        SeqIO.write(record, fo, "gb")

【讨论】:

  • 这大大提高了性能。默认情况下这是一个缓慢的过程,但现在可以负担得起。非常感谢
  • 没问题@Mastodon,乐于助人:)
猜你喜欢
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2012-06-09
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
相关资源
最近更新 更多