Thanks to both for your replies. That's more or less what I was thinking of - I just wanted to make sure that there was not something already available before starting coding :-) I will get back to the list once I have something ready.
Cheers, p. > On 31 Oct 2014, at 05:17, Greg Landrum <greg.land...@gmail.com> wrote: > > The reply that Ling forwards has one approach to doing this. > > It's a bit easier for someone who is willing to do some C++ work.[1] > > One could imagine writing a function prepareForResonanceFormMatching(ROMol > &m) (or some such thing) that would be applied to the *query* molecule that > does the following: > - identifies the groups that need to be resonance-symmetrized > - changes the resonance bonds to Query bonds that match single or double > (possibly also aromatic?) > - neutralizes any charges on resonating atoms in the group. > > The last step is important because the query C(O)O matches the molecule > C(O)[O-] twice, but C(O)[O-] only matches once: > > In [11]: > Chem.MolFromSmiles('C(O)[O-]').GetSubstructMatches(Chem.MolFromSmiles('C(O)O'),uniquify=False) > Out[11]: ((0, 1, 2), (0, 2, 1)) > > In [12]: > Chem.MolFromSmiles('C(O)[O-]').GetSubstructMatches(Chem.MolFromSmiles('C([O-])O'),uniquify=False) > > Out[12]: ((0, 2, 1),) > > I suspect such a function would be useful to multiple people. > > For identifying the groups that are resonance symmetrized: though this could > be done using a set of particular patterns, it may be better to think about > doing it more generally by having it find resonance systems.[2] The flag > Bond.getIsConjugated(), set during sanitization, is probably useful for this. > > > -greg > [1] well, to the extent that anything is ever "easier" in C++ > [2] this would allow finding the substructure matches within molecules like > C1=C(C)C=CC=CC=C1 > > >> On Fri, Oct 31, 2014 at 2:09 AM, S.L. Chan <slch...@yahoo.com> wrote: >> Dear Paolo, >> >> I have asked a very similar question last year. This was what Greg said. >> >> Ling >> >> Re: [Rdkit-discuss] atom equivalence for substructure matching >> >> >> >> >> >> >> >> >> Re: [Rdkit-discuss] atom equivalence for substructure ma... >> Skip to site navigation (Press enter) >> View on www.mail-archive.com >> Preview by Yahoo >> >> >> From: Paolo Tosco <paolo.to...@unito.it> >> To: "rdkit-discuss@lists.sourceforge.net" >> <rdkit-discuss@lists.sourceforge.net> >> Sent: Thursday, October 30, 2014 4:26 PM >> Subject: [Rdkit-discuss] GetSubstructMatches() and resonance structures >> >> Dear all, >> >> The following code snippet compares two resonance structures of formate >> anion: >> >> import rdkit >> from rdkit import Chem >> >> mol1=Chem.MolFromSmiles('C([O-])=O') >> mol2=Chem.MolFromSmiles('C(=O)[O-]') >> mol1.GetSubstructMatches(mol2, uniquify = False) >> ((0, 2, 1),) >> >> mol1.GetSubstructMatches(mol1, uniquify = False) >> ((0, 1, 2),) >> >> I would rather like to get, in both cases, the following output: >> ((0, 1, 2),(0, 2, 1)) >> >> which would account for the carboxylate group symmetry due to resonance. >> The same applies to amidinium, guanidinium, etc. >> >> Is that currently feasible within the RDKit API? >> >> Thanks in advance, cheers >> Paolo >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Rdkit-discuss mailing list >> Rdkit-discuss@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> Rdkit-discuss mailing list >> Rdkit-discuss@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >
------------------------------------------------------------------------------
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss