文件格式
Index | Type | X | Y | Z | Radius | Parent |
---|---|---|---|---|---|---|
1 | 1 | 0.0 | 0.0 | 0.0 | 1.0 | -1 |
2 | 3 | 0.1 | 0.2 | 0.3 | 1.0 | 1 |
int | int | float | float | float | float | int |
… | … | … | … | … | … | … |



基本结构定义
节点定义
每个节点表示swc文件中的一行,包含了一行中的所有信息,如Index,Type,坐标,半径,父节点
class Point:
def __init__(self,point):
self.parentIndex=-1
self.children=[]
self.parent=None
self.index=int(point[0])
self.type=int(point[1])
self.x=point[2]
self.y=point[3]
self.z=point[4]
self.ratio=point[5]
self.parentIndex=int(point[6])
self.children=[]
self.xyz=[np.float32(point[2]),np.float32(point[3]),np.float32(point[4])]
def __str__(self):
return str(self.index)+","+str(self.type)+","+str(self.x)+","+\
str(self.y)+","+str(self.z)+","+str(self.ratio)+","+str(self.parentIndex)
边/分支定义
每个边/分支包含上图中多个顶点,如节点12和14构成一个小分支,节点12和13也构成一个小分支,节点2、3、4也构成一个稍长一点的分支。这些分支中需要定义的属性主要是点的信息,以及parent-父节点,children-子节点,同时为了方便后续分析等,可以增加一些其他属性如长度、角度、order等信息。
class Edge:
def __init__(self,point=None):
if point is None:
self.data=[]
else:
self.data=[point]
self.order=-1
self.angle=0
self.maxDepth=-1
self.maxLength=-1
self.children=[]
self.parent=None
self.len=0
def addPoint(self,point):
self.data.append(point)
def getLength(self):
if self.len==0:
for i in range(len(self.data)-1):
self.len+=np.linalg.norm(np.array(self.data[i].xyz)-np.array(self.data[i+1].xyz))
return self.len
树结构定义
树结构定义了神经元层面的基本信息如所有分支、所有点、所有terminal等属