test(neighbor): oracle-vet 6 features (analytic + CellProfiler) -> neighbor 8/9 - #390
Open
darkclad wants to merge 1 commit into
Open
test(neighbor): oracle-vet 6 features (analytic + CellProfiler) -> neighbor 8/9#390darkclad wants to merge 1 commit into
darkclad wants to merge 1 commit into
Conversation
…ighbor 8/9
Vet the 2D neighbor family against independent/external oracles, taking it from
2/9 to 8/9 vetted.
CellProfiler (real cellprofiler.modules.MeasureObjectNeighbors, Adjacent method,
run offline via tests/vetting/oracles/gen_neighbor_cellprofiler.py):
- NUM_NEIGHBORS, CLOSEST_NEIGHBOR1_DIST: CP reproduces Nyxus exactly on the
fixture. Upgrades these two rows from tracker-only to a checked-in generator +
gtest (test_neighbor_cellprofiler.h).
Analytic (independent numpy recomputation of Nyxus' documented closed forms in
tests/vetting/oracles/gen_neighbor_analytic.py; test_neighbor_analytic.h, 1e-4):
- CLOSEST_NEIGHBOR2_DIST, CLOSEST_NEIGHBOR1_ANG, CLOSEST_NEIGHBOR2_ANG,
ANG_BW_NEIGHBORS_MEAN/STDDEV/MODE. These are deterministic closed forms of the
(CP-vetted) neighbor graph. CP's AngleBetweenNeighbors is a subtended angle and
its SecondClosestDistance ranks all objects globally -- different definitions,
so CP is not a valid oracle for them.
PERCENT_TOUCHING stays regression: audited against real CellProfiler and found to
diverge on 3/5 ROIs. Nyxus = distinct contour pixels 8-adjacent to a neighbor /
contour length; CP = object outline pixels overlapping a disk(distance+0.5)-dilated
neighbor / perimeter. No CP method (Adjacent/Expand/Within) reproduces Nyxus.
Documented convention gap.
Removes the two superseded "unvetted_no_direct_oracle" angle regression functions
(now tightly vetted by the analytic oracle). Registry updated; coverage
regenerated (604 -> 610 / 758). gtest 717/717; pytest 72 passed (7 arrow fails are
the tiff-only local build, not regressions).
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.
Vet the 2D neighbor family against independent/external oracles, taking it from 2/9 to 8/9 vetted.
CellProfiler (real cellprofiler.modules.MeasureObjectNeighbors, Adjacent method, run offline via tests/vetting/oracles/gen_neighbor_cellprofiler.py):
Analytic (independent numpy recomputation of Nyxus' documented closed forms in tests/vetting/oracles/gen_neighbor_analytic.py; test_neighbor_analytic.h, 1e-4):
PERCENT_TOUCHING stays regression: audited against real CellProfiler and found to diverge on 3/5 ROIs. Nyxus = distinct contour pixels 8-adjacent to a neighbor / contour length; CP = object outline pixels overlapping a disk(distance+0.5)-dilated neighbor / perimeter. No CP method (Adjacent/Expand/Within) reproduces Nyxus. Documented convention gap.
Removes the two superseded "unvetted_no_direct_oracle" angle regression functions (now tightly vetted by the analytic oracle). Registry updated; coverage regenerated (604 -> 610 / 758). gtest 717/717; pytest 72 passed (7 arrow fails are the tiff-only local build, not regressions).