def make_reaction_network(pysb_model, model_id): """Generate a PySB/BNG reaction network as a PNG file.""" try: for m in pysb_model.monomers: pysb_assembler.set_extended_initial_condition(pysb_model, m, 0) fname = 'model%d_rxn' % model_id diagram_dot = render_reactions.run(pysb_model) # TODO: use specific PySB/BNG exceptions and handle them # here to show meaningful error messages except Exception as e: logger.error('Could not generate model diagram.') logger.error(e) return None try: with open(fname + '.dot', 'wt') as fh: fh.write(diagram_dot) subprocess.call( ('dot -T png -o %s.png %s.dot' % (fname, fname)).split(' ')) abs_path = os.path.abspath(os.getcwd()) full_path = os.path.join(abs_path, fname + '.png') except Exception as e: logger.error('Could not save model diagram.') logger.error(e) return None return full_path
def assemble_model(model_indra_str): stmts = decode_indra_stmts(model_indra_str) pa = PysbAssembler(policies='two_step') pa.add_statements(stmts) model = pa.make_model() pa.add_default_initial_conditions(100.0) for m in model.monomers: pysb_assembler.set_extended_initial_condition(model, m, 0) return model
def make_sbgn(pysb_model, model_id): pa = PysbAssembler() pa.model = pysb_model for m in pysb_model.monomers: pysb_assembler.set_extended_initial_condition(pysb_model, m, 0) try: sbgn_str = pa.export_model('sbgn') except BngInterfaceError: logger.error('Reaction network could not be generated for SBGN.') return None return sbgn_str
def get_model_diagram(model, model_id=None): try: for m in model.monomers: pysb_assembler.set_extended_initial_condition(model, m, 0) fname = "model%d" % ("" if model_id is None else model_id) diagram_dot = render_reactions.run(model) # TODO: use specific PySB/BNG exceptions and handle them # here to show meaningful error messages except Exception as e: raise DiagramGenerationError(e) try: with open(fname + ".dot", "wt") as fh: fh.write(diagram_dot) subprocess.call(("dot -T png -o %s.png %s.dot" % (fname, fname)).split(" ")) abs_path = os.path.abspath(os.getcwd()) if abs_path[-1] != "/": abs_path = abs_path + "/" full_path = abs_path + fname + ".png" except Exception as e: raise DiagramConversionError(e) return full_path
def assemble_model(stmts): pa = PysbAssembler(policies='one_step') pa.add_statements(stmts) model = pa.make_model() pa.add_default_initial_conditions(100.0) try: targeted_agents = get_targeted_agents(stmts) no_upstream_active_agents = get_no_upstream_active_agents(stmts) except: targeted_agents = [] no_upstream_active_agents = [] try: chemical_agents = get_chemical_agents(stmts) except: chemical_agents = [] for m in model.monomers: try: if m.name in targeted_agents or m.name in no_upstream_active_agents: pysb_assembler.set_base_initial_condition(model, model.monomers[m.name], 50.0) pysb_assembler.set_extended_initial_condition(model, m, 50.0) elif m.name in chemical_agents: pysb_assembler.set_base_initial_condition(model, model.monomers[m.name], 10000.0) else: pysb_assembler.set_extended_initial_condition(model, m, 0) except: pysb_assembler.set_extended_initial_condition(model, m, 0) # Tweak parameters for param in model.parameters: if 'kf' in param.name and 'bind' in param.name: param.value = param.value * 100 return model
def get_model_diagram(model, model_id=None): try: for m in model.monomers: pysb_assembler.set_extended_initial_condition(model, m, 0) fname = 'model%d' % ('' if model_id is None else model_id) diagram_dot = render_reactions.run(model) #TODO: use specific PySB/BNG exceptions and handle them # here to show meaningful error messages except Exception as e: raise DiagramGenerationError(e) try: with open(fname + '.dot', 'wt') as fh: fh.write(diagram_dot) subprocess.call( ('dot -T png -o %s.png %s.dot' % (fname, fname)).split(' ')) abs_path = os.path.abspath(os.getcwd()) if abs_path[-1] != '/': abs_path = abs_path + '/' full_path = abs_path + fname + '.png' except Exception as e: raise DiagramConversionError(e) return full_path