def to_G_2_dx_dx(decomp): if isinstance(decomp, pybo.ProdClass): g = decomp.second else: g = decomp g = g.underive_all() assert isinstance(g, EdgeRootedTwoConnectedPlanarGraph), g return pybo.LDerivedClass( pybo.LDerivedClass(TwoConnectedPlanarGraph(g.half_edge)))
def set(self, graphs): # Merge a set of l-derived one-connected planar graphs at their marked vertices. # If the set is empty, return a single-node graph. if len(graphs) is 0: g = OneConnectedPlanarGraph() return pybo.LDerivedClass(OneConnectedPlanarGraph(), g.half_edge) result = graphs.pop() for g in graphs: result.marked_atom.insert_all_after(g.marked_atom) assert isinstance(result, pybo.LDerivedClass) return result
def sample_iterative(self, stack, result_stack, prev, grammar): if prev is None or self in prev.children: stack.append(self._sampler) else: obj_to_check = result_stack.pop() def is_acceptable(gamma): return pybo.bern((1 / self._alpha_l_u) * (gamma.l_size / (gamma.u_size + 1))) if is_acceptable(obj_to_check): stack.pop() result_stack.append( pybo.LDerivedClass(obj_to_check.base_class_object)) else: stack.append(self._sampler)
def to_G_2_arrow_dx_dx(network): return pybo.LDerivedClass(to_G_2_arrow_dx(network))
def to_K_dy_dx(tree): # TODO In fact K_dx_dy, notation a bit messed up here tree.leaves_count += 1 tree = pybo.LDerivedClass(tree) return pybo.UDerivedClass(tree)