LoginSignup
9
14

More than 5 years have passed since last update.

ChEMBLから全化合物データをダウンロードして分割したsdfファイルをつくる

Last updated at Posted at 2014-11-27

概要

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月更新版) を使います.

chemblのsdfをwget
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スクリプトを使います.

sdf_sep.py
#!/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に対し

sdf_sep.pyの実行
python sdf_sep.py chembl_19.sdf

とすると,実行したディレクトリに分割された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]

9
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
14