O plug-in RDKit adiciona recursos de quimioinformática ao ApsaraDB RDS for PostgreSQL, incluindo armazenamento molecular, busca por similaridade com coeficientes de Tanimoto e Dice, busca por subestrutura e indexação GiST para grandes bibliotecas de compostos.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância RDS executando PostgreSQL 12
Tipos de dados
O RDKit introduz tipos de dados para manipulação de informações moleculares.
|
Tipo |
Descrição |
Formato de entrada |
Exemplo |
|
|
Molécula |
SMILES (especificação simplificada de entrada linear molecular) |
|
|
|
Fingerprint molecular |
Formato binário |
— |
|
|
Fingerprint de vetor de bits |
— |
Aceito por |
|
|
Fingerprint de vetor de contagem esparsa |
— |
Aceito por |
|
|
Molécula de consulta com recursos SMARTS |
SMARTS |
|
Para obter a lista completa de instruções SQL compatíveis, consulte RDKit SQL.
Ative o plug-in RDKit
Execute o comando a seguir para crie a extensão:
postgres=# CREATE EXTENSION rdkit;
CREATE EXTENSION
Configure os limiares de similaridade
Os operadores % e # comparam a similaridade molecular com base em limiares GUC configuráveis. O valor padrão para ambos é 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)
Parâmetros GUC
|
Parâmetro |
Descrição |
Padrão |
|
|
Limiar de similaridade de Tanimoto para o operador |
|
|
|
Limiar de similaridade de Dice para o operador |
|
Crie índices
Escolha um tipo de índice conforme a operação que pretende execute.
Índices B-tree e hash aceitam operações de comparação em colunas mol e fp:
CREATE INDEX molidx ON pgmol (mol);
CREATE INDEX molidx ON pgmol (fp);
Índices GiST aceitam operadores de busca por similaridade e subestrutura (mol % mol, mol # mol, mol @> mol, mol <@ mol, fp % fp, fp # fp):
CREATE INDEX molidx ON pgmol USING gist (mol);
Operadores
Operadores de similaridade
|
Operador |
**Retorna |
|
|
Similaridade de Tanimoto < |
|
|
Similaridade de Dice < |
Operadores de subestrutura
|
Operador |
**Retorna |
|
|
O operando à esquerda contém o da direita como subestrutura |
|
|
O operando à direita contém o da esquerda como subestrutura |
Funções
tanimoto_sml
Calcula a similaridade de Tanimoto entre dois fingerprints e retorna um valor double precision entre 0 e 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
Calcula a similaridade de Dice entre dois fingerprints e retorna um valor double precision entre 0 e 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
Retorna true se o segundo argumento for uma subestrutura do primeiro.
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)
Notas de uso
A entrada e a saída de
molusam SMILES.A entrada e a saída de
fpusam o formato bináriobytea.