Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Unexpected behavior of pattern matching with useChirality=True and recursive SMARTS

Ouverte
#9,247 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
52/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

Start by running the Python reproducer using HasSubstructMatch, the two SMARTS patterns, and useChirality=True on RDKit 2025.09.3. Compare direct and recursive SMARTS matching, then inspect the substructure-matching path for recursive queries. Done means the behavior is explained and, if confirmed as a bug, a regression test distinguishes the two cases.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug

I have a molecule of glucose, and a SMARTS pattern that is the same except one stereo center is undefined. The pattern matcher says it is a match,

>>m = Chem.MolFromSmiles("OC[C@H]1O[C@H](O)[C@H](O)[C@@H](O)[C@@H]1O")
>>patt1 = Chem.MolFromSmarts("OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O")
>>m.HasSubstructMatch(patt1, useChirality=True)

True

Now I try to take that pattern and make it a recursive query, just lumping all the other atoms into the first:

>>patt2 = Chem.MolFromSmarts("[$(OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O)]")
>>m.HasSubstructMatch(patt2, useChirality=True)

False

I would expect both of those to return the same thing. To find a match I have to set useChirality to false:

>>m.HasSubstructMatch(patt2, useChirality=False)

True

This is using RDKit version "2025.09.3".

Is this a bug or expected behavior? If it's a bug, is it fixable?

Langage dominant
HTML
Étoiles
3.6k
Forks
1.1k
Merge moyen
3 j 11 h
PR mergées (30 j)
35

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de rdkit/rdkit

Toutes les issues de rdkit/rdkit

Issues similaires

Plus d'issues Backend & API Design

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.