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

ApsaraDB RDS:RDKitプラグインの使用

最終更新日:Jan 11, 2024

このトピックでは、ApsaraDB RDS for PostgreSQLのRDKitプラグインを使用して、分子コンピューティングや検索などの機能を実装する方法について説明します。

前提条件

RDSインスタンスはPostgreSQL 12を実行します。

背景情報

RDKitは、分子タイプを記述するために使用されるmolデータ型と、分子フィンガープリントを記述するために使用されるfpデータ型の2つのデータ型をサポートします。 これにより、比較計算、Tanimoto係数とDice係数に基づく類似度計算、およびGiSTインデックス付けが可能になります。

RDKitでサポートされているSQL文の詳細については、RDKit SQLをご参照ください。

注意事項

  • molデータ型に基づく入力および出力関数は、簡略化された分子入力ラインエントリ仕様 (SMILES) に準拠しています。
  • fpデータ型に基づく入出力関数は、バイナリデータの格納に使用されるbytea形式に準拠しています。

RDKitプラグインの作成

postgres=# create extension rdkit;
拡張の作成 

デフォルトのパラメーター設定

postgres=# show rdkit.tanimoto_threshold;
 rdkit.tanimoto_threshold
--------------------------
 0.5
(1行)

postgres=# show rdkit.dice_threshold;
 rdkit.dice_threshold
----------------------
 0.5
(1行) 

サポートされるインデックス

  • molおよびfpデータ型に基づく比較計算操作では、Bツリーおよびハッシュインデックスがサポートされます。 例:
    インデックスmolidx ON pgmol (mol) を作成します。CREATE INDEX molidx ON pgmol (fp); 
  • GiSTインデックスは、molとfpのデータ型に基づく操作でサポートされます。「mol % mol」、「mol # mol」、「mol @> mol」、「mol <@ mol」、「fp % fp」、および「fp # fp」。例:
    CREATE INDEX molidx ON pgmol USING gist (mol);

サンプル関数

  • tanimoto_sml関数は、Tanimoto係数に基づいて類似度を計算する。
    postgres=# \df tanimoto_sml
                               関数の一覧
     スキーマ | 名前 | 結果データ型 | 引数データ型 | 型
    -------- -------------- ------------------ --------------------- ---------
     public | tanimoto_sml | 倍精度 | bfp、bfp | func
     public | tanimoto_sml | 倍精度 | sfp, sfp | func
    (2行) 
  • dice_sml関数は、Dice係数に基づいて類似度を計算します。
    postgres=# \df dice_sml
                             関数の一覧
     スキーマ | 名前 | 結果データ型 | 引数データ型 | 型
    ------- ---------- ------------------ --------------------- --------
     public | dice_sml | 倍精度 | bfp、bfp | func
     public | dice_sml | 倍精度 | sfp, sfp | func
    (2行) 
  • 2番目の引数が1番目の引数のサブ構造である場合、substruct関数はTRUE値を返します。
    postgres=# \dfサブ構造
                             関数の一覧
     スキーマ | 名前 | 結果データ型 | 引数データ型 | 型
    ------- ----------- ------------------ --------------------- --------
     public | substruct | boolean | mol, mol | func
     public | substruct | boolean | mol, qmol | func
     public | substruct | boolean | 反応、反応 | func
    (3行) 

基本操作

  • mol % molおよびfp % fp

    Tanimoto係数に基づいて計算された類似度が、rdkit.tanimoto_threshold GUC変数の値よりも小さい場合、TRUE値が返されます。

  • mol # molおよびfp # fp

    Dice係数に基づいて計算された類似度がrdkit.dice_threshold GUC変数の値より小さい場合、TRUE値が返されます。

  • mol @> mol

    左オペランドに右オペランドが含まれている場合、TRUE値が返されます。

  • mol <@ mol

    右オペランドに左オペランドが含まれている場合、TRUE値が返されます。