Releases: NAU-CCL/Epymorph
v1.0.0b0
🎉 epymorph is now in v1.0.0 beta! 🎉
The main features of epymorph are in place and we believe it's ready for enthusiasts outside of our team to try it out. Your feedback is critical and appreciated, especially during this beta period. We expect there may be some bug fixes and quality-of-life improvements between now and removing the beta tag, but no major feature additions, removals, or breaking refactors. Enjoy!
What's Changed
- Remove ability to override a RUME's time frame. by @JavadocMD in #231
- Respiratory Hospitalizations CDC by @meaghan66 in #235
Full Changelog: v0.10.0...v1.0.0b0
v0.10.0
v0.9.2
v0.9.1
This version adds parameter estimation to the feature set using our particle filter implementation.
What's Changed
- Fix names in SPARSEMOD IPM to use subscript convention. by @JavadocMD in #226
- Particlefiltercombined by @JeffreyCovington in #228
New Contributors
- @JeffreyCovington made their first contribution in #228
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Note: "Initializer improvements" (PR #223) also includes the removal of the SimDimensions class and changes to how the simulation context is made available to simulation functions (like ADRIOs). Also related to this change: ADRIOs that previously required time frames to be given as parameters will now pull that time frame from the context (the simulation time frame) by default. But this can be optionally overridden.
What's Changed
- Remove IPM/MM library. by @JavadocMD in #211
- IPMs no longer lazy-evaluate various parts of the model. by @JavadocMD in #214
.diagram()
is now a method of IPM instances. by @JavadocMD in #215- Warn if IPM contains unused compartments or requirements. by @JavadocMD in #216
- Refactor pairwise haversine function. by @JavadocMD in #218
- Fix a spurious warning about the No IPM. by @JavadocMD in #219
- Delete unused code module. by @JavadocMD in #220
- Add explicit handling for removing all items from the cache (via CLI). by @JavadocMD in #221
- Add a transform option to line plots. by @JavadocMD in #222
- Initializer improvements by @JavadocMD in #223
- AdrioProgress events include attribute name. by @JavadocMD in #225
Full Changelog: v0.8.1...v0.9.0
v0.8.1
What's Changed
- Use astral-sh/setup-uv action by @JavadocMD in #207
- Collect simulation data in two forms: by home and by visit. by @JavadocMD in #208
- Strategy improvements by @JavadocMD in #210
Full Changelog: v0.8.0...v0.8.1
v0.8.0
This update brings bug fixes, some nice quality of life improvements, and a rework of the parameter evaluation subsystem. Most notably:
- Functions
evaluate_params()
andevaluate_param()
have been removed and replaced with something better. (See PR 201 for details.) - The simulation progress bar now shows an estimate of the time remaining.
- All ADRIOs (that should) now cache their results for faster re-simulation.
- You can use IPM quantity selectors to get compartment and event indices (useful for custom data processing). For example:
ipm.select.events("S->I").event_index
to receive a single int, oripm.select.events("*->I").event_indices
to receive a tuple of ints.
What's Changed
- Data Estimate Adjustments and Language Changes by @meaghan66 in #186
- Improved/Additional ADRIO Documentation by @meaghan66 in #189
- Add props to QuantitySelection to get indices of compartments/events. by @JavadocMD in #191
- Fix bug in tick-to-day conversion. by @JavadocMD in #193
- Time remaining for simulation progress bar. by @meaghan66 in #192
- Enabled adrio_cache for ADRIOs. by @meaghan66 in #199
- Fix creation of multistrata RUMEs involving MMs using NEVER as a return step. by @JavadocMD in #203
- Prism error handling. by @meaghan66 in #200
- Parameter evaluation refactoring and API improvements by @JavadocMD in #201
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- ADRIO progress events and data usage estimation by @JavadocMD in #166
- Humidity ADRIO by @meaghan66 in #167
- PRISM ADRIO Data Estimation and Progress by @meaghan66 in #168
- LODES ADRIO Data Estimation by @meaghan66 in #177
- Commuting Flows ADRIO Data Estimation and Progress. by @meaghan66 in #179
- Fix bug constructing multistrata IPMs with exogenous classes. by @JavadocMD in #182
- ACS5 and CDC Progress Reporting by @meaghan66 in #183
- Implement output "visualization" utilities. by @JavadocMD in #187
Full Changelog: v0.6.1...v0.7.0
v0.6.1
Major new features include PRISM and numpy ADRIOs.
What's Changed
- Tiger subset by @TJohnsonAZ in #151
- Numpy file ADRIO by @TJohnsonAZ in #153
- Allow setting
NEVER
as a movement clause'sreturns
value. by @JavadocMD in #157 - Adopt uv and ruff. by @JavadocMD in #158
- Fix too many sentinel values in CDC attributes. by @TJohnsonAZ in #160
subscriptions
now handles unsubs even if the context raises an Exception. by @JavadocMD in #162- Fix TimeFrame bugs, add alt constructors and tests. by @JavadocMD in #165
- PRISM ADRIO and Devlogs by @meaghan66 in #159
Full Changelog: v0.6.0...v0.6.1
v0.6.0
The class-based syntax update: IPMs, MMs, and ADRIOs
This is a significant change that builds on the class-based syntax approach introduced in v0.5. Rather than use functions to construct IPMs or a custom .movement file syntax to construct MMs, users should now define a class (extending either CompartmentModel or MovementModel) and override attributes and methods as appropriate.
ADRIOs have been given a similar treatment, allowing us to completely remove the concept of GEOs as a standalone component.
These and additional highlights include:
- Class-based syntax for IPMs, MMs, and ADRIOs
- For all class-based components,
attributes
has been renamedrequirements
- SingleStrataRume, MultistrataRume, and MultistrataRumeBuilder classes for constructing RUMEs
- For multistrata RUMEs, the strata name is now attached to the GPM definition
- Removed GEOs entirely
- Since there's no more "pei" GEO, its data is still available as a collection of numpy arrays (
epymorph.data.pei
) until we have a good replacement for it - ADRIOs now live in the
epymorph.adrio
package epymorph.geo.spec
used to contain classes for geo-specific time periods; these have been replaced by TimeFrame- Additional ways to construct TimeFrames:
TimeFrame.range()
andTimeFrame.year()
- epymorph simulation events are now handled by a global singleton, EventBus
sim_messaging()
no longer needs a reference to the simulator- The CLI cache command manages the application cache generally, it used to be GEO-specific
- (minor)
epymorph.plots
maps now use a GeoScope (instead of a GEO) - (minor)
@adrio_cache
can be used to make an ADRIO cache its results - (minor)
module_cache_path
should be used by modules which want to store files in the application cache - (minor) epymorph now represents structured types as a tuple-of-tuples, rather than numpy's list-of-tuples (lists aren't serializable; tuples are)
Many demo and devlog notebooks have been updated (and some made obsolete). These are good ways to see what's changed. Especially the v0.6 "Rosetta stone" devlog, in comparison with the v0.5 version.
What's Changed
- Class-based syntax revamp: IPM/MM/ADRIOs by @JavadocMD in #147
Full Changelog: v0.5.1...v0.6.0