Le plug-in RDKit ajoute des fonctionnalités de chémoinformatique à ApsaraDB RDS for PostgreSQL, notamment le stockage de molécules, la recherche par similarité à l'aide des coefficients Tanimoto et Dice, la recherche de sous-structures ainsi que l'indexation GiST pour les grandes bibliothèques de composés.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance RDS exécutant PostgreSQL 12
Types de données
RDKit introduit des types de données pour manipuler les données moléculaires.
| Type | Description | Format d'entrée | Exemple |
|---|---|---|---|
mol |
Molécule | SMILES (simplified molecular input line entry specification) | 'c1ccccc1'::mol (benzène) |
fp |
Empreinte moléculaire | Format binaire bytea |
— |
bfp |
Empreinte sous forme de vecteur de bits | — | Accepté par tanimoto_sml, dice_sml |
sfp |
Empreinte sous forme de vecteur de comptage clairsemé | — | Accepté par tanimoto_sml, dice_sml |
qmol |
Molécule de requête avec fonctionnalités SMARTS | SMARTS | 'c1cccc[c,n]1'::qmol |
Pour obtenir la liste complète des instructions SQL prises en charge, consultez RDKit SQL.
Activer le plug-in RDKit
Exécutez la commande suivante pour créer l'extension :
postgres=# CREATE EXTENSION rdkit;
CREATE EXTENSION
Configurer les seuils de similarité
Les opérateurs % et # comparent la similarité moléculaire selon des seuils GUC configurables. La valeur par défaut est 0.5 pour les deux.
postgres=# SHOW rdkit.tanimoto_threshold;
rdkit.tanimoto_threshold
--------------------------
0.5
(1 row)
postgres=# SHOW rdkit.dice_threshold;
rdkit.dice_threshold
----------------------
0.5
(1 row)
Paramètres GUC
| Paramètre | Description | Valeur par défaut |
|---|---|---|
rdkit.tanimoto_threshold |
Seuil de similarité Tanimoto pour l'opérateur % |
0.5 |
rdkit.dice_threshold |
Seuil de similarité Dice pour l'opérateur # |
0.5 |
Créer des index
Choisissez un type d'index selon l'opération prévue.
Les index B-tree et hash prennent en charge les opérations de comparaison sur les colonnes mol et fp :
CREATE INDEX molidx ON pgmol (mol);
CREATE INDEX molidx ON pgmol (fp);
Les index GiST prennent en charge les opérateurs de recherche par similarité et par sous-structure (mol % mol, mol # mol, mol @> mol, mol <@ mol, fp % fp, fp # fp) :
CREATE INDEX molidx ON pgmol USING gist (mol);
Opérateurs
Opérateurs de similarité
| Opérateur | **Renvoie true lorsque** |
|---|---|
mol % mol, fp % fp |
Similarité Tanimoto < rdkit.tanimoto_threshold |
mol # mol, fp # fp |
Similarité Dice < rdkit.dice_threshold |
Opérateurs de sous-structure
| Opérateur | **Renvoie true lorsque** |
|---|---|
mol @> mol |
L'opérande de gauche contient l'opérande de droite en tant que sous-structure |
mol <@ mol |
L'opérande de droite contient l'opérande de gauche en tant que sous-structure |
Fonctions
tanimoto_sml
Calcule la similarité Tanimoto entre deux empreintes et renvoie une valeur double precision comprise entre 0 et 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
Calcule la similarité Dice entre deux empreintes et renvoie une valeur double precision comprise entre 0 et 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
Renvoie true si le deuxième argument est une sous-structure du premier.
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)
Remarques d'utilisation
L'entrée et la sortie
molutilisent le format SMILES.L'entrée et la sortie
fputilisent le format binairebytea.