All Products
Search
Document Center

ApsaraDB RDS:Kemoinformatika dan pengambilan molekul (RDKit)

Last Updated:Mar 29, 2026

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.

TypeDescriptionInput formatExample
molMolekulSMILES (simplified molecular input line entry specification)'c1ccccc1'::mol (benzena)
fpSidik jari molekulbytea dalam format biner
bfpSidik jari vektor bitDiterima oleh tanimoto_sml, dice_sml
sfpSidik jari vektor hitungan jarangDiterima oleh tanimoto_sml, dice_sml
qmolMolekul kueri dengan fitur SMARTSSMARTS'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 EXTENSION

Konfigurasikan 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

ParameterDescriptionDefault
rdkit.tanimoto_thresholdAmbang batas kemiripan Tanimoto untuk operator %0.5
rdkit.dice_thresholdAmbang 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

OperatorMengembalikan true ketika
mol % mol, fp % fpKemiripan Tanimoto < rdkit.tanimoto_threshold
mol # mol, fp # fpKemiripan Dice < rdkit.dice_threshold

Operator substruktur

OperatorMengembalikan true ketika
mol @> molOperan kiri mengandung operan kanan sebagai substruktur
mol <@ molOperan 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 mol menggunakan SMILES.

  • Input dan output fp menggunakan format biner bytea.