Skip to content

Require atom style objects to have the same labels to match - #2982

Open
mjohnson541 wants to merge 1 commit into
mainfrom
check_labels_in_isomorphism
Open

Require atom style objects to have the same labels to match#2982
mjohnson541 wants to merge 1 commit into
mainfrom
check_labels_in_isomorphism

Conversation

@mjohnson541

Copy link
Copy Markdown
Contributor

No description provided.

@rwest

rwest commented Jun 11, 2026

Copy link
Copy Markdown
Member

Claude's analysis:

The intent is good: ensuring that labeled atoms in reaction templates match correctly. But the implementation is too broad. The solution is conditional label checking:

# In Atom.equivalent() and is_equivalent():
# Only require label match if EITHER atom has a label
if (self.label or other.label) and self.label != other.label:
    return False

This way:

  • ✅ Labeled atoms (*1, *2, etc.) match only with the same label
  • ✅ Unlabeled atoms ('') can still act as wildcards
  • ✅ Database lookups work correctly
  • ✅ Reaction templates work as intended

The current commit conflates two different use cases:

  1. Exact matching: When both atoms have labels, they must match exactly
  2. Pattern matching: When an atom has no label, it matches any atom

A better approach would be to apply the strict check only when needed for reaction-specific logic (like template matching), not in the generic equivalent() method used throughout the codebase.


But I still don't know what problem it's trying to fix.

@mjohnson541

Copy link
Copy Markdown
Contributor Author

I'm starting to run into a lot of cases where it's much faster and more convenient to have the label check as part of the isomorphism rather than trying to construct the label map beforehand and feed it in, which we only have implemented for some of the isomorphism algorithms.

I mostly created this just to see how much would break from that modification. I went down a rabbit hole adding a check_labels option, but something went wrong with it. For the sake of urgency I'm using a special branch of molecule instead for now.

What Claude is proposing here doesn't make any sense because the only labels we have that are "null" are '' so if not (self.label or other.label) then self.label == '' == other.label anyway. So the change it proposes shouldn't change output.

@JacksonBurns
JacksonBurns force-pushed the check_labels_in_isomorphism branch from 6cc9bf8 to e032a96 Compare August 21, 2026 20:34
@LekiaAnonim
LekiaAnonim force-pushed the check_labels_in_isomorphism branch from e032a96 to 6dd8e03 Compare September 6, 2026 04:56
@github-actions

github-actions Bot commented Sep 6, 2026

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:53
Current: Execution time (DD:HH:MM:SS): 00:00:00:52
Reference: Memory used: 811.68 MB
Current: Memory used: 811.23 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]1C2C=CC3C(=C2)C13
tested: [CH]1C2C=CC3C(=C2)C13

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
125.44 71.45 27.43 34.15 40.42 46.18 56.01 63.43 71.86
144.84 79.03 29.08 35.37 40.95 45.86 53.89 59.79 67.35

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(Cyclopentane) - ring(Cyclopropane) + 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)
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(Cyclopentane) - ring(Cyclopropane) + ring(Cyclopentene) + ring(Cyclopropane) + polycyclic(s2_3_6_diene_0_3) + Estimated bicyclic component: polycyclic(s3_5_6_ane) - ring(Cyclohexane) - ring(Cyclopentane) + ring(1,4-Cyclohexadiene) + ring(Cyclopentene) - ring(Cyclopropane) - ring(Cyclopentene) - ring(1,4-Cyclohexadiene) + radical(cyclopentene-4)

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

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -27.05 -17.33 -11.49 -7.60 -2.72 0.21 4.13 6.10
k(T): -37.76 -25.37 -17.92 -12.96 -6.74 -3.01 1.98 4.49

