RDKit プラグインは、ApsaraDB RDS for PostgreSQL にケモインフォマティクス機能を追加します。これには、分子ストレージ、Tanimoto 係数および Dice 係数を使用した類似検索、部分構造検索、大規模な化合物ライブラリ向けの GiST インデックス作成などが含まれます。
前提条件
開始する前に、以下が準備できていることを確認してください。
PostgreSQL 12 を実行している RDS インスタンス
データ型
RDKit は、分子データを扱うためのデータ型を導入しています。
| 型 | 説明 | 入力フォーマット | 例 |
|---|---|---|---|
mol | 分子 | SMILES 記法 (簡易分子入力行入力仕様) | 'c1ccccc1'::mol (ベンゼン) |
fp | 分子指紋 | bytea バイナリ形式 | — |
bfp | ビットベクター指紋 | — | 承認者: tanimoto_sml、dice_sml |
sfp | スパースカウントベクター指紋 | — | 承認者: tanimoto_sml、dice_sml |
qmol | SMARTS 特徴を持つクエリ分子 | SMARTS | 'c1cccc[c,n]1'::qmol |
サポートされている SQL ステートメントの完全なリストについては、「RDKit SQL」をご参照ください。
RDKit プラグインの有効化
次のコマンドを実行して、拡張機能を作成します。
postgres=# CREATE EXTENSION rdkit;
CREATE EXTENSION類似度のしきい値の設定
演算子 % および # は、設定可能な GUC しきい値と分子の類似度を比較します。両方のデフォルト値は 0.5 です。
postgres=# SHOW rdkit.tanimoto_threshold;
rdkit.tanimoto_threshold
--------------------------
0.5
(1 row)
postgres=# SHOW rdkit.dice_threshold;
rdkit.dice_threshold
----------------------
0.5
(1 row)GUC パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
rdkit.tanimoto_threshold | % 演算子の Tanimoto 類似度のしきい値 | 0.5 |
rdkit.dice_threshold | # 演算子の Dice 類似度のしきい値 | 0.5 |
インデックスの作成
実行する予定の操作に基づいてインデックスのタイプを選択します。
B ツリーインデックスとハッシュインデックスは、mol および fp 列での比較演算をサポートします:
CREATE INDEX molidx ON pgmol (mol);
CREATE INDEX molidx ON pgmol (fp);GiST インデックスは、類似度および部分構造検索演算子 (mol % mol、mol # mol、mol @> mol、mol <@ mol、fp % fp、fp # fp) をサポートします:
CREATE INDEX molidx ON pgmol USING gist (mol);演算子
類似度演算子
| 演算子 | true を返す条件 |
|---|---|
mol % mol、fp % fp | Tanimoto 類似度 < rdkit.tanimoto_threshold |
mol # mol、fp # fp | Dice 類似度 < rdkit.dice_threshold |
部分構造演算子
| 演算子 | true を返す条件 |
|---|---|
mol @> mol | 左オペランドが右オペランドを部分構造として含む |
mol <@ mol | 右オペランドが左オペランドを部分構造として含む |
関数
tanimoto_sml
2つの指紋間のタニモト類似度を計算し、0 から 1 の間の double precision 値を返します。
postgres=# \df tanimoto_sml
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+--------------+------------------+---------------------+------
public | tanimoto_sml | double precision | bfp, bfp | func
public | tanimoto_sml | double precision | sfp, sfp | func
(2 rows)dice_sml
2つの指紋間のDice類似度を計算し、0から1の間の倍精度値を返します。
postgres=# \df dice_sml
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+----------+------------------+---------------------+------
public | dice_sml | double precision | bfp, bfp | func
public | dice_sml | double precision | sfp, sfp | func
(2 rows)substruct
2 番目の引数が最初の引数の部分構造である場合に true を返します。
postgres=# \df substruct
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+-----------+------------------+---------------------+------
public | substruct | boolean | mol, mol | func
public | substruct | boolean | mol, qmol | func
public | substruct | boolean | reaction, reaction | func
(3 rows)注意事項
molの入出力には SMILES 記法が使用されます。fpの入出力にはbyteaバイナリ形式が使用されます。