Closed toloudis closed 1 year ago
It would be good to have consistent usage patterns across Agave and the web viewer for dealing with time series (and overall).
This can consider zarr-only for now. We need not make other attempts to do time series loading yet.
There is another possible use case in which the time series may be in a sequence of separate files as opposed to one single zarr url. We would have to consider how the sequence of separate files would be specified.
After some discussion, first steps for this API should be:
createVolume
method on IVolumeLoader
should be split into two methods:
createVolume
, which creates a new Volume
object with the correct properties as specified by a LoadSpec
but does not fetch any data;loadVolumeData
, which actually fetches data and places it in a preexisting Volume
Volume
s should keep hold of their own LoadSpec
View3d
method for loading different time points in a time series should look like setTime(volume: Volume, time: number, loader: IVolumeLoader)
, which just modifies volume
's LoadSpec
and calls loader.loadVolumeData(volume);
.
loader
can start as an optional parameter for in case loaders ever start maintaining their own state.Above API was implemented in #104, but I didn't mark this issue as resolved because that API seemed to be tentative/transitional. But remaining work towards a final polished interface may be better tracked by a task under allen-cell-animated/website-3d-cell-viewer#155?
If the demo viewer time slider in volume-viewer can use the new api (directly or indirectly) then we can close out this ticket. The initial description is purposely excluding the website-3d-cell-viewer layer. Any refinements can be in new tickets.
Use Case
Microscopists want to view time series zarr data using web viewer in the near-term.
Solution
Internals implementation separate from ux:
time
).If the volume loader detects time series, we can present a time slider. On changing time slider, request volume data with all settings the same as currently loaded except for a different time index. Time slider should be presented via experimental ui according to #92