Skip to content

Releases: AMICI-dev/AMICI

AMICI v1.0.1

13 Mar 10:14
95ed9d2

Choose a tag to compare

Fixes

  • Fixed an issue that resulted in failure to import the PetabImporter if
    the jax-dependencies weren't installed.
  • Fixed a pandas>=3.0 compatibility issue in the PEtab importer which resulted
    in incorrect selection of fixed parameters.
  • Fixed logger configuration for simulation warnings/errors, such that users
    can adjust the log level or simulations with, e.g.,
    logging.getLogger("amici.sim.sundials").setLevel(logging.ERROR)
  • Fixed various broken links and outdated function names in the documentation.

Full Changelog: v1.0.0...v1.0.1

AMICI v1.0.0

26 Feb 09:52
39afcef

Choose a tag to compare

What's Changed

The AMICI 1.0 release comes with many changes related to making the API more consistent and modular. On the feature side, a highlight is support for the new PEtab 2.0 format for both the JAX and SUNDIALS interface.

Documentation: https://amici.readthedocs.io/en/v1.0.0/

With contributions by @BSnelling, @dilpath, @dweindl, @FFroehlich

BREAKING CHANGES

Removed functionality

The following functionality has been removed without replacement:

  • The complete MATLAB interface has been removed.
  • amici.sbml_import.species_to_parameters has been removed.

API changes

  • For a more consistent API, all function names are now snake_case instead of camelCase.
  • The package has been reorganized.
    • All importers have been moved to amici.importers subpackages. For example, all functionality from amici.sbml_import is now available in amici.importers.sbml.
    • All simulation-related functionality has been moved to amici.sim.sundials for the SUNDIALS interface, and amici.sim.jax for the JAX interface.
    • A number of functions and modules have been made private (i.e., their name starts with _ or they are excluded from __all__), as they are not intended for public use and may change without deprecation.
  • The naming of free and fixed parameters has been harmonized across the API:
    AMICI differentiates between parameters with respect to which a model can compute sensitivities ("free parameters") and parameters with respect to which no sensitivities can be computed ("fixed parameters").
    "Free" and "fixed" are to be understood in the context of parameter estimation, where free parameters are optimized,
    while fixed parameters remain constant. Free parameters were previously referred to as just "parameters", and
    fixed parameters as "fixed parameters", "constant parameters", or "constants". This has now been harmonized to "free" and "fixed" across the API. E.g., Model.setParameters() is now Model.set_free_parameters().
  • ReturnDataView.posteq_numsteps and ReturnDataView.preeq_numsteps now return a one-dimensional array of shape (num_timepoints,) instead of a two-dimensional array of shape (1, num_timepoints).
  • ReturnDataView.posteq_status and ReturnDataView.preeq_status now return list[SteadyStateStatus] instead of an ndarray[int] of shape (1, 3).
  • The way the observation model is passed to the different import functions (sbml2amici, pysb2amici, ...) has changed:
    The information previously split across observables, sigmas, noise_distributions, event_observables, event_sigmas, and
    event_noise_distributions dicts is now passed as a single observation_model: list[MeasurementChannel] argument.
  • assignmentRules2observables has been renamed to assignment_rules_to_observables and now returns list[MeasurementChannel] to be passed to the import functions.
  • AmiVector::getLength and AmiVectorArray::getLength have been renamed to size to be more consistent with STL containers.
  • amici.petab.petab_import.import_model has been removed. Use amici.importers.petab.v1.import_petab_problem instead.
  • Model.getSolver has been renamed to Model.create_solver, emphasizing that a new Solver instance is created on each call.
  • amici.runAmiciSimulation and amici.runAmiciSimulations have been renamed to amici.sim.sundials.run_simulation and
    amici.sim.sundials.run_simulations, respectively.
  • The following deprecated functionality has been removed:
    • NonlinearSolverIteration::functional has been removed, use NonlinearSolverIteration::fixedpoint instead.
    • The deprecated argument log_as_log10 to SbmlImporter.sbml2amici and SbmlImporter.sbml2jax has been removed. Just remove this argument, as this never had any effect.
    • Deprecated imports from amici.petab.* in amici.petab.simulations have been removed. Import those functions directly from their respective modules.
    • The force_compile argument to import_petab_problem has been removed. See the compile_ argument.
  • Model output directory keyword arguments have been harmonized:
    What was previously model_output_dir, output_dir, outdir is now consistently called output_dir across the API.
  • Plotting functions have been moved from amici.plotting to amici.sim.sundials.plotting. The model argument has been removed.

