ここでは化合物データとして PubChem の一部を登録してみます。
使用するデータは
Compound_000000001_000025000.sdf.gz
*ftp.ncbi.nlm.nih.gov から取得(2016/08/01版)。$$$$の件数で23,238件
まずは、データ格納用のSQLテーブルを作成します。
データ登録RDKit/Cartridge/PubChem/登録
化合物情報を収録するSQLテーブルpubchemを作ってみる
取得したCompound_000000001_000025000.sdf.gzファイルを見ると構造式情報の他に各種のプロパティーが書かれている。
なので、sdfのMDL MOL部分はMDLMOLフィールドに記載して、他の各種プロパティーはそのプロパティー名をもつフィールドを用意した。
RDKitは構造式検索、プロパティー演算にsmilesを使用する。一応PubChemのデータにはこのsmilesが入っているが、RDKitから作られるsmilesを入れるフィールド(RDKit_smiles)も用意した。
| フィールド名 | 型 | 制約 | 備考 |
| MDLMOL | text | M ENDまでの構造式(MDL MOL形式) | |
| RDKit_smiles | mol | RDKitによりMDLMOLから作成 | |
| PUBCHEM_COMPOUND_CID | integer | primary key | 主キー |
| PUBCHEM_COMPOUND_CANONICALIZED | boolean | ||
| PUBCHEM_CACTVS_COMPLEXITY | smallint | ||
| PUBCHEM_CACTVS_HBOND_ACCEPTOR | smallint | ||
| PUBCHEM_CACTVS_HBOND_DONOR | smallint | ||
| PUBCHEM_CACTVS_ROTATABLE_BOND | smallint | ||
| PUBCHEM_CACTVS_SUBSKEYS | text | ||
| PUBCHEM_IUPAC_OPENEYE_NAME | text | ||
| PUBCHEM_IUPAC_CAS_NAME | text | ||
| PUBCHEM_IUPAC_NAME | text | ||
| PUBCHEM_IUPAC_SYSTEMATIC_NAME | text | ||
| PUBCHEM_IUPAC_TRADITIONAL_NAME | text | ||
| PUBCHEM_IUPAC_INCHI | text | ||
| PUBCHEM_IUPAC_INCHIKEY | text | ||
| PUBCHEM_XLOGP3_AA | numeric(20,10) | ||
| PUBCHEM_XLOGP3 | numeric(20,10) | ||
| PUBCHEM_EXACT_MASS | numeric(20,10) | ||
| PUBCHEM_MOLECULAR_FORMULA | varchar(30) | ||
| PUBCHEM_MOLECULAR_WEIGHT | numeric(20,10) | ||
| PUBCHEM_OPENEYE_CAN_SMILES | text | ||
| PUBCHEM_OPENEYE_ISO_SMILES | text | ||
| PUBCHEM_CACTVS_TPSA | numeric(20,10) | ||
| PUBCHEM_MONOISOTOPIC_WEIGHT | numeric(20,10) | ||
| PUBCHEM_TOTAL_CHARGE | smallint | ||
| PUBCHEM_HEAVY_ATOM_COUNT | smallint | ||
| PUBCHEM_ATOM_DEF_STEREO_COUNT | smallint | ||
| PUBCHEM_ATOM_UDEF_STEREO_COUNT | smallint | ||
| PUBCHEM_BOND_DEF_STEREO_COUNT | smallint | ||
| PUBCHEM_BOND_UDEF_STEREO_COUNT | smallint | ||
| PUBCHEM_ISOTOPIC_ATOM_COUNT | smallint | ||
| PUBCHEM_COMPONENT_COUNT | smallint | ||
| PUBCHEM_CACTVS_TAUTO_COUNT | smallint | ||
| PUBCHEM_NONSTANDARDBOND | text ARRAY | ||
| PUBCHEM_COORDINATE_TYPE | smallint ARRAY | ||
| PUBCHEM_BONDANNOTATIONS | text ARRAY |
*RDKit_smilesのデータ型は、RDKitで付与されたmol型である
RDKitは smiles を土台として構造式検索や各種のプロパティーを算出する。
そのため実際にはIDとsmilesさえあれば事が足りる。
でも原子の座標情報がないので、webに構造式を表示するにはこのsmilesから二次元座標を作る必要がある。
一応、smilesから二次元座標、三次元座標を作るツールはあるけど、もし登録するデータがMDL MOL/SDFなら、その座標情報から構造式の絵を作るのが望ましい。
*smilesから座標を作ると間違ってはいないが、見慣れない形で表示されてしまう時がある
とりあえずテーブルpubchemを作成します
[root@c ~]# psql -U caster -d chemdb
psql (9.2.15)
"help" でヘルプを表示します.
chemdb=> CREATE TABLE pubchem(
MDLMOL text, --- MDL MOL形式
RDKit_smiles mol, --- RDKitのデータ型
PUBCHEM_COMPOUND_CID integer primary key, --- ID
PUBCHEM_COMPOUND_CANONICALIZED boolean,
PUBCHEM_CACTVS_COMPLEXITY smallint,
PUBCHEM_CACTVS_HBOND_ACCEPTOR smallint,
PUBCHEM_CACTVS_HBOND_DONOR smallint,
PUBCHEM_CACTVS_ROTATABLE_BOND smallint,
PUBCHEM_CACTVS_SUBSKEYS text,
PUBCHEM_IUPAC_OPENEYE_NAME text,
PUBCHEM_IUPAC_CAS_NAME text,
PUBCHEM_IUPAC_NAME text,
PUBCHEM_IUPAC_SYSTEMATIC_NAME text,
PUBCHEM_IUPAC_TRADITIONAL_NAME text,
PUBCHEM_IUPAC_INCHI text,
PUBCHEM_IUPAC_INCHIKEY text,
PUBCHEM_XLOGP3_AA numeric(20,10),
PUBCHEM_XLOGP3 numeric(20,10),
PUBCHEM_EXACT_MASS numeric(20,10),
PUBCHEM_MOLECULAR_FORMULA varchar(30),
PUBCHEM_MOLECULAR_WEIGHT numeric(20,10),
PUBCHEM_OPENEYE_CAN_SMILES text,
PUBCHEM_OPENEYE_ISO_SMILES text,
PUBCHEM_CACTVS_TPSA numeric(20,10),
PUBCHEM_MONOISOTOPIC_WEIGHT numeric(20,10),
PUBCHEM_TOTAL_CHARGE smallint,
PUBCHEM_HEAVY_ATOM_COUNT smallint,
PUBCHEM_ATOM_DEF_STEREO_COUNT smallint,
PUBCHEM_ATOM_UDEF_STEREO_COUNT smallint,
PUBCHEM_BOND_DEF_STEREO_COUNT smallint,
PUBCHEM_BOND_UDEF_STEREO_COUNT smallint,
PUBCHEM_ISOTOPIC_ATOM_COUNT smallint,
PUBCHEM_COMPONENT_COUNT smallint,
PUBCHEM_CACTVS_TAUTO_COUNT smallint,
PUBCHEM_NONSTANDARDBOND text ARRAY,
PUBCHEM_COORDINATE_TYPE smallint ARRAY,
PUBCHEM_BONDANNOTATIONS text ARRAY
);
NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"pubchem"に暗黙的なインデックス"pubchem_pkey"を作成します
CREATE TABLE
chemdb=>
chemdb=>
chemdb=> \dti+
リレーションの一覧
スキーマ | 名前 | 型 | 所有者 | テーブル | サイズ | 説明
----------+--------------+--------------+--------+----------+------------+------
public | pubchem | テーブル | caster | | 8192 bytes |
public | pubchem_pkey | インデックス | caster | pubchem | 8192 bytes |
(2 行)
chemdb=>
chemdb=> \q
[postgres@c ~]$次にデータを登録してみます RDKit/Cartridge/PubChem/登録