kinetics: Arrhenius(A=(1.12e+11,'s^-1'), n=0.26, Ea=(53.177,'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=(67.891,'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.

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:52
Current: Execution time (DD:HH:MM:SS): 00:00:01:51
Reference: Memory used: 895.56 MB
Current: Memory used: 894.99 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 1588 reactions.
Test model has 1588 reactions. ✅
The original model has 2 reactions that the tested model does not have. ❌
rxn: CC(C[CH]COO)OO(118) <=> CC(CC[CH]OO)OO(133) origin: intra_H_migration
rxn: CC(C[CH]COO)OO(118) <=> C[C](CCCOO)OO(132) origin: intra_H_migration
The tested model has 2 reactions that the original model does not have. ❌
rxn: CC(C[CH]COO)OO(115) <=> [OH](22) + CC(CCC=O)OO(116) origin: intra_H_migration
rxn: CC(C[CH]COO)OO(115) <=> [OH](22) + CC(=O)CCCOO(112) origin: intra_H_migration

Non-identical kinetics! ❌
original:
rxn: CCC(CC)O[O](36) + CCCCCO[O](37) <=> oxygen(1) + CCC([O])CC(69) + CCCCC[O](67) origin: Peroxyl_Disproportionation
tested:
rxn: CCC(CC)O[O](36) + CCCCCO[O](37) <=> oxygen(1) + CCC([O])CC(67) + CCCCC[O](69) origin: Peroxyl_Disproportionation

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 8.02 7.64 7.35 7.11 6.75 6.48 5.99 5.64
k(T): 3.54 4.28 4.73 5.02 5.39 5.62 5.91 6.06

kinetics: Arrhenius(A=(3.18266e+20,'cm^3/(mol*s)'), n=-2.694, Ea=(-0.265,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing in family Peroxyl_Disproportionation.""")
kinetics: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), n=0, Ea=(4.064,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R in family Peroxyl_Disproportionation.""")
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing in family Peroxyl_Disproportionation.
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R in family Peroxyl_Disproportionation.

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:59
Current: Execution time (DD:HH:MM:SS): 00:00:00:59
Reference: Memory used: 893.65 MB
Current: Memory used: 897.90 MB

nitrogen Failed Core Comparison ❌

Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 359 reactions. ❌
The original model has 1 reactions that the tested model does not have. ❌
rxn: HNO(48) + HCO(13) <=> NO(38) + CH2O(18) origin: H_Abstraction

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

Original model has 133 species.
Test model has 133 species. ✅
Original model has 983 reactions.
Test model has 981 reactions. ❌
The original model has 2 reactions that the tested model does not have. ❌
rxn: HNO(48) + HCO(13) <=> NO(38) + CH2O(18) origin: H_Abstraction
rxn: HON(T)(83) + HCO(13) <=> NO(38) + CH2O(18) origin: Disproportionation

Errors occurred during edge comparison ⚠️ ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py nitrogen-edge stable_regression_results/nitrogen/chemkin/chem_edge_annotated.inp stable_regression_results/nitrogen/chemkin/species_edge_dictionary.txt test/regression/nitrogen/chemkin/chem_edge_annotated.inp test/regression/nitrogen/chemkin/species_edge_dictionary.txt` failed. (See above for error)
✅ 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:36
Current: Execution time (DD:HH:MM:SS): 00:00:01:35
Reference: Memory used: 780.72 MB
Current: Memory used: 778.88 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:40
Current: Execution time (DD:HH:MM:SS): 00:00:00:37
Reference: Memory used: 895.09 MB
Current: Memory used: 892.30 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)
✅ 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:26
Current: Execution time (DD:HH:MM:SS): 00:00:00:24
Reference: Memory used: 930.58 MB
Current: Memory used: 939.34 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:26
Current: Execution time (DD:HH:MM:SS): 00:00:02:23
Reference: Memory used: 2387.41 MB
Current: Memory used: 2368.81 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:16:23
Current: Execution time (DD:HH:MM:SS): 00:00:12:43
Reference: Memory used: 2825.00 MB
Current: Memory used: 3058.57 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 35 species.
Test model has 35 species. ✅
Original model has 132 reactions.
Test model has 137 reactions. ❌
The original model has 5 species that the tested model does not have. ❌
spc: [CH2]CC(5)
spc: CH3
spc: C=CC(19)
spc: C[CH]C(CC)OO(31)
spc: [CH2]C(CCC)OO(36)
The tested model has 5 species that the original model does not have. ❌
spc: CCCCCO
spc: CC1CC(C)O1(87)
spc: CC=CC(C)OO(88)
spc: C=CCC(C)OO(89)
spc: CC(CC(C)OO)OO
The original model has 27 reactions that the tested model does not have. ❌
rxn: CCCC(C)O[O](22) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: C[CH]CC(C)OO(37) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) <=> CCC(CC)O[O](21) origin: intra_H_migration
rxn: [O]O(13) + C[CH]C(CC)OO(31) <=> oxygen(1) + CCC(CC)OO(26) origin: H_Abstraction
rxn: OO(23) + C[CH]C(CC)OO(31) <=> [O]O(13) + CCC(CC)OO(26) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) + pentane(2) <=> CC[CH]CC(7) + CCC(CC)OO(26) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) + pentane(2) <=> C[CH]CCC(11) + CCC(CC)OO(26) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) + CCC(CC)OO(26) <=> CCC(CC)O[O](21) + CCC(CC)OO(26) origin: H_Abstraction
rxn: C[CH]C(CC)OO(31) + CCCC(C)OO(27) <=> CCCC(C)O[O](22) + CCC(CC)OO(26) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCC(CC)OO(26) <=> C[CH]C(CC)OO(31) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + C[CH]C(CC)OO(31) <=> C=CCCC(18) + CCC(CC)OO(26) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]C(CC)OO(31) <=> C=CCCC(18) + CCC(CC)OO(26) origin: Disproportionation
rxn: CC[CH]C(C)OO(35) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: C[CH2](6) + [CH2]CC(5) <=> pentane(2) origin: R_Recombination
rxn: C[CH]CCC(11) <=> C[CH2](6) + C=CC(19) origin: R_Addition_MultipleBond
rxn: CCCC(C)O[O](22) <=> [CH2]C(CCC)OO(36) origin: intra_H_migration
rxn: [O]O(13) + [CH2]C(CCC)OO(36) <=> oxygen(1) + CCCC(C)OO(27) origin: H_Abstraction
rxn: OO(23) + [CH2]C(CCC)OO(36) <=> [O]O(13) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + pentane(2) <=> CC[CH]CC(7) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + pentane(2) <=> C[CH]CCC(11) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + CCC(CC)OO(26) <=> CCC(CC)O[O](21) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + CCCC(C)OO(27) <=> CCCC(C)O[O](22) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + pentane(2) <=> [CH2]CCCC(12) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [O]O(13) + C=CCCC(18) <=> [CH2]C(CCC)OO(36) origin: R_Addition_MultipleBond
rxn: [CH2]CCCC(12) + [CH2]C(CCC)OO(36) <=> C=CCCC(18) + CCCC(C)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]C(CCC)OO(36) <=> C=CCCC(18) + CCCC(C)OO(27) origin: Disproportionation
rxn: [CH2]C(CCC)OO(36) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
The tested model has 32 reactions that the original model does not have. ❌
rxn: [O]O(13) + [CH2]CCCC(12) <=> CCCCCOO(78) origin: R_Recombination
rxn: [OH](25) + [OH](25) <=> OO(23) origin: R_Recombination
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: oxygen(1) + H2O(42) <=> [OH](25) + [O]O(13) origin: H_Abstraction
rxn: OO(23) + CCCC(C)OO(27) <=> [OH](25) + H2O(42) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCC(CC)OO(24) <=> [OH](25) + H2O(42) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: [CH2]CCCC(12) + CCCCCO[O](61) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCCCO[O](61) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: OO(23) + CCCCCOO(78) <=> [OH](25) + H2O(42) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: oxygen(1) + C[CH]CC(C)OO(37) <=> CC(CC(C)OO)O[O](91) origin: R_Recombination
rxn: CCCC(C)OO(27) + CCCCCOO(78) <=> H2O(42) + CCCC(C)[O](44) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCC(C)OO(27) <=> [O]O(13) + H2O(42) + CCCC(C)[O](44) origin: Bimolec_Hydroperoxide_Decomposition
rxn: oxygen(1) + C[CH]CC(C)OO(37) <=> [O]O(13) + CC=CC(C)OO(88) origin: Disproportionation
rxn: [OH](25) + CCCCC[O](79) <=> CCCCCOO(78) origin: R_Recombination
rxn: CCCC(C)OO(27) + CCCCCOO(78) <=> H2O(42) + CCCCC[O](79) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCCCCOO(78) <=> H2O(42) + CCCCC[O](79) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCCCCOO(78) <=> H2O(42) + CCCCC[O](79) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCCCOO(78) <=> [O]O(13) + H2O(42) + CCCCC[O](79) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCCCCOO(78) <=> H2O(42) + CCC([O])CC(41) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCC(CC)OO(24) <=> [O]O(13) + H2O(42) + CCC([O])CC(41) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CC[CH]C(C)OO(35) <=> C[CH]CC(C)OO(37) origin: intra_H_migration
rxn: [O]O(13) + C[CH]CCCOO(75) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + C[CH]CCCOO(75) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CCCOO(75) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CC(C)OO(37) <=> [OH](25) + CC1CC(C)O1(87) origin: Cyclic_Ether_Formation
rxn: oxygen(1) + C[CH]CC(C)OO(37) <=> [O]O(13) + C=CCC(C)OO(89) origin: Disproportionation
rxn: [O]O(13) + [CH2]CCCCOO(76) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + [CH2]CCCCOO(76) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCCOO(76) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: [O]O(13) + CC[CH]CCOO(74) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CC[CH]CCOO(74) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CC[CH]CCOO(74) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation

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 77 species.
Test model has 90 species. ❌
Original model has 260 reactions.
Test model has 315 reactions. ❌
The tested model has 13 species that the original model does not have. ❌
spc: CCCCCO
spc: [CH2]COO(80)
spc: [CH2]CCOO(81)
spc: [CH2]OO(82)
spc: [CH2]CCCOO(83)
spc: CCCC[CH]OO(84)
spc: C[CH]CCOO(85)
spc: [CH2]C(C)C(C)OO(86)
spc: CC1CC(C)O1(87)
spc: CC=CC(C)OO(88)
spc: C=CCC(C)OO(89)
spc: CC([O])CC(C)O(90)
spc: CC(CC(C)OO)OO
The original model has 6 reactions that the tested model does not have. ❌
rxn: CCCC(C)O[O](22) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: C[CH]CC(C)OO(37) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: CC[CH]C(C)OO(35) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(36) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: CCC[C](C)OO(54) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]CCC(C)OO(38) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCC(C)OO(27) origin: H_Abstraction
The tested model has 61 reactions that the original model does not have. ❌
rxn: [O]O(13) + [CH2]CCCC(12) <=> CCCCCOO(78) origin: R_Recombination
rxn: [OH](25) + [OH](25) <=> OO(23) origin: R_Recombination
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: oxygen(1) + H2O(42) <=> [OH](25) + [O]O(13) origin: H_Abstraction
rxn: OO(23) + CCCC(C)OO(27) <=> [OH](25) + H2O(42) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCC(CC)OO(24) <=> [OH](25) + H2O(42) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: [CH2]CCCC(12) + CCCCCO[O](61) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCCCO[O](61) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: OO(23) + CCCCCOO(78) <=> [OH](25) + H2O(42) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: oxygen(1) + C[CH]CC(C)OO(37) <=> CC(CC(C)OO)O[O](91) origin: R_Recombination
rxn: CCCC(C)OO(27) + CCCCCOO(78) <=> H2O(42) + CCCC(C)[O](44) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCC(C)OO(27) <=> [O]O(13) + H2O(42) + CCCC(C)[O](44) origin: Bimolec_Hydroperoxide_Decomposition
rxn: oxygen(1) + C[CH]CC(C)OO(37) <=> [O]O(13) + CC=CC(C)OO(88) origin: Disproportionation
rxn: [OH](25) + CCCCC[O](79) <=> CCCCCOO(78) origin: R_Recombination
rxn: CCCC(C)OO(27) + CCCCCOO(78) <=> H2O(42) + CCCCC[O](79) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCCCCOO(78) <=> H2O(42) + CCCCC[O](79) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCCCCOO(78) <=> H2O(42) + CCCCC[O](79) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCCCOO(78) <=> [O]O(13) + H2O(42) + CCCCC[O](79) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCCCCOO(78) <=> H2O(42) + CCC([O])CC(41) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCC(CC)OO(24) <=> [O]O(13) + H2O(42) + CCC([O])CC(41) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CC[CH]C(C)OO(35) <=> C[CH]CC(C)OO(37) origin: intra_H_migration
rxn: [O]O(13) + C[CH]CCCOO(75) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + C[CH]CCCOO(75) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CCCOO(75) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CC(C)OO(37) <=> [OH](25) + CC1CC(C)O1(87) origin: Cyclic_Ether_Formation
rxn: oxygen(1) + C[CH]CC(C)OO(37) <=> [O]O(13) + C=CCC(C)OO(89) origin: Disproportionation
rxn: [O]O(13) + [CH2]CCCCOO(76) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + [CH2]CCCCOO(76) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCCOO(76) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: [O]O(13) + CC[CH]CCOO(74) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CC[CH]CCOO(74) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CC[CH]CCOO(74) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: CH2(S)(3) + CCCCOO(51) <=> CCCCCOO(78) origin: 1,2_Insertion_carbene
rxn: CH2(S)(3) + CCCCOO(51) <=> CCCCCOO(78) origin: 1,2_Insertion_carbene
rxn: H(8) + CCCCCO[O](61) <=> CCCCCOO(78) origin: R_Recombination
rxn: [CH2]COO(80) + [CH2]CC(5) <=> CCCCCOO(78) origin: R_Recombination
rxn: C[CH2](6) + [CH2]CCOO(81) <=> CCCCCOO(78) origin: R_Recombination
rxn: H(8) + CC[CH]CCOO(74) <=> CCCCCOO(78) origin: R_Recombination
rxn: [CH2]OO(82) + [CH2]CCC(9) <=> CCCCCOO(78) origin: R_Recombination
rxn: H(8) + CCC[CH]COO(73) <=> CCCCCOO(78) origin: R_Recombination
rxn: [CH3](10) + [CH2]CCCOO(83) <=> CCCCCOO(78) origin: R_Recombination
rxn: H(8) + C[CH]CCCOO(75) <=> CCCCCOO(78) origin: R_Recombination
rxn: H(8) + CCCC[CH]OO(84) <=> CCCCCOO(78) origin: R_Recombination
rxn: H(8) + [CH2]CCCCOO(76) <=> CCCCCOO(78) origin: R_Recombination
rxn: H(8) + [O]O(13) <=> OO(23) origin: R_Recombination
rxn: H(8) + [OH](25) <=> H2O(42) origin: R_Recombination
rxn: CH2(S)(3) + C[CH]CCOO(85) <=> C[CH]CC(C)OO(37) origin: 1,2_Insertion_carbene
rxn: [CH2]C(C)C(C)OO(86) <=> C[CH]CC(C)OO(37) origin: 1,2_shiftC
rxn: H(8) + CC=CC(C)OO(88) <=> C[CH]CC(C)OO(37) origin: R_Addition_MultipleBond
rxn: H(8) + C=CCC(C)OO(89) <=> C[CH]CC(C)OO(37) origin: R_Addition_MultipleBond
rxn: C[CH]OO(53) + C=CC(19) <=> C[CH]CC(C)OO(37) origin: R_Addition_MultipleBond
rxn: [CH2]CCC(C)OO(38) <=> C[CH]CC(C)OO(37) origin: intra_H_migration
rxn: C[CH]CC(C)OO(37) <=> CCC[C](C)OO(55) origin: intra_H_migration
rxn: C[CH]CC(C)OO(37) <=> [CH2]C(CCC)OO(36) origin: intra_H_migration
rxn: C[CH]CC(C)OO(37) <=> CC([O])CC(C)O(90) origin: intra_OH_migration
rxn: [O]O(13) + CCC[CH]COO(73) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [O]O(13) + CCCC[CH]OO(84) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCC[CH]COO(73) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: [CH2]CCCC(12) + CCCC[CH]OO(84) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CCC[CH]COO(73) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC[CH]OO(84) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation

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:32
Current: Execution time (DD:HH:MM:SS): 00:00:00:34
Reference: Memory used: 741.55 MB
Current: Memory used: 741.63 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:02:49
Current: Execution time (DD:HH:MM:SS): 00:00:02:49
Reference: Memory used: 2635.33 MB
Current: Memory used: 2531.23 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:31
Current: Execution time (DD:HH:MM:SS): 00:00:00:30
Reference: Memory used: 900.71 MB
Current: Memory used: 898.32 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 🤖

@rwest
rwest force-pushed the check_labels_in_isomorphism branch from 6dd8e03 to e032a96 Compare September 6, 2026 13:23
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.

3 participants