Releases: AMICI-dev/AMICI
AMICI v0.34.0
The amici 0.34.0 release contains a number of bug fixes and new features.
Note that this will probably be the last release to include the MATLAB interface.
Fixes
- Breaking changes Events are now also handled during pre-equilibration, presimulation, and post-equilibration.
This may be a breaking change, as it may lead to different results for models with events that may trigger during these periods. This change is considered a bugfix, as it was not intended to ignore events during these periods.
(by @dweindl in #2777, #2780, #2859, #2881, #2889, #2920, #2921, #2925) - Fixed various issues related to adjoint sensitivity analysis for models with events.
While many cases are now supported, it is still highly recommended to check the ASA results for models with events against forward sensitivities or finite differences.- Adjoint sensitivities for Python-imported models with events (by @paulstapor & @dweindl in #1539)
- Fix Model::addAdjointQuadratureEventUpdate (by @dweindl in #2787)
- Fix indexing errors for adjoint quadratures during event updates (by @dweindl in #2796)
- Fix deltaxB dimensions (by @dweindl in #2803)
- Fix (some) ASA event handling (by @dweindl in #2797)
- Fixed a number of issues related to the handling of events or discontinuities in general:
- Fixed sign of residuals (by @dweindl in #2896)
- Updated the steady state notebook to match the current implementation (by @plakrisenko & @dweindl in #2891)
- Improved sigma<=0 error reporting (by @FFroehlich in #2829)
- Fixed sensitivities for the total abundances of conservation laws (only relevant if
AMICI_EXPERIMENTAL_SBML_NONCONST_CLS
is enabled) (by @dweindl in #2782) - Fix sensitivities w.r.t. unused log-scaled NaN parameters (by @dweindl in #2903)
Features
- AMICI should now be pip-installable without pre-installing SWIG or BLAS (by @dweindl in #2774, #2772)
- Event/discontinuity handling for JAX models
- Track discontinuities in JAX & fix gradient for models with parameter dependent roots (by @FFroehlich in #2815)
- Improve JAX event integration (by @FFroehlich in #2841)
- mask event functions in jax (by @FFroehlich in #2863)
- Handle state-independent, parameter-dependent event triggers without root-finding (by @dweindl in #2913)
- Presimulation is now also supported in combination with adjoint sensitivities (by @dweindl in #2786)
- It is now possible to set a separate
$t_0$ for pre-equilibration and main simulation (by @dweindl in #2793) - Sensitivity analysis for
AlgebraicRule
/ DAE models is now also supported for Python-imported models
(by @dweindl in #2101) - An optional random generator seed can now be passed to
ExpData::ExpData(ReturnData const&, ...)
when generating synthetic measurements (by @dweindl in #2802) - Added
ReturnData::plist
(by @dweindl in #2874)
... and extended tests, documentation, and many changes under the hood.
Full Changelog: v0.33.0...v0.34.0
AMICI v0.33.0
Note that this release requires Python >= 3.11.
Fixes
-
Fixed an issue in SBML AlgebraicRule processing leading to import failure if a species occurred in multiple AlgebraicRules
-
Fixed a potential segfault when running forward sensitivity analysis for models without state variables
by @FFroehlich in #2749
-
Fixed a dimension bug for presimulation parameters in ExpDataView
by @FFroehlich in #2746
-
Fixed incorrect initialization for initial assignments with explicit time dependence
Features
-
AMICI now supports SBML events with
use_values_from_trigger_time=true
-
AMICI now supports SBML events with constant priorities
Other changes
-
doc: Added a caveats section listing some known issues and potentially unexpected behavior in AMICI
-
Added warnings for presimulation and steady state simulation with events. So far, events were not fully supported in these modes. This is subject to change.
Full Changelog: v0.32.0...v0.33.0
AMICI v0.32.0
Breaking changes
-
Removed deprecated
amici.petab_*
modules (now underamici.petab.*
) -
Removed deprecated CLI options to
amici_import_petab
Changed requirements
-
AMICI now requires a C++20-compatible compiler
-
AMICI now requires swig>=4.1
-
AMICI now uses the sbmlmath package for sympification of SBML math constructs
Fixes
-
Fixed Heaviside functions for
<
,>
<=
,>=
which could have lead to incorrect simulation results.Note that
>
and>=
, as well as<
and<=
can't be distinguished in some cases (see #2707). Avoid situations where this would matter. -
Prevent segfaults under pytest after swig4.3 wrapping
-
Fixed
SetuptoolsDeprecationWarning: \
project.license` as a TOML table is deprecated` -
Updated Dockerfile, use Ubuntu 24.04 LTS
-
SBML import: Handle unsolvable event triggers
-
Added RTFUNC_FAIL simulation status
-
doc: Enable building docs with Python 3.13
-
Fixed crash for models without state variables
-
SBML import: avoid repeated xdot==0 checks
-
Fixed Boolean to float conversion issues during SBML import
Features
-
Support for XOR,
==
and!=
operators in SBML modelsNote that not all (combinations of) Boolean functions will work well with AMICI's root-finding. It's recommended to verify the results.
Full Changelog: v0.31.2...v0.32.0
AMICI v0.31.2
Bugfix-only release.
- SBML import: Handle unsolvable event triggers
by @dweindl in #2686 - Fixed a clang compiler warning related to variable length arrays
by @FFroehlich in #2688 - Temporarily require interpax<=0.3.6
by @dweindl in #2678 - Update OpenBLAS installation script to work with CMake>=4
by @dweindl in #2679 - GHA: Don't run cron jobs on forks by @dweindl in #2669
- Fixed Matlab documentation build with CMake 4.0
by @dweindl in #2676
Full Changelog: v0.31.1...v0.31.2
AMICI v0.31.1
Bugfix-only release.
Full Changelog: v0.31.0...v0.31.1
AMICI v0.31.0
- Added
RDataReporting::observables_likelihood
for computing observables, likelihood and the respective sensitivities
by @dweindl in #2627, #2633 - JAX:
- Updated diffrax & jaxlib
by @FFroehlich in #2632 - Avoid silent preequilibration failure in JAX
by @FFroehlich in #2631 - jax vectorisation
by @FFroehlich in #2636 - No flattening of timepoint specific overrides in jax
by @FFroehlich in #2641
- Updated diffrax & jaxlib
- Faster PEtab parameter mapping
by @dweindl in #2638, #2640
Full Changelog: v0.30.1...v0.31.0
AMICI v0.30.1
Bugfix-only release.
- Removed
eqx.debug.nan
, fixes #2629
by @FFroehlich in #2630 - Fixes an SBML import issue that led to incorrect results for models with
species-dependent initial assignments (fixes #2642)
by @FFroehlich in #2643 - Fixed
CVodeGetSensDky
error message
by @dweindl in #2644 - Disabled
CvodeF
checkpointing to prevent certain rare crashes when forward
integration takes exactlymaxsteps
integration steps, plus some additional
yet unclear condition.
by @dweindl in #2645 - Fixed rare crashes due to uncaught exceptions in
~FinalStateStorer
by @dweindl in #2647
Full Changelog: v0.30.0...v0.30.1
AMICI v0.30.0
Please note that the amici JAX model generation introduced in v0.29.0 is experimental, the API may substantially change in the future. Use at your own risk and do not expect backward compatibility.
Features
-
Added serialisation for JAX models
by @FFroehlich in #2608
-
Disabled building the C++ extension by default when generating a JAX model
by @FFroehlich in #2609
-
Separate pre-equilibration and dynamic simulation in jax
by @FFroehlich in #2617
-
State reinitialisation in JAX
by @FFroehlich in #2619
Fixes
-
Fixed ModelStateDerived copy ctor (fixes potential segfaults)
-
PEtab parameter mapping: fill in fixed parameter values for initial values
-
nan
-safe log÷ for JAX modelsby @FFroehlich in #2611
Full Changelog: v0.29.0...v0.30.0
AMICI v0.29.0
Fixes
-
Fixed race conditions in froot, which could have resulted in incorrect
simulation results for models with events/heavisides/piecewise, for
multi-threaded simulations. -
Fixed race conditions for the max-time check, which could have resulted in
incorrect termination of simulations in case of multi-threaded simulations
in combination with a time limit. -
Added missing fields in ExpData HDF5 I/O
-
Added missing fields in ReturnData HDF5 output
Features
-
Generate models in a JAX-compatible format (example)
by @FFroehlich in #1861
-
Faster
fill_in_parameters_for_condition
-
Added Python function
writeSimulationExpData
for writing ExpData to HDF5 -
Improved import of amici-generated models via
amici.import_model_module()
.So far, it was not possible to import different model modules with the same
name. This is now possible if they are in different directories.
Overwriting an already imported module is still not possible (and never
was); any attempts to do so will raise aRuntimeError
.
While model packages can, in principle, be imported using regular
import
s, it is strongly recommended to useamici.import_model_module()
.
Full Changelog: v0.28.0...v0.29.0
AMICI v0.28.0
Breaking changes
-
Changed the default steady-state method to
integrationOnly
(by @dweindl in #2574)The default mode for computing steady states and sensitivities at steady state was changed to
integrationOnly
(from previouslyintegrateIfNewtonFails
).This was done for a more robust default behavior. For example, the evaluation in https://doi.org/10.1371/journal.pone.0312148 shows that - at least for some models - Newton's method may easily lead to physically impossible solutions.
To keep the previous behavior, use:
amici_model.setSteadyStateComputationMode(amici.SteadyStateComputationMode.integrateIfNewtonFails) amici_model.setSteadyStateSensitivityMode(amici.SteadyStateSensitivityMode.integrateIfNewtonFails)
Fixes
-
PEtab import: Fixed potentially incorrect sensitivities with observable/state-dependent sigmas.
This was fixed for all cases amici can handle, others cases will now result inValueError
s (#2563). -
Fixed potentially incorrect disabling of Newton's method
-
Fixed
ModelStateDerived
copy ctor, where previously dangling pointers could lead to crashes in some situations -
Added missing simulation status codes
-
Check for unsupported observable IDs in sigma expressions
Features
Full Changelog: v0.27.0...v0.28.0