def test_csv_serde(): """ Tests CSV serde. :return: None. """ try: lhs = BbnUtil.get_huang_graph() Bbn.to_csv(lhs, 'huang.csv') rhs = Bbn.from_csv('huang.csv') assert len(lhs.get_nodes()) == len(rhs.get_nodes()) assert len(lhs.get_edges()) == len(rhs.get_edges()) lhs_nodes = set([str(node) for node in lhs.get_nodes()]) rhs_nodes = set([str(node) for node in rhs.get_nodes()]) for n in lhs_nodes: assert n in rhs_nodes lhs_edges = set([str(edge) for edge in lhs.get_edges()]) rhs_edges = set([str(edge) for edge in rhs.get_edges()]) for e in lhs_edges: assert e in rhs_edges except: assert False finally: import os try: os.remove('huang.csv') except: pass
def get_bbn(fpath): with open(fpath, 'r') as f: start = time.time() bbn = Bbn.from_dict(json.loads(f.read())) if fpath.endswith('.json') else Bbn.from_csv(fpath) stop = time.time() diff = stop - start print(f'{diff:.5f} : load time') start = time.time() jt = InferenceController.apply(bbn) stop = time.time() diff = stop - start print(f'{diff:.5f} : inference time') return bbn, jt
from pybbn.graph.dag import Bbn # deserialize bbn = Bbn.from_csv('simple-bbn.csv')