Conversation
Add project instructions for Claude Code and a detailed plan for converting biahub to a uv workspace monorepo with analysis-templates. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@tayllatheodoro can you please point me to zarr v2 dataset along with bash scripts you used to process them that I can use to prototype/test refactor. A recent dataset that you have familiarity with is ideal. |
|
Hi @mattersoflight, for the bash files, you can use |
- Slim down CLAUDE.md to essentials - Split biahub-uv.md into packaging-only (biahub-uv.md) and Hydra CLI plan (biahub-cli-refactor.md) - Drop workspace/subpackage approach in favor of single package - Use microscope_objective_NA naming for config templates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace setuptools build system with hatchling - Move git deps (stitch, waveorder) to [tool.uv.sources] - Use napari[all] instead of napari + PyQt6 for platform-compatible Qt backend - Add uv.lock for reproducible installs - All 24 CLI subcommands verified working Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@tayllatheodoro @srivarra can you review on Monday? I ran tests and checked that all CLI run without error ( Sri, can you also check if this will play well with biautils shared env? |
srivarra
left a comment
There was a problem hiding this comment.
Just some minor requests and questions.
|
|
||
| ## Goal | ||
|
|
||
| Add a Hydra-based pipeline CLI (`biahub-pipeline`) that orchestrates multi-step processing workflows. Config templates define microscope-specific parameters and step sequences. Everything lives inside the existing `biahub` package. |
There was a problem hiding this comment.
Managed to find this article here about having both Pydantic and Hydra work together for config management. Whether or not it's a good idea... that I don't know.
There's also hydra-zen which automatically and dynamically generates structured configs. There are some options in this area, and it might be a good food for thought.
| description = "Bioimage analysis hub." | ||
| readme = "README.md" | ||
| license = { file = "LICENSE" } | ||
| requires-python = ">=3.11, <4.0" |
|
|
||
| # list package dependencies here | ||
| dependencies = [ | ||
| "iohub[tensorstore]>=0.3.0a5,<0.4", |
| version = { attr = "biahub.__version__" } | ||
| [tool.uv.sources] | ||
| stitch = { git = "https://github.com/ahillsley/stitching", branch = "jen" } | ||
| waveorder = { git = "https://github.com/mehta-lab/waveorder.git" } |
| "matplotlib", | ||
| "napari", | ||
| "PyQt6", | ||
| "napari[all]", |
There was a problem hiding this comment.
Wondering about this vs having PyQt6.
napari[all] is currently on PyQt5. biautils and ndutils currently do use PyQt5, but WaveOrder's visual optional dependency (which we are not using) is set to "PyQt6>=6.5,<6.8".
The latest release of PyQt5 was over a year and a half ago. PyQt6 is currently actively maintained though, and napari does explicitly support it.
| - uses: actions/checkout@v4 | ||
| - uses: astral-sh/setup-uv@v6 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "3.11" |
This refactor should be tightly focused on:
See plans/biahub-uv.md for details and provide edits to improve the plan.
This PR: