J'essaie d'explorer la cartouche RDkit sur Postgresql. J'ai installé RDkit sur Postgresql et j'essaie maintenant de parcourir la documentation sur http://rdkit.org /docs_temp/Cartridge.html. Ici, en essayant de comprendre la recherche de similitude, je suis tombé sur le code ci-dessous. Mais je ne parviens pas à le comprendre pleinement car je suis totalement nouveau à la fois avec Postgresql et RDkit.

chembl_23=# create or replace function get_mfp2_neighbors(smiles text)
    returns table(molregno integer, m mol, similarity double precision) as
  $$
  select molregno,m,tanimoto_sml(morganbv_fp(mol_from_smiles($1::cstring)),mfp2) as similarity
  from rdk.fps join rdk.mols using (molregno)
  where morganbv_fp(mol_from_smiles($1::cstring))%mfp2
  order by morganbv_fp(mol_from_smiles($1::cstring))<%>mfp2;
  $$ language sql stable ;

Mes questions sont -

1) Que signifie %mfp2 dans la clause WHERE ? - J'ai recherché sur Google et je suis tombé sur des pages où il est mentionné qu'il s'agit de l'opérateur LIKE %% en SQL. Mais ici, l'opérateur LIKE n'est pas utilisé, la signification est-elle toujours la même ?

2) Que signifie <%>mfp2 dans la clause ORDER BY ? - Je n'ai aucune idée de cet opérateur.

Quelqu'un peut-il m'aider s'il vous plaît à comprendre cela?

2
sopana 17 févr. 2020 à 15:24

1 réponse

Meilleure réponse

Ces opérateurs sont définis par RDkit, ils n'ont aucune signification inhérente à PostgreSQL lui-même (avec les types de données utilisés). Vous les trouverez documentés dans le contexte de RDkit sur la page à laquelle vous vous êtes lié. D'autres extensions ont des opérateurs avec la même "orthographe" (mais des types d'arguments différents) mais utilisés d'autres manières.

% : opérateur utilisé pour les recherches de similarité utilisant la similarité Tanimoto. Renvoie si oui ou non la similitude Tanimoto entre deux les empreintes digitales (deux valeurs sfp ou deux valeurs bfp) dépassent rdkit.tanimoto_threshold.

<%> : utilisé pour les recherches Tanimoto KNN (pour renvoyer des listes ordonnées de voisins).

Mfp2 est le nom d'une colonne, donc %mfp2 serait plus clairement écrit avec un espace someconstant % mfp2

2
jjanes 17 févr. 2020 à 15:26