On 24/03/2011 16:22, Izhar Wallach wrote:
> Hi,
>
> I'm wondering what is the reason that the 'Match' method in the
> 'OBSmartsPattern' class automatically adds hydrogens to a molecule if the
> SMARTS pattern has a hydrogen in it.
> It seems to me that this hidden addition of hydrogens has a couple
> limitations:
> First, the indices that the 'GetUMapList' method reruns may be wrong with
> respect to the query molecule. This is particularly problematic if one wants
> to map the indices back to the atoms in the query molecule.
> Second, it modifies the input molecule such that for example checking for
> patterns under different PH conditions is hard.
The reason is so that SMARTS [C]([H])([H])([H])[H] matches SMILES C and
not SMILES CC.
The code in OBSmartsPattern::Match(OBMol &mol,bool single) is
if(_pat->hasExplicitH) //The SMARTS pattern contains [H]
{
//Do matching on a copy of mol with explict hydrogens
OBMol tmol = mol;
tmol.AddHydrogens(false,false);
return(matcher.match(tmol,_pat,_mlist,single));
}
The code in the other version of Match() is similar.
Looking at this code it would seem that
a) it is a _copy_ of the input molecule that is modified (as the comment
says)
b) the hydrogens will be added with atom indices larger than any of the
existing atoms, the indices of which will not be changed. GetUMapList()
may return indices that were not in the original molecule, but they will
be hydrogens.
Do you find in practice that this (theoretical) interpretation does not
apply?
If the explicit H in the SMARTS pattern is '#1', OBSmartsPattern does
not add explicit H to the molecule. In the development code (for v2.3.1)
the -s option on the command-line now does add it. See the thread
started by by Fredrik Wallner on the Openbabel-Discuss list on 15 Nov 2010.
Chris
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
OpenBabel-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbabel-devel