Make dask.array slices as intersection of old and new chunks. >>> intersections = intersect_chunks(((4, 4), (2,)), ... ((8,), (1, 1))) >>> list(intersections) # doctest: +NORMALIZE_WHITESPACE [(((0, slice(0, 4, None)), (0, slice(0, 1, None))),
(old_chunks, new_chunks)
| 216 | |
| 217 | |
| 218 | def intersect_chunks(old_chunks, new_chunks): |
| 219 | """ |
| 220 | Make dask.array slices as intersection of old and new chunks. |
| 221 | |
| 222 | >>> intersections = intersect_chunks(((4, 4), (2,)), |
| 223 | ... ((8,), (1, 1))) |
| 224 | >>> list(intersections) # doctest: +NORMALIZE_WHITESPACE |
| 225 | [(((0, slice(0, 4, None)), (0, slice(0, 1, None))), |
| 226 | ((1, slice(0, 4, None)), (0, slice(0, 1, None)))), |
| 227 | (((0, slice(0, 4, None)), (0, slice(1, 2, None))), |
| 228 | ((1, slice(0, 4, None)), (0, slice(1, 2, None))))] |
| 229 | |
| 230 | Parameters |
| 231 | ---------- |
| 232 | |
| 233 | old_chunks : iterable of tuples |
| 234 | block sizes along each dimension (convert from old_chunks) |
| 235 | new_chunks: iterable of tuples |
| 236 | block sizes along each dimension (converts to new_chunks) |
| 237 | """ |
| 238 | cross1 = product(*old_to_new(old_chunks, new_chunks)) |
| 239 | cross = chain(tuple(product(*cr)) for cr in cross1) |
| 240 | return cross |
| 241 | |
| 242 | |
| 243 | def _validate_rechunk(old_chunks, new_chunks): |
searching dependent graphs…