def test_kappy_influence_json_to_graph(): with open( path.join(path.dirname(path.abspath(__file__)), 'kappy_influence.json'), 'r') as f: imap = json.load(f) graph = im_json_to_graph(imap) assert graph is not None, 'No graph produced.' n_nodes = len(graph.nodes()) n_edges = len(graph.edges()) assert n_nodes == 13, \ 'Wrong number (%d vs. %d) of nodes on the graph.' % (n_nodes, 13) assert n_edges == 6, \ "Wrong number (%d vs. %d) of edges on graph." % (n_edges, 4)
def make_influence_map(pysb_model): """Return a Kappa influence map.""" kappa = kappy.KappaStd() model_str = export(pysb_model, 'kappa') kappa.add_model_string(model_str) kappa.project_parse() imap = kappa.analyses_influence_map() im = im_json_to_graph(imap) for param in pysb_model.parameters: try: im.remove_node(param.name) except: pass return im
def generate_im(self, model): """Return a graph representing the influence map generated by Kappa Parameters ---------- model : pysb.Model The PySB model whose influence map is to be generated Returns ------- graph : networkx.MultiDiGraph A MultiDiGraph representing the influence map """ kappa = kappy.KappaStd() model_str = export.export(model, 'kappa') kappa.add_model_string(model_str) kappa.project_parse() imap = kappa.analyses_influence_map() graph = im_json_to_graph(imap) return graph