Checks And Issues Reference#
This is the canonical reference for:
validation checks
GUI issue types
related tools
parameter sources
the current radii-cleaning and auto-labeling algorithms
Primary code sources:
swcstudio/core/validation_catalog.pyswcstudio/core/validation_checks/native_checks.pyswcstudio/core/validation_checks/neuron_morphology_checks.pyswcstudio/core/issues.pyswcstudio/core/radii_cleaning.pyswcstudio/core/auto_typing_impl.pyswcstudio/tools/validation/configs/default.jsonswcstudio/tools/batch_processing/configs/radii_cleaning.jsonswcstudio/tools/batch_processing/configs/auto_typing.json
How To Read This Page#
Sourcenative: implemented directly in SWC-StudioNeuroM: wrapped from NeuroM
Severitycurrent default from
swcstudio/tools/validation/configs/default.json
JSONyes: params are exposed in JSONenabled/severity only: the check can be turned on/off and reclassified, but has no extra exposed params
Related toolthe tool the GUI routes to for inspection or repair
Pipeline Overview#
The app raises issues from three layers:
Validation checksdeterministic checks run through the shared validation engine
Suspicious-item detectorssuspicious radii and suspicious labels
Issue normalizationvalidation rows and suspicious findings become GUI issues
So one SWC can raise:
validation issues
blocked-check issues
suspicious radii issues
suspicious label issues
Validation Check Matrix#
Structural Presence#
Key |
Issue title |
Source |
Severity |
How checked |
Params |
JSON |
Related tool |
|---|---|---|---|---|---|---|---|
|
|
native |
warning |
Groups connected type- |
none |
enabled/severity only |
|
|
|
native |
critical |
Runs after temporary soma consolidation and fails if more than one soma anchor remains. |
none |
enabled/severity only |
|
|
|
native |
critical |
Fails if no node has type |
none |
enabled/severity only |
Manual Label Editing / Auto Label Editing |
|
|
native |
critical |
Fails if any node type is |
none |
enabled/severity only |
Manual Label Editing |
|
|
native |
warning |
Requires every used custom type ( |
none |
enabled/severity only |
|
|
|
native |
warning |
Fails if no node has type |
none |
enabled/severity only |
Manual Label Editing / Auto Label Editing |
|
|
native |
warning |
Fails if no node has type |
none |
enabled/severity only |
Manual Label Editing / Auto Label Editing |
|
|
native |
warning |
Fails if no node has type |
none |
enabled/severity only |
Manual Label Editing / Auto Label Editing |
Radius And Size#
Key |
Issue title |
Source |
Severity |
How checked |
Params |
JSON |
Related tool |
|---|---|---|---|---|---|---|---|
|
|
native |
critical |
Fails on non-soma nodes with non-finite or |
none |
enabled/severity only |
Manual Radii Editing |
|
|
NeuroM |
critical |
Calls NeuroM |
|
yes |
Manual Radii Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
|
yes |
Manual Radii Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
|
yes |
Manual Radii Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
|
yes |
Manual Radii Editing |
|
|
native |
warning |
Fails when any radius is above |
|
yes |
Auto Radii Editing |
Length And Geometry#
Key |
Issue title |
Source |
Severity |
How checked |
Params |
JSON |
Related tool |
|---|---|---|---|---|---|---|---|
|
|
native |
critical |
Uses segment-based section validity and fails on zero or invalid derived section length. |
none |
enabled/severity only |
Geometry Editing |
|
|
native |
critical |
Computes Euclidean parent-child distance and fails on non-finite or |
none |
enabled/severity only |
Geometry Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
none |
enabled/severity only |
Geometry Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
|
yes |
Geometry Editing |
|
|
native |
critical |
Fails only when the full |
none |
enabled/severity only |
Geometry Editing |
|
|
native |
warning |
Flags parent-child segments above a threshold derived from absolute, median-ratio, and MAD-based bounds. |
|
yes |
Geometry Editing |
Topology#
Key |
Issue title |
Source |
Severity |
How checked |
Params |
JSON |
Related tool |
|---|---|---|---|---|---|---|---|
|
|
native |
critical |
Fails on non-soma nodes with |
none |
enabled/severity only |
Geometry Editing |
|
|
native |
critical |
Fails when |
none |
enabled/severity only |
Geometry Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
none |
enabled/severity only |
Geometry Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
none |
enabled/severity only |
Geometry Editing |
|
|
NeuroM |
warning |
Calls NeuroM |
none |
enabled/severity only |
Geometry Editing |
Index Consistency#
Key |
Issue title |
Source |
Severity |
How checked |
Params |
JSON |
Related tool |
|---|---|---|---|---|---|---|---|
|
|
NeuroM |
critical |
Calls NeuroM |
|
yes |
Geometry Editing |
|
|
NeuroM |
critical |
Calls NeuroM |
|
yes |
Geometry Editing |
|
|
native |
warning |
Fails when a valid in-file parent ID is |
none |
enabled/severity only |
Index Clean |
|
|
native |
info |
Fails when sorted unique node IDs skip integers. |
none |
enabled/severity only |
Index Clean |
GUI-Only Issue Generators#
These are shown in the issue-driven workflow but are not entries in default.json.
Source key |
Title |
How generated |
Config source |
Related tool |
|---|---|---|---|---|
|
|
Grouped from validation rows that could not run because morphology building failed. |
none |
Validation or Manual Label Editing, depending on cause |
|
|
Runs the shared radii-cleaning engine and groups nodes the cleaner would change. |
|
Auto Radii Editing |
|
|
Runs the shared auto-typing engine and groups nodes where current type differs from suggested type. |
|
Auto Label Editing |
Issue Model#
Issues normalized in swcstudio/core/issues.py use these fields:
issue_idseveritycertaintydomaintitledescriptionnode_idssection_idstool_targetsuggested_fixstatussource_keysource_labelsource_categorysource_payload
Radii Cleaning Algorithm#
The suspicious radii issue and Auto Radii Editing use the same shared backend in swcstudio/core/radii_cleaning.py.
Current method#
The current cleaner is directed-path and fixed-point based:
build topology and directed branch paths
compute per-type sanity bounds
Pass 1: local outlier repairPass 2: taper enforcementPass 3: local polynomial smoothingre-apply taper
repeat until no issue-visible changes remain
Soma radii are always preserved.
Reasons recorded per changed node#
non_finitenon_positivebelow_type_minabove_type_maxlocal_outliertaper_cappost_smooth_taper_capaxon_floorsavitzky_golay
Current radii-clean config keys#
Main config file:
swcstudio/tools/batch_processing/configs/radii_cleaning.json
Current top-level rule groups:
small_radius_zero_onlysanity_bounds.globalsanity_bounds.per_typelocal_outliertaperaxon_floorsavgolfixed_pointreplacement
Important defaults:
local_outlier.window_nodes = 5local_outlier.max_percent_deviation = 0.5taper.slack = 0.05axon_floor.min_radius = 0.12savgol.window_nodes = 7savgol.polyorder = 2fixed_point.max_passes = 32fixed_point.min_effective_delta = 0.005
Auto Labeling Algorithm#
The suspicious label issue and Auto Label Editing use the shared backend in:
swcstudio/core/auto_typing_impl.pyswcstudio/tools/batch_processing/configs/auto_typing.json
Current method#
The current method is branch-consistent and subtree-constrained:
segment the morphology into directed branch units
identify soma-child primary subtrees
score primary subtrees as axon / basal / apical
enforce hard constraints:
one primary axon winner
one primary apical winner
root-to-leaf inheritance inside a classified primary subtree
score remaining branches with path-aware features
run local refinement / smoothing
restore subtree-wide consistency after refinement
Main feature families#
path length
radial extent
mean radius
directional persistence
terminal taper
branchiness
branching symmetry
global
+Zalignmentfar-from-soma basal penalty
Current important config keys#
Main config file:
swcstudio/tools/batch_processing/configs/auto_typing.json
Most important current rule groups:
optionsrules.branch_score_weightsrules.constraintsrules.ml_*rules.refinementrules.smoothingrules.soma_child_priorrules.radius.copy_parent_if_zero
Important defaults in rules.constraints:
inherit_primary_subtree = truesingle_axon = truesingle_apical = trueaxon_primary_min_score = 0.42apical_primary_min_score = 0.42far_basal_distance_um = 500.0far_basal_penalty = 0.22
How Checks Become GUI Issues#
Current conversion rules:
validation
passno issue
validation
warningwarningissue
validation
failcriticalissue
blocked or dependency-failed checks
collapsed into grouped blocked-check issues
suspicious radii changes
one aggregated
Outlier radii detectedissue
suspicious label changes
one aggregated
Likely wrong labelsissue
Where To Edit Behavior#
validation check enable/severity/params
swcstudio/tools/validation/configs/default.json
radii cleaning behavior
swcstudio/tools/batch_processing/configs/radii_cleaning.json
auto labeling behavior
swcstudio/tools/batch_processing/configs/auto_typing.json