ここでは化合物データとして &color(blueviolet){PubChem}; の一部を登録してみます。
使用するデータは
&color(orange){Compound_000000001_000025000.sdf.gz};
&color(red){*};&size(10){ftp.ncbi.nlm.nih.gov から取得(2016/08/01版)。$$$$の件数で23,238件};
まずは、データ格納用のSQLテーブルを作成します。
データ登録[[RDKit/Cartridge/PubChem/登録]]
&size(10){データ登録[[RDKit/Cartridge/PubChem/登録]]};
***テーブル作成 [#s70889dd]
化合物情報を収録するSQLテーブル&color(orangered){pubchem};を作ってみる
取得した&color(orange){Compound_000000001_000025000.sdf.gz};ファイルを見ると&color(darkviolet){構造式情報};の他に各種のプロパティーが書かれている。
なので、sdfのMDL MOL部分は&color(darkgreen){''MDLMOL''};フィールドに記載して、他の各種プロパティーはそのプロパティー名をもつフィールドを用意した。
RDKitは構造式検索、プロパティー演算に&color(magenta){''smiles''};を使用する。一応&color(blueviolet){PubChem};のデータにはこの&color(magenta){smiles};が入っているが、RDKitから作られる&color(magenta){''smiles''};を入れるフィールド(&color(magenta){RDKit_smiles};)も用意した。
|BGCOLOR(YELLOW):フィールド名|BGCOLOR(YELLOW):型|BGCOLOR(YELLOW):制約|BGCOLOR(YELLOW):備考|
|&color(darkgreen){''MDLMOL''};|text||M ENDまでの構造式(MDL MOL形式)|
|&color(magenta){''RDKit_smiles''};|&color(magenta){mol};||RDKitにより&color(darkgreen){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|||
&color(red){*};&size(10){&color(magenta){RDKit_smiles};のデータ型は、RDKitで付与された&color(magenta){mol};型である};
RDKitは &color(darkviolet){''smiles''}; を土台として構造式検索や各種のプロパティーを算出する。
そのため実際にはIDと&color(darkviolet){smiles};さえあれば事が足りる。
でも原子の座標情報がないので、webに構造式を表示するにはこの&color(darkviolet){smiles};から二次元座標を作る必要がある。
一応、&color(darkviolet){smiles};から二次元座標、三次元座標を作るツールはあるけど、もし登録するデータがMDL MOL/SDFなら、その座標情報から構造式の絵を作るのが望ましい。
&color(red){*};&size(10){&color(darkviolet){smiles};から座標を作ると間違ってはいないが、見慣れない形で表示されてしまう時がある};
とりあえずテーブル&color(orangered){pubchem};を作成します
#code(nonumber,nooutline,noblock,nomenu){{
[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/登録]]