Skip to content

Fix conda env creation hang and clang build failure on macOS; improve install docs#2953

Open
rwest wants to merge 5 commits into
mainfrom
macinstall
Open

Fix conda env creation hang and clang build failure on macOS; improve install docs#2953
rwest wants to merge 5 commits into
mainfrom
macinstall

Conversation

@rwest
Copy link
Copy Markdown
Member

@rwest rwest commented May 14, 2026

Motivation or Problem

Two separate issues were encountered when doing a fresh source install on macOS (reported while setting up a new conda environment after pysidt-rmg was added as a dependency. See #2952):

  1. conda env create -f environment.yml hangs or is very slow. The previous Python constraint >=3.9,<3.12 causes the conda solver to consider the full package graph for three Python versions simultaneously. This can hang, apparently indefinitely (or at least beyond my patience).

  2. make fails with clang: error: invalid version number in 'MACOSX_DEPLOYMENT_TARGET=11.0'. The conda-forge osx-64 Python package targets macosx-11.0, but Apple clang versions older than ~clang 13 (shipped with Xcode Command Line Tools before ~2021) do not recognise any macOS deployment target ≥ 11.0. Users whose Command Line Tools installation was never updated since macOS Big Sur was released hit this immediately.

Neither issue was documented, and the install guide gave no guidance on prerequisite tool versions.

Description of Changes

environment.yml

  • Tighten the Python pin from >=3.9,<3.12 to =3.11. This collapses the solver search space to a single Python version, making fresh environment creation fast and reliable.

.github/workflows/CI.yml

  • build-and-test job: add a "Pin Python version for CI matrix" step immediately after checkout that rewrites conda-forge::python =3.11 to conda-forge::python =<matrix-version> before setup-miniconda runs. This is necessary because setup-miniconda adds an equality pin rather than replacing the existing one, so a pre-existing =3.11 would conflict with the injected =3.9 or =3.10. The sed -i.bak / rm idiom works on both GNU sed (Linux) and BSD sed (macOS).
  • regression-test job: upgrade the hardcoded Python version from 3.9 to 3.11.

documentation/source/users/rmg/installation/anacondaDeveloper.rst

  • Promote a new "Before you begin" step to the top of the numbered list covering:
    • macOS: check clang version, and how to reinstall Xcode Command Line Tools if outdated
    • conda: how to check version and force-upgrade when conda update fails to advance it
  • Remove the now-redundant step about manually switching to the libmamba solver (any conda version that warrants an upgrade will get libmamba automatically).
  • Expand the conda env create step with the alternative conda create --file syntax (preferred on conda ≥ 26.3) and simplify the "conda command not found" recovery advice.

Testing

  • Verified locally on macOS 26.5 (Intel x86_64, osx-64) with Apple clang 21.0.0 and conda 26.3.2:
    • conda env create -f environment.yml resolves successfully with the =3.11 pin.
    • make build completes without errors after reinstalling Xcode Command Line Tools.
  • The CI matrix change (sed rewrite + regression job Python bump) ran ok on the CI

Reviewer Tips

  • conda_build.yml is not changed — it builds from .conda/meta.yaml and never reads environment.yml.

@rwest rwest requested review from JacksonBurns and Copilot May 14, 2026 18:01
Comment thread .github/workflows/CI.yml
Comment thread documentation/source/users/rmg/installation/anacondaDeveloper.rst Outdated
JacksonBurns
JacksonBurns previously approved these changes May 14, 2026
Copy link
Copy Markdown
Contributor

@JacksonBurns JacksonBurns left a comment

Choose a reason for hiding this comment

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

lovely - please merge at your leisure

@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:56
Current: Execution time (DD:HH:MM:SS): 00:00:00:57
Reference: Memory used: 817.89 MB
Current: Memory used: 824.09 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=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 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]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)
Details Observables 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 ✅
Errors occurred during observable testing ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/aromatics/regression_input.py"... INFO:root:options( title = 'Aromatics', tolerance = 0.5, )

observables

observable(
label = 'benzene',
structure=SMILES('c1ccccc1'),
)

species definition used in the reactor setup specification

species(
label = 'benzene',
structure=SMILES('c1ccccc1'),
)

species(
label = 'ethyne',
structure=SMILES('C#C'),
)

