bug in MolBond::calcStereo2

ChemAxon 587f88acea

04-02-2005 20:05:59

I have 2 mol files, which are slightly different, but nevertheless have the same structure. Then I try to calculate the E/Z of the double bonds in the ring however, I get different answers! The first mol reports one is cis, one is trans; the other reports both as trans. I am using the calcStereo2() method for class MolBond.





This seems to be inconsistent with the Marvin Viewer which shows the cis-bond as trans in mol 1 (and mol 2). The other bond does not show E or Z in Marvin.





Since the double bond is part of a ring, is E/Z irrelevant anyways, and should marvin maybe return 0?





Hope you can help clarify this. Thanks!

ChemAxon 25dcd765a3

07-02-2005 11:24:57

calcStereo2() method returns 0, CIS, TRANS, or CIS|TRANS


It takes the bond a1=CTAtom1() and a4=CTAtom4() and calculates whether the a1 and a4 atoms are 0, CIS, TRANS, or CIS/TRANS.





calcStereo2(MolAtom atom1, MolAtom atom4) does the same but you can specify the two ligands of the bond, for which the calculation is done.


This means that if you call calcStereo2(a1,a4) for atoms a1 = 'O' and a4 = 'N' you will get TRANS.


However if you call calcStereo2(a1,a4) for atoms a1 = 'C' and a4 = 'N' you will get CIS.





I must call your attention that in this method the bond type and connectivity are not checked (thus being bound to this bond is not a requirement for atoms a1 and a4).





If you want to get the CIS / TRANS info for a bond I would suggest to use the Molecule getStereo2(a1,a2,a3,a4) , because this checks the connection and bond type also.





All of these methods are slightly different from E/Z, where the CIS or TRANS info is used, but a1 and a2 calculated by the Cahn Ingold Prelog Priority rules. In this case not CIS, TRANS but E or Z is returned.

User 9636a0ed2d

07-02-2005 19:51:55

volfi wrote:



All of these methods are slightly different from E/Z, where the CIS or TRANS info is used, but a1 and a2 calculated by the Cahn Ingold Prelog Priority rules. In this case not CIS, TRANS but E or Z is returned.
I guess this function does not do what I thought then. Makes sense now. So what I DO want, is to know the absolute E/Z of a (double) bond of my choosing, according to the priority rules. Is there a function to do this, where I only need to give the bond and no other arguments? It looks like what I want is:





Molecule m1;


MolBond mb = m1.getBond(xxx);


cistrans = m1.getStereo2(mb);





correct? Thanks for the help!

ChemAxon 25dcd765a3

08-02-2005 08:19:33

Code:



Molecule m1;


MolBond mb = m1.getBond(xxx);


cistrans = m1.getStereo2(mb);








Yes, that is what you need.