124 def __init__(self, pattern, seed=None):
125 """
126 Keyword arguments:
127 pattern -- either a dictionary describing proportion of True and False (e.g., {True:5,False:15}), or
128 a list/tuple containing a pattern to be used as-is (e.g., [False,True,True,False])
129 seed -- an int, long or other hashable object to initialize random number generator (passed to random.shuffle as-is)
130 """
131
132 if isinstance(pattern, dict):
133 proportion = pattern
134
135 length = proportion[True] + proportion[False]
136 if length <= 0:
137 raise "ERROR: Wrong set length requested: %i " % length
138
139 self.pattern = [False for i in range(proportion[False])] + [
140 True for i in range(proportion[True])
141 ]
142
143 if seed is not None:
144 random.seed(seed)
145
146 random.shuffle(self.pattern)
147
148 elif isinstance(pattern, (list, tuple)):
149 self.pattern = pattern
150 else:
151 raise "ERROR: unknown pattern type"
152
153 self.generator = self._create_generator(self.pattern)
154