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

Reply via email to