Skip to content
This repository was archived by the owner on Apr 5, 2024. It is now read-only.
This repository was archived by the owner on Apr 5, 2024. It is now read-only.

ongoing efforts #3

Open
Open
@tcompa

Description

@tcompa
  • Moved tasks to API “V2” => 3 types (0,1,N output images) to 2 types (0+N or 1).

  • Unified handling of no-image-input and multi-image-input

  • Basic examples for new_zarr+MIP and new_zarr+copy_data

  • Important warning: N-dimensional parallelization (vs one-dimensional parallelization across images) is immediately risky re: huge number of parallelization items. [...]

  • New example: custom init task (illumination correction parallelized over channels)

  • New example: custom init task for registration, which pairs a reference cycle with all other cycles of each well. Note: well-handling is part of the task.

  • Formalized a first version of the task-output API, via TaskOutput model

  • Deduplicate redundant new-images list coming from subset parallelization.

  • Example of root_dir vs absolute path - ref Absolute paths #2

  • Source-to-output mapping: Propagating image attributes in parallel tasks (without the task needing to handle it)

  • Remove default values for filters, and only consider those that are set explicitly. EDIT This is currently covered, by defaulting to None. A further review is needed.

  • TO CONSIDER: using both include&exclude filters, e.g. to enable selecting "images that do not have a certain attribute equal to something". EDIT: this is currently postponed, as the main intended use case (3D/2D/3D) is nicely covered by the dim=3,dim=2,dim=3 pattern (that is, using a string flag rather than a boolean attribute)

  • Review and clean up the parallel-task-output merge strategies

  • Add safety check: Total number of custom parallel items is limited (we can later enable a safe=False override)

  • Add safety check: no unintended use case is reached when applying both filters and parallelization, if there was an init task. Let’s start with very explicit if/else and error messages, and then iterate.

  • Fully enable 3D->2D->3D workflow example.


  • TODO: take decision on root_dir vs absolute paths. At the moment none of the two options is blocking. The absolute-paths option requires a bit more string parsing, but that's OK (and part of it can be easily extracted into utils functions, like
def extract_base_parts_from_list_of_absolute_paths(absolute_image_paths: listr[str]) -> dict[str, Any]:
    ...
    return dict(absolute_root_dir=absolute_root_dir, plate_names=plate_names)
  • Review strategy for backwards-compatibility

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions