Skip to content

Commit

Permalink
Warn if ASA is used in combination with events (#2097)
Browse files Browse the repository at this point in the history
* Warn if ASA is used in combination with events.

Co-authored-by: Fabian Fröhlich <[email protected]>
  • Loading branch information
dweindl and FFroehlich authored May 26, 2023
1 parent f4c95eb commit 85c1f51
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions python/sdist/amici/swig_wrappers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
"""Convenience wrappers for the swig interface"""
import logging
import sys

import warnings
from contextlib import contextmanager, suppress
from typing import Any, Dict, List, Optional, Sequence, Union

Expand Down Expand Up @@ -102,6 +104,18 @@ def runAmiciSimulation(
:returns:
ReturnData object with simulation results
"""
if (
model.ne > 0
and solver.getSensitivityMethod()
== amici_swig.SensitivityMethod.adjoint
and solver.getSensitivityOrder() == amici_swig.SensitivityOrder.first
):
warnings.warn(
"Adjoint sensitivity analysis for models with discontinuous right hand sides (events/piecewise functions) has not been thoroughly tested."
"Sensitivities might be wrong. Tracked at https://github.com/AMICI-dev/AMICI/issues/18. "
"Adjoint sensitivity analysis may work if the location of the discontinuity is not parameter-dependent, but we still recommend testing accuracy of gradients."
)

with _capture_cstdout():
rdata = amici_swig.runAmiciSimulation(
_get_ptr(solver), _get_ptr(edata), _get_ptr(model)
Expand Down Expand Up @@ -152,6 +166,18 @@ def runAmiciSimulations(
:returns: list of simulation results
"""
if (
model.ne > 0
and solver.getSensitivityMethod()
== amici_swig.SensitivityMethod.adjoint
and solver.getSensitivityOrder() == amici_swig.SensitivityOrder.first
):
warnings.warn(
"Adjoint sensitivity analysis for models with discontinuous right hand sides (events/piecewise functions) has not been thoroughly tested. "
"Sensitivities might be wrong. Tracked at https://github.com/AMICI-dev/AMICI/issues/18. "
"Adjoint sensitivity analysis may work if the location of the discontinuity is not parameter-dependent, but we still recommend testing accuracy of gradients."
)

with _capture_cstdout():
edata_ptr_vector = amici_swig.ExpDataPtrVector(edata_list)
rdata_ptr_list = amici_swig.runAmiciSimulations(
Expand Down

0 comments on commit 85c1f51

Please sign in to comment.