Source code for bionetgen.simulator.simulators

from .librrsimulator import libRRSimulator
from .csimulator import CSimulator


[docs]def sim_getter(model_file=None, model_str=None, sim_type="libRR"): """ Convenience function to get a simulator object of a specific type. Allows you to pull a simulator object given a model file path. Note: This likely needs to be refactored but for now it works. Parameters ---------- model_file : str, optional The path to the model file, at the moment only BNGL is expected but this can change in the future. model_str : str, optional Instead of the path to the model you can also supply the model string instead. sim_type : str, optional The name of the type of simulator object to get. At the moment only libRoadRunner and CPY type simulators are allowed, allowed values are "libRR" and "cpy". Returns ------- BNGSimulator A simulator object with an API that's supposed to be agnostic to the underlying simulator it's running. """ if model_str is not None and model_file is None: from tempfile import NamedTemporaryFile with NamedTemporaryFile("w+") as model_file_obj: model_file_obj.write(model_str) model_file = model_file_obj.name if sim_type == "libRR": # need to go back to beginning of the file for this to work model_file_obj.seek(0) return libRRSimulator(model_file=model_file) elif sim_type == "cpy": return CSimulator(model_file=model_file, generate_network=True) else: print("simulator type {} not supported".format(sim_type)) if model_file is not None: if sim_type == "libRR": return libRRSimulator(model_file=model_file) elif sim_type == "cpy": return CSimulator(model_file=model_file, generate_network=True) else: print("simulator type {} not supported".format(sim_type))