The analysis engine moved into cpc-core, an embeddable module compiled into this jar. Any other plugin can now offer centroid coincidence without CPC being installed.
The install story is unchanged: one jar, one update site, no prerequisites.
Changed
- Object order in every per-object table is now ascending by label. It was first-voxel-encounter order, so a batch CSV could run 1, 2, 4, 3. Values per row are unchanged.
- Labels are read by rounding, not truncation. A 32-bit label image holding 2.7 now reads as object 3; negative, NaN and overflowing values are background. Integer label images are unaffected.
- Intensity-weighted centroids skip non-finite voxels. One NaN used to drop a whole object back to its geometric centroid.
- ROI sets produce a label image sized to the ROI count. The old fixed 16-bit wrapped silently above 65,535 ROIs.
- The multi-target summary always carries a
Nonerow, including at zero, so a script can read the non-colocalized count without checking the row exists. - The Java API no longer rejects more than five label images. Batch always analysed larger groups; the five was a dialog limit that had leaked into
CPC.run.
Fixed
- Batch no longer dies on a regex with an optional capture group — it threw
StringIndexOutOfBoundsExceptionbefore opening a single image, taking the whole batch with it. - Recursive batch scans terminate on a directory cycle — a junction or symlink to an ancestor used to recurse until the stack ran out.
Verification
Extraction is a refactor, so outputs were gated against goldens captured from the 1.4.0 build: 409 fixture/configuration comparisons, zero differences that were not one of the declared changes above.
Building from source
The engine modules are published to no Maven repository by design. Build them first — see the README, or .github/workflows/build-main.yml.