Infer reader from user-supplied values
(x)
| 12 | |
| 13 | |
| 14 | def infer_reader(x): |
| 15 | """ |
| 16 | Infer reader from user-supplied values |
| 17 | """ |
| 18 | if isinstance(x, list): |
| 19 | if ants.is_image(x[0]): |
| 20 | return readers.MemoryReader(x) |
| 21 | elif np.isscalar(x[0]): |
| 22 | return readers.MemoryReader(x) |
| 23 | else: |
| 24 | return readers.ComposeReader([infer_reader(xx) for xx in x]) |
| 25 | |
| 26 | elif isinstance(x, dict): |
| 27 | new_readers = [] |
| 28 | for key, value in x.items(): |
| 29 | value = infer_reader(value) |
| 30 | value.label = key |
| 31 | new_readers.append(value) |
| 32 | if len(new_readers) > 1: |
| 33 | return readers.ComposeReader(new_readers) |
| 34 | else: |
| 35 | return new_readers[0] |
| 36 | |
| 37 | elif isinstance(x, np.ndarray): |
| 38 | return readers.MemoryReader(x) |
| 39 | |
| 40 | elif is_reader(x): |
| 41 | return x |
| 42 | |
| 43 | raise Exception(f'Could not infer a configuration from given value: {x}') |
| 44 | |
| 45 | |
| 46 | def flatten_readers(readers): |