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
1 change: 0 additions & 1 deletion doc/rtd_requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ setuptools>=67.7.2
# for building the documentation, we don't care whether this fully works
git+https://github.com/pysb/pysb@0afeaab385e9a1d813ecf6fdaf0153f4b91358af
# For forward type definition in generate_equinox
git+https://github.com/PEtab-dev/petab_sciml.git@727d177fd3f85509d0bdcc278b672e9eeafd2384#subdirectory=src/python
matplotlib>=3.7.1
optax
nbsphinx
Expand Down
8 changes: 7 additions & 1 deletion python/sdist/amici/exporters/sundials/de_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,13 @@ def _generate_c_code(self) -> None:

if func_info.generate_body:
dec = log_execution_time(f"writing {func_name}.cpp", logger)
dec(self._write_function_file)(func_name)
try:
dec(self._write_function_file)(func_name)
except Exception as e:
e.add_note(
f"Error while generating function '{func_name}'"
)
raise

for name in self.model.sym_names():
# only generate for those that have nontrivial implementation,
Expand Down
27 changes: 16 additions & 11 deletions python/sdist/amici/gradient_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,17 +133,22 @@ def check_finite_difference(
else:
raise NotImplementedError()

_check_close(
sensi,
fd,
atol=atol,
rtol=rtol,
field=field,
ip=ip,
parameter_id=model.get_free_parameter_ids()[ip]
if model.has_free_parameter_ids()
else None,
)
try:
_check_close(
sensi,
fd,
atol=atol,
rtol=rtol,
field=field,
ip=ip,
parameter_id=model.get_free_parameter_ids()[ip]
if model.has_free_parameter_ids()
else None,
)
except Exception as e:
sm = SensitivityMethod(solver.get_sensitivity_method())
e.add_note(f"Sensitivity method was {sm!r}")
raise e

solver.set_sensitivity_order(og_sensitivity_order)
model.set_free_parameters(og_parameters)
Expand Down
1 change: 1 addition & 0 deletions python/sdist/amici/importers/pysb/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ def pysb2amici(
compiler=compiler,
generate_sensitivity_code=generate_sensitivity_code,
)
# TODO: remove with https://github.com/AMICI-dev/AMICI/issues/3035
# Sympy code optimizations are incompatible with PySB objects, as
# `pysb.Observable` comes with its own `.match` which overrides
# `sympy.Basic.match()`, breaking `sympy.codegen.rewriting.optimize`.
Expand Down
28 changes: 17 additions & 11 deletions python/sdist/amici/importers/sbml/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -401,17 +401,23 @@ def sbml2amici(
DEExporter,
)

exporter = DEExporter(
ode_model,
model_name=model_name,
outdir=output_dir,
verbose=verbose,
assume_pow_positivity=assume_pow_positivity,
compiler=compiler,
allow_reinit_fixpar_initcond=allow_reinit_fixpar_initcond,
generate_sensitivity_code=generate_sensitivity_code,
)
exporter.generate_model_code()
try:
exporter = DEExporter(
ode_model,
model_name=model_name,
outdir=output_dir,
verbose=verbose,
assume_pow_positivity=assume_pow_positivity,
compiler=compiler,
allow_reinit_fixpar_initcond=allow_reinit_fixpar_initcond,
generate_sensitivity_code=generate_sensitivity_code,
)
exporter.generate_model_code()
except NotImplementedError as e:
raise SBMLException(
"The SBML model contains features that are currently not "
"supported by the AMICI SBML importer."
) from e

if compile:
if not has_clibs:
Expand Down
5 changes: 5 additions & 0 deletions tests/petab_test_suite/test_petab_v2_suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import pytest
from _pytest.outcomes import Skipped
from amici import (
AMICI_SUCCESS,
SensitivityMethod,
SensitivityOrder,
)
Expand Down Expand Up @@ -78,6 +79,10 @@ def _test_case(case, model_type, version, jax):
ret = ps.simulate(problem_parameters=problem_parameters)

rdatas = ret[RDATAS]
for rdata in rdatas:
assert rdata.status == AMICI_SUCCESS, (
f"Simulation failed for {rdata.id}"
)
chi2 = sum(rdata.chi2 for rdata in rdatas)
llh = ret[LLH]
simulation_df = rdatas_to_simulation_df(rdatas, ps.model, pi.petab_problem)
Expand Down
Loading