OpenBabel/Cartridge/登録 をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[データベース構築>OpenBabel/Cartridge/DB]]で用意したテー...
ChEMBLのSDFファイルは、ここから取得可能で
ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/
ここでは[[RDKit/Cartridge/ChEMBL]]で使用した&color(green)...
chembl_18.sdfをテーブルに流し込むpythonスクリプトを用意し...
中身は、SDFの区切り文字 &color(green){''$$$$''}; で個々の...
使う前にpythonからMySQLを繋ぐパッケージをインストールします
#code(nonumber){{
[root@s ~]# yum install MySQL-python
[root@s ~]#
}}
使用するスクリプト reg.py
#code(python,number,nooutline,noblock,noliteral,nocomment...
#!/bin/python
import sys
import MySQLdb
db= MySQLdb.connect(host = 'localhost',user="root", passw...
c = db.cursor()
i=0
sdf=""
f=open("chembl_18.sdf",'r')
while 1:
line = f.readline()
if not line:
break
if line[0:4] == "$$$$":
i += 1
sdf += line
sql = "INSERT INTO mols(id,sdf) values (%s, " % i + ...
c.execute(sql)
sdf = ""
else:
sdf += line
f.close()
db.commit()
c.close()
db.close()
}}
っで、実行
使用しているマシンはi7-4771(3.5GHz)で32GB men、ssd。
#code(nonumber){{
[root@s ~]# time python reg.py
real 4m22.641s
user 1m46.707s
sys 0m12.123s
[root@s ~]#
}}
次にSDFからSMILESを作成してchemにデータをupdateさせます。
#code(nonumber){{
[root@s ~]# mysql -Dchemdb
mysql>
mysql> desc mols;
+--------+------------------+------+-----+---------+-----...
| Field | Type | Null | Key | Default | Extr...
+--------+------------------+------+-----+---------+-----...
| 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_SERIALI...
}}
終了行:
[[データベース構築>OpenBabel/Cartridge/DB]]で用意したテー...
ChEMBLのSDFファイルは、ここから取得可能で
ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/
ここでは[[RDKit/Cartridge/ChEMBL]]で使用した&color(green)...
chembl_18.sdfをテーブルに流し込むpythonスクリプトを用意し...
中身は、SDFの区切り文字 &color(green){''$$$$''}; で個々の...
使う前にpythonからMySQLを繋ぐパッケージをインストールします
#code(nonumber){{
[root@s ~]# yum install MySQL-python
[root@s ~]#
}}
使用するスクリプト reg.py
#code(python,number,nooutline,noblock,noliteral,nocomment...
#!/bin/python
import sys
import MySQLdb
db= MySQLdb.connect(host = 'localhost',user="root", passw...
c = db.cursor()
i=0
sdf=""
f=open("chembl_18.sdf",'r')
while 1:
line = f.readline()
if not line:
break
if line[0:4] == "$$$$":
i += 1
sdf += line
sql = "INSERT INTO mols(id,sdf) values (%s, " % i + ...
c.execute(sql)
sdf = ""
else:
sdf += line
f.close()
db.commit()
c.close()
db.close()
}}
っで、実行
使用しているマシンはi7-4771(3.5GHz)で32GB men、ssd。
#code(nonumber){{
[root@s ~]# time python reg.py
real 4m22.641s
user 1m46.707s
sys 0m12.123s
[root@s ~]#
}}
次にSDFからSMILESを作成してchemにデータをupdateさせます。
#code(nonumber){{
[root@s ~]# mysql -Dchemdb
mysql>
mysql> desc mols;
+--------+------------------+------+-----+---------+-----...
| Field | Type | Null | Key | Default | Extr...
+--------+------------------+------+-----+---------+-----...
| 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_SERIALI...
}}
ページ名:
1