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)
→None
updateAllPrimaryBranches(point=None)
→None
updateAllBranchesMinimalAngle(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.