Skip to content

Unable to Estimate Thermochemistry for Phosphine Oxides #2567

Closed as not planned

Description

@neeraj-170694

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

Activity

  1. JacksonBurns commented on Oct 30, 2023

    @JacksonBurns
    Contributor

    Hi @neeraj-170694 thanks for the report!

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

  2. xiaoruiDong commented on Oct 30, 2023

    @xiaoruiDong
    Contributor

    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.

  3. 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[/+] on Nov 2, 2023
  4. JacksonBurns commented on Nov 2, 2023

    @JacksonBurns
    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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions