def numberOfLabeledForests(forest) : """ Number of labeled ranked forests having the same unranked topology as forest.""" # number of ranked possibilities for each tree z = [_LHsize(x) for x in forest] # prune single lineages u = [(n,k) for n,k in z if n > 0] # same logic as for a single tree n,k = sum([x[0] for x in u]), prod([x[1] for x in u]) return fac(n)//k
def labeledHistoriesOfTree(p) : """ Number of labeled ranked histories of trees with the same unranked topology as p.""" n,k = _LHsize(p) return fac(n)//k