explicit H atoms in MolComparator

User 870ab5b546

12-09-2011 18:49:37

Hi,


I have a MolComparator that checks whether mapped atoms in the query have the same map number in the target.  I find that when I have mapped H atoms in the query, MolComparator.compareAtoms() is never called, so that I never get to see whether mapped explicit H atoms in the query are also explicit and mapped in the target.  (Unmapped, explicit H atoms in the query can be either explicit and unmapped or implicit in the target.)  How can I get MolSearch to call compareAtoms() for H atoms in the query?


-- Bob

ChemAxon 42004978e8

13-09-2011 09:41:29

Hi Bob,


 


You can achieve this functionality by


- converting all implicit hydrogens to explicit, HydrogenizeUtil.addHAtoms(Molecule)


- setting implicitHMatching mode to disabled, SearchOptions.setImplicitHMatching(SearchConstants#IMPLICIT_H_MATCHING_DISABLED)


Bye,


Robert

User 870ab5b546

13-09-2011 12:27:43

Thanks, that helped a lot.


Interestingly, if I do an order-sensitive search of this compound on itself:


<?xml version="1.0" ?>
<cml>
<MDocument>
<MChemicalStruct>
<molecule molID="m1">
<atomArray
atomID="a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11"
elementType="Cl C C C Cl H H Cl H H H"
x2="-7.411250114440918 -6.077570992612882 -4.7438918707848465 -3.4102127489568113 -2.076533627128775 -6.847570992612882 -5.307570992612882 -5.513891870784846 -3.973891870784846 -4.180212748956811 -2.6402127489568112"
y2="1.7324999570846558 2.502499957084656 1.7324999570846558 2.502499957084656 1.7324999570846562 3.8361790789126915 3.836179078912691 0.39882083525662004 0.3988208352566205 3.836179078912691 3.836179078912691"
/>
<bondArray>
<bond atomRefs2="a1 a2" order="1" />
<bond atomRefs2="a2 a3" order="1" />
<bond atomRefs2="a3 a4" order="1" />
<bond atomRefs2="a4 a5" order="1" />
<bond atomRefs2="a2 a6" order="1">
<bondStereo>W</bondStereo>
</bond>
<bond atomRefs2="a2 a7" order="1">
<bondStereo>H</bondStereo>
</bond>
<bond atomRefs2="a3 a8" order="1">
<bondStereo>W</bondStereo>
</bond>
<bond atomRefs2="a3 a9" order="1">
<bondStereo>H</bondStereo>
</bond>
<bond atomRefs2="a4 a10" order="1">
<bondStereo>W</bondStereo>
</bond>
<bond atomRefs2="a4 a11" order="1">
<bondStereo>H</bondStereo>
</bond>
</bondArray>
</molecule>
</MChemicalStruct>
</MDocument>
</cml>

H6 will match to both H10 and H11, even though H6 and H11 are diastereotopic.  However, if I change all H atoms to pseudoatoms, then H6 will not match to H11, which is the behavior I want.  My search parameters are:


            final MolSearchOptions searchOpts = new MolSearchOptions();
searchOpts.setSearchType(FULL);
searchOpts.setStereoSearchType(STEREO_SPECIFIC);
searchOpts.setExactBondMatching(true);
searchOpts.setStereoModel(STEREO_MODEL_LOCAL);
// required for diastereotopic atoms not to match
searchOpts.setImplicitHMatching(IMPLICIT_H_MATCHING_DISABLED);
searchOpts.setOrderSensitiveSearch(true); // want multiple results
final MolSearch search = new MolSearch();
search.setSearchOptions(searchOpts);
search.setTarget(respMol);
search.setQuery(authMol);

It would be nice if I didn't have to convert the H atoms to pseudoatoms.  Any ideas on how to elicit this behavior?

ChemAxon 42004978e8

19-09-2011 19:55:07

Hi Bob,


 


Regarding your query and target. I experienced both in 5.6 and in 5.4.1, that hydrogens 6 - 7 and 10 - 11 can be switched, but 6 will not match on 11 or 7 on 10/11. The switch between 6 and 7  (or between 10 and 11) is due to the fact, that no local stereo parity is calculated for atoms with two explicit hydrogens.  Two hydrogens mean that such a structure can't be a substructure of a stereo specific structure.


Bye,


Robert

User 870ab5b546

20-09-2011 15:01:52










rwagner wrote:

Regarding your query and target. I experienced both in 5.6 and in 5.4.1, that hydrogens 6 - 7 and 10 - 11 can be switched, but 6 will not match on 11 or 7 on 10/11. The switch between 6 and 7  (or between 10 and 11) is due to the fact, that no local stereo parity is calculated for atoms with two explicit hydrogens.  Two hydrogens mean that such a structure can't be a substructure of a stereo specific structure.



I understand why as a general rule you don't want to calculate local parity of atoms that bear two H atoms, but can you provide an option that would allow it to be calculated?  Because, as I have told you, there are circumstances (e.g., when predicting NMR spectra) where the local parity of H atoms does indeed matter.

ChemAxon 25dcd765a3

21-09-2011 10:07:55










bobgr wrote:

I understand why as a general rule you don't want to calculate local parity of atoms that bear two H atoms, but can you provide an option that would allow it to be calculated?  Because, as I have told you, there are circumstances (e.g., when predicting NMR spectra) where the local parity of H atoms does indeed matter.



Could you tell me more about this circumstances when the local parity of atoms with two explicit Hydrogen atoms is important? Until now I thought that these Hydrogen atoms are not distinguishable.

User 870ab5b546

21-09-2011 12:53:55

They are diastereotopic, hence they are most definitely distinguishable.  They will have different chemical shifts in their 1H NMR spectra, they may even have different reactivities.


Diastereotopic atoms are those that have the same connectivity but cannot be related by a symmetry operation or by rotation about σ bonds.  For example, the two H atoms on C(3) of 2-butanol are diasterotopic.  In the example above, the compound has a plane of symmetry that contains C(2) and its attached H and Cl, and this plane of symmetry relates one C(1) H to one C(3) H, but it does not relate the two C(1) H atoms to one another, nor the two C(3) H atoms.


An easy way to see if two H atoms are diastereotopic is to replace one with a D, then (in a separate molecule) the other.  If the two substitutions give you diastereomers, then the two H atoms are diastereotopic.  If they give you enantiomers, they are enantiotopic.  If they give you identical compounds, they are homotopic.  


Another way to tell if two H atoms are heterotopic (not homotopic) is to see if you can call one of them pro-R, and the other pro-S; in other words, what you describe as local parity.  But for our purposes, it would be important to distinguish diastereotopic from enantiotopic.  


Everything I've said refers to atoms other than H as well, but the deficiency in JChem that I've identified does not appear to extend to other atoms.

ChemAxon 25dcd765a3

28-09-2011 17:22:44

I understand now, you are right.


We will consider this issue and if it does not kills our structure search we will fix it.

ChemAxon 25dcd765a3

03-10-2011 09:51:00

Marvin 5.7 is almost out, but we can hopefully fix it in 5.8.

User 870ab5b546

03-10-2011 12:46:33

OK.  I have a workaround (convert the H atoms to pseudoatoms), so I can be patient.