def makeChildren((dad, mom)): sampler = utils.getattrdefault(makeChildren, 'sampler', lambda: utils.Sampler(range(len(num_children_distribution)), num_children_distribution.__getitem__)) numchildren = sampler.sample() children = [Node(dad, mom) for spam in xrange(numchildren)] if hasattr(dad, 'generation') and hasattr(mom, 'generation')\ and dad.generation == mom.generation: generation = dad.generation + 1 else: generation = None for child in children: dad.children.add(child) mom.children.add(child) if generation is not None: child.generation = generation return children
def convolvedDensity(relation_or_distseq): cache = utils.getattrdefault(convolvedDensity, 'cache', dict) if hasattr(relation_or_distseq, "items"): distseq = relation_or_distseq.iteritems() |\ Map(lambda ((h1, h2), val): (h1 + h2 for spam in xrange(val))) |\ pFlatten | pSort | Sink(tuple) if distseq in cache: return cache[distseq] subseqs = [tuple([d for d in distseq if d == i]) for i in set(distseq)] else: distseq = relation_or_distseq assert len(set(distseq)) == 1 if distseq in cache: return cache[distseq] if len(distseq) == 1: return pdfvectors[distseq[0]] subseqs = [distseq[:len(distseq) / 2], distseq[len(distseq) / 2:]] vectors = map(convolvedDensity, subseqs) if distseq not in cache: sys.stderr.write('cache miss ' + str(distseq) + '\n') cache[distseq] = convolveSequence(vectors) return cache[distseq]
def convolvedDensity(relation_or_distseq): cache = utils.getattrdefault(convolvedDensity, 'cache', dict) if hasattr(relation_or_distseq, "items"): distseq = relation_or_distseq.iteritems() |\ Map(lambda ((h1, h2), val): (h1 + h2 for spam in xrange(val))) |\ pFlatten | pSort | Sink(tuple) if distseq in cache: return cache[distseq] subseqs = [tuple([d for d in distseq if d == i]) for i in set(distseq)] else: distseq = relation_or_distseq assert len(set(distseq)) == 1 if distseq in cache: return cache[distseq] if len(distseq) == 1: return pdfvectors[distseq[0]] subseqs = [distseq[:len(distseq)/2], distseq[len(distseq)/2:]] vectors = map(convolvedDensity, subseqs) if distseq not in cache: sys.stderr.write('cache miss ' + str(distseq) + '\n') cache[distseq] = convolveSequence(vectors) return cache[distseq]