Repository navigation
Add a first-reconstruction tutorial and agent skills - #569
Merged
Merged
Conversation
Interactive CLI walkthrough for a first reconstruction: environment check, OME-Zarr conversion, config authoring, napari viewing, and parameter sweeps. Includes a QPI 2D-from-defocus worked example using the zenodo recOrder_session sample. Un-ignores .claude/skills/ so the skill ships with the repo.
talonchandler
marked this pull request as ready for review
July 16, 2026 18:57
Two-call skill: `wo compute-tf` on a config + input position, then `wo view` on the resulting transfer function (napari, backgrounded).
For 2D reconstructions, the transfer function is stored as a singular system (U, S, Vh). `wo view` now reconstructs H = U @ diag(S) @ Vh at each lateral frequency and displays the resulting transfer function(s) — absorption and phase for 2D phase, the optical TF for 2D fluorescence — instead of the raw singular vectors. 3D display is unchanged.
talonchandler
marked this pull request as draft
July 31, 2026 22:06
Relocate skill content from .claude/skills/ to .skills/ as the single canonical, harness-agnostic source of truth. Add symlinks so existing discovery paths still resolve to it: - .claude/skills -> ../.skills (Claude Code project skill scan path) - .agents/skills -> ../.skills (Codex CLI/ChatGPT skill scan path) Update .gitignore: .claude/* still ignores session state, but !.claude/skills un-ignores the symlink so it's tracked. No content changes; checksums of all 8 skill files are unchanged.
…torial - Rewrite waveorder-tutorial SKILL.md around the staged onboarding workflow: suitability, data/metadata identification, ROI selection, draft reconstructions, manual sweeps, auto-tuning, and scaling - Add scripts/crop_roi.py for ROI cropping and extend scripts/sweep.py with two-parameter grid sweeps shown on two napari sliders - Add iohub convert route and ROI cropping to conversion reference; add optimization block, RL/RLGC, and expanded symptom table to config reference - Add human-readable tutorial at docs/guide/first-reconstruction.md and link it with the skill at the top of the README - Remove all em dashes; move imports to module top in tutorial scripts
…asets Two reconstructions of the same channel previously produced identically named layers, so users could not tell them apart in the layer list.
Gradient methods are local (travel ~lr per iteration); grid_search uses lr as the grid step centered on init. Add the coarse-to-fine recipe to the skill and config reference.
talonchandler
marked this pull request as ready for review
September 2, 2026 21:32
srivarra
requested changes
Sep 3, 2026
srivarra
left a comment
Contributor
There was a problem hiding this comment.
This was super cool!
Just a few small suggestions.
Start drafts with a small regularization_strength, sweep forward model parameters for the fewest artifacts (least ringing, sharpest result), then increase regularization until acceptable as the final step.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #569 +/- ##
==========================================
+ Coverage 55.49% 55.92% +0.42%
==========================================
Files 62 75 +13
Lines 11051 12617 +1566
==========================================
+ Hits 6133 7056 +923
- Misses 4918 5561 +643 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Prefixing with waveorder- makes it easier to filter waveorder-specific skills, per review.
The tutorial scripts are now self-contained: uv run resolves their dependencies without a prebuilt environment. Docs and docstrings invoke them with uv run.
--y-pixel-size and --x-pixel-size override the isotropic --yx-pixel-size shorthand.
run_in_background is specific to one agent runtime. State the requirement instead (non-blocking, no interactive stdin, confirm the process stays up) with a POSIX fallback.
talonchandler
force-pushed
the
waveorder-tutorial-skill
branch
from
October 13, 2026 20:32
3a5d9dc to
f864c24
Compare
The confocal pinhole is modeled only for 3D fluorescence reconstructions (2D raises NotImplementedError); its diameter is given in demagnified image space in micrometers. Consolidate this with the RL/RLGC restriction in the config reference, skill, and guide.
srivarra
previously approved these changes
Oct 14, 2026
srivarra
left a comment
Contributor
There was a problem hiding this comment.
Looks good! Just a couple of nitpicks.
The script does not read OME-XML metadata, so omitted flags produced a default scale with no warning; the doc also claimed metadata was read.
--values null previously stayed the string 'null' and crashed e.g. a confocal_pinhole_diameter sweep. Numeric casts stay first because PyYAML parses dotless floats like 1e-4 as strings.
Collaborator
Author
|
@srivarra, I think this is ready. Feel free to modify and/or merge. Thanks! |
srivarra
approved these changes
Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds an onboarding path for first-time waveorder users: a written tutorial, an agentic skill that walks the same workflow interactively, and a small skill for inspecting transfer functions.
docs/guide/first-reconstruction.md: a six-stage guide from raw data to a tuned reconstruction: is waveorder right for you, what data and metadata do you have, draft reconstructions, manual sweeps, automatic tuning, and scaling up. Linked at the top of the README..skills/waveorder-tutorial: the agentic companion to the guide. The agent asks the stage questions, converts data to OME-Zarr, writes draft configs, runs sweeps, and shows everything in napari. Includes reference docs and scripts (example data fetch, TIFF/array converter, ROI cropper, and a 1D/2D sweep helper)..skills/waveorder-visualize-otf: computes a transfer function from a config and opens it in napari.How to trial: check out this branch, open Claude Code in the repo root, and run
/waveorder-tutorial. With no data of your own it fetches a small sample and reconstructs 2D phase from a defocus stack; bring your own TIFF/zarr/array for a complete test.