reactor setups

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([100],'s'),
initialMoleFractionsList=[{
"benzene": 0.2,
"ethyne": 0.8,
}],
temperatures=([1500.0],'K'),
pressures=([1.0],'bar'),
)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0

Regression test liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:56
Current: Execution time (DD:HH:MM:SS): 00:00:01:51
Reference: Memory used: 900.12 MB
Current: Memory used: 905.89 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. ✅

Non-identical kinetics! ❌
original:
rxn: CCC(CC)O[O](35) + CCCCCO[O](36) <=> oxygen(1) + CCC([O])CC(69) + CCCCC[O](67) origin: Peroxyl_Disproportionation
tested:
rxn: CCC(CC)O[O](36) + CCCCCO[O](35) <=> 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)
Details Observables 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 ✅
Errors occurred during observable testing ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/liquid_oxidation/regression_input.py"... INFO:root:options( title='liquid_oxidation', tolerance=0.1 )

observable(
label='pentane',
structure=SMILES('CCCCC')
)

species(
label='oxygen',
structure=SMILES('[O][O]'),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([1e3], 's'),
initialMoleFractionsList=[{
'pentane': 0.9,
'oxygen': 0.1,
}],
temperatures=([600], 'K'),
pressures=([1.0], 'bar'),
)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0

Regression test nitrogen:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:00
Current: Execution time (DD:HH:MM:SS): 00:00:00:58
Reference: Memory used: 904.72 MB
Current: Memory used: 909.63 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. ❌

Non-identical thermo! ❌
original: O1[C]=N1
tested: O1[C]=N1

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
116.46 53.90 11.62 12.71 13.49 13.96 14.14 13.85 13.58
141.64 58.66 12.26 12.27 12.09 11.96 12.26 12.72 12.15

thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(Cyclopropene) + radical(CdJ-NdO)
thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(oxirene) + radical(CdJ-NdO)
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

Non-identical kinetics! ❌
original:
rxn: NCO(66) <=> O1[C]=N1(126) origin: Intra_R_Add_Endocyclic
tested:
rxn: NCO(66) <=> O1[C]=N1(126) origin: Intra_R_Add_Endocyclic

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): -49.54 -33.65 -24.16 -17.85 -10.01 -5.35 0.80 3.82
k(T): -66.25 -46.19 -34.19 -26.21 -16.28 -10.36 -2.54 1.31

kinetics: Arrhenius(A=(6.95187e+18,'s^-1'), n=-1.628, Ea=(88.327,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H in family Intra_R_Add_Endocyclic.""")
kinetics: Arrhenius(A=(6.95187e+18,'s^-1'), n=-1.628, Ea=(111.271,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H in family Intra_R_Add_Endocyclic.""")
Identical kinetics comments:
kinetics: Estimated from node Backbone0_N-2R!H-inRing_N-1R!H-inRing_Sp-2R!H-1R!H in family Intra_R_Add_Endocyclic.

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)
Details Observables 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 ✅
Errors occurred during observable testing ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/nitrogen/regression_input.py"... INFO:root: options( title='NC', tolerance=0.2 )

observable(
label='NC',
structure=SMILES("NC"),
)

observable(
label='OH',
structure=SMILES("[OH]"),
)

species(
label='O2',
structure=SMILES("[O][O]"),
)

species(
label='Ar',
structure=adjacencyList('1 Ar u0 p4 c0'),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.002],'s'),
initialMoleFractionsList=[{
"NC": 0.0005,
"O2": 0.002,
"Ar": 0.9975,
}],
temperatures=([1500],'K'),
pressures=([1.],'atm'),
)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0

Regression test oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:01:36
Current: Execution time (DD:HH:MM:SS): 00:00:01:32
Reference: Memory used: 778.39 MB
Current: Memory used: 788.68 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. ✅

Details Observables 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 ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/oxidation/regression_input.py"... INFO:root:options( title = 'Oxidation', tolerance = 0.5, )

observables

observable(
label = 'OH',
structure=SMILES('[OH]'),
)

species definition used in the reactor setup specification

species(
label = 'OH',
structure=SMILES('[OH]'),
)

species(
label = 'N2',
structure=SMILES("N#N"),
)

species(
label = 'O2',
structure=SMILES('[O][O]'),
)

