嘿伙计们,这是我在这里的第一个问题。我正在尝试在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吗?
答案 0 :(得分:0)
为方便起见,切换到PostgrelSQL。一些问题通过下载NCBI分类标准信息得到解决(我不知道这是必要的,在文档中应该更清楚),所以我最终使用了BioPython的Swiss解析器,因为它非常适合BioSQL。