Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sanitization error for Carbon Monoxide? #489

Closed
nickvandewiele opened this issue Nov 8, 2015 · 9 comments
Closed

Sanitization error for Carbon Monoxide? #489

nickvandewiele opened this issue Nov 8, 2015 · 9 comments
Assignees

Comments

@nickvandewiele
Copy link
Contributor

My understanding is that we represent carbon monoxide as the triple-bonded structure with charged atoms, each atom bearing 1 lone pair.

When I run this Molecule through RDKit's Chem.Sanitize, it complains the valency is not correct.

    from rmgpy.molecule import Molecule
    from rdkit import Chem
    import rmgpy.molecule.generator as generator
    adj = """
    1 O u0 p1 c+1 {2,T}
    2 C u0 p1 c-1 {1,T}
    """

    mol = Molecule().fromAdjacencyList(adj)
    rdkitmol = generator.toRDKitMol(mol, sanitize=False)
    Chem.SanitizeMol(rdkitmol)

RMG-Py, by default, runs RDKit's sanitize functionality for compounds that do not contain nitrogen atoms.

I wonder how the error of CO should be treated. The options I see:

  • change the representation of CO to comply with RDKit's Sanitization procedure?
  • avoid having CO in RMG-Py altogether?
  • change the default settings for sanitization calls in RMG-Py

I could not find prior raised issues on this topic, apart from #367, in which the representation of carbon monoxide in the solvation.transformLonePairs function of RMG-Py was changed into the biradical to avoid the same SanitizationError. bslakman@aa15c5c

@rwest
Copy link
Member

rwest commented Nov 8, 2015

Not sure how we ought best to represent CO, but a molecule search for "carbon monoxide" returns formaldehyde, and one for [C][O] returns something even stranger.

@alongd
Copy link
Member

alongd commented Mar 2, 2016

In Wikipedia (for what it's worth) carbon monoxide's SMILES is [C-]#[O+], as @nickvandewiele 's AdjList suggests.
In the latest test I ran in RMG-Py (my ref xa1179) I added [C-]#[O+] to the initial mixture, looking for its reactions with ethylamine (NCC). Surprisingly, the [C-]#[O+] species did not react with ethylamine (did react with H2, NH3, CH4...). Instead, RMG predicted the species [C]=O (triplet), which gave the reactions I was expecting.

See Issues: RMP-Py #184, ReactionMechanismGenerator/RMG-database#31

@connie reccomended to represent CO as [C-]#[O+] in issue ReactionMechanismGenerator/RMG-database#31. I agree we should continue to update this in the database. For example, In the 2+2_cycloaddition_CO kinetic family (in groups.py), CO is still defined as [C]=O (to the best of my understanding):

entry(
    index = 1,
    label = "CO",
    group = 
"""
1 *1 CO u0 {2,D}
2 *2 Od u0 {1,D}
""",
    kinetics = None,
)

Another problem (which brought up this issue for me in the first place) is that currently only radicals can react to abstract a proton in the H_Abstraction kinetic family (reactants=["X_H_or_Xrad_H_Xbirad_H_Xtrirad_H", "Y_rad_birad_trirad_quadrad"]), so I'm not getting the reactions I was expecting from CO (e.g.,CH3CH2NH2 + CO <=> CH2CH2NH2 + HCO) using the [C-]#[O+] species.

@soumsrani
Copy link

Hi, I am using 796adab version of RMG-Py. I am also getting both [C-]#[O+] and [C]=O in the mechanism. The mechanism generated contains CH4, C2H6 and C3H8 chemistry.
input.docx

@connie
Copy link
Member

connie commented Mar 2, 2016

I believe the 2+2_cycloaddition_CO is not meant for carbon monoxide but instead of C=O double bonded forms, as the child groups of that entry are all things like methanal, etc.

I do believe that H_Abstraction only should occur with radical abstraction. I forget what we were thinking but I thought there were routes for this reaction to occur not through H_Abstraction but I'm not sure..

@alongd
Copy link
Member

alongd commented Mar 7, 2016

Just ran 4 simulations of:
1% [C-]#[O+], 1% X in 98% Ar at 1500K for 10 s,
where X = H2 \ CH4 \ NH3 \ NCC

this structure of CO seems to react in RMG only via the 1,2 Insertion CO family.
RMG generated reactions of this sort:

CO(1) + H2(2) = CH2O(4)
CO(1) + CH4(2) = C2H4O(7)
CO(1) + NH3(2) = CH3NO(5)
CO(1) + NCC(2) = C3H7NO(13)
CO(1) + C2H4(29) = C3H4O(37)
..........

I did not get any of the following reactions (looked in chem_edge_annotated.inp as well):

CO + H2 = HCO + H
CO + CH4 = HCO + CH3
CO + NH3 = HCO + NH2
CO + NCC = HCO + NCCrad
CO + C2H4 = HCO + C2H3
..........

These are probably important to many RMG works, and should be added to the Disproportionation family template.

@rwest
Copy link
Member

rwest commented Mar 7, 2016

Sounds like this needs some serious attention.

@alongd
Copy link
Member

alongd commented Mar 7, 2016

In second thought, maybe Disproportionation is not the right family for these reactions.

Disproportionation:
*R1 + *R3-R2-H <=> R1-H + R3=R2

While we need to form a unique triple bond ([R3+]#[R2-]):

 *R1 + *R3-R2-H <=> R1-H + R3#R2

(*R  + *HCO     <=> R-H + [C-]#[O+])

I couldn't see any other fit from our reaction families.
Should we open a new reaction family, or did I miss something?

@alongd
Copy link
Member

alongd commented Mar 16, 2016

Perhaps we should open a CO_disprop family.

Strengthening the Wikipedia comment from above, the following paper says that [C-]#[O+] is indeed the right non-excited form of CO:
Electronic structure of CO—An exercise in modern chemical bonding theory

@mliu49
Copy link
Contributor

mliu49 commented May 17, 2018

I think CO representation has been fixed, and the CO_disprop family has also been added already.

@mliu49 mliu49 closed this as completed May 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants