Plugin RDKit menambahkan kemampuan kemoinformatika ke ApsaraDB RDS for PostgreSQL, termasuk penyimpanan molekul, pencarian kemiripan menggunakan koefisien Tanimoto dan Dice, pencarian substruktur, serta pengindeksan GiST untuk pustaka senyawa besar.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans RDS yang menjalankan PostgreSQL 12
Tipe data
RDKit memperkenalkan tipe data untuk bekerja dengan data molekul.
| Type | Description | Input format | Example |
|---|---|---|---|
mol | Molekul | SMILES (simplified molecular input line entry specification) | 'c1ccccc1'::mol (benzena) |
fp | Sidik jari molekul | bytea dalam format biner | — |
bfp | Sidik jari vektor bit | — | Diterima oleh tanimoto_sml, dice_sml |
sfp | Sidik jari vektor hitungan jarang | — | Diterima oleh tanimoto_sml, dice_sml |
qmol | Molekul kueri dengan fitur SMARTS | SMARTS | 'c1cccc[c,n]1'::qmol |
Untuk daftar lengkap pernyataan SQL yang didukung, lihat RDKit SQL.
Aktifkan plugin RDKit
Jalankan perintah berikut untuk membuat ekstensi:
postgres=# CREATE EXTENSION rdkit;
CREATE EXTENSIONKonfigurasikan ambang batas kemiripan
Operator % dan # membandingkan kemiripan molekul terhadap ambang batas GUC yang dapat dikonfigurasi. Nilai default untuk keduanya adalah 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)Parameter GUC
| Parameter | Description | Default |
|---|---|---|
rdkit.tanimoto_threshold | Ambang batas kemiripan Tanimoto untuk operator % | 0.5 |
rdkit.dice_threshold | Ambang batas kemiripan Dice untuk operator # | 0.5 |
Buat indeks
Pilih jenis indeks berdasarkan operasi yang akan dijalankan.
Indeks Pohon-B dan hash mendukung operasi perbandingan pada kolom mol dan fp:
CREATE INDEX molidx ON pgmol (mol);
CREATE INDEX molidx ON pgmol (fp);Indeks GiST mendukung operator pencarian kemiripan dan substruktur (mol % mol, mol # mol, mol @> mol, mol <@ mol, fp % fp, fp # fp):
CREATE INDEX molidx ON pgmol USING gist (mol);Operator
Operator kemiripan
| Operator | Mengembalikan true ketika |
|---|---|
mol % mol, fp % fp | Kemiripan Tanimoto < rdkit.tanimoto_threshold |
mol # mol, fp # fp | Kemiripan Dice < rdkit.dice_threshold |
Operator substruktur
| Operator | Mengembalikan true ketika |
|---|---|
mol @> mol | Operan kiri mengandung operan kanan sebagai substruktur |
mol <@ mol | Operan kanan mengandung operan kiri sebagai substruktur |
Fungsi
tanimoto_sml
Menghitung kemiripan Tanimoto antara dua sidik jari dan mengembalikan nilai double precision antara 0 dan 1.
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
Menghitung kemiripan Dice antara dua sidik jari dan mengembalikan nilai double precision antara 0 dan 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
Mengembalikan true jika argumen kedua merupakan substruktur dari argumen pertama.
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)Catatan penggunaan
Input dan output
molmenggunakan SMILES.Input dan output
fpmenggunakan format binerbytea.