Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,76 @@ See also our [versioning policy](https://amici.readthedocs.io/en/latest/versioni

## v0.X Series

### v0.34.0 (2025-07-29)

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 https://github.com/AMICI-dev/AMICI/pull/1539)
* Fix Model::addAdjointQuadratureEventUpdate
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2787)
* Fix indexing errors for adjoint quadratures during event updates
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2796)
* Fix deltaxB dimensions (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2803)
* Fix (some) ASA event handling (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2797)
* 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 https://github.com/AMICI-dev/AMICI/pull/2897)
* Fixed root functions for events with initialValue=trigger=false (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2910)
* Fixed check for sign change, fix Heaviside update (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2927)
* Fixed sign of residuals (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2896)
* Updated the steady state notebook to match the current implementation
(by @plakrisenko & @dweindl in https://github.com/AMICI-dev/AMICI/pull/2891)
* Improved sigma<=0 error reporting (by @FFroehlich in https://github.com/AMICI-dev/AMICI/pull/2829)
* Fixed sensitivities for the total abundances of conservation laws
(only relevant if `AMICI_EXPERIMENTAL_SBML_NONCONST_CLS` is enabled)
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2782)
* Fix sensitivities w.r.t. unused log-scaled NaN parameters (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2903)

**Features**

* AMICI should now be pip-installable without pre-installing SWIG or BLAS
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2774,
https://github.com/AMICI-dev/AMICI/pull/2772)
* Event/discontinuity handling for JAX models
* Track discontinuities in JAX & fix gradient for models with parameter
dependent roots (by @FFroehlich in https://github.com/AMICI-dev/AMICI/pull/2815)
* Improve JAX event integration (by @FFroehlich in https://github.com/AMICI-dev/AMICI/pull/2841)
* mask event functions in jax (by @FFroehlich in https://github.com/AMICI-dev/AMICI/pull/2863)
* Handle state-independent, parameter-dependent event triggers without root-finding
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2913)
* Presimulation is now also supported in combination with adjoint sensitivities
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2786)
* It is now possible to set a separate $t_0$ for pre-equilibration and main
simulation (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2793)
* Sensitivity analysis for `AlgebraicRule` / DAE models is now also supported
for Python-imported models
(by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2101)
* An optional random generator seed can now be passed to
`ExpData::ExpData(ReturnData const&, ...)` when generating synthetic
measurements (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2802)
* Added `ReturnData::plist` (by @dweindl in https://github.com/AMICI-dev/AMICI/pull/2874)

... and extended tests, documentation, and many changes under the hood.

**Full Changelog**: https://github.com/AMICI-dev/AMICI/compare/v0.33.0...v0.34.0


### v0.33.0 (2025-06-11)

Note that this release requires Python >= 3.11.
Expand Down
2 changes: 1 addition & 1 deletion models/model_calvetti_py/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if(DEFINED ENV{AMICI_LDFLAGS})
link_libraries("$ENV{AMICI_LDFLAGS}")
endif()

find_package(Amici 0.33.0 REQUIRED HINTS
find_package(Amici 0.34.0 REQUIRED HINTS
${CMAKE_CURRENT_LIST_DIR}/../../build)
message(STATUS "Found AMICI ${Amici_DIR}")
set_target_properties(Upstream::amici PROPERTIES
Expand Down
8 changes: 2 additions & 6 deletions models/model_calvetti_py/model_calvetti_py.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#include <amici/defines.h>
#include <array>

namespace amici {

namespace model_model_calvetti_py {
namespace amici::model_model_calvetti_py {

// clang-format off

Expand Down Expand Up @@ -124,6 +122,4 @@ std::array<int, 6> stateIdxsSolver = {

// clang-format on

} // namespace model_model_calvetti_py

} // namespace amici
} // namespace amici::model_model_calvetti_py
4 changes: 2 additions & 2 deletions models/model_calvetti_py/model_calvetti_py.h
Original file line number Diff line number Diff line change
Expand Up @@ -550,15 +550,15 @@ class Model_model_calvetti_py : public amici::Model_DAE {
* @return AMICI version string
*/
std::string getAmiciVersion() const override {
return "0.33.0";
return "0.34.0";
}

/**
* @brief returns the amici version that was used to generate the model
* @return AMICI git commit hash
*/
std::string getAmiciCommit() const override {
return "d587a622b8295dff051b8cb45d009d9b037f7012";
return "08d0c9533715453de60b684970751c6de07ffd9b";
}

bool hasQuadraticLLH() const override {
Expand Down
2 changes: 1 addition & 1 deletion models/model_calvetti_py/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def get_extension() -> CMakeExtension:
author_email="model-author-todo",
ext_modules=[MODEL_EXT],
packages=find_namespace_packages(),
install_requires=["amici==0.33.0"],
install_requires=["amici==0.34.0"],
python_requires=">=3.11",
package_data={},
zip_safe=False,
Expand Down
9 changes: 2 additions & 7 deletions models/model_calvetti_py/wrapfunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

#include "amici/model.h"

namespace amici {
namespace generic_model {

namespace amici::generic_model {

/**
* @brief Wrapper function to instantiate the linked Amici model without knowing
Expand All @@ -16,10 +14,7 @@ namespace generic_model {
*/
std::unique_ptr<amici::Model> getModel();


} // namespace generic_model

} // namespace amici
} // namespace amici::generic_model


#endif /* _amici_wrapfunctions_h */
2 changes: 1 addition & 1 deletion models/model_dirac_py/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if(DEFINED ENV{AMICI_LDFLAGS})
link_libraries("$ENV{AMICI_LDFLAGS}")
endif()

find_package(Amici 0.33.0 REQUIRED HINTS
find_package(Amici 0.34.0 REQUIRED HINTS
${CMAKE_CURRENT_LIST_DIR}/../../build)
message(STATUS "Found AMICI ${Amici_DIR}")
set_target_properties(Upstream::amici PROPERTIES
Expand Down
8 changes: 2 additions & 6 deletions models/model_dirac_py/model_dirac_py.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#include <amici/defines.h>
#include <array>

namespace amici {

namespace model_model_dirac_py {
namespace amici::model_model_dirac_py {

// clang-format off

Expand Down Expand Up @@ -65,6 +63,4 @@ std::array<int, 2> stateIdxsSolver = {

// clang-format on

} // namespace model_model_dirac_py

} // namespace amici
} // namespace amici::model_model_dirac_py
4 changes: 2 additions & 2 deletions models/model_dirac_py/model_dirac_py.h
Original file line number Diff line number Diff line change
Expand Up @@ -537,15 +537,15 @@ class Model_model_dirac_py : public amici::Model_ODE {
* @return AMICI version string
*/
std::string getAmiciVersion() const override {
return "0.33.0";
return "0.34.0";
}

/**
* @brief returns the amici version that was used to generate the model
* @return AMICI git commit hash
*/
std::string getAmiciCommit() const override {
return "d587a622b8295dff051b8cb45d009d9b037f7012";
return "08d0c9533715453de60b684970751c6de07ffd9b";
}

bool hasQuadraticLLH() const override {
Expand Down
2 changes: 1 addition & 1 deletion models/model_dirac_py/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def get_extension() -> CMakeExtension:
author_email="model-author-todo",
ext_modules=[MODEL_EXT],
packages=find_namespace_packages(),
install_requires=["amici==0.33.0"],
install_requires=["amici==0.34.0"],
python_requires=">=3.11",
package_data={},
zip_safe=False,
Expand Down
9 changes: 2 additions & 7 deletions models/model_dirac_py/wrapfunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

#include "amici/model.h"

namespace amici {
namespace generic_model {

namespace amici::generic_model {

/**
* @brief Wrapper function to instantiate the linked Amici model without knowing
Expand All @@ -16,10 +14,7 @@ namespace generic_model {
*/
std::unique_ptr<amici::Model> getModel();


} // namespace generic_model

} // namespace amici
} // namespace amici::generic_model


#endif /* _amici_wrapfunctions_h */
2 changes: 1 addition & 1 deletion models/model_events_py/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if(DEFINED ENV{AMICI_LDFLAGS})
link_libraries("$ENV{AMICI_LDFLAGS}")
endif()

find_package(Amici 0.33.0 REQUIRED HINTS
find_package(Amici 0.34.0 REQUIRED HINTS
${CMAKE_CURRENT_LIST_DIR}/../../build)
message(STATUS "Found AMICI ${Amici_DIR}")
set_target_properties(Upstream::amici PROPERTIES
Expand Down
8 changes: 2 additions & 6 deletions models/model_events_py/model_events_py.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#include <amici/defines.h>
#include <array>

namespace amici {

namespace model_model_events_py {
namespace amici::model_model_events_py {

// clang-format off

Expand Down Expand Up @@ -73,6 +71,4 @@ std::array<int, 3> stateIdxsSolver = {

// clang-format on

} // namespace model_model_events_py

} // namespace amici
} // namespace amici::model_model_events_py
4 changes: 2 additions & 2 deletions models/model_events_py/model_events_py.h
Original file line number Diff line number Diff line change
Expand Up @@ -572,15 +572,15 @@ class Model_model_events_py : public amici::Model_ODE {
* @return AMICI version string
*/
std::string getAmiciVersion() const override {
return "0.33.0";
return "0.34.0";
}

/**
* @brief returns the amici version that was used to generate the model
* @return AMICI git commit hash
*/
std::string getAmiciCommit() const override {
return "d587a622b8295dff051b8cb45d009d9b037f7012";
return "08d0c9533715453de60b684970751c6de07ffd9b";
}

bool hasQuadraticLLH() const override {
Expand Down
2 changes: 1 addition & 1 deletion models/model_events_py/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def get_extension() -> CMakeExtension:
author_email="model-author-todo",
ext_modules=[MODEL_EXT],
packages=find_namespace_packages(),
install_requires=["amici==0.33.0"],
install_requires=["amici==0.34.0"],
python_requires=">=3.11",
package_data={},
zip_safe=False,
Expand Down
9 changes: 2 additions & 7 deletions models/model_events_py/wrapfunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

#include "amici/model.h"

namespace amici {
namespace generic_model {

namespace amici::generic_model {

/**
* @brief Wrapper function to instantiate the linked Amici model without knowing
Expand All @@ -16,10 +14,7 @@ namespace generic_model {
*/
std::unique_ptr<amici::Model> getModel();


} // namespace generic_model

} // namespace amici
} // namespace amici::generic_model


#endif /* _amici_wrapfunctions_h */
2 changes: 1 addition & 1 deletion models/model_jakstat_adjoint_py/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if(DEFINED ENV{AMICI_LDFLAGS})
link_libraries("$ENV{AMICI_LDFLAGS}")
endif()

find_package(Amici 0.33.0 REQUIRED HINTS
find_package(Amici 0.34.0 REQUIRED HINTS
${CMAKE_CURRENT_LIST_DIR}/../../build)
message(STATUS "Found AMICI ${Amici_DIR}")
set_target_properties(Upstream::amici PROPERTIES
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#include <amici/defines.h>
#include <array>

namespace amici {

namespace model_model_jakstat_adjoint_py {
namespace amici::model_model_jakstat_adjoint_py {

// clang-format off

Expand Down Expand Up @@ -115,6 +113,4 @@ std::array<int, 9> stateIdxsSolver = {

// clang-format on

} // namespace model_model_jakstat_adjoint_py

} // namespace amici
} // namespace amici::model_model_jakstat_adjoint_py
4 changes: 2 additions & 2 deletions models/model_jakstat_adjoint_py/model_jakstat_adjoint_py.h
Original file line number Diff line number Diff line change
Expand Up @@ -545,15 +545,15 @@ class Model_model_jakstat_adjoint_py : public amici::Model_ODE {
* @return AMICI version string
*/
std::string getAmiciVersion() const override {
return "0.33.0";
return "0.34.0";
}

/**
* @brief returns the amici version that was used to generate the model
* @return AMICI git commit hash
*/
std::string getAmiciCommit() const override {
return "d587a622b8295dff051b8cb45d009d9b037f7012";
return "08d0c9533715453de60b684970751c6de07ffd9b";
}

bool hasQuadraticLLH() const override {
Expand Down
2 changes: 1 addition & 1 deletion models/model_jakstat_adjoint_py/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def get_extension() -> CMakeExtension:
author_email="model-author-todo",
ext_modules=[MODEL_EXT],
packages=find_namespace_packages(),
install_requires=["amici==0.33.0"],
install_requires=["amici==0.34.0"],
python_requires=">=3.11",
package_data={},
zip_safe=False,
Expand Down
9 changes: 2 additions & 7 deletions models/model_jakstat_adjoint_py/wrapfunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

#include "amici/model.h"

namespace amici {
namespace generic_model {

namespace amici::generic_model {

/**
* @brief Wrapper function to instantiate the linked Amici model without knowing
Expand All @@ -16,10 +14,7 @@ namespace generic_model {
*/
std::unique_ptr<amici::Model> getModel();


} // namespace generic_model

} // namespace amici
} // namespace amici::generic_model


#endif /* _amici_wrapfunctions_h */
2 changes: 1 addition & 1 deletion models/model_nested_events_py/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ if(DEFINED ENV{AMICI_LDFLAGS})
link_libraries("$ENV{AMICI_LDFLAGS}")
endif()

find_package(Amici 0.33.0 REQUIRED HINTS
find_package(Amici 0.34.0 REQUIRED HINTS
${CMAKE_CURRENT_LIST_DIR}/../../build)
message(STATUS "Found AMICI ${Amici_DIR}")
set_target_properties(Upstream::amici PROPERTIES
Expand Down
Loading
Loading