Topik ini menjelaskan cara menggunakan Plugin RDKit dari ApsaraDB RDS for PostgreSQL untuk mengimplementasikan fungsi seperti komputasi molekuler dan pencarian.
Prasyarat
Instans RDS Anda harus menjalankan PostgreSQL 12.Informasi latar belakang
RDKit mendukung dua tipe data: tipe data mol yang digunakan untuk menggambarkan jenis molekul, dan tipe data fp yang digunakan untuk menggambarkan sidik jari molekul. Ini memungkinkan komputasi perbandingan, penghitungan kesamaan berdasarkan koefisien Tanimoto dan Dice, serta pengindeksan GiST.
Untuk informasi lebih lanjut tentang pernyataan SQL yang didukung oleh RDKit, kunjungi RDKit SQL.
Perhatian
- Fungsi input dan output berbasis tipe data mol sesuai dengan spesifikasi masukan baris molekul sederhana (SMILES).
- Fungsi input dan output berbasis tipe data fp sesuai dengan format bytea yang digunakan untuk menyimpan data biner.
Membuat Plugin RDKit
postgres=# create extension rdkit ;
CREATE EXTENSION
Pengaturan parameter default
postgres=# show rdkit.tanimoto_threshold ;
rdkit.tanimoto_threshold
--------------------------
0.5
(1 baris)
postgres=# show rdkit.dice_threshold;
rdkit.dice_threshold
----------------------
0.5
(1 baris)
Indeks yang didukung
- Indeks Pohon-B dan hash didukung untuk operasi komputasi perbandingan berbasis pada tipe data mol dan fp. Contoh:
CREATE INDEX molidx ON pgmol (mol); CREATE INDEX molidx ON pgmol (fp); - Indeks GiST didukung untuk operasi berikut berbasis pada tipe data mol dan fp: "mol % mol", "mol # mol", "mol @> mol", "mol <@ mol", "fp % fp", dan "fp # fp." Contoh:
CREATE INDEX molidx ON pgmol USING gist (mol);
Fungsi contoh
- Fungsi tanimoto_sml menghitung tingkat kesamaan berdasarkan koefisien Tanimoto.
postgres=# \df tanimoto_sml Daftar fungsi Skema | Nama | Tipe data hasil | Tipe data argumen | Tipe --------+--------------+------------------+---------------------+------ public | tanimoto_sml | double precision | bfp, bfp | func public | tanimoto_sml | double precision | sfp, sfp | func (2 baris) - Fungsi dice_sml menghitung tingkat kesamaan berdasarkan koefisien Dice.
postgres=# \df dice_sml Daftar fungsi Skema | Nama | Tipe data hasil | Tipe data argumen | Tipe --------+----------+------------------+---------------------+------ public | dice_sml | double precision | bfp, bfp | func public | dice_sml | double precision | sfp, sfp | func (2 baris) - Jika argumen kedua adalah substruktur dari argumen pertama, fungsi substruct mengembalikan nilai TRUE.
postgres=# \df substruct Daftar fungsi Skema | Nama | Tipe data hasil | Tipe data argumen | Tipe --------+-----------+------------------+---------------------+------ public | substruct | boolean | mol, mol | func public | substruct | boolean | mol, qmol | func public | substruct | boolean | reaction, reaction | func (3 baris)
Operasi dasar
mol % moldanfp % fpJika tingkat kesamaan yang dihitung berdasarkan koefisien Tanimoto kurang dari nilai variabel GUC rdkit.tanimoto_threshold, nilai TRUE dikembalikan.
mol # moldanfp # fpJika tingkat kesamaan yang dihitung berdasarkan koefisien Dice kurang dari nilai variabel GUC rdkit.dice_threshold, nilai TRUE dikembalikan.
mol @> molJika operand kiri mengandung operand kanan, nilai TRUE dikembalikan.
mol <@ molJika operand kanan mengandung operand kiri, nilai TRUE dikembalikan.