0

やあ皆さん、これは私の最初の質問です。SQL で UniprotKB のローカル コピーを作成しようとしています。

UniprotKB は 2.1GB で、XML と SwissProt で使用される特別なテキスト形式で提供されます。

ここに私のオプションがあります:

1) SAX パーサー (XML) を使用します。Ruby と Nokogiri を選択しました。パーサーの作成を開始しましたが、最初の反応は、XML スキーマを SAX パーサーにマップするにはどうすればよいかということでした。

2) BioPython - 私はすでに BioSQL/Biopython をインストールしており、文字通り SQL スキーマを作成してくれました.1 つの 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 に切り替える必要がありますか?

4

1 に答える 1

0

便宜上、PostgrelSQLに切り替えました。一部の問題はNCBI分類情報をダウンロードすることで解決されたため(必要かどうかはわかりませんでしたが、ドキュメントでより明確になっているはずです)、BioSQLに非常によく適合するため、BioPythonのスイスパーサーを使用することになりました。

于 2010-05-27T18:07:57.633 に答える