すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ケモインフォマティクスと分子検索 (RDKit)

最終更新日:Mar 29, 2026

RDKit プラグインは、ApsaraDB RDS for PostgreSQL にケモインフォマティクス機能を追加します。これには、分子ストレージ、Tanimoto 係数および Dice 係数を使用した類似検索、部分構造検索、大規模な化合物ライブラリ向けの GiST インデックス作成などが含まれます。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • PostgreSQL 12 を実行している RDS インスタンス

データ型

RDKit は、分子データを扱うためのデータ型を導入しています。

説明入力フォーマット
mol分子SMILES 記法 (簡易分子入力行入力仕様)'c1ccccc1'::mol (ベンゼン)
fp分子指紋bytea バイナリ形式
bfpビットベクター指紋承認者: tanimoto_smldice_sml
sfpスパースカウントベクター指紋承認者: tanimoto_smldice_sml
qmolSMARTS 特徴を持つクエリ分子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 % molmol # molmol @> molmol <@ molfp % fpfp # fp) をサポートします:

CREATE INDEX molidx ON pgmol USING gist (mol);

演算子

類似度演算子

演算子true を返す条件
mol % molfp % fpTanimoto 類似度 < rdkit.tanimoto_threshold
mol # molfp # fpDice 類似度 < 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 バイナリ形式が使用されます。