RDS PostgreSQL提供RDKit插件,支持化學分子計算、化學分子檢索等功能。
您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進行咨詢、交流和反饋,獲取更多關于插件的信息。
前提條件
實例版本為RDS PostgreSQL 12。
背景信息
RDKit插件支持mol數據類型(描述分子類型)和fp數據類型(描述分子指紋),在此基礎上支持比較運算、相似度計算(Tanimoto、Dice)和GiST索引。
更多RDKit插件SQL操作請參見RDKit SQL。
注意事項
mol數據類型的輸入、輸出函數遵循簡化分子線性輸入規范(SMILES)。
fp數據類型的輸入、輸出功能遵循bytea(存儲二進制數據的字段類型)格式。
創建插件
postgres=# create extension rdkit ;
CREATE EXTENSION
默認參數配置
postgres=# show rdkit.tanimoto_threshold ;
rdkit.tanimoto_threshold
--------------------------
0.5
(1 row)
postgres=# show rdkit.dice_threshold;
rdkit.dice_threshold
----------------------
0.5
(1 row)
索引支持
mol和fp的比較運算操作支持Btree索引、Hash索引。例如:
CREATE INDEX molidx ON pgmol (mol); CREATE INDEX molidx ON pgmol (fp);
mol的
%
、#
、@>
、<@
操作和fp結構的%
、#
操作支持Gist索引。例如:CREATE INDEX molidx ON pgmol USING gist (mol);
函數示例
tanimoto_sml函數計算tanimoto相似度。
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函數計算dice相似度。
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函數,當函數的第二個參數是第一個參數的子結構時,函數返回結果為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 % mol
、fp % fp
當Tanimoto相似度計算結果小于GUC配置參數rdkit.tanimoto_threshold時,該操作返回結果為TRUE。
mol # mol
、fp # fp
當Dice相似度計算結果小于GUC配置參數rdkit.dice_threshold時,該操作返回結果為TRUE。
mol @> mol
如果操作符
@>
左邊對象包含右邊對象,該操作返回結果為TRUE。mol <@ mol
如果操作符
<@
右邊對象包含左邊對象,該操作返回結果為TRUE。
文檔內容是否對您有幫助?