Source code for pharmpy.methods.common

from pathlib import Path

import pharmpy.execute as execute

from .psn_helpers import tool_name


[docs]class RunDirectory: def __init__(self, method_name, path=None): i = 1 while True: name = f'{method_name}_dir{i}' if path is not None: test_path = path / name else: test_path = Path(name) if not test_path.exists(): test_path.mkdir() self.path = test_path self.models_path = test_path / 'models' self.models_path.mkdir() break i += 1
[docs]class Method: def __init__(self, dispatcher=None, database=None, job_creator=None, path=None): self.rundir = RunDirectory(type(self).__name__.lower(), path=path) if dispatcher is None: self.dispatcher = execute.default_dispatcher else: self.dispatcher = dispatcher if database is None: self.database = execute.default_database else: self.database = database if job_creator is None: import pharmpy.plugins.nonmem.run self.job_creator = pharmpy.plugins.nonmem.run.create_job else: self.job_creator = job_creator
[docs]def create_results(path, **kwargs): name = tool_name(path) # FIXME: Do something automatic here if name == 'qa': from pharmpy.methods.qa.results import psn_qa_results res = psn_qa_results(path, **kwargs) elif name == 'bootstrap': from pharmpy.methods.bootstrap.results import psn_bootstrap_results res = psn_bootstrap_results(path, **kwargs) elif name == 'cdd': from pharmpy.methods.cdd.results import psn_cdd_results res = psn_cdd_results(path, **kwargs) elif name == 'frem': from pharmpy.methods.frem.results import psn_frem_results res = psn_frem_results(path, **kwargs) elif name == 'linearize': from pharmpy.methods.linearize.results import psn_linearize_results res = psn_linearize_results(path, **kwargs) elif name == 'scm': from pharmpy.methods.scm.results import psn_scm_results res = psn_scm_results(path, **kwargs) elif name == 'simeval': from pharmpy.methods.simeval.results import psn_simeval_results res = psn_simeval_results(path, **kwargs) else: raise ValueError("Not a valid run directory") return res