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

Unable to Estimate Thermochemistry for Phosphine Oxides #2567

Closed
neeraj-170694 opened this issue Oct 30, 2023 · 3 comments
Closed

Unable to Estimate Thermochemistry for Phosphine Oxides #2567

neeraj-170694 opened this issue Oct 30, 2023 · 3 comments

Comments

@neeraj-170694
Copy link

When I am simulating a chemical reaction with O=c1[nH]c2ccsc2[nH]1,O=P(Br)(Br)Br it is showing me an error.
Traceback (most recent call last):
File "rmg.py", line 118, in
main()
File "rmg.py", line 112, in main
rmg.execute(**kwargs)
File "/rmg/RMG-py/rmgpy/rmg/main.py", line 751, in execute
self.initialize(**kwargs)
File "/rmg/RMG-py/rmgpy/rmg/main.py", line 552, in initialize
self.reaction_model.add_species_to_edge(spec)
File "/rmg/RMG-py/rmgpy/rmg/model.py", line 1187, in add_species_to_edge
self.edge.phase_system.phases["Default"].add_species(spec)
File "/rmg/RMG-py/rmgpy/rmg/reactors.py", line 293, in add_species
spec = to_rms(spc)
File "/rmg/RMG-py/rmgpy/rmg/reactors.py", line 696, in to_rms
th = obj.get_thermo_data()
File "rmgpy/species.py", line 777, in rmgpy.species.Species.get_thermo_data
submit(self, solvent_name)
File "/rmg/RMG-py/rmgpy/thermo/thermoengine.py", line 183, in submit
spc.thermo = evaluator(spc, solvent_name=solvent_name)
File "/rmg/RMG-py/rmgpy/thermo/thermoengine.py", line 162, in evaluator
thermo = generate_thermo_data(spc, solvent_name=solvent_name)
File "/rmg/RMG-py/rmgpy/thermo/thermoengine.py", line 126, in generate_thermo_data
thermo0 = thermodb.get_thermo_data(spc)
File "/rmg/RMG-py/rmgpy/data/thermo.py", line 1415, in get_thermo_data
thermo0 = self.get_thermo_data_from_groups(species)
File "/rmg/RMG-py/rmgpy/data/thermo.py", line 1902, in get_thermo_data_from_groups
tdata = self.estimate_thermo_via_group_additivity(molecule)
File "/rmg/RMG-py/rmgpy/data/thermo.py", line 2140, in estimate_thermo_via_group_additivity
thermo_data = self.compute_group_additivity_thermo(molecule)
File "/rmg/RMG-py/rmgpy/data/thermo.py", line 2176, in compute_group_additivity_thermo
data_added = self._add_group_thermo_data(thermo_data, self.groups['group'], molecule, {'': atom})[1]
File "/rmg/RMG-py/rmgpy/data/thermo.py", line 2556, in _add_group_thermo_data
raise DatabaseError(f'Unable to determine thermo parameters for atom {atom} in molecule {molecule}: '
rmgpy.exceptions.DatabaseError: Unable to determine thermo parameters for atom {'
': <Atom 'P'>} in molecule <Molecule "O=P(Br)(Br)Br">: no data for node R or any of its ancestors in database group.

How could i resolve this error ? Will i be able to do simulation for the above molecules.
pfa:
input_1.txt

@JacksonBurns
Copy link
Contributor

Hi @neeraj-170694 thanks for the report!

@xiaoruiDong do you know if RMG has support for phosphine oxides?

@xiaoruiDong
Copy link
Contributor

xiaoruiDong commented Oct 30, 2023

I am not aware of anyone that has been working on phosphorus compounds before. I believe RMG has the infrastructure (e.g., relevant atom types, see below)

ATOMTYPES['P'] = AtomType('P', generic=['R', 'R!H', 'R!H!Val7', 'Val5'], specific=['P0sc', 'P1s', 'P1sc', 'P1dc', 'P3s', 'P3d', 'P3t', 'P3b', 'P5s', 'P5sc', 'P5d', 'P5dd', 'P5dc', 'P5ddc', 'P5t', 'P5td', 'P5tc', 'P5b', 'P5bd'],
single=[], all_double=[], r_double=[], o_double=[], s_double=[], triple=[], quadruple=[], benzene=[], lone_pairs=[], charge=[])
ATOMTYPES['P0sc'] = AtomType('P0sc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], quadruple=[], benzene=[0], lone_pairs=[3], charge=[-2])
# examples for P0sc: [PH-2] (Phosphanediide), [P-2][P+]#[PH+] with adjList '''1 P u0 p3 c-2 {2,S} 2 P u0 p0 c+1 {1,S} {3,T} 3 P u0 p0 c+1 {2,T} {4,S} 4 H u0 p0 c0 {3,S}'''
ATOMTYPES['P1s'] = AtomType('P1s', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], quadruple=[], benzene=[0], lone_pairs=[2], charge=[0])
# examples for P1s: closed shell [PH] (Phosphinidene)
ATOMTYPES['P1sc'] = AtomType('P1sc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2], all_double=[0], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[], benzene=[0], lone_pairs=[2], charge=[-1])
# examples for P1sc: C[PH-] (methylphosphanide)
ATOMTYPES['P1dc'] = AtomType('P1dc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0], all_double=[1], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[], benzene=[0], lone_pairs=[2], charge=[-1])
# examples for P1dc: C=[P-] (methylidenephosphanide)
ATOMTYPES['P3s'] = AtomType('P3s', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2,3], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], quadruple=[], benzene=[0], lone_pairs=[1], charge=[0])
# examples for P3s: PH3, PCl3
ATOMTYPES['P3d'] = AtomType('P3d', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1], all_double=[1], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[], benzene=[0], lone_pairs=[1], charge=[0])
# examples for P3d: O=[PH] with adjList '''1 O u0 p2 c0 {2,D} 2 P u0 p1 c0 {1,D} {3,S} 3 H u0 p0 c0 {2,S}'''
ATOMTYPES['P3t'] = AtomType('P3t', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[1], quadruple=[], benzene=[0], lone_pairs=[1], charge=[0])
# examples for P3t: P#P (diphosphorus)
ATOMTYPES['P3b'] = AtomType('P3b', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], quadruple=[], benzene=[2], lone_pairs=[1], charge=[0])
# examples for P3b: c1ccpcc1 (phosphorine) with InChI 'InChI=1S/C5H5P/c1-2-4-6-5-3-1/h1-5H'
ATOMTYPES['P5s'] = AtomType('P5s', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2,3,4,5], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], quadruple=[0], benzene=[0], lone_pairs=[0], charge=[0])
# examples for P5s: P(Cl)(Cl)(Cl)(Cl)Cl (phosphorus pentachloride)
ATOMTYPES['P5sc'] = AtomType('P5sc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2,3,4,5,6], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], benzene=[0], lone_pairs=[0], charge=[-1, +1, +2])
# examples for P5sc: [O-][PH3+] (oxidophosphanium), F[P-](F)(F)(F)(F)F (Hexafluorophosphate)
ATOMTYPES['P5d'] = AtomType('P5d', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2,3], all_double=[1], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[0], benzene=[0], lone_pairs=[0], charge=[0])
# examples for P5d: OP(=O)(O)O (phosphoric acid)
ATOMTYPES['P5dd'] = AtomType('P5dd', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1], all_double=[2], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[0], benzene=[0], lone_pairs=[0], charge=[0])
# examples for P5dd: CP(=O)=O (methylphosphinate)
ATOMTYPES['P5dc'] = AtomType('P5dc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2], all_double=[1], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[], benzene=[0], lone_pairs=[0], charge=[+1])
# examples for P5dc: C=C[P+](=N)[O-] (ethenyl-imino-oxidophosphanium), C[P+](=C)C (methylenedimethylphosphorane)
ATOMTYPES['P5ddc'] = AtomType('P5ddc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0], all_double=[2], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[], benzene=[0], lone_pairs=[0], charge=[+1])
# examples for P5ddc: C=[P+]=N (imino(methylidene)phosphanium)
ATOMTYPES['P5t'] = AtomType('P5t', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1,2], all_double=[0], r_double=[], o_double=[], s_double=[], triple=[1], quadruple=[], benzene=[0], lone_pairs=[0], charge=[0])
# examples for P5t: N#P(Cl)Cl (phosphonitrile chloride)
ATOMTYPES['P5td'] = AtomType('P5td', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0], all_double=[1], r_double=[], o_double=[], s_double=[], triple=[1], quadruple=[], benzene=[0], lone_pairs=[0], charge=[0])
# examples for P5td: COC(=O)C#P=O (methyl phosphorylacetate)
ATOMTYPES['P5tc'] = AtomType('P5tc', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[1], quadruple=[], benzene=[0], lone_pairs=[0], charge=[+1])
# examples for P5tc: C[P+]#C (methyl(methylidyne)phosphanium), C#[P+]O (hydroxy(methylidyne)phosphanium)
ATOMTYPES['P5b'] = AtomType('P5b', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0,1], all_double=[0], r_double=[0], o_double=[0], s_double=[0], triple=[0], quadruple=[], benzene=[2], lone_pairs=[0], charge=[0, +1])
# examples for P5b: C1=CC=[PH+]C=C1 (Phosphoniabenzene)
ATOMTYPES['P5bd'] = AtomType('P5bd', generic=['R', 'R!H', 'R!H!Val7', 'P', 'Val5'], specific=[],
single=[0], all_double=[1], r_double=[], o_double=[], s_double=[], triple=[0], quadruple=[], benzene=[2], lone_pairs=[0], charge=[0])
# examples for P5bd: C1=CC=P(=S)C=C1 (Phosphorin 1-sulfide), C1=CC=P(=O)C=C1 (Phosphorin 1-oxide)

But I don't think there is corresponding GAV data for phosphorus groups to calculate thermo.

@JacksonBurns JacksonBurns changed the title rmgpy.exceptions.DatabaseError: Unable to determine thermo parameters for atom {'*': <Atom 'P'>} in molecule <Molecule "O=P(Br)(Br)Br">: no data for node R or any of its ancestors in database group. Unable to Estimate Thermochemistry for Phosphine Oxides Nov 2, 2023
@JacksonBurns
Copy link
Contributor

Thanks for the input @xiaoruiDong!

@neeraj-170694 this is unfortunately a data issue. We don't have the group additivity values for the compound at hand (phosphorus(V) oxybromide) and we don't have anyone on the current developer team looking at it either.

I will point you toward our database documentation which explains how the database is laid out and how you can add more data. We are more than happy to review and merge and new data, but we can't currently add it ourselves. You can look at ReactionMechanismGenerator/RMG-database#624 on RMG-database for an example of adding new data.

I'll close this issue for the time being, since the problem that caused the original error has been found. If you run into new issues please feel free to open new issues, or if you try adding new data. Thanks for using RMG!

@JacksonBurns JacksonBurns closed this as not planned Won't fix, can't repro, duplicate, stale Nov 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants