Miscellaneous changes, including a change to how species are named.#2921
Miscellaneous changes, including a change to how species are named.#2921rwest wants to merge 2 commits intoReactionMechanismGenerator:mainfrom
Conversation
Regression Testing Results
Detailed regression test results.Regression test aromatics:Reference: Execution time (DD:HH:MM:SS): 00:00:00:54 aromatics Passed Core Comparison ✅Original model has 15 species. aromatics Failed Edge Comparison ❌Original model has 106 species. Non-identical thermo! ❌
Identical thermo comments: Non-identical kinetics! ❌
kinetics: DetailsObservables Test Case: Aromatics Comparison✅ 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:59 liquid_oxidation Passed Core Comparison ✅Original model has 37 species. liquid_oxidation Failed Edge Comparison ❌Original model has 214 species. Non-identical kinetics! ❌
kinetics: DetailsObservables Test Case: liquid_oxidation Comparison✅ 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:01:03 nitrogen Passed Core Comparison ✅Original model has 41 species. nitrogen Passed Edge Comparison ✅Original model has 133 species. DetailsObservables Test Case: NC Comparison✅ 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:45 oxidation Passed Core Comparison ✅Original model has 59 species. oxidation Passed Edge Comparison ✅Original model has 230 species. DetailsObservables Test Case: Oxidation Comparison✅ 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:root:Initial mole fractions do not sum to one; normalizing.
|
Although Atom is a subclass of Vertex, it adds an element attribute. This leads to more efficient Cython code (and quietens a warning in vscode).
7318b37 introduced a `rename` flag to `generate_thermo` to prevent user-labelled initial species from being silently renamed by a library match. However, it called `generate_thermo(spec)` (rename=False) inside `make_new_species`, caching `spec.thermo` before the rename-enabled call in `apply_thermo_to_species` could run — so the `if not spc.thermo` guard in `generate_thermo` always short-circuited the rename for reaction products, leaving them with SMILES labels (e.g. "O=O") instead of their library names (e.g. "O2(S)"). Fix: pass `rename=not bool(spec.label)` so that reaction-generated species (no label yet) are renamed from the library entry, while user-labelled initial species are left unchanged. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR collects a few unrelated improvements, including a behavior change to prefer thermo library labels for unnamed species and a Cython typing adjustment to improve method availability/performance.
Changes:
- Update
make_new_species()to allowgenerate_thermo()to rename a species from a thermo library label when no label was provided. - Adjust
Reaction.is_balanced()Cython type declarations fromGraph/VertextoMolecule/Atom.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| rmgpy/rmg/model.py | Enables thermo-driven renaming when the species lacks an explicit label. |
| rmgpy/reaction.py | Refines Cython type declarations for better subclass method visibility. |
| # Rename from thermo library label only if no user-provided label exists yet. | ||
| self.generate_thermo(spec, rename=not bool(spec.label)) |
There was a problem hiding this comment.
The comment states the rename decision should be based on whether the user provided a label, but the condition is based on spec.label, which may already be populated from non-user sources earlier in make_new_species (e.g., copied from the input object). To make the behavior match the intent and stay stable if initialization changes, consider basing rename on the label argument (or a dedicated user_label_provided flag captured before mutating spec.label). Also, rename=not bool(spec.label) can be simplified to rename=not spec.label once the correct source-of-truth is chosen.
|
|
||
| if generate_thermo: | ||
| self.generate_thermo(spec) | ||
| # Rename from thermo library label only if no user-provided label exists yet. |
There was a problem hiding this comment.
The PR description says rmgpy/display.py was updated for improved Jupyter/IPython detection, but that file isn’t included in the provided diff set. Either include the rmgpy/display.py change in this PR or update the PR description to match the actual changes.
| cython.declare(reactant_elements=dict, product_elements=dict, molecule=Molecule, atom=Atom, element=Element, | ||
| reactants_net_charge=cython.int, products_net_charge=cython.int) |
There was a problem hiding this comment.
After switching the declared types to Molecule/Atom, ensure those names are in scope in this module under both Python execution and Cython compilation. If they aren’t already imported at module scope, add the appropriate imports (or local imports in this function) to avoid NameError/compile-time failures.
Regression Testing Results
Detailed regression test results.Regression test aromatics:Reference: Execution time (DD:HH:MM:SS): 00:00:00:54 aromatics Passed Core Comparison ✅Original model has 15 species. aromatics Failed Edge Comparison ❌Original model has 106 species. Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-CsCsHH) + group(Cds-CdsCsCs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + Estimated bicyclic component: polycyclic(s2_3_5_ane) - ring(Cyclopropane) - ring(Cyclopentane) + ring(Cyclopentene) + ring(Cyclopropane) + polycyclic(s2_3_6_ene_1) + polycyclic(s3_5_6_diene_1_5) - ring(Cyclopropane) - ring(Cyclopentene) - ring(Cyclohexene) + radical(cyclopentene-4) Non-identical thermo! ❌
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(Cyclopentane) - ring(Cyclohexane) + ring(Cyclopentene) + ring(Cyclohexene) - ring(Cyclopropane) - ring(Cyclopentene) - ring(Cyclohexene) + radical(cyclopentene-allyl) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(1,4-Cyclohexadiene) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)CsHH) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(1,3-Cyclohexadiene) + ring(1,3-Cyclohexadiene) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds- CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsHH) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(1,3-Cyclohexadiene) + ring(1,3-Cyclohexadiene) + radical(Cds_P) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cs-(Cds-Cds)(Cds-Cds)CsH) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds- CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsHH) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(1,3-Cyclohexadiene) + ring(1,3-Cyclohexadiene) Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: DetailsObservables Test Case: Aromatics Comparison✅ 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:59 liquid_oxidation Passed Core Comparison ✅Original model has 37 species. liquid_oxidation Passed Edge Comparison ✅Original model has 214 species. DetailsObservables Test Case: liquid_oxidation Comparison✅ 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:01:03 nitrogen Failed Core Comparison ❌Original model has 41 species. Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: nitrogen Failed Edge Comparison ❌Original model has 133 species. Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: DetailsObservables Test Case: NC Comparison✅ 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:45 oxidation Failed Core Comparison ❌Original model has 59 species. Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: oxidation Failed Edge Comparison ❌Original model has 230 species. Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: DetailsObservables Test Case: Oxidation ComparisonThe following observables did not match: ❌ Observable species [OH] varied by more than 0.500 on average between old model OH(5) and new model OH(5) in condition 1.
oxidation Failed Observable Testing ❌Errors occurred during observable testing
WARNING:root:Initial mole fractions do not sum to one; normalizing.
|
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|---|---|---|---|---|---|---|---|
| k(T): | 5.06 | 5.32 | 5.52 | 5.68 | 5.94 | 6.14 | 6.51 | 6.76 |
| k(T): | 6.64 | 6.51 | 6.47 | 6.47 | 6.54 | 6.62 | 6.82 | 7.00 |
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(-2.177,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
Identical kinetics comments:
kinetics: Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.
Non-identical kinetics! ❌
original:
rxn: SO(14) + HOSO(17) <=> SO2(15) + HSO(19) origin: Disproportionation
tested:
rxn: SO(14) + HOSO(17) <=> SO2(15) + HSO(19) origin: Disproportionation
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|---|---|---|---|---|---|---|---|
| k(T): | 5.06 | 5.32 | 5.52 | 5.68 | 5.94 | 6.14 | 6.51 | 6.76 |
| k(T): | 6.64 | 6.51 | 6.47 | 6.47 | 6.54 | 6.62 | 6.82 | 7.00 |
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(-2.177,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
Identical kinetics comments:
kinetics: Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.
Non-identical kinetics! ❌
original:
rxn: SH(21) + OS=[SH](78) <=> H2S(1) + SS=O(60) origin: Disproportionation
tested:
rxn: SH(21) + OS=[SH](78) <=> H2S(1) + SS=O(60) origin: Disproportionation
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|---|---|---|---|---|---|---|---|
| k(T): | 5.06 | 5.32 | 5.52 | 5.68 | 5.94 | 6.14 | 6.51 | 6.76 |
| k(T): | 6.64 | 6.51 | 6.47 | 6.47 | 6.54 | 6.62 | 6.82 | 7.00 |
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(-2.177,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
Identical kinetics comments:
kinetics: Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.
Non-identical kinetics! ❌
original:
rxn: HSS(35) + HOSO(17) <=> SO2(15) + HSSH(36) origin: Disproportionation
tested:
rxn: HSS(35) + HOSO(17) <=> SO2(15) + HSSH(36) origin: Disproportionation
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|---|---|---|---|---|---|---|---|
| k(T): | 5.06 | 5.32 | 5.52 | 5.68 | 5.94 | 6.14 | 6.51 | 6.76 |
| k(T): | 6.64 | 6.51 | 6.47 | 6.47 | 6.54 | 6.62 | 6.82 | 7.00 |
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
kinetics: Arrhenius(A=(847891,'cm^3/(mol*s)'), n=2.071, Ea=(-2.177,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.""")
Identical kinetics comments:
kinetics: Estimated from node Root_N-4R->H_4CNOS-u1_1R!H->O_N-2R!H->C in family Disproportionation.
Details
Observables Test Case: SO2 Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
sulfur Passed Observable Testing ✅
Regression test superminimal:
Reference: Execution time (DD:HH:MM:SS): 00:00:00:25
Current: Execution time (DD:HH:MM:SS): 00:00:00:25
Reference: Memory used: 949.07 MB
Current: Memory used: 952.64 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:18
Current: Execution time (DD:HH:MM:SS): 00:00:02:20
Reference: Memory used: 2337.26 MB
Current: Memory used: 2307.34 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. ✅
Details
Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison✅ 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:30:23
Current: Execution time (DD:HH:MM:SS): 00:00:10:24
Reference: Memory used: 2633.13 MB
Current: Memory used: 2648.76 MB
RMS_CSTR_liquid_oxidation Failed Core Comparison ❌
Original model has 35 species.
Test model has 35 species. ✅
Original model has 181 reactions.
Test model has 138 reactions. ❌
The original model has 4 species that the tested model does not have. ❌
spc: CH3
spc: CCCC(C)O(47)
spc: CCCC=O(88)
spc: [CH2]CCC(C)O(93)
The tested model has 4 species that the original model does not have. ❌
spc: CCH2
spc: [CH2]CCCCOO(66)
spc: CC1CC(C)O1(87)
spc: C=CCC(C)OO(89)
The original model has 53 reactions that the tested model does not have. ❌
rxn: oxygen(1) + O(42) <=> [OH](24) + [O]O(13) origin: H_Abstraction
rxn: [OH](24) + OO(23) <=> [O]O(13) + O(42) origin: H_Abstraction
rxn: CCCCCO[O](61) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CC(C)OO(37) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [OH](24) + [CH2]CCCC(12) <=> O(42) + C=CCCC(17) origin: Disproportionation
rxn: [OH](24) + C[CH]CCC(11) <=> O(42) + C=CCCC(17) origin: Disproportionation
rxn: CCCC(C)[O](44) <=> [CH2]CCC(C)O(93) origin: intra_H_migration
rxn: [CH3](10) + CCCC=O(88) <=> CCCC(C)[O](44) origin: R_Addition_MultipleBond
rxn: CCCC(C)[O](44) + pentane(2) <=> CC[CH]CC(7) + CCCC(C)O(47) origin: H_Abstraction
rxn: CCCC(C)[O](44) + pentane(2) <=> C[CH]CCC(11) + CCCC(C)O(47) origin: H_Abstraction
rxn: CCCC(C)[O](44) + pentane(2) <=> [CH2]CCCC(12) + CCCC(C)O(47) origin: H_Abstraction
rxn: [O]O(13) + CCCC(C)[O](44) <=> oxygen(1) + CCCC(C)O(47) origin: H_Abstraction
rxn: C[CH]CCC(11) + CCCC(C)[O](44) <=> C=CCCC(17) + CCCC(C)O(47) origin: Disproportionation
rxn: CCCC(C)[O](44) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCC(C)O(47) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCC(C)[O](44) <=> C=CCCC(17) + CCCC(C)O(47) origin: Disproportionation
rxn: CCCC(C)[O](44) + CCCC(C)OO(26) <=> CCCC(C)O[O](21) + CCCC(C)O(47) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCC(C)O(47) origin: H_Abstraction
rxn: O(42) + C=CCCC(17) <=> CCCC(C)O(47) origin: 1,3_Insertion_ROR
rxn: [OH](24) + CCCC(C)O(47) <=> O(42) + CCCC(C)[O](44) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)O(47) origin: H_Abstraction
rxn: [O]O(13) + CCCC(C)O(47) <=> OO(23) + CCCC(C)[O](44) origin: H_Abstraction
rxn: C[CH]CCC(11) + CCC(CC)O[O](22) <=> CC=CCC(16) + CCC(CC)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)O[O](21) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)[O](44) <=> CC=CCC(16) + CCCC(C)O(47) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(37) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: CC[CH]CC(7) + CCC(CC)O[O](22) <=> CC=CCC(16) + CCC(CC)OO(27) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)O[O](21) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: CC[CH]CC(7) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)[O](44) <=> CC=CCC(16) + CCCC(C)O(47) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(37) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + pentane(2) origin: Disproportionation
rxn: CCC(CC)O[O](22) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCC(CC)OO(27) origin: Disproportionation
rxn: CCCC(C)O[O](21) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCCC(C)OO(26) origin: Disproportionation
rxn: CCCCCO[O](61) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCCCCOO(78) origin: Disproportionation
rxn: CCCC(C)[O](44) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCCC(C)O(47) origin: Disproportionation
rxn: [CH2]CC(CC)OO(32) + CCCCCOO(78) <=> CCCCCO[O](61) + CCC(CC)OO(27) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCC(CC)OO(27) <=> [CH2]CC(CC)OO(32) + CCCC(C)O(47) origin: H_Abstraction
rxn: [CH2]CC(CC)OO(32) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCC(CC)OO(27) origin: H_Abstraction
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + [OH](24) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](21) + CCCCCO[O](61) <=> oxygen(1) + CCCC(C)[O](44) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCCCO[O](61) + CCCCCO[O](61) <=> oxygen(1) + CCCCC[O](79) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: C[CH]CCCOO(75) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCCCOO(78) <=> C[CH]CCCOO(75) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(75) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> C[CH]CCCOO(75) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(75) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCCCCOO(78) <=> C[CH]CCCOO(75) + CCCC(C)O(47) origin: H_Abstraction
rxn: C[CH]CCCOO(75) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC(CC)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCC([O])CC(41) + CCCCC[O](79) origin: Peroxyl_Disproportionation
The tested model has 10 reactions that the original model does not have. ❌
rxn: C[CH2](6) + [CH2]CC(5) <=> pentane(2) origin: R_Recombination
rxn: C[CH]CC(C)OO(34) <=> [OH](24) + CC1CC(C)O1(87) origin: Cyclic_Ether_Formation
rxn: oxygen(1) + C[CH]CC(C)OO(34) <=> [O]O(13) + C=CCC(C)OO(89) origin: Disproportionation
rxn: CCCCCO[O](61) <=> [CH2]CCCCOO(66) origin: intra_H_migration
rxn: [O]O(13) + [CH2]CCCCOO(66) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: OO(23) + [CH2]CCCCOO(66) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCC(C)OO(27) <=> CCCC(C)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: [OH](24) + CCCCCOO(78) <=> H2O(42) + [CH2]CCCCOO(66) origin: H_Abstraction
rxn: [CH2]CCCC(12) + [CH2]CCCCOO(66) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCCOO(66) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌
Original model has 107 species.
Test model has 99 species. ❌
Original model has 545 reactions.
Test model has 375 reactions. ❌
The original model has 8 species that the tested model does not have. ❌
spc: CCCCCOOOO(101)
spc: CCCC(C)OOO(102)
spc: CCCCCO(103)
spc: CCC[CH]CO(104)
spc: CCCCCOOO
spc: OOO(106)
spc: CCC(CC)OOO(107)
spc: CCCCCOOO(108)
The original model has 170 reactions that the tested model does not have. ❌
rxn: oxygen(1) + O(42) <=> [OH](24) + [O]O(13) origin: H_Abstraction
rxn: [OH](24) + OO(23) <=> [O]O(13) + O(42) origin: H_Abstraction
rxn: CCCCCO[O](61) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CC(C)OO(37) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [OH](24) + [CH2]CCCC(12) <=> O(42) + C=CCCC(17) origin: Disproportionation
rxn: [OH](24) + C[CH]CCC(11) <=> O(42) + C=CCCC(17) origin: Disproportionation
rxn: [O]O(13) + CCCC(C)[O](44) <=> oxygen(1) + CCCC(C)O(47) origin: H_Abstraction
rxn: C[CH]CCC(11) + CCCC(C)[O](44) <=> C=CCCC(17) + CCCC(C)O(47) origin: Disproportionation
rxn: [CH2]CCCC(12) + CCCC(C)[O](44) <=> C=CCCC(17) + CCCC(C)O(47) origin: Disproportionation
rxn: O(42) + C=CCCC(17) <=> CCCC(C)O(47) origin: 1,3_Insertion_ROR
rxn: [OH](24) + CCCC(C)O(47) <=> O(42) + CCCC(C)[O](44) origin: H_Abstraction
rxn: [O]O(13) + CCCC(C)O(47) <=> OO(23) + CCCC(C)[O](44) origin: H_Abstraction
rxn: C[CH]CCC(11) + CCC(CC)O[O](22) <=> CC=CCC(16) + CCC(CC)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)O[O](21) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)[O](44) <=> CC=CCC(16) + CCCC(C)O(47) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(37) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: CC[CH]CC(7) + CCC(CC)O[O](22) <=> CC=CCC(16) + CCC(CC)OO(27) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)O[O](21) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: CC[CH]CC(7) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)[O](44) <=> CC=CCC(16) + CCCC(C)O(47) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(37) <=> CC=CCC(16) + CCCC(C)OO(26) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + pentane(2) origin: Disproportionation
rxn: CCC(CC)O[O](22) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCC(CC)OO(27) origin: Disproportionation
rxn: CCCC(C)O[O](21) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCCC(C)OO(26) origin: Disproportionation
rxn: CCCCCO[O](61) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCCCCOO(78) origin: Disproportionation
rxn: CCCC(C)[O](44) + C[CH]CC(C)OO(37) <=> CC=CC(C)OO(97) + CCCC(C)O(47) origin: Disproportionation
rxn: [CH2]CC(CC)OO(32) + CCCCCOO(78) <=> CCCCCO[O](61) + CCC(CC)OO(27) origin: H_Abstraction
rxn: [CH2]CC(CC)OO(32) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCC(CC)OO(27) origin: H_Abstraction
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + [OH](24) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](21) + CCCCCO[O](61) <=> oxygen(1) + CCCC(C)[O](44) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCCCO[O](61) + CCCCCO[O](61) <=> oxygen(1) + CCCCC[O](79) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: C[CH]CCCOO(75) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCCCOO(78) <=> C[CH]CCCOO(75) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(75) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> C[CH]CCCOO(75) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(75) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(75) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC(CC)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCC([O])CC(41) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: [H](8) + [OH](24) <=> O(42) origin: R_Recombination
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + O(42) + CCCCC=O(72) origin: Peroxyl_Termination
rxn: [O]O(13) + CCCCCO[O](61) <=> CCCCCOOOO(101) origin: R_Recombination
rxn: [O]O(13) + CCCC(C)[O](44) <=> OO(23) + CCCC(C)=O(34) origin: Disproportionation
rxn: [O]O(13) + CCCC(C)[O](44) <=> CCCC(C)OOO(102) origin: R_Recombination
rxn: C=CC[CH]C(64) + pentane(2) <=> C=CCCC(17) + C[CH]CCC(11) origin: H_Abstraction
rxn: C=CCCC(17) + C[CH]CCC(11) <=> [CH2]C=CCC(66) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + pentane(2) <=> C=CCCC(17) + C[CH]CCC(11) origin: H_Abstraction
rxn: C=[C]CCC(68) + pentane(2) <=> C=CCCC(17) + C[CH]CCC(11) origin: H_Abstraction
rxn: [CH]=CCCC(69) + pentane(2) <=> C=CCCC(17) + C[CH]CCC(11) origin: H_Abstraction
rxn: CC[CH]CCOO(74) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(73) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(76) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCC(11) + CCCC(C)[O](44) <=> CCCC(C)=O(34) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(37) <=> C=CCC(C)OO(98) + pentane(2) origin: Disproportionation
rxn: C=CCCC(17) + CC[CH]CC(7) <=> C=CC[CH]C(64) + pentane(2) origin: H_Abstraction
rxn: C=CCCC(17) + CC[CH]CC(7) <=> [CH2]C=CCC(66) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + pentane(2) <=> C=CCCC(17) + CC[CH]CC(7) origin: H_Abstraction
rxn: C=[C]CCC(68) + pentane(2) <=> C=CCCC(17) + CC[CH]CC(7) origin: H_Abstraction
rxn: [CH]=CCCC(69) + pentane(2) <=> C=CCCC(17) + CC[CH]CC(7) origin: H_Abstraction
rxn: CC[CH]CCOO(74) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(73) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCCCOO(78) <=> CCCC[CH]OO(84) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCCOO(76) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCC(C)[O](44) <=> CCCC(C)=O(34) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(37) <=> C=CCC(C)OO(98) + pentane(2) origin: Disproportionation
rxn: C=CC[CH]C(64) + CCC(CC)OO(27) <=> C=CCCC(17) + CCC(CC)O[O](22) origin: H_Abstraction
rxn: C=CCCC(17) + CCC(CC)O[O](22) <=> [CH2]C=CCC(66) + CCC(CC)OO(27) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + CCC(CC)OO(27) <=> C=CCCC(17) + CCC(CC)O[O](22) origin: H_Abstraction
rxn: C=[C]CCC(68) + CCC(CC)OO(27) <=> C=CCCC(17) + CCC(CC)O[O](22) origin: H_Abstraction
rxn: [CH]=CCCC(69) + CCC(CC)OO(27) <=> C=CCCC(17) + CCC(CC)O[O](22) origin: H_Abstraction
rxn: CCC(CC)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCC(=O)CC(30) + CCCCCO(103) origin: Peroxyl_Termination
rxn: CCC(CC)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCCCC=O(72) + CCC(O)CC(46) origin: Peroxyl_Termination
rxn: CC[CH]CCOO(74) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(73) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(76) + CCC(CC)OO(27) <=> CCC(CC)O[O](22) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCC(CC)O[O](22) <=> CCCC(C)=O(34) + CCC(CC)OO(27) origin: Disproportionation
rxn: CCC(CC)O[O](22) + C[CH]CC(C)OO(37) <=> C=CCC(C)OO(98) + CCC(CC)OO(27) origin: Disproportionation
rxn: C=CC[CH]C(64) + CCCC(C)OO(26) <=> C=CCCC(17) + CCCC(C)O[O](21) origin: H_Abstraction
rxn: C=CCCC(17) + CCCC(C)O[O](21) <=> [CH2]C=CCC(66) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + CCCC(C)OO(26) <=> C=CCCC(17) + CCCC(C)O[O](21) origin: H_Abstraction
rxn: C=[C]CCC(68) + CCCC(C)OO(26) <=> C=CCCC(17) + CCCC(C)O[O](21) origin: H_Abstraction
rxn: [CH]=CCCC(69) + CCCC(C)OO(26) <=> C=CCCC(17) + CCCC(C)O[O](21) origin: H_Abstraction
rxn: CCCC(C)O[O](21) + CCCCCO[O](61) <=> oxygen(1) + CCCC(C)=O(34) + CCCCCO(103) origin: Peroxyl_Termination
rxn: CCCC(C)O[O](21) + CCCCCO[O](61) <=> oxygen(1) + CCCCC=O(72) + CCCC(C)O(47) origin: Peroxyl_Termination
rxn: CCCC(C)[O](44) + CCCC(C)O[O](21) <=> CCCC(C)=O(34) + CCCC(C)OO(26) origin: Disproportionation
rxn: CCCC(C)O[O](21) + C[CH]CC(C)OO(37) <=> C=CCC(C)OO(98) + CCCC(C)OO(26) origin: Disproportionation
rxn: CC[C](CC)OO(52) + CCCCCOO(78) <=> CCCCCO[O](61) + CCC(CC)OO(27) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) + CCCCCOO(78) <=> CCCCCO[O](61) + CCC(CC)OO(27) origin: H_Abstraction
rxn: C[CH]CC(C)OO(37) + CCC(CC)OO(27) <=> CC[C](CC)OO(52) + CCCC(C)OO(26) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCC(CC)OO(27) origin: H_Abstraction
rxn: C=CCCC(17) + [CH2]CCCC(12) <=> C=CC[CH]C(64) + pentane(2) origin: H_Abstraction
rxn: C=CCCC(17) + [CH2]CCCC(12) <=> [CH2]C=CCC(66) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + pentane(2) <=> C=CCCC(17) + [CH2]CCCC(12) origin: H_Abstraction
rxn: C=[C]CCC(68) + pentane(2) <=> C=CCCC(17) + [CH2]CCCC(12) origin: H_Abstraction
rxn: [CH]=CCCC(69) + pentane(2) <=> C=CCCC(17) + [CH2]CCCC(12) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> CC[CH]CCOO(74) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> CCC[CH]COO(73) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> CCCC[CH]OO(84) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCCOO(76) + pentane(2) <=> [CH2]CCCC(12) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCC(C)[O](44) <=> CCCC(C)=O(34) + pentane(2) origin: Disproportionation
rxn: CCC[C](C)OO(58) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(26) origin: H_Abstraction
rxn: CC[CH]C(C)OO(35) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [CH2]CCC(C)OO(38) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(26) origin: H_Abstraction
rxn: C[CH]CC(C)OO(37) + CCCC(C)OO(26) <=> CCC[C](C)OO(58) + CCCC(C)OO(26) origin: H_Abstraction
rxn: CC[CH]C(C)OO(35) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [CH2]CCC(C)OO(38) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [OH](24) + C=CCCC(17) <=> O(42) + C=CC[CH]C(64) origin: H_Abstraction
rxn: [OH](24) + C=CCCC(17) <=> O(42) + [CH2]C=CCC(66) origin: H_Abstraction
rxn: [OH](24) + C=CCCC(17) <=> O(42) + [CH2]CCC=C(67) origin: H_Abstraction
rxn: [OH](24) + C=CCCC(17) <=> O(42) + C=[C]CCC(68) origin: H_Abstraction
rxn: [OH](24) + C=CCCC(17) <=> O(42) + [CH]=CCCC(69) origin: H_Abstraction
rxn: [OH](24) + C=CCCC(17) <=> [CH2]C(O)CCC(91) origin: R_Addition_MultipleBond
rxn: [OH](24) + C=CCCC(17) <=> CCC[CH]CO(104) origin: R_Addition_MultipleBond
rxn: [OH](24) + CCCC(C)[O](44) <=> O(42) + CCCC(C)=O(34) origin: Disproportionation
rxn: C=CC[CH]C(64) + CCCCCOO(78) <=> C=CCCC(17) + CCCCCO[O](61) origin: H_Abstraction
rxn: C=CCCC(17) + CCCCCO[O](61) <=> [CH2]C=CCC(66) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + CCCCCOO(78) <=> C=CCCC(17) + CCCCCO[O](61) origin: H_Abstraction
rxn: C=[C]CCC(68) + CCCCCOO(78) <=> C=CCCC(17) + CCCCCO[O](61) origin: H_Abstraction
rxn: [CH]=CCCC(69) + CCCCCOO(78) <=> C=CCCC(17) + CCCCCO[O](61) origin: H_Abstraction
rxn: O(42) + C=CCCC(17) <=> CCCCCO(103) origin: 1,3_Insertion_ROR
rxn: C=CCCC(17) + CCCC(C)[O](44) <=> C=CC[CH]C(64) + CCCC(C)O(47) origin: H_Abstraction
rxn: C=CCCC(17) + CCCC(C)[O](44) <=> [CH2]C=CCC(66) + CCCC(C)O(47) origin: H_Abstraction
rxn: C=CCCC(17) + CCCC(C)[O](44) <=> [CH2]CCC=C(67) + CCCC(C)O(47) origin: H_Abstraction
rxn: C=[C]CCC(68) + CCCC(C)O(47) <=> C=CCCC(17) + CCCC(C)[O](44) origin: H_Abstraction
rxn: [CH]=CCCC(69) + CCCC(C)O(47) <=> C=CCCC(17) + CCCC(C)[O](44) origin: H_Abstraction
rxn: C=CC[CH]C(64) + CCCC(C)OO(26) <=> C=CCCC(17) + C[CH]CC(C)OO(37) origin: H_Abstraction
rxn: C=CCCC(17) + C[CH]CC(C)OO(37) <=> [CH2]C=CCC(66) + CCCC(C)OO(26) origin: H_Abstraction
rxn: [CH2]CCC=C(67) + CCCC(C)OO(26) <=> C=CCCC(17) + C[CH]CC(C)OO(37) origin: H_Abstraction
rxn: C=[C]CCC(68) + CCCC(C)OO(26) <=> C=CCCC(17) + C[CH]CC(C)OO(37) origin: H_Abstraction
rxn: [CH]=CCCC(69) + CCCC(C)OO(26) <=> C=CCCC(17) + C[CH]CC(C)OO(37) origin: H_Abstraction
rxn: CCCCCO[O](61) + CCCCCO[O](61) <=> oxygen(1) + CCCCC=O(72) + CCCCCO(103) origin: Peroxyl_Termination
rxn: CC[CH]CCOO(74) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(73) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(76) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCCCCO[O](61) <=> CCCC(C)=O(34) + CCCCCOO(78) origin: Disproportionation
rxn: CCCCCO[O](61) + C[CH]CC(C)OO(37) <=> C=CCC(C)OO(98) + CCCCCOO(78) origin: Disproportionation
rxn: CC[CH]CCOO(74) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(73) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(76) + CCCC(C)OO(26) <=> C[CH]CC(C)OO(37) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC(C)[O](44) + CCCC(C)[O](44) <=> CCCC(C)=O(34) + CCCC(C)O(47) origin: Disproportionation
rxn: CCCC(C)[O](44) + C[CH]CC(C)OO(37) <=> C=CCC(C)OO(98) + CCCC(C)O(47) origin: Disproportionation
rxn: CCCC(C)[O](44) + C[CH]CC(C)OO(37) <=> CCCC(C)=O(34) + CCCC(C)OO(26) origin: Disproportionation
rxn: CCCC(C)O[O](21) + CCC(CC)OO[O](48) <=> oxygen(1) + CCCC(C)[O](44) + CCC(CC)O[O](22) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](21) + CCCC(C)OO[O](49) <=> oxygen(1) + CCCC(C)[O](44) + CCCC(C)O[O](21) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](21) + CCCCCOO[O](105) <=> oxygen(1) + CCCC(C)[O](44) + CCCCCO[O](61) origin: Peroxyl_Disproportionation
rxn: OO(23) + OOO(106) <=> [O]O(13) + [O]O(13) + O(42) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OOO(106) + CCC(CC)OO(27) <=> [O]O(13) + O(42) + CCC(CC)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCC(CC)OOO(107) <=> [O]O(13) + O(42) + CCC(CC)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OOO(106) + CCCC(C)OO(26) <=> [O]O(13) + O(42) + CCCC(C)O[O](21) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCC(C)OOO(102) <=> [O]O(13) + O(42) + CCCC(C)O[O](21) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OOO(106) + CCCCCOO(78) <=> [O]O(13) + O(42) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCCCOOO(108) <=> [O]O(13) + O(42) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(27) + CCC(CC)OOO(107) <=> O(42) + CCC(CC)O[O](22) + CCC(CC)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OO(26) + CCC(CC)OOO(107) <=> O(42) + CCC(CC)O[O](22) + CCCC(C)O[O](21) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(27) + CCCC(C)OOO(102) <=> O(42) + CCC(CC)O[O](22) + CCCC(C)O[O](21) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCC(CC)OOO(107) <=> O(42) + CCC(CC)O[O](22) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(27) + CCCCCOOO(108) <=> O(42) + CCC(CC)O[O](22) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OO(26) + CCCC(C)OOO(102) <=> O(42) + CCCC(C)O[O](21) + CCCC(C)O[O](21) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCCC(C)OOO(102) <=> O(42) + CCCC(C)O[O](21) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OO(26) + CCCCCOOO(108) <=> O(42) + CCCC(C)O[O](21) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCCCCOOO(108) <=> O(42) + CCCCCO[O](61) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
Details
Observables Test Case: RMS_CSTR_liquid_oxidation Comparison✅ 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:34
Current: Execution time (DD:HH:MM:SS): 00:00:00:34
Reference: Memory used: 737.47 MB
Current: Memory used: 737.35 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. ✅
Details
Observables Test Case: fragment Comparison✅ 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:root:Initial mole fractions do not sum to one; normalizing.
Regression test RMS_constantVIdealGasReactor_fragment:
Reference: Execution time (DD:HH:MM:SS): 00:00:02:47
Current: Execution time (DD:HH:MM:SS): 00:00:02:48
Reference: Memory used: 2473.45 MB
Current: Memory used: 2538.39 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. ✅
Details
Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison✅ 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:root:Initial mole fractions do not sum to one; normalizing.
Regression test minimal_surface:
Reference: Execution time (DD:HH:MM:SS): 00:00:00:32
Current: Execution time (DD:HH:MM:SS): 00:00:00:32
Reference: Memory used: 899.19 MB
Current: Memory used: 891.83 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. ✅
Details
Observables Test Case: minimal_surface Comparison✅ 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 🤖
Motivation or Problem
Some small, miscellaneous changes, collected from other branches that they're not actually pertinent to.
One of them changes species naming. The others are minor tweaks.
Description of Changes
This pull request introduces several improvements and fixes across the codebase, focusing on better environment detection, minor type corrections, and improved species labeling logic.
make_new_speciesinrmgpy/rmg/model.pyto rename a species using the name from a thermo library label, if the user did not already provide a label, but did specify a thermo library that has a label. This was the original intended behavior, but it was accidentally changed a while ago so that it ignored thermo library names. (Becausegenerate_thermo(spec)was first called with a default of not renaming, and then when it was later called with the intent to rename things, the thermo already existed so it was skipped). A down-side of this new approach is that the names in your model might change when you swap in and out thermo libraries. A benefit of this change is that you have some control over the names in your model, and the names in thermo libraries should be better (the ones currently auto-generated from SMILES strings or chemical formulae can be misleading). Do people have strong views?Bug fix: Updated the logic inGot merged in d9ab313 on a different PR.rmgpy/display.pyto more robustly detect if the code is running in a Jupyter or IPython environment. Was using a decades-old deprecated API that recently caused me an error when runningjupyter nbconvert --executeon something.rmgpy/reaction.pyfromGraph/VertextoMolecule/Atom, so Cython knows that some of the subclasses methods are available.Testing
How I tested? I made the changes because they fixed things.I have been using most of the changes on other branches for a while. I ran the tests. I relied on CI (which is about to run on this pull request).