Source code for pypesto.petab.pysb_importer

from __future__ import annotations

import os
import shutil
from typing import TYPE_CHECKING

from .importer import PetabImporter

if TYPE_CHECKING:
    import amici.petab_import_pysb


[docs]class PetabImporterPysb(PetabImporter): """Import for experimental PySB-based PEtab problems."""
[docs] def __init__( self, petab_problem: amici.petab_import_pysb.PysbPetabProblem, validate_petab: bool = False, **kwargs, ): """ Initialize importer. Parameters ---------- petab_problem: Managing access to the model and data. validate_petab: Flag indicating if the PEtab problem shall be validated. kwargs: Passed to `PetabImporter.__init__`. """ if "model_name" not in kwargs: kwargs["model_name"] = petab_problem.pysb_model.name super().__init__( petab_problem, validate_petab=validate_petab, **kwargs, )
[docs] def compile_model(self, **kwargs): """ Compile the model. If the output folder exists already, it is first deleted. Parameters ---------- kwargs: Extra arguments passed to `amici.SbmlImporter.sbml2amici`. """ import amici.petab_import_pysb # delete output directory if os.path.exists(self.output_folder): shutil.rmtree(self.output_folder) amici.petab_import_pysb.import_model_pysb( petab_problem=self.petab_problem, model_output_dir=self.output_folder, **kwargs, )