species(
label = 'propane',
structure=SMILES('CCC'),
)

reactor setups

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([100.0],'s'),
initialMoleFractionsList=[{
"propane": 2.0/7.0,
"O2": 1.0,
"N2":4.0,
}],
temperatures=([725.0],'K'),
pressures=([10.0],'bar'),
)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
WARNING:root:Initial mole fractions do not sum to one; normalizing.
INFO:root:
INFO:root:Original composition:
INFO:root:propane = 0.2857142857142857
INFO:root:O2 = 1.0
INFO:root:N2 = 4.0
INFO:root:
INFO:root:Normalized mole fractions:
INFO:root:propane = 0.05405405405405405
INFO:root:O2 = 0.1891891891891892
INFO:root:N2 = 0.7567567567567568
INFO:root:

Regression test sulfur:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:40
Current: Execution time (DD:HH:MM:SS): 00:00:00:39
Reference: Memory used: 899.58 MB
Current: Memory used: 904.35 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 Observables Test Case: SO2 Comparison

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 ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/sulfur/regression_input.py"... INFO:root: options( title='SO2', tolerance=0.1 )

observable(
label='SO2',
structure=SMILES("O=S=O"),
)
species(
label='H2S',
structure=SMILES("S"),
)

species(
label='O2',
structure=SMILES("[O][O]"),
)

species(
label='N2',
structure=SMILES("N#N"),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
"H2S": 0.000756,
"O2": 0.001290,
"N2": 0.997954}],
temperatures=([900],'K'),
pressures=([30.],'bar'),
)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
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:25
Current: Execution time (DD:HH:MM:SS): 00:00:00:23
Reference: Memory used: 976.34 MB
Current: Memory used: 953.75 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:17
Current: Execution time (DD:HH:MM:SS): 00:00:02:54
Reference: Memory used: 2274.41 MB
Current: Memory used: 2467.52 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 ✅
Errors occurred during observable testing ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/RMS_constantVIdealGasReactor_superminimal/regression_input.py"... INFO:root: options( title='RMS_constantVIdealGasReactor_superminimal', tolerance=0.1 )

observable(
label='H2',
structure=SMILES("[H][H]"),
)

