Closed hwpang closed 2 years ago
@hwpang , @kspieks Thanks for bringing it up. In my opinion, there needs to be
@xiaoruiDong Thanks for the comments! I will work on this soon!
Hi, if I may comment, I think that generally the multiplicity is conserved across a reactions (it's called an "adiabatic" reaction), other than special cases where we have inter-surface crossing.
For example, the multiplicity of C=C + C=C <=> C[CH2] + [CH]=C
is 1 for the reactants, and 1 for the products as well: the two products have opposite radical spins (they are entangled), so overall it is 1.
For C1CC1 = [CH2] + C=C
, I think that the [CH2]
species is a singlet carbene, so it's multiplicity is also 1.
There are definitely issues with determining the correct multiplicity for reactions from the SMILES, but I don't think that the "reactant multiplicity != product multiplicity" case is important for "conventional" (adiabatic) reactions (only relevant for inter-surface crossing reactions).
@alongd Thanks for the comment. I should have made myself clearer. The reactions we are considering are multiplicity-reserved reactions. The major concern here is that if the user doesn't supply the multiplicity information but only provides SMILES, what are we gonna do. Hao-Wei and Kevin are suggesting parsing from SMILES, so the potential issue will be
C[CH2].[CH]=C
, the complex generated will have a multiplicity of 3.C=C + C=C <=> C[CH2] + [CH]=C
. The reactant C=C.C=C
will resulted in a complex with a multiplicity of 1, while the product generated from RDKit will have 3. Since they are different, it is not determinisitic about what multiplicity to use when launching TS jobs. The previous proposal is using reactant's multiplicity, however, the user may be unaware of what multiplicity he is actually using, and the number used may not be the one he actually wants to use. E.g, [O][O] + C[CH2] = [O]O + C=C
, if only use the reactant multiplicity it will be 4 (generated from RDKit), but he may actually want to use 2.Hi, thanks for the detailed explanation, and sorry for barging in...
When users define species, can they specify the multiplicity, or can they only give SMILES/InChI?
You are right that cases like (3) are problematic. For the [CH2] + [OH] = [CH3] + [O]
reaction we get different products for the different multiplicities (singlet or triplet [O]). Since both reactions are feasible, there's no real way to know what was originally meant from just SMILES. So perhaps there should be a way to specify in advance the multiplicity of species, especially ones like [O] or [CH2]?
@xiaoruiDong @alongd Thanks for the valuable discussion! We have changed the code as suggested by Xiaorui, where the user can specify the multiplicity of the reaction. If not specified, the multiplicity will be interpreted from the reaction smiles. If the interpreted multiplicity is inconsistent between the reactants and the products, it will choose the multiplicity based on the option use_smaller_multiplicity
.
Interpret multiplicity from reaction smiles for consistency. Open for discussion on how to handle when reactant multiplicity != product multiplicity (this occurs for carbene/nitrene)