Model objects¶
Tree, Branch, and Point¶
This page documents the core data structures that represent a 3D neuronal reconstruction in Dynamo: Tree, Branch, and Point. These classes model soma-rooted trees, ordered branch point lists, and per-node metadata, and are used by the GUI and by programmatic workflows.
Tree Class¶
The Tree class represents a 3D neuronal reconstruction, anchored at a soma (rootPoint) and composed of multiple Branch objects.
It provides methods to query, edit, and traverse the dendritic/axonal tree, as well as utilities for distance calculations and cloning.
Attributes¶
Name |
Type |
Description |
|---|---|---|
|
|
Soma / root node of the tree. |
|
|
All branches in the tree. Each branch contains an ordered list of points. |
|
|
Image-to-world transform (identity; scaling from |
|
|
Internal link back to the |
Core Methods¶
Lookup
getPointByID(pointID, includeDisconnected=False)→Optional[Point]getBranchByID(branchID)→Optional[Branch]flattenPoints(includeDisconnected=False)→List[Point]
Editing
addBranch(branch)→int— Add branch, return index.removeBranch(branch)→None— Remove branch (must be empty).removePointByID(pointID)→Optional[Point]— Remove a point and cleanup.reparentPoint(childPoint, newParent, newBranchID=None)→Optional[str]— Reparent a point and descendants.movePoint(pointID, newLocation, downstream=False)→None— Move point (and optionally downstream).
Traversal & Tree Manipulation
nextPointFilteredWithCount(sourcePoint, filterFunc, delta)→(Optional[Point], int)continueParentBranchIfFirst(point)→NoneupdateAllPrimaryBranches(point=None)→NoneupdateAllBranchesMinimalAngle(point=None)→None
Geometry & Distance
worldCoordPoints(points)→ coordinates in world units.spatialDist(p1, p2)→ float, Euclidean distance.spatialAndTreeDist(p1, p2)→ (euclidean, path).spatialRadius()→ max Euclidean radius.spatialAndTreeRadius()→ max (euclidean, path) radius.closestPointTo(location, zFilter=False)→Optional[Point].closestPointToWorldLocation(worldLocation)→Optional[Point].
Cloning & Cleanup
clearAndCopyFrom(otherTree, idMaker)→None.cleanBranchIDs()→None.cleanEmptyBranches()→int(branches removed).
Branch Class¶
Branch represents a single connected segment of a neuronal tree, starting at a parentPoint and containing an ordered list of Point objects.
It provides indexing, editing, labeling queries, subtree traversal, and world-space length utilities.
Attributes¶
Name |
Type |
Description |
|---|---|---|
|
|
Branch identifier. |
|
|
Owning tree (set by |
|
|
Node where this branch originates. |
|
|
Ordered list of points. |
|
— |
Reserved placeholders. |
|
|
Temporary hook for reparenting. |
Core Methods¶
Indexing & Queries
indexInParent()→ index intree.branches.indexForPointID(pointID)/indexForPoint(point)→ position or -1.isEmpty()→ bool.hasChildren()→ bool.hasPointWithAnnotation(annotation, recurseUp=False)→ bool.isAxon(axonLabel='axon', recurseUp=True)→ bool.isBasal(basalLabel='basal', recurseUp=True)→ bool.isFilo(maxLength)→ (bool, length).getOrder(centrifugal=False)→ int.
Editing
addPoint(point)→ index.insertPointBefore(point, index)→ index.removePointLocally(point)→ Optional[Point].setParentPoint(parentPoint)→ None.
Traversal & Subtree
flattenSubtreePoints(startIdx=0)→ list of points.subtreeContainsID(pointID)→ bool.
Lengths (world space)
worldLengths(fromIdx=0)→ (total, toLastBranchPoint).cumulativeWorldLengths()→ list of distances.pointsWithParentIfExists()→ list of points.
Utilities¶
_lastPointWithChildren(points)→ index or -1._lastPointWithLabel(points, label)→ index or -1.
Point Class¶
Point represents a node in 3D pixel space.
It links to its owning branch, can have child branches, and carries optional radius and annotations.
World-space methods require access to FullState for scaling.
Attributes¶
Name |
Type |
Description |
|---|---|---|
|
|
Unique identifier. |
|
|
(x, y, z) in pixels. |
|
|
Radius in pixels. |
|
|
Owning branch. |
|
|
Free-text label. |
|
|
Child branches. |
|
|
Flag for curation. |
|
|
Deprecated. |
Core Methods¶
Topology & Position
isRoot()→ bool.indexInParent()→ int.isLastInBranch()→ bool.removeChildrenByID(branchID)→ None.
Traversal
nextPointInBranch(delta=1, noWrap=False)→ Optional[Point].pathFromRoot()→ list of points.
Subtree
flattenSubtreePoints()→ list of points.subtreeContainsID(pointID)→ bool.
Geometry
radiusFromAncestors()→ float.longestDistanceToLeaf()→ float.returnWorldRadius(fullState)→ float.