observable(
label='O2',
structure=SMILES("[O][O]"),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
'H2':.67,
'O2':.33,
}],
temperatures=([1000],'K'),
pressures=([1.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0

Regression test RMS_CSTR_liquid_oxidation:

Reference: Execution time (DD:HH:MM:SS): 00:00:18:42
Current: Execution time (DD:HH:MM:SS): 00:00:17:15
Reference: Memory used: 2705.08 MB
Current: Memory used: 2756.35 MB

RMS_CSTR_liquid_oxidation Failed Core Comparison ❌

Original model has 35 species.
Test model has 35 species. ✅
Original model has 146 reactions.
Test model has 140 reactions. ❌
The original model has 1 species that the tested model does not have. ❌
spc: CC[CH]CCOO(64)
The tested model has 1 species that the original model does not have. ❌
spc: CC1CC(C)O1(96)
The original model has 7 reactions that the tested model does not have. ❌
rxn: CC[CH]CCOO(64) <=> CCCCCO[O](61) origin: intra_H_migration
rxn: [O]O(13) + CC[CH]CCOO(64) <=> oxygen(1) + CCCCCOO(78) 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: [CH2]CCCC(12) + CC[CH]CCOO(64) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CC[CH]CCOO(64) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CC[CH]CCOO(64) origin: H_Abstraction
The tested model has 1 reactions that the original model does not have. ❌
rxn: C[CH]CC(C)OO(37) <=> [OH](26) + CC1CC(C)O1(96) origin: Cyclic_Ether_Formation

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 Passed Edge Comparison ✅

Original model has 99 species.
Test model has 99 species. ✅
Original model has 384 reactions.
Test model has 384 reactions. ✅

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 ✅
Errors occurred during observable testing ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/RMS_CSTR_liquid_oxidation/regression_input.py"... INFO:root:options( title='RMS_CSTR_liquid_oxidation', tolerance=0.1 )

observable(
label='pentane',
structure=SMILES('CCCCC')
)

species(
label='oxygen',
structure=SMILES('[O][O]'),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([1e3], 's'),
initialMoleFractionsList=[{
'pentane': 0.9,
'oxygen': 0.1,
}],
temperatures=([600], 'K'),
pressures=([1.0], 'bar'),
)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0

Regression test fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:00:34
Current: Execution time (DD:HH:MM:SS): 00:00:00:32
Reference: Memory used: 744.77 MB
Current: Memory used: 752.58 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 ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/fragment/regression_input.py"... INFO:root: options( title='fragment', tolerance=0.1 )

observable(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)

species(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)

species(
label="RCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 R u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
"LCCCC": 1,
"RCCCC": 1,
}],
temperatures=([1600],'K'),
pressures=([40.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
WARNING:root:Initial mole fractions do not sum to one; normalizing.
INFO:root:
INFO:root:Original composition:
INFO:root:LCCCC = 1
INFO:root:RCCCC = 1
INFO:root:
INFO:root:Normalized mole fractions:
INFO:root:LCCCC = 0.5
INFO:root:RCCCC = 0.5
INFO:root:

Regression test RMS_constantVIdealGasReactor_fragment:

Reference: Execution time (DD:HH:MM:SS): 00:00:02:44
Current: Execution time (DD:HH:MM:SS): 00:00:03:23
Reference: Memory used: 2512.18 MB
Current: Memory used: 2602.22 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 ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/RMS_constantVIdealGasReactor_fragment/regression_input.py"... INFO:root: options( title='RMS_constantVIdealGasReactor_fragment', tolerance=0.1 )

observable(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)

species(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)

species(
label="RCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 R u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
"LCCCC": 1,
"RCCCC": 1,
}],
temperatures=([1600],'K'),
pressures=([40.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
WARNING:root:Initial mole fractions do not sum to one; normalizing.
INFO:root:
INFO:root:Original composition:
INFO:root:LCCCC = 1
INFO:root:RCCCC = 1
INFO:root:
INFO:root:Normalized mole fractions:
INFO:root:LCCCC = 0.5
INFO:root:RCCCC = 0.5
INFO:root:

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:29
Reference: Memory used: 899.68 MB
Current: Memory used: 913.97 MB

minimal_surface Failed Core Comparison ❌

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

Non-identical thermo! ❌
original: COX
tested: COX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-66.92 7.42 8.12 8.95 9.53 9.95 10.55 10.93 11.41
-56.52 7.42 8.12 8.95 9.53 9.95 10.55 10.93 11.41

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: OX
tested: OX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-31.99 2.89 4.40 5.00 5.33 5.51 5.70 5.78 5.87
-25.24 2.89 4.40 5.00 5.33 5.51 5.70 5.78 5.87

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CH4X
tested: CH4X

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-20.44 35.53 10.29 11.53 12.92 14.33 16.88 19.00 22.51
-25.70 35.53 10.29 11.53 12.92 14.33 16.88 19.00 22.51

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

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

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

Non-identical thermo! ❌
original: COX
tested: COX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-66.92 7.42 8.12 8.95 9.53 9.95 10.55 10.93 11.41
-56.52 7.42 8.12 8.95 9.53 9.95 10.55 10.93 11.41

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: OX
tested: OX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-31.99 2.89 4.40 5.00 5.33 5.51 5.70 5.78 5.87
-25.24 2.89 4.40 5.00 5.33 5.51 5.70 5.78 5.87

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: HX
tested: HX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-6.37 1.01 2.49 3.51 4.19 4.64 5.16 5.43 5.70
-8.60 1.01 2.49 3.51 4.19 4.64 5.16 5.43 5.70

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CH3X
tested: CH3X

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-11.28 9.22 8.64 10.56 12.16 13.49 15.61 17.25 19.89
-14.31 9.22 8.64 10.56 12.16 13.49 15.61 17.25 19.89

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: HOX
tested: HOX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-35.92 17.09 8.24 8.88 9.24 9.46 9.76 10.02 10.61
-34.90 17.55 5.70 6.36 6.80 7.11 7.54 7.88 8.55

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CX
tested: CX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
14.02 1.46 3.22 4.16 4.73 5.07 5.44 5.61 5.79
17.67 1.46 3.22 4.16 4.73 5.07 5.44 5.61 5.79

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CH2X
tested: CH2X

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
0.19 5.32 6.86 8.73 10.08 11.08 12.55 13.62 15.33
-0.61 5.32 6.86 8.73 10.08 11.08 12.55 13.62 15.33

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CHX
tested: CHX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-5.51 2.75 5.28 6.78 7.74 8.38 9.22 9.78 10.64
-4.09 2.75 5.28 6.78 7.74 8.38 9.22 9.78 10.64

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CH4X
tested: CH4X

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-20.44 35.53 10.29 11.53 12.92 14.33 16.88 19.00 22.51
-25.70 35.53 10.29 11.53 12.92 14.33 16.88 19.00 22.51

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CO2XX
tested: CO2XX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-129.65 10.75 10.69 12.48 14.02 15.18 16.38 16.72 17.85
-90.85 9.47 9.51 10.97 12.29 13.36 14.62 15.09 16.09

thermo: Gas phase thermo for CO2 from Thermo library: thermo_DFT_CCSDTF12_BAC. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(CO)
thermo: Gas phase thermo for CO2 from Thermo library: thermo_DFT_CCSDTF12_BAC. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(C-XRO-X)

Non-identical thermo! ❌
original: COXX
tested: COXX

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-105.34 1.78 7.40 8.36 9.29 10.05 10.84 11.05 11.91
-73.25 2.61 5.89 6.67 7.51 8.22 8.91 9.01 9.83

thermo: Gas phase thermo for CO from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(R*bidentate)
thermo: Gas phase thermo for CO from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(RXbidentate)

Non-identical thermo! ❌
original: XOXO
tested: XOXO

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-25.60 9.14 9.12 10.07 10.65 10.99 11.37 11.55 11.74
-13.14 10.90 9.10 10.02 10.59 10.94 11.34 11.53 11.73

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: O2(S)X
tested: O2(S)X

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
9.16 19.16 8.74 9.20 9.57 9.87 10.33 10.66 11.08
9.64 18.24 6.40 6.79 7.23 7.64 8.16 8.38 8.91

thermo: Gas phase thermo for O2(S) from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(R*vdW)
thermo: Gas phase thermo for O2(S) from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(RXvdW)

Non-identical thermo! ❌
original: HC(O)XO
tested: HC(O)XO

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-88.44 16.37 12.74 14.53 16.02 17.25 19.06 20.27 21.90
-73.52 16.37 12.74 14.53 16.02 17.25 19.06 20.27 21.90

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: XCHO
tested: XCHO

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-53.80 14.59 9.35 10.71 11.79 12.66 13.97 14.88 16.19
-45.63 14.59 9.35 10.71 11.79 12.66 13.97 14.88 16.19

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: CH3XCO
tested: CH3XCO

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-69.07 26.52 13.22 15.97 18.33 20.33 23.43 25.69 29.07
-61.70 26.52 13.22 15.97 18.33 20.33 23.43 25.69 29.07

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical thermo! ❌
original: XOCH3
tested: XOCH3

Hf(300K) S(300K) Cp(300K) Cp(400K) Cp(500K) Cp(600K) Cp(800K) Cp(1000K) Cp(1500K)
-37.74 21.40 10.09 12.19 14.08 15.75 18.42 20.42 23.48
-35.47 23.21 10.17 12.28 14.20 15.89 18.58 20.59 23.63

Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111

Non-identical kinetics! ❌
original:
rxn: X(3) + CO2X(4) <=> CO2XX(23) origin: Surface_vdW_to_Bidentate
tested:
rxn: X(3) + CO2X(4) <=> CO2XX(23) origin: Surface_vdW_to_Bidentate

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
k(T): 17.60 17.60 17.60 17.60 17.60 17.60 17.60 17.60
k(T): 15.04 15.68 16.07 16.32 16.64 16.83 17.09 17.22

kinetics: SurfaceArrhenius(A=(4e+21,'cm^2/(mol*s)'), n=0, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""From training reaction 1 used for Combined;VacantSite Exact match found for rate rule [Combined;VacantSite] Euclidian distance = 0 Multiplied by reaction path degeneracy 4.0 family: Surface_vdW_to_Bidentate""")
kinetics: SurfaceArrhenius(A=(4e+21,'cm^2/(mol*s)'), n=0, Ea=(3.515,'kcal/mol'), T0=(1,'K'), comment="""From training reaction 1 used for Combined;VacantSite Exact match found for rate rule [Combined;VacantSite] Euclidian distance = 0 Multiplied by reaction path degeneracy 4.0 family: Surface_vdW_to_Bidentate Ea raised from 0.0 to 14.7 kJ/mol to match endothermicity of reaction.""")
kinetics: From training reaction 1 used for Combined;VacantSite
Exact match found for rate rule [Combined;VacantSite]
Euclidian distance = 0
Multiplied by reaction path degeneracy 4.0
family: Surface_vdW_to_Bidentate
kinetics: From training reaction 1 used for Combined;VacantSite
Exact match found for rate rule [Combined;VacantSite]
Euclidian distance = 0
Multiplied by reaction path degeneracy 4.0
family: Surface_vdW_to_Bidentate
Ea raised from 0.0 to 14.7 kJ/mol to match endothermicity of reaction.

Non-identical kinetics! ❌
original:
rxn: X(3) + X(3) + CO2(13) <=> OX(6) + COX(5) origin: Surface_Adsorption_Dissociative_Double
tested:
rxn: X(3) + X(3) + CO2(13) <=> OX(6) + COX(5) origin: Surface_Adsorption_Dissociative_Double

k(1bar) 300K 400K 500K 600K 800K 1000K 1500K 2000K
Errors occurred during edge comparison ⚠️ Traceback (most recent call last): File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 301, in error = main() ^^^^^^ File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 78, in main error = check(name, bench_chemkin, bench_species_dict, test_chemkin, test_species_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 99, in check error_reactions = checkReactions(common_reactions, unique_reactions_test, unique_reactions_orig) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 206, in checkReactions [printRates(rxn) for rxn in [rxn1, rxn2]] File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 206, in [printRates(rxn) for rxn in [rxn1, rxn2]] ^^^^^^^^^^^^^^^ File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 236, in printRates math.log10(rxn.kinetics.get_rate_coefficient(300, 1e5)), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "rmgpy/kinetics/model.pyx", line 195, in rmgpy.kinetics.model.KineticsModel.get_rate_coefficient cpdef double get_rate_coefficient(self, double T, double P=0.0) except -1: File "rmgpy/kinetics/model.pyx", line 201, in rmgpy.kinetics.model.KineticsModel.get_rate_coefficient raise NotImplementedError('Unexpected call to KineticsModel.get_rate_coefficient(); ' NotImplementedError: Unexpected call to KineticsModel.get_rate_coefficient(); you should be using a class derived from KineticsModel. ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py minimal_surface-edge stable_regression_results/minimal_surface/chemkin/chem_edge_annotated.inp stable_regression_results/minimal_surface/chemkin/species_edge_dictionary.txt test/regression/minimal_surface/chemkin/chem_edge_annotated.inp test/regression/minimal_surface/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details Observables Test Case: minimal_surface Comparison

The following observables did not match:

❌ Observable species [Pt] varied by more than 0.500 on average between old model X(3) and new model X(3) in condition 1.

⚠️ The following reaction conditions had some discrepancies:
Condition 1:
Reactor Type: IdealGasReactor
Reaction Time: 1 s
T0: 1000 K
P0: 1 bar
Initial Mole Fractions: {'C': 0.15, '[O][O]': 0.15, 'N#N': 0.7}

minimal_surface Failed Observable Testing ❌
Errors occurred during observable testing ⚠️ INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/minimal_surface/regression_input.py"... INFO:root:options( title = 'minimal_surface', tolerance = 0.5, )

observables

observable(
label = 'CH4',
structure=SMILES('C'),
)

observable(
label = 'O2',
structure=SMILES('[O][O]'),
)

observable(
label = 'X',
structure=adjacencyList(
"""
1 X u0 p0 c0
"""),
)

List of species

species(
label='CH4',
structure=SMILES("[CH4]"),
)
species(
label='O2',
structure=adjacencyList(
"""
1 O u1 p2 c0 {2,S}
2 O u1 p2 c0 {1,S}
"""),
)
species(
label='N2',
structure=SMILES("N#N"),
)
species(
label='X',
structure=adjacencyList(
"""
1 X u0 p0 c0
"""),
)

reactor setups

reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([1.0], 's'),
initialMoleFractionsList=[{
'CH4': 0.15,
'O2': 0.15,
'N2': 0.7,
}],
initialSurfaceMoleFractionsList=[{
'X': 1.0,
}],

temperatures=([1000.0], 'K'),
pressures=([1.0], 'bar'),

)

INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has no default temperature ranges
INFO:root:(The line it would be on is ' 300.000 1000.000 5000.000\n' but that is not formatted as such)
INFO:root:(It should have Tmin in columns 1-10, Tmid in columns 11-20, and Tmax in columns 21-30)
INFO:root:Ignoring short but non-empty line: ' 300.000 1000.000 5000.000\n'
INFO:root:Thermo file has no default temperature ranges
INFO:root:(The line it would be on is ' 300.000 1000.000 5000.000\n' but that is not formatted as such)
INFO:root:(It should have Tmin in columns 1-10, Tmid in columns 11-20, and Tmax in columns 21-30)
INFO:root:Ignoring short but non-empty line: ' 300.000 1000.000 5000.000\n'
/home/runner/work/RMG-Py/RMG-Py/rmgpy/tools/canteramodel.py:550: UserWarning: ReactorSurface::syncState: Behavior changed in Cantera 3.2 for consistency with ReactorBase. To set SurfPhase state from ReactorSurface object, use restoreState().
species_data.append(np.concatenate((cantera_reactor.thermo[species_names_list].X, rsurf.kinetics.coverages)))
ERROR conda.cli.main_run:execute(148): conda run python rmgpy/tools/regression.py test/regression/minimal_surface/regression_input.py stable_regression_results/minimal_surface/chemkin test/regression/minimal_surface/chemkin failed. (See above for error)

beep boop this comment was written by a bot 🤖

rwest and others added 5 commits May 15, 2026 12:12
environment.yml previously used `python >=3.9,<3.12` so that the
conda-incubator/setup-miniconda action could safely inject a
per-matrix equality pin without creating a contradiction.  That broad
range forces the solver to consider every compatible package set for
all three Python micro-versions simultaneously, which makes fresh
environment creation slow and, on some local setups with older
libmamba, can cause the solver to hang indefinitely.

Changes:
- environment.yml: tighten the pin to `=3.11`.  Users running
  `conda env create -f environment.yml` now get a fast solve because
  the solver only needs to consider packages for a single Python
  version.
- CI.yml (build-and-test): add a "Pin Python version for CI matrix"
  step immediately after checkout that rewrites `=3.11` to the matrix
  python-version before setup-miniconda runs.  The -i.bak/rm idiom
  works on both GNU sed (Linux) and BSD sed (macOS).
- CI.yml (regression-test): upgrade the hardcoded python-version from
  3.9 to 3.11.  There is no technical requirement for regression tests
  to use an older Python; 3.9 was a historical artifact.  With the
  pin already set to 3.11 in the file, setup-miniconda's injected
  `=3.11` is redundant but harmless.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…in note

Two classes of problems encountered during a macOS source install were
not covered by the existing documentation:

1. An outdated Xcode Command Line Tools installation (Apple clang 11,
   from 2019) causes `make` to fail with
   "clang: error: invalid version number in 'MACOSX_DEPLOYMENT_TARGET'"
   because that vintage of clang does not recognise macOS deployment
   targets >= 11.0.  Added a warning at the top of the page explaining
   how to detect and fix this, with the recommended reinstall command.

2. Conda versions older than ~24.0 (particularly libmamba 2.1.x) can
   hang indefinitely when solving the RMG environment.  Added guidance
   to check and update conda before starting, including the
   `conda install -n base conda=26.3` workaround for cases where
   `conda update` fails to advance the version.

Also added a brief note alongside the `conda env create` step
explaining why environment.yml now pins Python 3.11 (faster solves),
and cross-referenced the macOS CLT warning from the compiler
prerequisites section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Previous version written by Claude. These changes written by me.
You just know someone is going to copy and paste that incorrectly into
their terminal....
We need this to `make install`.
Also removed some old redundant comments.
@rwest rwest requested a review from JacksonBurns May 15, 2026 16:13
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.

Can't make conda environment on Intel Mac (Tahoe 26.3.1a)

2 participants