Skip to content

Modifications to Arrhenius BM's get_w0() to enable halocarbene_recombination_double retraining - #2950

Open
Nora-Khalil wants to merge 2 commits into
mainfrom
get_w0_fix_for_halocarbene_recomb_double
Open

Modifications to Arrhenius BM's get_w0() to enable halocarbene_recombination_double retraining#2950
Nora-Khalil wants to merge 2 commits into
mainfrom
get_w0_fix_for_halocarbene_recomb_double

Conversation

@Nora-Khalil

Copy link
Copy Markdown
Contributor

Motivation or Problem

The halocarbene_recombination_double family recipe is written as follows:

recipe(actions=[
    ['LOSE_PAIR', '*1', '1'],
    ['LOSE_PAIR', '*2', '1'],
    ['FORM_BOND', '*1', 1, '*2'],
    ['CHANGE_BOND', '*1', 1, '*2']
])

where there is no bond between atoms *1 and *2 in the reactants, and a double bond between *1 and *2 in the product.

This causes an error when using these reactions to fit a ArrheniusBM. When get_w0() is called for calculating the w0 for the BM's kinetics, a ValueError is raised:

ValueError: The specified vertices are not connected by an edge in this graph

This is because the current code in get_w0 will attempt to calculate the total bond energy of bonds formed (wf) by first finding the difference between the bond dissociation energy of bond between *1 and *2 in the reactants and the bond between *1 and *2 in the product. The code doesn't seem to expect that there would be no bond between *1 and *2 in the reactants if the reaction recipe has a CHANGE_BOND step.

I iterated through all families in 'default' looking for recipes that form a bond between two atoms and then change the bond (i.e. going from no bond in reactants to double or higher bond in product). I could only find halocarbene_recombination_double that has this, so I believe this PR fix is only needed for the retraining of this family.

Description of Changes

