def local_bifurcation_angle(bif_point):
def skip_0_length(sec):<EOL><INDENT>'''<STR_LIT>'''<EOL>p0 = sec[<NUM_LIT:0>]<EOL>cur = sec[<NUM_LIT:1>]<EOL>for i, p in enumerate(sec[<NUM_LIT:1>:]):<EOL><INDENT>if not np.all(p[:COLS.R] == p0[:COLS.R]):<EOL><INDENT>cur = sec[i + <NUM_LIT:1>]<EOL>break<EOL><DEDENT><DEDENT>return cur<EOL><DEDENT>assert len(bif_point.children) == <NUM_LIT:2>, '<STR_LIT>'<EOL>ch0, ch1 = (skip_0_length(bif_point.children[<NUM_LIT:0>].points),<EOL>skip_0_length(bif_point.children[<NUM_LIT:1>].points))<EOL>return morphmath.angle_3points(bif_point.points[-<NUM_LIT:1>], ch0, ch1)<EOL>
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.