Пример #1
0
    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
Пример #2
0
 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)
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
 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
Пример #6
0
    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