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