def bif_count(self, regular=True): #pid = parent_id, pidp = parent_id_before, pidpp= parent_id_before_before count = 0 pidbb = 0 pidb = 0 niter = iterators.LevelOrderIter(self._root) for tn in niter: if regular: if tn.is_regular(): pid = tn.get_parent_id() # print(pid,pidb,pidbb) # clist=tn.child_list # if not clist #若该点为叶子结点,分叉数加一 # count+=1 # if pid == pidb: # count-=1 #若该点的父母结点与前一个点父母结点一致,则减一 # pidb=pid if pid == pidb: count += 1 if pid == pidbb: count -= 1 pidbb = pidb pidb = pid # print(count) return count
def maxbranchorder1(self): niter = iterators.LevelOrderIter(self.rawdata._root) maxlevel = 1 for tn in niter: if tn.is_regular(): tn_level = swc.branch_order(tn) if tn_level >maxlevel: maxlevel = tn_level print(maxlevel)
def maxbranchorder(self): niter = iterators.LevelOrderIter(self.rawdata._root) maxlevel = 1 for tn in niter: if tn.is_regular(): tn_level = swc.branch_order(tn) if tn_level >maxlevel: maxlevel = tn_level if tn_level>level_limit: print("too long") maxlevel = level_limit+50 break return maxlevel
def height(self, atype=None): xmax = xmin = 0.0 niter = iterators.LevelOrderIter(self._root) for tn in niter: if atype == None: xmax = max(xmax, tn._pos[1]) xmin = min(xmin, tn._pos[1]) else: if tn._type == atype: xmax = max(xmax, tn._pos[1]) xmin = min(xmin, tn._pos[1]) print(xmax, xmin) result = xmax - xmin return result
def get_level_list(self): nodelist = [] niter = iterators.LevelOrderIter(self.rawdata._root) maxlevel = self.maxbranchorder() self.maxlevel = maxlevel for i in range(maxlevel): list1 = [] nodelist.append(list1) for tn in niter: if tn.is_regular(): tn_level = swc.branch_order(tn) nodelist[tn_level-1].append(tn) self.nodelist = nodelist return nodelist
def branch_count(self, regular = True): #pid = parent_id, pidp = parent_id_before, pidpp= parent_id_before_before count = 0 pidb = 0 pidbb = 0 niter = iterators.LevelOrderIter(self._root) for tn in niter: if regular: if tn.is_regular(): pid = tn.get_parent_id() if pid == pidb: count += 1 if pid != pidbb: count += 1 pidbb = pidb pidb = pid # print(count) return count