Skip to content

Commit d4f5118

Browse files
Donglai Weiclaude
andcommitted
Fix score inversion for uint8 affinities: use 255-score instead of 1-score
When affinities are uint8, waterz's ScoredEdge scores are also uint8 [0,255] (One255Minus wrapper). The inversion must be 255-score, not 1.0-score which produces negative values. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 708b19b commit d4f5118

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

connectomics/decoding/decoders/waterz.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,10 @@ def decode_waterz(
320320
rg_affs = np.empty(n_edges, dtype=np.float32)
321321
id1 = np.empty(n_edges, dtype=np.uint64)
322322
id2 = np.empty(n_edges, dtype=np.uint64)
323+
# uint8 scores are in [0, 255] (One255Minus); float in [0, 1] (OneMinus).
324+
score_max = 255.0 if is_uint8 else 1.0
323325
for idx, edge in enumerate(region_graph):
324-
rg_affs[idx] = 1.0 - float(edge["score"])
326+
rg_affs[idx] = score_max - float(edge["score"])
325327
id1[idx] = int(edge["u"])
326328
id2[idx] = int(edge["v"])
327329
if n_edges:

0 commit comments

Comments
 (0)