Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def compile_model(path, test_id):
"""Import the given test model to AMICI"""
sbml_file = find_model_file(path, test_id)
wrapper = amici.SbmlImporter(sbml_file)
model_dir = os.path.join(os.path.dirname(__file__), 'SBMLTestModels',
test_id)
if not os.path.exists(model_dir):
os.makedirs(model_dir)
model_name = 'SBMLTest' + test_id
wrapper.sbml2amici(model_name, output_dir=model_dir)
# settings
sys.path.insert(0, model_dir)
model_module = importlib.import_module(model_name)
model = model_module.getModel()
solver = model.getSolver()
def setUp(self):
self.default_path = copy.copy(sys.path)
self.resetdir = os.getcwd()
if os.path.dirname(__file__) != '':
os.chdir(os.path.dirname(__file__))
sbmlFile = os.path.join(os.path.dirname(__file__), '..', 'python',
'examples', 'example_presimulation',
'model_presimulation.xml')
sbmlImporter = amici.SbmlImporter(sbmlFile)
constantParameters = ['DRUG_0', 'KIN_0']
observables = amici.assignmentRules2observables(
sbmlImporter.sbml, # the libsbml model object
filter_function=lambda variable: variable.getName() == 'pPROT'
)
outdir = 'test_model_presimulation'
sbmlImporter.sbml2amici('test_model_presimulation',
outdir,
verbose=False,
observables=observables,
constantParameters=constantParameters)
sys.path.insert(0, outdir)
import test_model_presimulation as modelModule
self.model = modelModule.getModel()
def load_model_objective(example_name):
# name of the model that will also be the name of the python module
model_name = 'model_' + example_name
# sbml file
sbml_file = os.path.join('doc', 'example', example_name,
model_name + '.xml')
# directory to which the generated model code is written
model_output_dir = os.path.join('doc', 'example', 'tmp',
model_name)
# import sbml model, compile and generate amici module
sbml_importer = amici.SbmlImporter(sbml_file)
sbml_importer.sbml2amici(model_name,
model_output_dir,
verbose=False)
# load amici module (the usual starting point later for the analysis)
sys.path.insert(0, os.path.abspath(model_output_dir))
model_module = importlib.import_module(model_name)
model = model_module.getModel()
model.requireSensitivitiesForAllParameters()
model.setTimepoints(np.linspace(0, 10, 11))
model.setParameterScale(amici.ParameterScaling_log10)
model.setParameters([-0.3, -0.7])
solver = model.getSolver()
solver.setSensitivityMethod(amici.SensitivityMethod_forward)
solver.setSensitivityOrder(amici.SensitivityOrder_first)
def test_presimulation(self):
def assert_fun(x):
return self.assertTrue(x)
sbmlFile = os.path.join(os.path.dirname(__file__), '..', 'python',
'examples', 'example_presimulation',
'model_presimulation.xml')
sbmlImporter = amici.SbmlImporter(sbmlFile)
constantParameters = ['DRUG_0', 'KIN_0']
observables = amici.assignmentRules2observables(
sbmlImporter.sbml, # the libsbml model object
filter_function=lambda variable: variable.getName() == 'pPROT_obs'
)
outdir = 'test_model_presimulation'
sbmlImporter.sbml2amici('test_model_presimulation',
outdir,
verbose=False,
observables=observables,
constantParameters=constantParameters)
sys.path.insert(0, outdir)
import test_model_presimulation as modelModule
model = modelModule.getModel()
def test_steadystate_import(self):
sbmlFile = os.path.join(os.path.dirname(__file__), '..', 'python',
'examples', 'example_steadystate',
'model_steadystate_scaled.xml')
sbmlImporter = amici.SbmlImporter(sbmlFile)
observables = amici.assignmentRules2observables(
sbmlImporter.sbml,
filter_function=lambda variable:
variable.getId().startswith('observable_') and
not variable.getId().endswith('_sigma')
)
outdir = 'test_model_steadystate_scaled'
sbmlImporter.sbml2amici('test_model_steadystate_scaled',
outdir,
observables=observables,
constantParameters=['k0'],
sigmas={'observable_x1withsigma':
'observable_x1withsigma_sigma'})
def test_likelihoods(self):
"""
Test the custom noise distributions used to define cost functions.
"""
def assert_fun(x):
return self.assertTrue(x)
sbmlFile = os.path.join(os.path.dirname(__file__), '..', 'python',
'examples', 'example_steadystate',
'model_steadystate_scaled.xml')
sbmlImporter = amici.SbmlImporter(sbmlFile)
observables = amici.assignmentRules2observables(
sbmlImporter.sbml,
filter_function=lambda variable:
variable.getId().startswith('observable_') and
not variable.getId().endswith('_sigma')
)
# assign different noise models
obs_keys = list(observables.keys())
# exponentiate observable formulas
obs1 = observables[obs_keys[1]]
obs3 = observables[obs_keys[3]]
obs1['formula'] = '10^(' + obs1['formula'] + ')'
if model_name is None:
model_name = os.path.splitext(os.path.split(sbml_file)[-1])[0]
if model_output_dir is None:
model_output_dir = os.path.join(os.getcwd(), model_name)
if verbose:
logger.log(logging.INFO,
f"{Fore.GREEN}Importing model '{sbml_file}' "
f"using fixed parameters file '{condition_file}'")
logger.log(logging.INFO,
f"{Fore.GREEN}Model name is '{model_name}' "
f"Writing model code to '{model_output_dir}'")
sbml_importer = amici.SbmlImporter(sbml_file)
sbml_model = sbml_importer.sbml
show_model_info(sbml_model)
observables = petab.get_observables(sbml_importer.sbml, remove=True)
sigmas = petab.get_sigmas(sbml_importer.sbml, remove=True)
measurement_df = petab.get_measurement_df(measurement_file)
noise_distrs = petab_noise_distributions_to_amici(
petab.get_noise_distributions(measurement_df))
# Replace observables in assignment
import sympy as sp
for observable_id, formula in sigmas.items():