Repository navigation
Releases
Releases · CellMigrationLab/morphobricks-preprocessing
v0.5.2
What's Changed
- Fixes #258, fixes #252 by @guijacquemet in #278
- Fixes #279 by @guijacquemet in #280
- Fixes #281 by @guijacquemet in #282
- Stage 3 S3.3: per-unit channel lists, plane_histograms v5 by @guijacquemet in #288
- Parent-label (grouped) masks: re-pin Spec 69a58b3, resolver contract v2 by @guijacquemet in #289
- Notebook: one image viewer for every step, formatted report, X/Y pixel inputs (redesign 3, part 1) by @guijacquemet in #284
- Notebook: axes proposed at the quick scan and validated on all images; pixel sizes that differ in one line (redesign 3, part 2) by @guijacquemet in #285
- Notebook: Z-stacks saved as recorded projections from the Axes step; 3-D stacks kept recorded (redesign 3, part 3) by @guijacquemet in #286
- OME-Zarr copies: asked on the first screen, written as a recorded conversion once the axes are confirmed (redesign 3, part 4) by @guijacquemet in #287
- Conversion record version 4: refuse version 3, require source_relative_path where written by @guijacquemet in #291
- Axes: show the confirmation at once and make it faster; image type moves to Channels (v0.5.2 owner feedback) by @guijacquemet in #292
- Release v0.5.2 by @guijacquemet in #290
Full Changelog: v0.5.1...v0.5.2
v0.5.1
What's Changed
- PP-C1: drop the v0.4.0 parity tests, keep the histogram goldens (v0.5.1, 1/3) by @guijacquemet in #259
- PP-C2: every run is described; undescribed runs and their compatibility code removed (v0.5.1, 2/3) by @guijacquemet in #260
- PP-C3: document that every run is described (v0.5.1, 3/3) by @guijacquemet in #261
- RunInputs.resolve_request: the shared request resolver (contract v1, v0.5.1) by @guijacquemet in #256
- PP-1: Fov.image_type per position, partial-mask helper, pinned brick surface by @guijacquemet in #263
- PP-2: lab-tool links (--lab-links), recorded in the run manifest only by @guijacquemet in #264
- SWEEP-PP (A): remove the remaining compatibility code (PP-05..PP-10) and fix the frozen clock (#262) by @guijacquemet in #265
- SWEEP-PP (B): experiment_design.csv is output only, and the pairing card is rebuilt on the draft (PP-02) by @guijacquemet in #266
- Notebook: three code cells (1. Install, 2. Mount Google Drive, 3. Run preprocessing) by @guijacquemet in #267
- Pin morphobricks-normalization v0.4.0 (position_id required) by @guijacquemet in #268
- Quiet the notebook output: no debug flood from ImageJ TIFFs by @guijacquemet in #271
- Notebook redesign 1: file lists without empty bullets, the references dropdown stays, disabled actions say why by @guijacquemet in #269
- Notebook redesign 2: progress for every wait, progress callbacks from the readers, quick scan first by @guijacquemet in #270
- Notebook redesign 3: the axes step shows the data as the roles read it; pixel size in one line by @guijacquemet in #272
- Drop the legacy experiment_design.csv migration (PP-03) by @guijacquemet in #274
- Notebook rework 1: one column, no inner scroll box, every channel in the quick scan; Compare groups in the run step by @guijacquemet in #275
- Notebook rework 2: seven steps (Images, Axes, Channels, Masks, Design, Check and save, Run) by @guijacquemet in #276
- Release v0.5.1 by @guijacquemet in #277
Full Changelog: v0.5.0...v0.5.1
v0.5.0
What's Changed
- [after-v0.4.0-tag] Roadmap: explicit projection step (P1) and experiment schema (P2) by @guijacquemet in #174
- I/O minors: same_file export, OME-Zarr time unit, open errors, 1-D refusal by @guijacquemet in #177
- Per-channel group statistics and explicit refusal of cyclic mask hierarchies by @guijacquemet in #178
- Bind masks to their fingerprints for the whole run and the relationship scan by @guijacquemet in #180
- Index MaskInventory by image once (for_image O(1)) by @guijacquemet in #181
- Doc cleanup: archive plan milestones and status log, refresh v0.4.0 status by @guijacquemet in #182
- Vendor the Spec conformance fixtures at a pinned commit (Stage 1, PR 1 of 3) by @guijacquemet in #183
- Strict description reader, phases 1-3 (Stage 1, PR 2 of 3) by @guijacquemet in #184
- Strict description reader, phases 4-5 and warnings (Stage 1, PR 3 of 3) by @guijacquemet in #185
- Re-pin the vendored Spec to 745259b; condition single rule (Stage 1, PR A) by @guijacquemet in #186
- Description model, canonical writer and section digests (Stage 1, PR 4) by @guijacquemet in #187
- Description publication: lock, base SHA, symlink refusal, transitions, records (Stage 1, PR 5) by @guijacquemet in #188
- Turn content hashing of the sources on by default by @guijacquemet in #189
- Discovery and header additions for the experiment description (Stage 1, PR 6) by @guijacquemet in #190
- Reconciliation of the published description with the folder (Stage 1, PR 9) by @guijacquemet in #193
- Physical R_* checks of an experiment description (Stage 1, PR 8) by @guijacquemet in #192
- Safe display of planes: reduced reads, channel strip, mask overlay (Stage 1, PR 13) by @guijacquemet in #194
- Draft description, proposed IDs and legacy design migration (Stage 1, PR 7) by @guijacquemet in #191
- Re-pin the vendored Spec to 7dbae0c (byte rules, goldens, t13, records encoding) by @guijacquemet in #195
- Say a time step cannot be stated in calibration.csv by @guijacquemet in #201
- Derived experiment_design.csv and cross-version parity suite (Stage 1, PR 10) by @guijacquemet in #196
- Detect mask hierarchy cycles before reducing direct edges by @guijacquemet in #200
- Re-check every mask fingerprint right before the manifest replacement by @guijacquemet in #202
- Hold module-level skips and missing modules in the Spec test gate by @guijacquemet in #205
- Make the records append rollback-safe and validate record shapes by @guijacquemet in #207
- Re-pin the vendored Spec to b197ac1; reserved names apply to used_ids.channels by @guijacquemet in #208
- Run integration of the published experiment description (Stage 1, PR 11) by @guijacquemet in #209
- Semantic RunInputs from a published description (Stage 1, PR 12) by @guijacquemet in #210
- Notebook bootstrap: show the Git identity of a local checkout and refuse a non-release one by @guijacquemet in #214
- Z projection 1/6: the pure arithmetic (part of #176) by @guijacquemet in #211
- Z projection 2/6: conversion record version 3 (part of #176) by @guijacquemet in #212
- Spec conformance P26: per-unit header channel-name checks for described runs by @guijacquemet in #218
- Description reader: own rule vocabulary; pin path and value of five refusals by @guijacquemet in #219
- CLI describe, docs and conformance run (Stage 1, PR 17) by @guijacquemet in #220
- Draft file and draft-to-description (Stage 1) by @guijacquemet in #221
- Z projection 3/6: plan and write projected copies (part of #176) by @guijacquemet in #213
- Z projection 4/6: convert --project on the command line (part of #176) by @guijacquemet in #215
- Publication writes the removed and image_count_changed records (RR2, RR1) by @guijacquemet in #216
- Refuse a draft written under another Spec commit at resume and save by @guijacquemet in #224
- List images without header channel names in a described run by @guijacquemet in #226
- Stage 2: described runs write manifest version "4" by @guijacquemet in #227
- Stage 2: make_clean_run(description=...) builds a described run for tests by @guijacquemet in #228
- Stage 2: A_* error classes and RunInputs.section_digests() by @guijacquemet in #229
- Z projection 5/6: the run side (part of #176) by @guijacquemet in #217
- Re-pin the vendored Spec to c8f6852 by @guijacquemet in #230
- Notebook Step 1 cards: IDs, names, pairing, references (Stage 1, PR 14) by @guijacquemet in #231
- Document the window after the final mask check by @guijacquemet in #232
- Notebook: your channels (labels first, then tag per unit) (Stage 1, PR 15) by @guijacquemet in #233
- Fixes #234: make_described_run spreads image_count over technical repeats by @guijacquemet in #236
- Notebook: your masks (Stage 1, PR 16a) by @guijacquemet in #237
- Notebook: check and save, reopen (Stage 1, PR 16b) by @guijacquemet in #238
- Run page: channel and replicate IDs, no-problems icon, plan card, mask kinds by @guijacquemet in #241
- Re-pin Spec 1bed024; read_records follows §4.6 (R_RECORDS_FILE_INVALID) by @guijacquemet in #242
- Described runs: pixel-type and dimension checks per unit (#239, narrowed) by @guijacquemet in #243
- Notebook: one step at a time, in the decided order (PR 17a) by @guijacquemet in #244
- Report the layout refusal first in described runs with several layouts by @guijacquemet in #246
- Notebook: tags per header block, colour pictures, one-click axes (PR 17b-1) by @guijacquemet in #247
- Notebook: fold unchanged rows on reopen (PR 17b-2) by @guijacquemet in #248
- Notebook: Stains is not applicable when every folder is colour (RGB) by @guijacquemet in #249
- Notebook: folder pictures with a 1:1 crop, tag like the saved group, colour mask evidence (PR 17c) by @guijacquemet in #250
- Audit batches 33, 34a, 34b: publish only what was answered, of the image checked by @guijacquemet in #254
- Batch 34b: preview-gat...
v0.4.0
What's Changed
- Keep an unreadable experiment_design.csv untouched in step 1 by @guijacquemet in #61
- load_design raises DesignCheckError for an unreadable experiment_design.csv by @guijacquemet in #62
- Read masks one pixel high or wide as 2D YX masks by @guijacquemet in #63
- PP-1: the axis check (swaps and contradictions are errors; plain stacks confirmed) by @guijacquemet in #64
- PP-0: code standards with a shrink-only baseline; one atomic writer, one grammar helper by @guijacquemet in #65
- PP-2: remove convert_tiffs, zarr_export, the moved-name shims and the old axis functions by @guijacquemet in #66
- PP-3: split run.py into the run package (move only) by @guijacquemet in #109
- PP-4: manifest version 2, row keys, per-file plain-stack confirmation by @guijacquemet in #110
- PP-5: masks (stated axes, never converted, labels always used) by @guijacquemet in #111
- PP-6: RunInputs and testing.make_clean_run by @guijacquemet in #112
- PP-7: modes, lock and report by @guijacquemet in #113
- PP-8: calibration (stated pixel sizes, recorded with their source) by @guijacquemet in #114
- Roadmap: quick quality checks from whole-FOV embeddings and masks by @guijacquemet in #116
- PP-8b: refuse X-before-Y masks in the run; RunInputs names unrecorded files by @guijacquemet in #115
- PP-8c: fixes from running on real data (file modes, absent-axis sizes, masks inputs, stopped-run text, read arguments, design command) by @guijacquemet in #117
- PP-8d: Colab and LabConstrictor readiness of the notebook by @guijacquemet in #118
- PP-9: split notebook_ui.py (move only) and pin the embedding API by @guijacquemet in #119
- PP-10a: notebook cards (calibration, design, recorded inputs, report, stale lock) by @guijacquemet in #120
- PP-10b: notebook debt from PP-9 (computation out of the UI, functions within §9) by @guijacquemet in #121
- PP-10c: the notebook's masks field and mask-axis statements by @guijacquemet in #122
- PP-10d: the notebook's masks-step button (Describe the masks) by @guijacquemet in #123
- Release v0.4.0rc3: version and the notebook's pinned tag by @guijacquemet in #125
- PP-11: convert, named-axis OME-TIFF copies of images with axis errors by @guijacquemet in #124
- PP-11c: conversion integrity (copy SHA-256, metadata epochs, exact CLI sizes) by @guijacquemet in #126
- PP-11b: the notebook's Make named-axis copies card by @guijacquemet in #127
- OME-Zarr axes and calibration: nothing guessed, nothing silent (#72, #73, #94) by @guijacquemet in #129
- Experiment design identity and counts: excluded folders, duplicate columns, output folder (#82, #83, #98) by @guijacquemet in #130
- Links stay inside the experiment and masks folders; --log is checked before it opens (#81, #99) by @guijacquemet in #128
- Micrometre conversions are always positive and finite; check and design exit 1 on errors (#93) by @guijacquemet in #133
- same_objects is a one-to-one matching; size and plane-count warnings follow the confirmed roles (#67, #74) by @guijacquemet in #131
- PP-12: staging and resume, crash-consistent publication, OME-Zarr inventory fingerprint (#86, #90) by @guijacquemet in #132
- PP-13: migration guide, CHANGELOG, Colab release check, docs pass; version 0.4.0rc4 by @guijacquemet in #134
- Audit B1, I1: keep the experiment, copies and output out of the masks folder by @guijacquemet in #135
- Audit I4: notebook inputs start from the earlier run's recorded inputs by @guijacquemet in #137
- Fix audit findings I2, I3, I5, m4, m5, m6 (what RunInputs gives the bricks) by @guijacquemet in #136
- Compare output and copy folders with the experiment by device and inode by @guijacquemet in #138
- Fix cross-brick test findings F1, F8, F9, F10, F11 by @guijacquemet in #139
- Fix the rc4 external review: mount points, hard links, commit fsync, content verification by @guijacquemet in #140
- Round-2 audit fixes: strict v2 position_id (A-m5), physical-size read errors (A-m6), exact unit conversion (B-m7) by @guijacquemet in #142
- v0.4.0rc5: tie-break gives no parent, ImageJ unit without resolution, plan Q66/Q73/Q74, changelog by @guijacquemet in #143
- Pin normalization v0.3.3; warn about channels without finite pixels (normalization#57) by @guijacquemet in #145
- rc5 release blockers: strict manifest version 3, final content check before commit by @guijacquemet in #146
- Final v0.4.0 prep: shared write-target rule, normalization compatibility, #146 follow-ups by @guijacquemet in #147
- F10: check --missing-as-singleton; a YX-named 2-D mask is shared by a Z/T image by @guijacquemet in #148
- Commit a publication only once its manifest has left .publish by @guijacquemet in #149
- Share a 2-D mask across Z/T planes only when its type is stated YX by @guijacquemet in #150
- docs: add Colab notebook badge by @guijacquemet with @Copilot in #161
- Fix Colab widgets and simplify preprocessing notebook by @guijacquemet in #162
- Repair Colab/Jupyter notebook packaging and restore readable guidance by @guijacquemet in #163
- 2-D planes only: refuse Z-stacks, remove the stated shared 2-D mask (tracker row 36) by @guijacquemet in #173
- Release v0.4.0 by @guijacquemet in #175
New Contributors
- @guijacquemet with @Copilot made their first contribution in #161
Full Changelog: v0.3.4...v0.4.0
v0.4.0rc5
What's Changed
- Fix cross-brick test findings F1, F8, F9, F10, F11 by @guijacquemet in #139
- Fix the rc4 external review: mount points, hard links, commit fsync, content verification by @guijacquemet in #140
- Round-2 audit fixes: strict v2 position_id (A-m5), physical-size read errors (A-m6), exact unit conversion (B-m7) by @guijacquemet in #142
- v0.4.0rc5: tie-break gives no parent, ImageJ unit without resolution, plan Q66/Q73/Q74, changelog by @guijacquemet in #143
- Pin normalization v0.3.3; warn about channels without finite pixels (normalization#57) by @guijacquemet in #145
- rc5 release blockers: strict manifest version 3, final content check before commit by @guijacquemet in #146
Full Changelog: v0.4.0rc4...v0.4.0rc5
v0.4.0rc4
What's Changed
- PP-11: convert, named-axis OME-TIFF copies of images with axis errors by @guijacquemet in #124
- PP-11c: conversion integrity (copy SHA-256, metadata epochs, exact CLI sizes) by @guijacquemet in #126
- PP-11b: the notebook's Make named-axis copies card by @guijacquemet in #127
- OME-Zarr axes and calibration: nothing guessed, nothing silent (#72, #73, #94) by @guijacquemet in #129
- Experiment design identity and counts: excluded folders, duplicate columns, output folder (#82, #83, #98) by @guijacquemet in #130
- Links stay inside the experiment and masks folders; --log is checked before it opens (#81, #99) by @guijacquemet in #128
- Micrometre conversions are always positive and finite; check and design exit 1 on errors (#93) by @guijacquemet in #133
- same_objects is a one-to-one matching; size and plane-count warnings follow the confirmed roles (#67, #74) by @guijacquemet in #131
- PP-12: staging and resume, crash-consistent publication, OME-Zarr inventory fingerprint (#86, #90) by @guijacquemet in #132
- PP-13: migration guide, CHANGELOG, Colab release check, docs pass; version 0.4.0rc4 by @guijacquemet in #134
- Audit B1, I1: keep the experiment, copies and output out of the masks folder by @guijacquemet in #135
- Audit I4: notebook inputs start from the earlier run's recorded inputs by @guijacquemet in #137
- Fix audit findings I2, I3, I5, m4, m5, m6 (what RunInputs gives the bricks) by @guijacquemet in #136
- Compare output and copy folders with the experiment by device and inode by @guijacquemet in #138
Full Changelog: v0.4.0rc3...v0.4.0rc4
v0.4.0rc3
What's Changed
- PP-9: split notebook_ui.py (move only) and pin the embedding API by @guijacquemet in #119
- PP-10a: notebook cards (calibration, design, recorded inputs, report, stale lock) by @guijacquemet in #120
- PP-10b: notebook debt from PP-9 (computation out of the UI, functions within §9) by @guijacquemet in #121
- PP-10c: the notebook's masks field and mask-axis statements by @guijacquemet in #122
- PP-10d: the notebook's masks-step button (Describe the masks) by @guijacquemet in #123
- Release v0.4.0rc3: version and the notebook's pinned tag by @guijacquemet in #125
Full Changelog: v0.4.0rc2...v0.4.0rc3
v0.4.0rc2
What's Changed
- PP-7: modes, lock and report by @guijacquemet in #113
- PP-8: calibration (stated pixel sizes, recorded with their source) by @guijacquemet in #114
- Roadmap: quick quality checks from whole-FOV embeddings and masks by @guijacquemet in #116
- PP-8b: refuse X-before-Y masks in the run; RunInputs names unrecorded files by @guijacquemet in #115
- PP-8c: fixes from running on real data (file modes, absent-axis sizes, masks inputs, stopped-run text, read arguments, design command) by @guijacquemet in #117
- PP-8d: Colab and LabConstrictor readiness of the notebook by @guijacquemet in #118
Full Changelog: v0.4.0rc1...v0.4.0rc2
v0.4.0rc1
What's Changed
- Keep an unreadable experiment_design.csv untouched in step 1 by @guijacquemet in #61
- load_design raises DesignCheckError for an unreadable experiment_design.csv by @guijacquemet in #62
- Read masks one pixel high or wide as 2D YX masks by @guijacquemet in #63
- PP-1: the axis check (swaps and contradictions are errors; plain stacks confirmed) by @guijacquemet in #64
- PP-0: code standards with a shrink-only baseline; one atomic writer, one grammar helper by @guijacquemet in #65
- PP-2: remove convert_tiffs, zarr_export, the moved-name shims and the old axis functions by @guijacquemet in #66
- PP-3: split run.py into the run package (move only) by @guijacquemet in #109
- PP-4: manifest version 2, row keys, per-file plain-stack confirmation by @guijacquemet in #110
- PP-5: masks (stated axes, never converted, labels always used) by @guijacquemet in #111
- PP-6: RunInputs and testing.make_clean_run by @guijacquemet in #112
Full Changelog: v0.3.4...v0.4.0rc1
v0.3.4
- A plain stack declared YXC is accepted (positional Y/X no longer count as named axes).
- A declaration that differs from the header only by swapping Y and X is accepted and read transposed (
declared_axes_transposed); any other disagreement is refused. - New shared reader
read_confirmed_design. Edits to the design file are refused, naming the row and column, when a repeat group is empty, NA-like or differs from another only by case, or whenconfirmed_onis not an ISO date (YYYY-MM-DD).