docs: def local_bifurcation_angle(bif_point):
      '''Return the opening angle between two out-going sections
      in a bifurcation point
  
      We first ensure that the input point has only two children.
  
      The bifurcation angle is defined as the angle between the first non-zero
      length segments of a bifurcation point.
      '''
      def skip_0_length(sec):
          '''Return the first point with non-zero distance to first point'''
          p0 = sec[0]
          cur = sec[1]
          for i, p in enumerate(sec[1:]):
              if not np.all(p[:COLS.R] == p0[:COLS.R]):
                  cur = sec[i + 1]
                  break
  
          return cur
  
      assert len(bif_point.children) == 2, 'A bifurcation point must have exactly 2 children'
  
      ch0, ch1 = (skip_0_length(bif_point.children[0].points),
                  skip_0_length(bif_point.children[1].points))
  
      return morphmath.angle_3points(bif_point.points[-1], ch0, ch1)