axis naming is a hard issue. it's a necessary evil. There are obvious conventions out there (e.g. XYZCT) but extensions are always needed (e.g. P position, G grid, row/col etc...). Ultimately useq-schema should only care about mapping an arbitrary string to an iterable of coordinates for that dimension. This is mostly what MDASequence does, albeit with hard-coded assumptions about the dimensions for now, so as to make it easy to accomplish the vast majority of use cases. The underlying code still just treats it as an iterable (mostly arbitrary) axes. but more could be done
[ ] first, we definitely need to get rid of axis_order as a string. it should be Sequence[str], not assuming single-character keys #138
[ ] we should make an additional more flexible class
class NewSeq:
axes: dict[str, Iterable[coord]]
MDASequence is essentially a subclass of that more general pattern, with "known" axes PGZCT
axis naming is a hard issue. it's a necessary evil. There are obvious conventions out there (e.g. XYZCT) but extensions are always needed (e.g. P position, G grid, row/col etc...). Ultimately useq-schema should only care about mapping an arbitrary string to an iterable of coordinates for that dimension. This is mostly what
MDASequence
does, albeit with hard-coded assumptions about the dimensions for now, so as to make it easy to accomplish the vast majority of use cases. The underlying code still just treats it as an iterable (mostly arbitrary) axes. but more could be doneMDASequence
is essentially a subclass of that more general pattern, with "known" axes PGZCT