From 9a366b04287d6c04e8b8c5a3b072fcf4b817fdb3 Mon Sep 17 00:00:00 2001 From: Stephen Mardson McQuay Date: Wed, 4 May 2011 21:36:42 -0600 Subject: [PATCH] replaced pattern with my own version --- interp/baker/__init__.py | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/interp/baker/__init__.py b/interp/baker/__init__.py index 8010141..9c4cad7 100644 --- a/interp/baker/__init__.py +++ b/interp/baker/__init__.py @@ -5,6 +5,7 @@ import numpy as np from functools import wraps import itertools +import interp import logging log = logging.getLogger('interp') @@ -202,30 +203,20 @@ def memoize(f): return cache[x] return memf -def combinations_with_replacement(iterable, r): - """ - What I really need for the pattern function only - exists in python 2.7 and greater. The docs suggest - the implementation in this function as a - replacement. - - source: - - http://docs.python.org/library/itertools.html#itertools.combinations_with_replacement - """ - pool = tuple(iterable) - n = len(pool) - for indices in itertools.product(range(n), repeat=r): - if sorted(indices) == list(indices): - yield tuple(pool[i] for i in indices) @memoize def pattern(simplex_size, nu): """ my useful docstring """ - log.debug("pattern: simplex: %d, order: %d" % (simplex_size, nu)) - return [i for i in combinations_with_replacement(xrange(simplex_size), nu) if len(set(i)) != 1] + log.error("pattern: simplex: %d, order: %d" % (simplex_size, nu)) + + r = [] + for i in itertools.product(xrange(simplex_size), repeat = nu): + if len(set(i)) !=1: + r.append(tuple(sorted(i))) + return list(set(r)) + if __name__ == '__main__': print len(pattern(3, 2)), pattern(3, 2) @@ -236,6 +227,7 @@ if __name__ == '__main__': print len(pattern(3, 4)), pattern(3, 4) print len(pattern(4, 4)), pattern(4, 4) + print len(pattern(3, 2)), pattern(3, 2) print len(pattern(4, 2)), pattern(4, 2) @@ -244,6 +236,7 @@ if __name__ == '__main__': print len(pattern(3, 4)), pattern(3, 4) print len(pattern(4, 4)), pattern(4, 4) + print len(pattern(3, 2)), pattern(3, 2) print len(pattern(4, 2)), pattern(4, 2) @@ -252,6 +245,7 @@ if __name__ == '__main__': print len(pattern(3, 4)), pattern(3, 4) print len(pattern(4, 4)), pattern(4, 4) + print len(pattern(3, 2)), pattern(3, 2) print len(pattern(4, 2)), pattern(4, 2)