Features

  • Support for the PEtab data format v2.0.0 (draft) for the JAX and SUNDIALS interfaces.

    See amici.importers.petab.PetabImporter and examples for JAX and SUNDIALS.

    For JAX-based models, the interface can be considered stable; for SUNDIALS-based models, the API may still change.

    SBML- and PySB-based PEtab problems are currently supported. For PySB-based PEtab problems, only species and pysb.Expression are supported as condition table targets (i.e., no parameters yet).

    PEtab v1 import for SUNDIALS-based models is still available via amici.importers.petab.v1. Once PEtab v2 import has been stabilized, PEtab v1 import for SUNDIALS-based models will be removed.

  • Many relevant ReturnData fields are now available as xarray.DataArray via ReturnData.xr.{x,y,w,x0,sx,...}.
    DataArrays include the identifiers and are often more convenient than the plain numpy arrays. This allows for easy subselection and plotting of the results, and conversion to DataFrames.

  • Model.simulate() has been added as a convenience function to run simulations without having to create a Solver object explicitly.
    This is a wrapper for both amici.sim.sundials.run_simulation and amici.sim.sundials.run_simulations,
    depending on the type of the edata argument. It also supports passing some Solver options as keyword arguments.
    This is intended for interactive use; for better full control and performance, it is still recommended to create a Solver object and call amici.sim.sundials.{run_simulation,run_simulations} directly.

  • Improved pickle support for amici.sim.sundials.{Model,ModelPtr,Solver,ExpData}.
    Note that AMICI's pickling support is only intended for short-term storage or inter-process communication.
    Reading pickled objects after updating AMICI or the model code will almost certainly fail.

    • Modeland ModelPtr now support sufficient pickling for use in multiprocessing contexts. This works only if the amici-generated model package exists in the same file system location and does not change until unpickling.
    • Solver is now picklable if amici was built with HDF5 support.
      This only works on shared file systems, as the solver state is stored in a temporary HDF5 file.
    • ExpData is now picklable.
  • The import function sbml2amici, pysb2amici, and antimony2amici now return an instance of the generated model class if called with compile=True (default).

  • The default directory for model import changed, and a base directory can now be specified via the AMICI_MODELS_ROOT environment variable. See amici.get_model_dir for details.

  • IDs and names of model entities are now not only accessible via amici.sim.sundials.Model, but also via amici.sim.sundials.ReturnData (ReturnData.{free_parameter_ids,observable_ids,...}, ReturnData.free_parameter_names,observable_names,...}).

Fixes

  • Fixed a bug that potentially results in incorrect handling of discontinuities their location depends on a state variable that is subject to an event assignment but otherwise constant.

Full Changelog: v0.34.1...v1.0.0

AMICI v0.34.2

03 Nov 11:56

Choose a tag to compare

Bugfix release.

  • Python 3.14 compatibility
  • Swig 4.4.0 compatibility
  • Fixes a bug that resulted in incorrect processing of initial assignments
    containing (amici-)splines
  • Fixes an SBML import error during the handling of algebraic rules
  • Fixes a CMake error with certain CMake versions
  • Fixes type annotations in swig wrappers

Full Changelog: v0.34.1...v0.34.2

AMICI v0.34.1

27 Aug 08:35
17dbad1

Choose a tag to compare

Bugfix release.

  • Fixed a bug that would lead to incorrect model initialization in SBML models
    with initial assignments that depend on dynamic entities
    (by @dweindl in #2939)

Full Changelog: v0.34.0...v0.34.1

AMICI v0.34.0

29 Jul 13:46
7168721

Choose a tag to compare

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.
  • Fixed a number of issues related to the handling of events or discontinuities in general:
    • Fixed import of DAE models with events (by @dweindl in #2897)
    • Fixed root functions for events with initialValue=trigger=false (by @dweindl in #2910)
    • Fixed check for sign change, fix Heaviside update (by @dweindl in #2927)
  • 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
  • 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

11 Jun 20:46
ce28017

Choose a tag to compare

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

    by @dweindl in #2744

  • 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

    by @dweindl in #2779

Features

  • AMICI now supports SBML events with use_values_from_trigger_time=true

    by @dweindl in #2741

  • AMICI now supports SBML events with constant priorities

    by @dweindl in #2730

Other changes

  • doc: Added a caveats section listing some known issues and potentially unexpected behavior in AMICI

    by @dweindl in #2735

  • 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.

    by @dweindl in #2755

Full Changelog: v0.32.0...v0.33.0

AMICI v0.32.0

15 May 19:52
57d8179

Choose a tag to compare

Breaking changes

  • Removed deprecated amici.petab_* modules (now under amici.petab.*)

    by @dweindl in #2658

  • Removed deprecated CLI options to amici_import_petab

    by @dweindl in #2671

Changed requirements

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.

    by @dweindl in #2701

  • Prevent segfaults under pytest after swig4.3 wrapping

    by @dweindl in #2696

  • Fixed SetuptoolsDeprecationWarning: \project.license` as a TOML table is deprecated`

    by @dweindl in #2697

  • Updated Dockerfile, use Ubuntu 24.04 LTS

    by @dweindl in #2698

  • SBML import: Handle unsolvable event triggers

    by @dweindl in #2705

  • Added RTFUNC_FAIL simulation status

    by @dweindl in #2702

  • doc: Enable building docs with Python 3.13

    by @dweindl in #2704

  • Fixed crash for models without state variables

    by @dweindl in #2703

  • SBML import: avoid repeated xdot==0 checks

    by @dweindl in #2706

  • Fixed Boolean to float conversion issues during SBML import

    by @dweindl in #2725

Features

  • Support for XOR, == and != operators in SBML models

    Note that not all (combinations of) Boolean functions will work well with AMICI's root-finding. It's recommended to verify the results.

    by @dweindl in #2699, #2708, and #2716

Full Changelog: v0.31.2...v0.32.0

AMICI v0.31.2

23 Apr 10:15
a87058e

Choose a tag to compare

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

21 Mar 15:45
4cda6c7

Choose a tag to compare

Bugfix-only release.

  • Handle relational operators in SBML import
    by @dweindl in #2652

Full Changelog: v0.31.0...v0.31.1

AMICI v0.31.0

18 Feb 17:45
f742e48

Choose a tag to compare

Full Changelog: v0.30.1...v0.31.0