使用脚本解析大型XML文件或使用BioPython API?

时间:2010-05-26 17:51:04

标签: python xml bioinformatics

嘿伙计们,这是我在这里的第一个问题。我正在尝试在SQL中制作UniprotKB的本地副本。

UniprotKB是2.1GB,它有XML和SwissProt使用的特殊文本格式

以下是我的选择:

1)使用SAX解析器(XML) - 我选择了Ruby和Nokogiri。我开始编写解析器,但我最初的反应是:如何将XML模式映射到SAX解析器?

2)BioPython - 我已经安装了BioSQL / Biopython,它为我创建了我的SQL模式,并且我能够成功地将一个SwissProt / Uniprot txt文件插入到数据库中。

我现在在整个2.1gb上运行它(交叉手指)。这是我正在运行的代码:


from Bio import SeqIO
from BioSQL import BioSeqDatabase
from Bio import SwissProt

server = BioSeqDatabase.open_database(driver = "MySQLdb", user = "root", passwd = "", host="localhost", db = "bioseqdb")
db = server["uniprot"]
iterator = SeqIO.parse(open("/path/to/uniprot_sprot.dat", "r"), "swiss")
db.load(iterator)
server.commit()

编辑它现在崩溃,因为交易被锁定(因为这些表是Innodb) 错误号码:1205 超过锁定等待超时;尝试重新启动事务。我正在使用 MySQL版本:5.1.43

我应该将数据库切换到Postgrelsql吗?

1 个答案:

答案 0 :(得分:0)

为方便起见,切换到PostgrelSQL。一些问题通过下载NCBI分类标准信息得到解决(我不知道这是必要的,在文档中应该更清楚),所以我最终使用了BioPython的Swiss解析器,因为它非常适合BioSQL。