RMG-Py v3.2.0
A note about timing and binaries:
Release 3.2.0 was tagged in commit e60d346 on August 8, 2023.
Conda binaries were never built for it (we couldn't) but it was released via DockerHub and can be accessed by docker pull reactionmechanismgenerator/rmg:3.2.0
.
The corresponding "release" was not made on the GitHub platform until July 15, 2025, almost 2 years later.
What's changed
Release notes written manually in 2023:
-
RMG-Py
- Transport: Added halogens transport corrections to boiling point when estimating critical properties using group additivity
- Updated solvation thermo GAV method to use more groups
- Made it optional to generate_resonance_structures when loading species dicts
- Added filter so radical/lone pair/formal charge is not added to surface site when generating resonance structures
- Forbid surface bidentate vdW species
- Add Transitory Edge Analysis species selection algorithm
- Added get_react_thermo function to avoid deepcopy
- Added decay framework for handling species RMG templates think exist, but really aren't wells
- Added check to prevent multiple surface bonds from forming through a single adatom
- Added multidentate adsorption correction for thermo estimation
- Added error checks to make MOPAC calculations more robust
- Added features to preserve atom order and template labels when generating reactions
- Added coverage dependent effects to surface kinetics
- Added support for halogen families in autogen tree script
- Enabled pyrms for RMG Simulations and Edge Analysis
- Added Liquid-Surface Reactor for RMG Electrocat
- Added support for forbidden structures, more general than forbidden molecules
- Removed hard-coded template matching code for Bimolec hydroperoxide decomposition
- Added support for 2-parameter Troe reactions, only had 3-parameter Troe before
- Included noncyclic long distance GAV correction for halogen regardless of its existence in the cycle
- Added support for pdep networks with halogens
- Added atom labels to molecule to_group method in order to keep the atom labels during conversion
- Moved rmgrc to template file so user's settings won't be overwritten every pull from RMG-Py
- Implemented two backup conformer embedding algorithms for robustness
- Added Nitrogen groups to transport
- Removed check for adsorbate getting adsorbed again which prevents Surface_Dissociation_to_Bidentate family
- Modified the liquid reactor to be able to simulate as CSTR, semi-batch, and/or vapor liquid mass transfer interface
- Added fragment code to rmgpy/molecule
- Added PDEP improvements: simulation least squares methods and the Georgievskii et al. 2013 CSE variant to Arkane
- Allow users to load thermo or kinetic libraries from a user-specified location
- Add radical flux tolerance
- Improved kH estimation code for solute
- Allow irreversible PDEP reactions by setting Keq=inf
- only calculate frequency and x in get_partition_function if semiclassical correction is needed
- Implemented deadend radical species selection algorithm
- Enable Metal, Facet, site and terrace specification in Molecule
- Increase species label max length for chemkin to avoid S(14567) style species
- Don't replace PDep kinetics of a library reaction
- Added solvation to surfaces
- Added some charge transfer reactions
- Added lithium
-
Auto Generated Trees
- Enabled estimator to ascend autogenerated rate tree if uncertainty is too high in a lower node
- Made some major improvements to automated tree extension generation and the cascade algorithm
- Added support for quadruple bonds in auto tree generation
- Added binding energies for N-S and C#S
- Removed hard-coded special treatment for Peroxyl Disproportionation family during template matching
- Increased ArrheniusBM fitting temperature upper limit to 2000K for RMG-database rate trees
- Skipped number of products check for ATG tree generation of Intra_R_Add_Endocyclic and Intra_R_Add_Exocyclic
-
RMS
- Add Transitory Edge Analysis
- Added surface reactions to RMS yaml format
- Updated developer installation instructions to use main RMS branch
- Add comment as input to to_rms() function
- Change RMS to use keyword variables to avoid twin PR with RMG whenever RMG changes struct
-
Arkane
- Added check for convergence and other common errors in QM parsers
- Updated the documentation that tabulates which levels of theory are supported by Arkane
- Read actual scan angles for rotor calculations
- Corrected Fourier fitting in torsion.pyx
- Added Psi4 ESS adapter to Arkane
- Added commit strings for RMG-Py and RMG-database to Arkane logs
- Added BAC confidence interval estimates to Arkane logs
- Added leave-one-out cross-validation for evaluating BAC fits
- Enabled parsing of scan log files with linear bend (something like L 1 2 3 B)
- Enabled assignment of PES (angles vs energies) directly in the Arkane input file
- Added a readme file for Arkane
- Updated QChem parser to only return the negative frequency from the last frequency block instead of the first
- Added more unit tests
- Save meaningful reaction label for PDEP reactions when creating RMG library
- Added more examples
- Added Arkane citation info: https://doi.org/10.1002/kin.21637, https://doi.org/10.1021/acs.jcim.2c00965
- Allow RMG to read Arkane YAML files through the RMGObject even if they have mol or aux keywords
-
Bugfixes
- Added check for multiplicity of reverse products if the family template reactants have multiplicity constraints
- Added check for vdW multiplicity constraints in forward direction
- Added check to see that empty surface site template group only matches empty surface site structure (and not vdW species with empty site)
- Fixed regex bug in checking multiplicity of adjacency list
- Fixed bug where RMG can output mechanisms in which two species have the same name
- Added QM fallback to ML or GAV in case of bad conformer ID error from rdkit
- Fixed many broken links in documentation
- Fixed species missing metal attribute error
- Fixed some automated tree generation parallelization bugs
- Changed tree generation get_training_set method to use deepcopy to clear atom labels and to parse out the metal from the entry
- Added a save_order attribute to some methods to preserve atom order in cases that need it
- Fixed load chemkin function to allow extended elements and species that start with digits
- Handle string data properly when averaging children solute
- Fixed bug in get_w0 where a_dict didn't match the molecule because it was made before the molecule was deepcopied
- Added check for pdep net reactions when removing species to prevent forbidden species from ending up in net reactions
- Fixed bug where add_atom_labels_for_reaction mislabels reactants if family is its own reverse
- Fixed bug where save_training_reactions occasionally mixes up atom labels
- Added Ctc atom type to prevent RMG from crashing when trying to make [C+]#[C-] molecule, which was then added to the forbidden structures
- Fixed bug where generate_resonance_structure does not preserve atom when keep_isomorphic=False and save_order=True
- Fixed bugs related to RMS object construction, particularly Multi/Pdep/Arrhenius and falloff
- Added check to always draw CO as 'CO' instead of 'OC'
- Converted ThermoData object to a NASA object for compatibility with RMS
- Corrected pyrms core/edge species/reaction handling for phase systems
- Fixed incorrect reading in load_chemkin_file for surface species with site density specified
- Added properties so group can be pickled without losing important information like ring membership
- Fixed bug where atom map changes even if save_order=True
- PDEP networks update before writing/filtering to avoid differences in barrier energy corrections between networks
- Check for debug mode so rms can be imported in debug mode
- Fixed group property has_wildcards to avoid AttributeError
- Fixed several calls missing the 'r' at the start of regex pattern string
- Fixed Fragment count_internal_rotors and is_atom_in_cycle attribute errors
- Added missing term in Troe kinetics formula
- Fixed some broken links in documentation
- Change cython variables from cpdef to cdef to avoid warnings
- Updated load_transport_file to skip any species in the transport file that's not in the species dictionary instead of crashing
- Fixed CI error "Unable to dlopen(cxxpath) in parent! cannot open shared object file: File name too long"
-
Testing
- Updated reference number of reactions for Arkane test_reactions unit test
- Changed molecule for rmgpy/data/thermoTest.py test_identifying_missing_group test because group is no longer missing
- Added continuous integration test for links in documentation
- Changed kinetics database tests to look for auto_generated tag instead of the hardcoded family list
- Updated rmg test data with new 2+2 cycloaddition species and reactions
- Remove cti file generation from regression tests to avoid Cantera IO error
- Added tests to check number of reactants and products defined in ATG rate rules
- CI is now done with mamba to drastically reduce runtime
- Move regression testing into main CI.yaml
- Simplify condition checking for scheduled vs pushed CI
- Remove redundant step creating stable_regression_results dir for running on a schedule or push to main because it already is the stable result
- Update CI.yml to allow CI tests on forks
- Added "phony" target so make test will always remake when run (instead of checking whether the test folder is up to date)
- Add a unit test to make a sample molecule for every atom type
- Update CI.yml and environment.yml to allow CI to run on MacOS
- Add regression testing for RMS's CSTR and constant V ideal gas reactors
- Bugfix on CI documentation testing so errors are reported as failures
- Relax tolerance on HinderedRotor.get_enthalpy() test to accomodate slightly different answer likely due to numerical issues
- Regression tests report failure if a model changes significantly
- Allow CI testing to be called from other repos
- Regression tests pass by default and the user must look at the report to see details of comparison
- Generate summary of regression test results to be displayed on annotation of PR results
-
Miscellaneous
- Added Docker install
- Added check to only publish documentation documentation from RMG official fork
- Fixed RMG-Py 3.1.0 release note bullet formatting
- Changed installation instructions for WSL users to install graphviz system wide to include all dependencies
- Changed get_all_solute_data function for RMG-website use in order to apply halogen or radical correction on top of library or GAV
- Added openSUSE installation instructions
- Changed default branch to main
- Changed rmg.py shebang to use python-jl instead of python3 for compatibility with RMS/pyrms
- Updated ketoenol template image to 1,3 sigmatropic rearrangement
- Updated 2+2_cycloaddition images in documentation
- Added licensing information to the README file
- Updated installation instructions with main instead of master branch, latest Anaconda link, and ssh instead of https clone from github
- Added support for Sticking Reactions in HTML reports
- Added reminder in documentation to activate rmg_env before making tests
- Check that family tree is not autogenerated before calling add_rules_from_training and fill_rules_by_averaging_up
- Added warning to not to call add_rules_from_training and fill_rules_by_averaging_up on ATG trees, and return statement before error
- Replaced BurkeH2O2 library with PrimaryH2O2 in relevant RMG examples
- Added instructions to Documentation for fixing libmkl_ts.so.2 ImportError
- Added new RMG-database paper to cite https://pubs.acs.org/doi/10.1021/acs.jcim.2c00965
- Added .bib file for easy citation
- Updated RMG-Py install instructions to remove old Julia instructions and to use mamba solver
- Use conda-forge ncurses for compatibility with docker
- Use conda-forge pyjulia instead of customized RMG channel version for better standardization
- Update Cantera version requirement to 2.6
- Upgrade to OpenMOPAC to fix license issues
- Updated list of developers
- Added Jupyter Notebook example for simulating and analyzing superminimal model
- Robot automatically marks issues and PR's as stale after 90 days of inactivity and closes them after 30 more days of inactivity
What's Changed
Summary of pull requests generated automatically by GitHub.
- halogen additions (simultaneous update with DB) by @davidfarinajr in #1997
- Halogens transport by @davidfarinajr in #2114
- Primary thermo library - unit test change by @davidfarinajr in #2123
- Only publish documentation from official fork by @rwest in #2111
- Halogens thermo - missing group test by @davidfarinajr in #2120
- fix RMG-Py 3.1.0 release note bullet formatting by @mjohnson541 in #2127
- Upgrade solvation thermo GAV by @yunsiechung in #2112
- Catch Bad Conformer ID error from rdkit by @mjohnson541 in #2130
- check multiplicity of reverse products if the family template reactants have multiplicity constraints (vdW groups) by @davidfarinajr in #2131
- an empty surface site template group should only match an empty surface site by @davidfarinajr in #2129
- optionally
generate_resonance_structures
when loading species dicts by @davidfarinajr in #2126 - Allow RMS to output surface mechanisms and bugfixes by @mjohnson541 in #2075
- Remove file_format kwarg from plt.savefig by @amarkpayne in #2143
- Have WSL users install graphviz system wide by @amarkpayne in #2144
- Automatic Tree Generation part 5 by @mjohnson541 in #2139
- Cat fixes - vdw radicals, bidentates, resonance by @davidfarinajr in #2136
- Some fixes to documentation (and a CI test) by @rwest in #2132
- Fix QM Parsers by @kspieks in #2137
- fixups in
get_training_set
family method by @davidfarinajr in #2153 - Assorted Tree Generation Support by @mjohnson541 in #2155
- Fix spc doesn't have metal attribute error by @hwpang in #2156
- Use autoGenerated tag instead of the hardcoded family list by @hwpang in #2157
- Added a save_order attribute to some methods, and make sure it is properly being passed around by @alongd in #2162
- Twin RP for merged all 2+2 cycloaddition families by @hwpang in #1974
- Decay Framework by @mjohnson541 in #2076
- Forming surface bonds by @davidfarinajr in #2173
- Adsorption corrections multidentate by @davidfarinajr in #2169
- Some miscellaneous fixes by @rwest in #2168
- Making Mopac calculations more robust by @rwest in #2177
- Minor change to
get_all_solute_data
function. by @yunsiechung in #2174 - Load chemkin bug fix - extended elements and digits by @davidfarinajr in #2181
- Added additional features to preserve atom order and template labels when generating reactions by @alongd in #2182
- Adding in coverage dependent effects to surface kinetics by @mazeau in #2090
- Update documentation to reflect additions in RMG-database by @kspieks in #2175
- change to the documentation, added openSUSE installation instructions by @kfir4444 in #2192
- Handle string data properly when averaging children solute by @hwpang in #2193
- autogen trees with halogens by @davidfarinajr in #2178
a_dict
bugfix inget_w0
by @davidfarinajr in #2186- Enabling use of pyrms for RMG Simulations and Edge Analysis by @mjohnson541 in #2164
- Pyrms Reactor Bugfixes and Liquid-Surface Reactor for RMG Electrocat by @mjohnson541 in #2197
- Pdep bugfix - removing edge species by @davidfarinajr in #2200
- Use python-jl for running RMG-Py by @amarkpayne in #2212
- Update ketoenol template image to 1,3 sigmatropic rearrangement by @kspieks in #2219
- Fixing the link to Gri-mesh by @ProfLeao in #2209
- Changes related to ATG Peroxyl Disproportionation family by @xiaoruiDong in #2220
- Forbidden structs in input by @davidfarinajr in #2185
- Family atom labels by @davidfarinajr in #2216
- Ctc atomtype by @davidfarinajr in #2170
- Minor changes to rotor related functions by @xiaoruiDong in #1980
- Update reaction family images to reflect the merged 2+2_cycloaddition by @kspieks in #2226
- Fix RMS Object Construction by @mjohnson541 in #2208
- Fix atom order issue in generate_resonance_structure by @xiaoruiDong in #2229
- Remove stale template matching for Bimolec hydroperoxide decomposition by @hwpang in #2232
- Check for two-parameter Troe reaction when converting to Cantera by @sevyharris in #2231
- Add licensing information to the README file by @yunsiechung in #2234
- Documentation updates for developer install and update by @mefuller in #2224
- halogen long_distance_noncyclic in cycle interaction by @davidfarinajr in #2235
- Halogens pdep by @davidfarinajr in #2195
- Allow ArrheniusBM Fitting up to 2000K for RMG-database Rate Trees by @kspieks in #2243
- Psi4 is back by @alongd in #2257
- Update missing group test now that data is added for the original missing group by @hwpang in #2255
- BugFix: Draw CO as 'CO' by @xiaoruiDong in #2260
- give integer num of points to linspace by @mjohnson541 in #2263
- Add commit strings for RMG-Py and RMG-database by @kspieks in #2269
- Convert a ThermoData object to a NASA object instance for RMS by @alongd in #2258
- Mol to group with atom labels by @davidfarinajr in #2158
- added method to write rate const to HTML for sticking rxns by @ChrisBNEU in #2140
- BAC parameter confidence intervals by @cgrambow in #1969
- Change rmgrc to a template file by @amarkpayne in #2273
- BAC cross-validation by @cgrambow in #1968
- More robust conformer embed in QM module by @xiaoruiDong in #2272
- Handle core/edge species/reactions for phase system correctly by @hwpang in #2252
- Cantera issue in regression testing by @ChrisBNEU in #2271
- Add Nitrogen groups to transport by @yunsiechung in #2274
- Several Arkane Torsion (Rotor) related changes by @xiaoruiDong in #2268
- reminder to activate env before making tests by @kfir4444 in #2281
- remove check for adsorbate getting adsorbed again by @ChrisBNEU in #2285
- CSTR with vapor liquid mass transfer by @hwpang in #2194
- Add tests to check num of reactant and product defined in ATG rate rules by @xiaoruiDong in #2297
- Correct ATG rate rules initialization by @xiaoruiDong in #2299
- Fix load_chemkin_file read of surface species by @sevyharris in #2276
- merge AFM code into RMG-Py by @lily90502 in #2060
- Skip number of products check for ATG tree by @hwpang in #2306
- Add atom props to reduce by @hwpang in #2308
- Primary H2O2 by @josemvdh in #2291
- Fix neg freq qchem parser by @kspieks in #2319
- Added a readme file for Arkane by @alongd in #2320
- Pressure Dependence Improvements by @mjohnson541 in #2315
- Added an instruction on how to fix ImportError for rmg binary by @yunsiechung in #2327
- Fix resonance save order by @xiaoruiDong in #2329
- Add Arkane unit tests by @kspieks in #2330
- update developer installation instructions to use the main rms branch by @ChrisBNEU in #2305
- Allow RMG to load thermo or kinetic libraries from a file by @alongd in #2340
- Save the actual reaction label when creating a reaction library in Arkane by @alongd in #2345
- Added Arkane examples by @alongd in #2349
- Add the RMG-database paper to the citation info by @yunsiechung in #2351
- Transitory Edge Analysis by @mjohnson541 in #2317
- Add bib file by @JacksonBurns in #2357
- Pdep Explorer Multinetwork fixes by @mjohnson541 in #2358
- importing pyrms and diffeqpy during a debug session by @calvinp0 in #2364
- Ci with mamba by @kfir4444 in #2377
- Minor: Update group attribute name to py3 by @hwpang in #1979
- update doc workflow, was failing bc 'uses' was incorrect by @ChrisBNEU in #2387
- Added 'r' at the start of regex pattern strings where it was missing by @alongd in #2396
- Solving the 'Fragment' object has no attribute 'count_internal_rotors' error by @alongd in #2395
- 'Fragment' object has no attribute 'is_atom_in_cycle' error by @alongd in #2400
- Add radical flux tolerance by @mjohnson541 in #2368
- add comment as input to RMS reaction and species object by @hwpang in #2403
- Improve kH estimation code by @hwpang in #2389
- Adapt change in RMS to use keyword variables by @hwpang in #2408
- Should be name, not label by @hwpang in #2409
- Move Regression Testing in to the CI by @JacksonBurns in #2390
- accidentally used changes from an experimental local branch, revert by @JacksonBurns in #2410
- simplify condition checking for scheduled vs pushes CI by @JacksonBurns in #2411
- Correct Troe kinetics formula by @xiaoruiDong in #2398
- CI: don't make destination directory for reference results when generating reference results by @JacksonBurns in #2412
- Set Keq=inf for irreversible reactions. by @rwest in #2399
- Updates to RMG-Py installation instructions documentation by @JacksonBurns in #2414
- Fix Incorrect Rendering in RMG-Py Installation Documentation by @JacksonBurns in #2416
- Added Arkane citation info by @alongd in #2418
- Modified assertion in thermodata.pyx by @NellyMitnik in #2420
- use conda-forge ncurses instead of default by @JacksonBurns in #2421
- fix typo in reactors.py by @mjohnson541 in #2422
- [Move to Docker]: Add Dockerfile, update installation instructions, add automatic image builds to CI by @JacksonBurns in #2424
- fix typo in updated docker installation docs by @JacksonBurns in #2426
- Calculate x only when semiclassical corrections are needed by @kfir4444 in #2425
- Cantera version 2.6 by @ChrisBNEU in #2288
- Upgrade to OpenMOPAC by @JacksonBurns in #2417
- Fix documentation View Source links by @rwest in #2430
- [Regression Testing]: Small changes to
CI.yml
to allow testing on Forks by @JacksonBurns in #2431 - Make 'test' a phony target in Makefile by @rwest in #2433
- Update list of developers by @kspieks in #2419
- Add jupyter notebook to simulate and analyze superminimal & change docker instruction by @hwpang in #2434
- [Documentation]: point users to a specific version of RMG rather than latest by @JacksonBurns in #2432
- Fix Documentation Build by @JacksonBurns in #2436
- Change variables from cpdef to cdef in cython. by @rwest in #2438
- Deadend radical species selection RMG-RMS Twin PR by @hwpang in #2388
- Test that we can make a sample molecule for every atom type. by @rwest in #1661
- transport warning for undefined species in load_transport_file by @Nora-Khalil in #2427
CI.yml
andenvironment.yml
updates to run CI on MacOS and Ubuntu by @JacksonBurns in #2415- Update/Add example notebooks based on RMG Training updates by @hwpang in #2439
- Fix our use of pyjulia so we can use the conda-forge version. by @rwest in #2444
- Allow auxilary keywords in an Arkane species YAML file by @alongd in #2447
- Fix documentation errors (and CI testing) by @rwest in #2448
- Improve conda installation instructions by @mefuller in #2246
- Adding halogens kinetics (twin with DB) by @davidfarinajr in #2135
- Trying to fix CI see issue #2455 by @rwest in #2456
- Relax tolerances when testing HinderedRotor.get_enthalpy() by @rwest in #2457
- [Docker]: add linux patch step for
libstdcxx-ng<13
by @JacksonBurns in #2458 - Add regression test for RMS reactor by @hwpang in #2446
- Regression testing updates by @rwest in #2459
- Enable Metal, Facet, site and terrace specification in Molecule by @mjohnson541 in #2452
- Revert
libstdcxx-ng
Patches in CI, Docs, and Dockerfile by @JacksonBurns in #2469 - Fix docker instruction by @hwpang in #2471
- Reducing Docker Size by @calvinp0 in #2437
- allow the CI to be called from other repos in the organization by @JacksonBurns in #2472
- Getting the regression tests to work by @rwest in #2473
- Cleaning up the RMG-Py GitHub with a robot by @JacksonBurns in #2474
- Surface diff fixup by @ChrisBNEU in #2335
- Small fix for explorer tool by @mjohnson541 in #2374
- Allow colons and periods in chemkin species names by @rwest in #1923
- Increase allowed length of species labels for chemkin output. by @rwest in #2454
- minor changes to CI to fix reusable workflow by @JacksonBurns in #2494
- A collection of Matt and David's commits from #2316 by @rwest in #2491
- Make the Continuous Integration Pass by Default by @JacksonBurns in #2500
- Limit aromaticity perception for strained polycyclics by @mliu49 in #1732
- Expand the regression test annotations. by @rwest in #2501
- Fix a bug in the CI workflow by @rwest in #2505
- More github workflow improvements by @rwest in #2506
- Don't replace PDep kinetics of a library reaction by @alongd in #2466
- remove reusable workflow logic, make RMG_DATABSE_BRANCH file-scoped by @JacksonBurns in #2512
New Contributors
- @ProfLeao made their first contribution in #2209
- @josemvdh made their first contribution in #2291
- @NellyMitnik made their first contribution in #2420
Full Changelog: 3.1.0...3.2.0