全部产品
Search
文档中心

ApsaraDB RDS:Menggunakan Plugin RDKit

更新时间:Jun 25, 2025

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 % mol dan fp % fp

    Jika tingkat kesamaan yang dihitung berdasarkan koefisien Tanimoto kurang dari nilai variabel GUC rdkit.tanimoto_threshold, nilai TRUE dikembalikan.

  • mol # mol dan fp # fp

    Jika tingkat kesamaan yang dihitung berdasarkan koefisien Dice kurang dari nilai variabel GUC rdkit.dice_threshold, nilai TRUE dikembalikan.

  • mol @> mol

    Jika operand kiri mengandung operand kanan, nilai TRUE dikembalikan.

  • mol <@ mol

    Jika operand kanan mengandung operand kiri, nilai TRUE dikembalikan.