使用脚本解析大型XML文件还是使用BioPython API?
大家好,这是我在这里的第一个问题。我想在本地创建一个UniprotKB的SQL副本。
UniprotKB的大小是2.1GB,它有XML格式和一种瑞士蛋白使用的特殊文本格式。
我有以下几个选择:
1) 使用SAX解析器(处理XML) - 我选择了Ruby和Nokogiri。我开始写解析器,但我第一个反应是:我该如何将XML的结构映射到SAX解析器上呢?
2) BioPython - 我已经安装了BioSQL/Biopython,它实际上为我创建了SQL的结构,我成功地将一个瑞士蛋白/Uniprot的文本文件插入到了数据库中。
我现在正在运行它(希望一切顺利),处理整个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
我应该把我的数据库换成PostgreSQL吗?
1 个回答
0
为了方便,我换用了PostgreSQL。有些问题是通过下载NCBI的分类信息解决的(我之前不知道这一步是必要的,文档里应该更清楚地说明一下)。所以我最终选择了BioPython里的Swiss解析器,因为它和BioSQL配合得非常好。