def build_graph(m_codes, m_list): n_models, n_attributes = m_codes.shape g = Graph() v_map = {} names = g.new_vertex_property("object") v_atts = g.add_vertex(n_attributes) v_mods = g.add_vertex(n_models) v_imps = g.add_vertex(n_attributes) for v_idx, v in enumerate(v_atts): v_n = v_name(v_idx, kind="data") v_map[v_n] = int(v) names[v] = v_n for v_idx, v in enumerate(v_mods): v_n = v_name(v_idx, kind="model") v_map[v_n] = int(v) names[v] = v_n in_edges = ((d, v) for d in m_list[v_idx].desc_ids) out_edges = ((v, t) for t in m_list[v_idx].targ_ids) g.add_edge_list(in_edges) g.add_edge_list(out_edges) for v_idx, v in enumerate(v_imps): v_n = v_name(v_idx, kind="imputation") v_map[v_n] = int(v) names[v] = v_n g.vp.names = names g.v_map = v_map return g