From c7deb4f868d7eebb55b8ddba25ee45c8aeb0a94e Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Wed, 17 May 2023 18:31:51 +0200 Subject: [PATCH] Warn if ASA is used in combination with events. --- python/sdist/amici/swig_wrappers.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/python/sdist/amici/swig_wrappers.py b/python/sdist/amici/swig_wrappers.py index 7146e818ee..dc28c87700 100644 --- a/python/sdist/amici/swig_wrappers.py +++ b/python/sdist/amici/swig_wrappers.py @@ -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 @@ -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 events with parameter-dependent trigger functions has not been thoroughly tested. " + "Sensitivities might be wrong. Tracked at https://github.com/AMICI-dev/AMICI/issues/18. " + "If your model does not have parameter-dependent trigger functions, you can safely ignore this message." + ) + with _capture_cstdout(): rdata = amici_swig.runAmiciSimulation( _get_ptr(solver), _get_ptr(edata), _get_ptr(model) @@ -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 events with parameter-dependent trigger functions has not been thoroughly tested. " + "Sensitivities might be wrong. Tracked at https://github.com/AMICI-dev/AMICI/issues/18. " + "If your model does not have parameter-dependent trigger functions, you can safely ignore this message." + ) + with _capture_cstdout(): edata_ptr_vector = amici_swig.ExpDataPtrVector(edata_list) rdata_ptr_list = amici_swig.runAmiciSimulations(