データベース構築で用意したテーブルにChEMBLのデータを登録してみる。
ChEMBLのSDFファイルは、ここから取得可能で
ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/
ここではRDKit/Cartridge/ChEMBLで使用したchembl_18を使う。
chembl_18.sdfをテーブルに流し込むpythonスクリプトを用意した。
中身は、SDFの区切り文字 $$$$ で個々のsdfに分解して投入する簡単な物。
使う前にpythonからMySQLを繋ぐパッケージをインストールします
[root@s ~]# yum install MySQL-python
[root@s ~]#
使用するスクリプト reg.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
っで、実行
使用しているマシンはi7-4771(3.5GHz)で32GB men、ssd。
[root@s ~]# time python reg.py
real 4m22.641s
user 1m46.707s
sys 0m12.123s
[root@s ~]#
次にSDFからSMILESを作成してchemにデータをupdateさせます。
[root@s ~]# mysql -Dchemdb
mysql>
mysql> desc mols;
+--------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+-------+
| id | int(11) unsigned | NO | PRI | NULL | |
| sdf | text | NO | | NULL | |
| smiles | text | YES | | NULL | |
+--------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql>
mysql> select count(*) from mols;
+----------+
| count(*) |
+----------+
| 1352681 |
+----------+
1 row in set (6.72 sec)
mysql>
mysql> UPDATE mols SET smiles = MOLECULE_TO_SMILES(sdf);
Query OK, 1352681 rows affected (28 min 16.24 sec)
Rows matched: 1352681 Changed: 1352681 Warnings: 0
mysql> alter table mols add mol text;
mysql> update mols SET mol = MOLFILE_TO_MOLECULE(sdf);
mysql> alter table mols add fp2 blob;
mysql> update mols set fp2 = FINGERPRINT2(mol);
mysql> alter table mols add obserialized blob;
mysql> update mols set obserialized = MOLECULE_TO_SERIALIZEDOBMOL(mol);