Implemented a try/except that catches ValueError, confirms that it is an example of the problem case described above, then creates a Bond object with an order of 0 (so code downstream won't crash) and a bond dissociation energy of 0.0 so the calculation for wf is still accurate.

Was able to successfully retrain family with this fix.

Testing

Here's some simple code for testing...

Before PR, ValueError would be caught in following code snippet. After PR, should pass:

fam_name = 'halocarbene_recombination_double'
training_reactions = [ent.item for ent in database.kinetics.families[fam_name].get_training_depository().entries.values()]
for tr in training_reactions: 
    try:   
        print(tr)
        display(tr)
        get_w0(database.kinetics.families[fam_name].forward_recipe.actions, tr)
        print('passed')
    except ValueError as e: 
        print(e)
        continue

Thanks!

previous_action = recipe[ind-1]

#make sure this error occurred because there was FORM_BOND and then CHANGE_BOND performed between the same two atoms.
assert previous_action[0]=='FORM_BOND' and current_action[1:]==previous_action[1:], f'{e} This is NOT because CHANGE_BOND was performed on a bond that was formed in the action step before.'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, sorry to be super pedantic, but you should run a linter to highlight the PEP8 violations (mostly rules for spacing, I recommend the Flake8 extension in VSCode). I know, the rest of the file isn't compliant either, but the new stuff adds a bunch of angry red squigglies in my code editor.

The two main rule violations I'm seeing are that 1. your comments are supposed to have at least one space after the '#' and 2. operators like == should have spaces on either side.

bd1 = mol.get_bond(atom1, atom2)
except ValueError as e:
#confirm that this is the error we need to catch
if 'The specified vertices are not connected by an edge in this graph.' in str(e):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should add a corresponding "else"

if there's a ValueError and it's not the specific case this is designed to catch, you should re-raise the value error. I think the command is just raise e

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just added!

@sevyharris

sevyharris commented May 13, 2026

Copy link
Copy Markdown
Contributor

I tested this fix on halocarbene_recombination_double and can confirm that it fixes the ValueError problem without changing the binding energies in any of the other families' training reactions (that can call this function without errors).

I will note that I was also able to get ValueError: The specified vertices are not connected by an edge in this graph. for '1,4_Cyclic_birad_scission' and 'Singlet_Carbene_Intra_Disproportionation' training reactions. This PR doesn't fix those, and I don't think it has to. Just something to be aware of.

Anyways, this looks good to me and I'll approve it once the above suggestions are in.

@Nora-Khalil

Copy link
Copy Markdown
Contributor Author

Hi @sevyharris just added in a statement that raises e if the ValueError is not one we expected. Thanks for the suggestion!

And I'll look into the other families that also get the ValueError...but later :)

Thanks!

@github-actions

Copy link
Copy Markdown

This pull request is being automatically marked as stale because it has not received any interaction in the last 90 days. Please leave a comment if this is still a relevant pull request, otherwise it will automatically be closed in 30 days.

@github-actions github-actions Bot added the stale stale issue/PR as determined by actions bot label Aug 12, 2026
…ses when trying to calculate the w0 for a family that has consecutive reaction recipe steps of FORM_BOND and CHANGE_BOND between the same two atoms (i.e. reaction recipes where there is no bond formation between two atoms in the reactants, and then a double bond formation between the two atoms in the product). I believe this is only affecting halocarbene_recombination_double kinetic family.
@JacksonBurns
JacksonBurns force-pushed the get_w0_fix_for_halocarbene_recomb_double branch from 909e2b1 to b5c0956 Compare August 21, 2026 20:34
@github-actions

Copy link
Copy Markdown

Regression Testing Results

⚠️ One or more regression tests failed.
Please download the failed results and run the tests locally or check the log to see why.

Detailed regression test results.

Regression test aromatics:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:55
Current: Execution time (DD:HH:MM:SS): 00:00:00:45
Reference: Memory used: 824.04 MB
Current: Memory used: 821.62 MB

aromatics Passed Core Comparison ✅

Original model has 15 species.
Test model has 15 species. ✅
Original model has 11 reactions.
Test model has 11 reactions. ✅

aromatics Failed Edge Comparison ❌

Original model has 106 species.
Test model has 106 species. ✅
Original model has 358 reactions.
Test model has 358 reactions. ✅

Non-identical thermo! ❌
original: [CH]1C2=CC3C1C=CC23
tested: [CH]1C2=CC3C1C=CC23

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
167.21 73.60 28.78 36.79 44.00 50.25 59.65 65.52 74.04
169.15 73.17 31.27 38.45 44.76 50.28 59.14 65.47 72.92

thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)CsHH) + group(Cds-CdsCsCs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + polycyclic(s2_4_5_diene_1_5) + polycyclic(s3_4_5_ene_3) + polycyclic(s2_5_5_diene_1_5) - ring(Cyclobutene) - ring(Cyclopentene) - ring(Cyclopentene) + radical(cyclopentene-allyl)
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)CsHH) + group(Cds-CdsCsCs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + polycyclic(s2_4_5_diene_1_5) + polycyclic(s3_4_5_ene_3) + polycyclic(s3_5_5_ene_1) - ring(Cyclobutene) - ring(Cyclopentene) - ring(Cyclopentane) + radical(cyclopentene-allyl)

Non-identical thermo! ❌
original: [CH]1C2C=CC13C=CC23
tested: [CH]1C2C=CC13C=CC23

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
174.31 74.05 26.66 34.03 40.90 47.10 57.16 64.03 72.57
172.50 80.61 27.59 35.91 43.44 49.89 59.09 64.21 71.65

thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsCs) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-CsCsHH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + polycyclic(s2_4_4_ene_1) + polycyclic(s1_4_5_diene_1_6) + polycyclic(s3_4_5_ene_1) - ring(Cyclobutene) - ring(Cyclobutane) - ring(Cyclopentene) + radical(bicyclo[2.1.1]hex-2-ene-C5)
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsCs) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-CsCsHH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + polycyclic(s2_4_4_ene_1) + polycyclic(s2_4_5_diene_1_5) + polycyclic(s3_4_5_ene_1) - ring(Cyclobutene) - ring(Cyclobutane) - ring(Cyclopentene) + radical(bicyclo[2.1.1]hex-2-ene-C5)

