dict of kv pairs -> list of dicts with one option selected for each key whose value is an instance of Options.
(params)
| 149 | # ------------------------------------------------ parameter generation |
| 150 | |
| 151 | def expand_params(params): |
| 152 | """dict of kv pairs -> list of dicts with one option selected for |
| 153 | each key whose value is an instance of Options.""" |
| 154 | |
| 155 | # keys with values that are Options; try all combos of these |
| 156 | options_keys = [key for key in params if isinstance(params[key], Options)] |
| 157 | options_keys = sorted(options_keys) # sort for reproducibility |
| 158 | options_vals = [params[key].values for key in options_keys] |
| 159 | |
| 160 | # keys with values that aren't Options; these are the same every time |
| 161 | no_options_keys = [key for key in params if not isinstance(params[key], Options)] |
| 162 | no_options_vals = [params[key] for key in no_options_keys] |
| 163 | no_options_params = dict(zip(no_options_keys, no_options_vals)) |
| 164 | |
| 165 | # make a list of all possible combos of values for each key with Options |
| 166 | expanded_params_list = [] |
| 167 | for v in itertools.product(*options_vals): |
| 168 | expanded_params = dict(zip(options_keys, v)) # pick one option for each |
| 169 | expanded_params.update(no_options_params) # add in fixed params |
| 170 | expanded_params_list.append(expanded_params) |
| 171 | |
| 172 | return expanded_params_list |
| 173 | |
| 174 | |
| 175 | def update_func_from_dict(d): |
no test coverage detected