神经元swc文件读取

文件格式

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
图片1 图片1
图片1

基本结构定义

节点定义

每个节点表示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等属

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值