Hi Gustavo,

> template = 
> Chem.MolFromSmarts('[a]1(-[S](-*)(=[O])=[O]):[a]:[a]:[a]:[a]:[a]:1')

Unless things have changed since I last looked at the algorithm, you can't 
meaningfully pass a SMARTS-based query molecule into the MCS program, outside 
of a few simple cases.

It generates a SMARTS pattern based on the properties of the molecule. You 
asked it to CompareElements, but those [a] terms all have an atomic number of 0.

  >>> template = 
Chem.MolFromSmarts('[a#1]1(-[S](-*)(=[O])=[O]):[a#1]:[a#1]:[a#1]:[a#1]:[a#1]:1')
  >>> [a.GetAtomicNum() for a in template.GetAtoms()]
  [0, 16, 0, 8, 8, 0, 0, 0, 0, 0]

That's why your CompareAny search returns the #0 terms, like:

  
'[#16,#6](-[#0,#6])(=,-[#8,#9])(=,-[#8,#9])-[#0,#6]1:[#0,#6]:[#0,#6]:[#0,#6]:[#0,#6]:[#0,#7]:1'

> I would appreciate some pointers on how it would be possible to find the 
> maximum common substructure of 2 molecules, where in the template structure 
> some atoms may be *any*, but some other atoms must be fixed.

Perhaps with isotope labelling?

That is, label the "any" atoms as isotope 1, and label your -[S](=[O])(=[O])- 
as -[2S](=[3O])(=[3O])-

Then use rdFMCS.AtomCompare.CompareIsotopes .

If there's anything you don't want to match at all, give each atom a unique 
isotope value.

Best regards,

                                Andrew
                                da...@dalkescientific.com




_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to