Non-identical thermo! ❌
original: [CH]1C2=CC3C1C3C=C2
tested: [CH]1C2=CC3C1C3C=C2

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
100.48 61.70 25.50 33.41 40.70 47.02 56.22 61.78 71.32
98.15 66.21 25.82 33.30 40.19 46.24 55.47 61.34 70.49

thermo: Thermo group additivity estimation: group(Cs-CsCsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsHH) + group(Cds- Cds(Cds-Cds)Cs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + polycyclic(s2_3_5_ene_1) + polycyclic(s2_3_6_ene_1) + Estimated bicyclic component: polycyclic(s3_5_6_ane) - ring(Cyclohexane) - ring(Cyclopentane) + ring(Cyclohexene) + ring(Cyclopentene) - ring(Cyclopropane) - ring(Cyclopentene) - ring(Cyclohexene) + radical(cyclopentene-allyl)
thermo: Thermo group additivity estimation: group(Cs-CsCsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsHH) + group(Cds- Cds(Cds-Cds)Cs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + polycyclic(s2_3_5_ene_1) + polycyclic(s2_3_6_diene_1_3) + Estimated bicyclic component: polycyclic(s3_5_6_ane) - ring(Cyclohexane) - ring(Cyclopentane) + ring(1,3-Cyclohexadiene) + ring(Cyclopentene) - ring(Cyclopropane) - ring(Cyclopentene) - ring(1,3-Cyclohexadiene) + radical(cyclopentene-allyl)

Non-identical thermo! ❌
original: [CH]1C2C=CC3=CC2C13
tested: [CH]1C2C=CC3=CC2C13

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
144.26 70.81 25.26 32.45 39.06 44.87 53.78 59.67 69.60
200.28 76.10 25.91 33.35 40.28 46.48 56.24 62.60 71.29

thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-CsCsHH) + group(Cds- Cds(Cds-Cds)Cs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + polycyclic(s2_4_4_ene_1) + polycyclic(s3_4_6_ene_1) + Estimated bicyclic component: polycyclic(s2_4_6_ane) - ring(Cyclohexane) - ring(Cyclobutane) + ring(Cyclohexene) + ring(Cyclobutene) - ring(Cyclobutane) - ring(Cyclobutene) - ring(Cyclohexene) + radical(cyclobutane)
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-CsCsHH) + group(Cds- Cds(Cds-Cds)Cs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + polycyclic(s2_4_4_ene_1) + polycyclic(s3_4_6_diene_1_5) + polycyclic(s3_4_6_ene_1) - ring(Cyclobutene) - ring(Cyclobutane) - ring(Cyclohexene) + radical(cyclobutane)

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC1C=C2(48) <=> [CH]1C2=CC3C1C=CC23(62) origin: Intra_R_Add_Endocyclic
tested:
rxn: [CH]1C2=CC=CC1C=C2(48) <=> [CH]1C2=CC3C1C=CC23(62) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -46.27 -30.58 -21.19 -14.94 -7.15 -2.49 3.67 6.72
k(T): -47.51 -31.51 -21.94 -15.56 -7.62 -2.87 3.42 6.54

kinetics: Arrhenius(A=(1.08454e+19,'s^-1'), n=-0.859, Ea=(86.724,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.""")
kinetics: Arrhenius(A=(1.08454e+19,'s^-1'), n=-0.859, Ea=(88.43,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.""")
Identical kinetics comments:
kinetics: Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC1C=C2(48) <=> [CH]1C2C=CC13C=CC23(65) origin: Intra_R_Add_Endocyclic
tested:
rxn: [CH]1C2=CC=CC1C=C2(48) <=> [CH]1C2C=CC13C=CC23(65) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -50.88 -34.04 -23.95 -17.24 -8.88 -3.88 2.75 6.03
k(T): -49.69 -33.15 -23.24 -16.65 -8.43 -3.52 2.99 6.21

kinetics: Arrhenius(A=(1.08454e+19,'s^-1'), n=-0.859, Ea=(93.051,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.""")
kinetics: Arrhenius(A=(1.08454e+19,'s^-1'), n=-0.859, Ea=(91.423,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.""")
Identical kinetics comments:
kinetics: Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.

Non-identical kinetics! ❌
original:
rxn: [CH]1C2=CC=CC1C=C2(48) <=> [CH]1C2=CC3C1C3C=C2(67) origin: Intra_R_Add_Endocyclic
tested:
rxn: [CH]1C2=CC=CC1C=C2(48) <=> [CH]1C2=CC3C1C3C=C2(67) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -15.17 -8.42 -4.36 -1.66 1.73 3.77 6.50 7.88
k(T): -14.18 -7.68 -3.77 -1.16 2.10 4.07 6.70 8.03

kinetics: Arrhenius(A=(1.12e+11,'s^-1'), n=0.26, Ea=(36.869,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone3_Sp-4R!H=1R!H_Sp-3R!H-2R!H_Sp-2R!H-1R!H_Ext-2R!H-R in family Intra_R_Add_Endocyclic.""")
kinetics: Arrhenius(A=(1.12e+11,'s^-1'), n=0.26, Ea=(35.513,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone3_Sp-4R!H=1R!H_Sp-3R!H-2R!H_Sp-2R!H-1R!H_Ext-2R!H-R in family Intra_R_Add_Endocyclic.""")
Identical kinetics comments:
kinetics: Estimated from node Backbone3_Sp-4R!H=1R!H_Sp-3R!H-2R!H_Sp-2R!H-1R!H_Ext-2R!H-R in family Intra_R_Add_Endocyclic.

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) <=> [CH]1C2C=CC3=CC2C13(80) origin: Intra_R_Add_Endocyclic
tested:
rxn: C1=CC2C=C[C]1C=C2(49) <=> [CH]1C2C=CC3=CC2C13(80) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -25.05 -14.47 -8.15 -3.94 1.29 4.42 8.54 10.57
k(T): -59.93 -40.64 -29.08 -21.38 -11.79 -6.05 1.56 5.34

kinetics: Arrhenius(A=(6.50724e+19,'s^-1'), n=-0.859, Ea=(58.664,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic. Multiplied by reaction path degeneracy 6.0""")
kinetics: Arrhenius(A=(6.50724e+19,'s^-1'), n=-0.859, Ea=(106.547,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic. Multiplied by reaction path degeneracy 6.0""")
Identical kinetics comments:
kinetics: Estimated from node Backbone1_2R!H-inRing_1R!H-inRing in family Intra_R_Add_Endocyclic.
Multiplied by reaction path degeneracy 6.0

Non-identical kinetics! ❌
original:
rxn: C1=CC2C=C[C]1C=C2(49) <=> [CH]1C2=CC3C1C3C=C2(67) origin: Intra_R_Add_Endocyclic
tested:
rxn: C1=CC2C=C[C]1C=C2(49) <=> [CH]1C2=CC3C1C3C=C2(67) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -8.89 -3.16 0.28 2.58 5.46 7.19 9.52 10.69
k(T): -8.00 -2.50 0.81 3.02 5.79 7.46 9.70 10.83

kinetics: Arrhenius(A=(1.49409e+13,'s^-1'), n=0.283, Ea=(31.249,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone2_Sp-3R!H=1R!H_N-4R!H->S_2R!H-inRing_5R!H-inRing_Ext-5R!H-R_Ext-6R!H-R_Ext-7R!H-R_1R!H-inRing in family Intra_R_Add_Endocyclic. Multiplied by reaction path degeneracy 3.0""")
kinetics: Arrhenius(A=(1.49409e+13,'s^-1'), n=0.283, Ea=(30.033,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone2_Sp-3R!H=1R!H_N-4R!H->S_2R!H-inRing_5R!H-inRing_Ext-5R!H-R_Ext-6R!H-R_Ext-7R!H-R_1R!H-inRing in family Intra_R_Add_Endocyclic. Multiplied by reaction path degeneracy 3.0""")
Identical kinetics comments:
kinetics: Estimated from node Backbone2_Sp-3R!H=1R!H_N-4R!H->S_2R!H-inRing_5R!H-inRing_Ext-5R!H-R_Ext-6R!H-R_Ext-7R!H-R_1R!H-inRing in family Intra_R_Add_Endocyclic.
Multiplied by reaction path degeneracy 3.0

Errors occurred during edge comparison ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py aromatics-edge stable_regression_results/aromatics/chemkin/chem_edge_annotated.inp stable_regression_results/aromatics/chemkin/species_edge_dictionary.txt test/regression/aromatics/chemkin/chem_edge_annotated.inp test/regression/aromatics/chemkin/species_edge_dictionary.txt` failed. (See above for error)
✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions! aromatics Passed Observable Testing ✅

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:48
Current: Execution time (DD:HH:MM:SS): 00:00:01:37
Reference: Memory used: 904.30 MB
Current: Memory used: 906.94 MB

liquid_oxidation Passed Core Comparison ✅

Original model has 37 species.
Test model has 37 species. ✅
Original model has 239 reactions.
Test model has 239 reactions. ✅

liquid_oxidation Failed Edge Comparison ❌

Original model has 214 species.
Test model has 214 species. ✅
Original model has 1591 reactions.
Test model has 1591 reactions. ✅
The original model has 2 reactions that the tested model does not have. ❌
rxn: C[CH]CC(C)OO(31) <=> [OH](22) + CCCC(C)=O(28) origin: intra_H_migration
rxn: C[CH]CCCOO(48) <=> [OH](22) + CCCCC=O(45) origin: intra_H_migration
The tested model has 2 reactions that the original model does not have. ❌
rxn: C[CH]CC(C)OO(33) <=> CCC[C](C)OO(78) origin: intra_H_migration
rxn: CCCC[CH]OO(102) <=> C[CH]CCCOO(60) origin: intra_H_migration

Errors occurred during edge comparison ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py liquid_oxidation-edge stable_regression_results/liquid_oxidation/chemkin/chem_edge_annotated.inp stable_regression_results/liquid_oxidation/chemkin/species_edge_dictionary.txt test/regression/liquid_oxidation/chemkin/chem_edge_annotated.inp test/regression/liquid_oxidation/chemkin/species_edge_dictionary.txt` failed. (See above for error)
✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions! liquid_oxidation Passed Observable Testing ✅

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:55
Current: Execution time (DD:HH:MM:SS): 00:00:00:48
Reference: Memory used: 907.97 MB
Current: Memory used: 908.28 MB

nitrogen Passed Core Comparison ✅

Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 360 reactions. ✅

nitrogen Passed Edge Comparison ✅

Original model has 133 species.
Test model has 133 species. ✅
Original model has 983 reactions.
Test model has 983 reactions. ✅

✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions! nitrogen Passed Observable Testing ✅

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:33
Current: Execution time (DD:HH:MM:SS): 00:00:01:17
Reference: Memory used: 793.80 MB
Current: Memory used: 793.60 MB

oxidation Passed Core Comparison ✅

Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅

oxidation Passed Edge Comparison ✅

Original model has 230 species.
Test model has 230 species. ✅
Original model has 1524 reactions.
Test model has 1524 reactions. ✅

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions! oxidation Passed Observable Testing ✅
Errors occurred during observable testing ⚠️ WARNING: Initial mole fractions do not sum to one; normalizing.

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:36
Current: Execution time (DD:HH:MM:SS): 00:00:00:33
Reference: Memory used: 907.16 MB
Current: Memory used: 904.02 MB

sulfur Passed Core Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅

sulfur Failed Edge Comparison ❌

Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary

Errors occurred during edge comparison ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py sulfur-edge stable_regression_results/sulfur/chemkin/chem_edge_annotated.inp stable_regression_results/sulfur/chemkin/species_edge_dictionary.txt test/regression/sulfur/chemkin/chem_edge_annotated.inp test/regression/sulfur/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details

The following observables did not match:

❌ Observable species O=S=O varied by more than 0.100 on average between old model SO2(15) and new model SO2(15) in condition 1.

⚠️ The following reaction conditions had some discrepancies:
Condition 1:
Reactor Type: IdealGasReactor
Reaction Time: 0.01 s
T0: 900 K
P0: 30 bar
Initial Mole Fractions: {'S': 0.000756, '[O][O]': 0.00129, 'N#N': 0.997954}

sulfur Failed Observable Testing ❌
Errors occurred during observable testing ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python rmgpy/tools/regression.py test/regression/sulfur/regression_input.py stable_regression_results/sulfur/chemkin test/regression/sulfur/chemkin` failed. (See above for error)

Regression test superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:23
Current: Execution time (DD:HH:MM:SS): 00:00:00:19
Reference: Memory used: 968.81 MB
Current: Memory used: 975.13 MB

superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅

superminimal Passed Edge Comparison ✅

Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅

Regression test RMS_constantVIdealGasReactor_superminimal:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:53
Current: Execution time (DD:HH:MM:SS): 00:00:01:51
Reference: Memory used: 2673.91 MB
Current: Memory used: 2757.70 MB

RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅

Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions! RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:09:04
Current: Execution time (DD:HH:MM:SS): 00:00:10:39
Reference: Memory used: 2763.48 MB
Current: Memory used: 2941.11 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 35 species.
Test model has 35 species. ✅
Original model has 133 reactions.
Test model has 147 reactions. ❌
The original model has 1 species that the tested model does not have. ❌
spc: CCH2
The tested model has 1 species that the original model does not have. ❌
spc: CC=O(87)
The original model has 2 reactions that the tested model does not have. ❌
rxn: oxygen(1) + H2O(42) <=> [OH](25) + [O]O(13) origin: H_Abstraction
rxn: C[CH2](6) + [CH2]CC(5) <=> pentane(2) origin: R_Recombination
The tested model has 16 reactions that the original model does not have. ❌
rxn: OO(23) + CCCCCO[O](61) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: CC=O(87) + [CH2]CC(5) <=> CCCC(C)[O](41) origin: R_Addition_MultipleBond
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + CCCC(C)O[O](21) origin: H_Abstraction
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + C[CH]CC(C)OO(34) origin: H_Abstraction
rxn: [OH](26) + CCC(CC)OO(24) <=> H2O(42) + CCC(CC)O[O](20) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CCCCCO[O](61) origin: H_Abstraction
rxn: OO(23) + C[CH]CCCOO(65) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + C[CH]CCCOO(65) origin: H_Abstraction
rxn: [OH](26) + CCC(CC)OO(24) <=> H2O(42) + [CH2]CC(CC)OO(38) origin: H_Abstraction
rxn: OO(23) + [CH2]CCCCOO(66) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + [CH2]CCCCOO(66) origin: H_Abstraction
rxn: OO(23) + CC[CH]CCOO(64) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CC[CH]CCOO(64) origin: H_Abstraction

Errors occurred during core comparison ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py RMS_CSTR_liquid_oxidation-core stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/chem_annotated.inp stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/species_dictionary.txt test/regression/RMS_CSTR_liquid_oxidation/chemkin/chem_annotated.inp test/regression/RMS_CSTR_liquid_oxidation/chemkin/species_dictionary.txt` failed. (See above for error)
RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌

Original model has 90 species.
Test model has 99 species. ❌
Original model has 327 reactions.
Test model has 384 reactions. ❌
The tested model has 9 species that the original model does not have. ❌
spc: CCCCO
spc: CCC(C)O
spc: CC=O(87)
spc: CCCC=O(88)
spc: CCCCO(89)
spc: CC[CH]C(C)O(90)
spc: [CH2]C(O)CCC(91)
spc: C[CH]CC(C)O(92)
spc: [CH2]CCC(C)O(93)
The original model has 2 reactions that the tested model does not have. ❌
rxn: oxygen(1) + H2O(42) <=> [OH](25) + [O]O(13) origin: H_Abstraction
rxn: H(8) + [OH](25) <=> H2O(42) origin: R_Recombination
The tested model has 59 reactions that the original model does not have. ❌
rxn: OO(23) + CCCCCO[O](61) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: CC=O(87) + [CH2]CC(5) <=> CCCC(C)[O](41) origin: R_Addition_MultipleBond
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + CCCC(C)O[O](21) origin: H_Abstraction
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + C[CH]CC(C)OO(34) origin: H_Abstraction
rxn: [OH](26) + CCC(CC)OO(24) <=> H2O(42) + CCC(CC)O[O](20) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CCCCCO[O](61) origin: H_Abstraction
rxn: OO(23) + C[CH]CCCOO(65) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + C[CH]CCCOO(65) origin: H_Abstraction
rxn: [OH](26) + CCC(CC)OO(24) <=> H2O(42) + [CH2]CC(CC)OO(38) origin: H_Abstraction
rxn: OO(23) + [CH2]CCCCOO(66) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + [CH2]CCCCOO(66) origin: H_Abstraction
rxn: OO(23) + CC[CH]CCOO(64) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CC[CH]CCOO(64) origin: H_Abstraction
rxn: CH2(S)(3) + CCCC[O](85) <=> CCCC(C)[O](41) origin: 1,2_Insertion_carbene
rxn: CH2(S)(3) + CCC(C)[O](86) <=> CCCC(C)[O](41) origin: 1,2_Insertion_carbene
rxn: CH2(S)(3) + CCC(C)[O](86) <=> CCCC(C)[O](41) origin: 1,2_Insertion_carbene
rxn: H(8) + CCCC(C)=O(31) <=> CCCC(C)[O](41) origin: R_Addition_MultipleBond
rxn: [CH3](10) + CCCC=O(88) <=> CCCC(C)[O](41) origin: R_Addition_MultipleBond
rxn: CCCC(C)[O](41) <=> CCC[C](C)O(89) origin: intra_H_migration
rxn: CC[CH]C(C)O(90) <=> CCCC(C)[O](41) origin: intra_H_migration
rxn: CCCC(C)[O](41) <=> [CH2]C(O)CCC(91) origin: intra_H_migration
rxn: CCCC(C)[O](41) <=> C[CH]CC(C)O(92) origin: intra_H_migration
rxn: CCCC(C)[O](41) <=> [CH2]CCC(C)O(93) origin: intra_H_migration
rxn: oxygen(1) + CCCC(C)[O](41) <=> [O]O(13) + CCCC(C)=O(31) origin: Disproportionation
rxn: oxygen(1) + CCCC(C)[O](41) <=> CCCC(C)OO[O](48) origin: R_Recombination
rxn: CCCC(C)[O](41) + pentane(2) <=> CC[CH]CC(7) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + pentane(2) <=> C[CH]CCC(11) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + pentane(2) <=> [CH2]CCCC(12) + CCCC(C)O(46) origin: H_Abstraction
rxn: OO(23) + CCC[CH]COO(63) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: [O]O(13) + CCCCCOO(78) <=> OO(23) + CCCC[CH]OO(84) origin: H_Abstraction
rxn: CCC[CH]COO(63) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + CCC[C](C)OO(54) origin: H_Abstraction
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + CC[CH]C(C)OO(32) origin: H_Abstraction
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + [CH2]C(CCC)OO(33) origin: H_Abstraction
rxn: [OH](26) + CCCC(C)OO(25) <=> H2O(42) + [CH2]CCC(C)OO(35) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCC(C)OO(25) <=> CCC[C](C)OO(54) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCC(C)OO(25) <=> CC[CH]C(C)OO(32) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCC(C)OO(25) <=> C[CH]CC(C)OO(34) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCC(C)OO(25) <=> [CH2]C(CCC)OO(33) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCC(C)OO(25) <=> [CH2]CCC(C)OO(35) + CCCC(C)O(46) origin: H_Abstraction
rxn: [OH](26) + CCC(CC)OO(24) <=> H2O(42) + CC[C](CC)OO(59) origin: H_Abstraction
rxn: [OH](26) + CCC(CC)OO(24) <=> H2O(42) + C[CH]C(CC)OO(37) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCC(CC)OO(24) <=> CC[C](CC)OO(59) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCC(CC)OO(24) <=> C[CH]C(CC)OO(37) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCC(CC)OO(24) <=> [CH2]CC(CC)OO(38) + CCCC(C)O(46) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CCC[CH]COO(63) origin: H_Abstraction
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CCCC[CH]OO(84) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCCCOO(78) <=> CC[CH]CCOO(64) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCCCOO(78) <=> CCC[CH]COO(63) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCCCOO(78) <=> C[CH]CCCOO(65) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCCCOO(78) <=> CCCC[CH]OO(84) + CCCC(C)O(46) origin: H_Abstraction
rxn: CCCC(C)[O](41) + CCCCCOO(78) <=> [CH2]CCCCOO(66) + CCCC(C)O(46) origin: H_Abstraction

Errors occurred during edge comparison ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py RMS_CSTR_liquid_oxidation-edge stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/chem_edge_annotated.inp stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/species_edge_dictionary.txt test/regression/RMS_CSTR_liquid_oxidation/chemkin/chem_edge_annotated.inp test/regression/RMS_CSTR_liquid_oxidation/chemkin/species_edge_dictionary.txt` failed. (See above for error)
✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions! RMS_CSTR_liquid_oxidation Passed Observable Testing ✅

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:31
Current: Execution time (DD:HH:MM:SS): 00:00:00:25
Reference: Memory used: 753.20 MB
Current: Memory used: 752.57 MB

fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

fragment Passed Edge Comparison ✅

Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions! fragment Passed Observable Testing ✅
Errors occurred during observable testing ⚠️ WARNING: Initial mole fractions do not sum to one; normalizing.

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:03:17
Current: Execution time (DD:HH:MM:SS): 00:00:02:10
Reference: Memory used: 2677.50 MB
Current: Memory used: 2739.67 MB

RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅

Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅

RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅

Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅

✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions! RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅
Errors occurred during observable testing ⚠️ WARNING: Initial mole fractions do not sum to one; normalizing.

Regression test minimal_surface:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:29
Current: Execution time (DD:HH:MM:SS): 00:00:00:26
Reference: Memory used: 912.83 MB
Current: Memory used: 912.09 MB

minimal_surface Passed Core Comparison ✅

Original model has 11 species.
Test model has 11 species. ✅
Original model has 3 reactions.
Test model has 3 reactions. ✅

minimal_surface Passed Edge Comparison ✅

Original model has 38 species.
Test model has 38 species. ✅
Original model has 38 reactions.
Test model has 38 reactions. ✅

✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions! minimal_surface Passed Observable Testing ✅

beep boop this comment was written by a bot 🤖

@github-actions github-actions Bot removed the stale stale issue/PR as determined by actions bot label Aug 22, 2026
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

Successfully merging this pull request may close these issues.

2 participants