ReactionMechanismGenerator / ARC

ARC - Automatic Rate Calculator
https://reactionmechanismgenerator.github.io/ARC/index.html
MIT License
43 stars 21 forks source link

Optical isomer number may be incorrect #413

Open xiaoruiDong opened 4 years ago

xiaoruiDong commented 4 years ago

Describe the bug

declaration I am directly calling the APIs. But from my preliminary check, the ARC workflow can be also suffering from this issue.

Currently, in ARC, the opticalIsomers used to create ARC input (file) is automatically generated from PointGroupCalculator.

https://github.com/ReactionMechanismGenerator/ARC/blob/b179c764b3f546c4bdcca34ae5b4064079408e4a/arc/common.py#L592

PointGroupCalculator is an RMG-Py built-in module calling the GNU Symmetry package and calculating the point group based on the provided geometry. However, the chirality of a certain conformer geometry is not equivalent to the chirality of the molecule. For example. as we know, propanol has no chiral center, but optical_isomers=2 will be assigned if I use the following geometry (lowest at B3LYP/CBSB7):

image

This is a geometry that cannot overlap with its mirror image. I would say if we are using Multi-Structure method to calculate thermo, the value is correctly assigned. However, we are calculating thermo with Single-Structure method, so it is improper to go with optical_isomers=2 and we should use optical_isomers=1, I think.

This issue is not rare. In my personal calculation database, 250/700 species are impacted.

Please correct me if my thought is wrong. Otherwise, we should fix this, and probably let users aware of this, especially for their previous job.

Fix the issue? A naive idea is that for wells, we can use RDKit to detect the chiral centers (based on CIP). However, this is not currently available for TSs.

alongd commented 4 years ago

Related to #337 and to https://github.com/ReactionMechanismGenerator/RMG-Py/issues/1790

ARC has a method to determine the chiral centers' number and type (ultimately based on RDKit), which can and should extend the Arkane optimcal_isomer from a Boolean to specifying the number of chiral centers by type(C, N, or =). I plan to use the RDKit wrapper for TSs you developed to eventually migrate both ARC and Arkane to this new type of chiral center enumeration.

xiaoruiDong commented 4 years ago

Thank you for letting me know about the previous effort. I agree we should allow optical_isomers>2. If we want to use RDKit as Backend, I am susceptible that whether RDKit is able to pick the chirality of N. But I think you have the trick to do so. If we want to use the RDKit Wrapper in ACS, then I need to do an experiment to check whether RDKit functions like EnumerateStereoIsomers can work on fake molecules (I mean those TSs which cannot be sanitized by RDKit).