#概要
ChEMBLはEMBL-EBIが運営する化合物/薬物のデータベースです.
ケモインフォマティクスや創薬支援計算に非常によく使われています.
ChEMBLの化合物データはsdfファイルという形式で配布されています.
sdfは1つのファイルの中に複数の化合物データを記述するフォーマットになっています.
参考:SDFって何?~化合物の表記法~ | Chem-Station
http://www.chem-station.com/blog/2012/04/sdf.html
この記事ではChEMBLから全化合物データのsdfをダウンロードして,
1個1個分割したsdfファイルをつくる方法を紹介します.
#ChEMBLからsdfをダウンロード
ChEMBLのsdfは以下からダウンロードできます.
https://www.ebi.ac.uk/chembl/downloads
今回はchembl_19.sdf.gz (version 19, 2014年7月更新版) を使います.
wget ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/chembl_19/chembl_19.sdf.gz
gunzip chembl_19.sdf.gz
chembl_19.sdf
ができました.
#sdfを分割する
sdfファイルの分割をする以下のpythonスクリプトを使います.
#!/usr/bin/python
import re
import sys
if (len(sys.argv) != 2):
print 'Usage: # python %s chemblsdf' % sys.argv[0]
quit()
sdffile = sys.argv[1]
fi = open(sdffile, 'r')
mol = []
while 1:
line = fi.readline()
if not line:
break
if line[:4] == "$$$$":
mol.append(line)
title = mol[0][:-1]
fo = open(title+".sdf", 'w')
for m in mol:
fo.write(m)
fo.close()
mol = []
else:
mol.append(line)
fi.close()
これを使って,chembl_19.sdf
に対し
python sdf_sep.py chembl_19.sdf
とすると,実行したディレクトリに分割されたsdfファイルが生成されます.
CHEMBL2227709.sdf CHEMBL375034.sdf CHEMBL99804.sdf CHEMBL1447940.sdf
CHEMBL1778883.sdf CHEMBL222771.sdf CHEMBL375035.sdf CHEMBL99806.sdf
CHEMBL1447941.sdf CHEMBL1778884.sdf CHEMBL2227710.sdf CHEMBL375036.sdf
CHEMBL99808.sdf CHEMBL1447942.sdf CHEMBL1778885.sdf CHEMBL2227711.sdf
ちなみにversion 19では1,404,752個のsdfファイル(化合物)がつくられました.
#が,公式には1,638,394個あるはずなので,何かおかしい?
##追記
これによると,1,404,752個で合ってるようです.
ChEMBL_19 Released - Now with Crop Protection Data! < Service news < News < About us < EMBL-EBI
http://www.ebi.ac.uk/about/news/service-news/ChEMBL-19-released
@32nmさんありがとうございます!
@32nm: @tonets You can see the number 1,404,752 at the release note http://www.ebi.ac.uk/about/news/service-news/ChEMBL-19-released
[http://twitter.com/32nm/status/537820242496344064]