code: def section_path_lengths(neurites, neurite_type=NeuriteType.all):
      '''Path lengths of a collection of neurites '''
      # Calculates and stores the section lengths in one pass,
      # then queries the lengths in the path length iterations.
      # This avoids repeatedly calculating the lengths of the
      # same sections.
      dist = {}
      neurite_filter = is_type(neurite_type)
  
      for s in iter_sections(neurites, neurite_filter=neurite_filter):
          dist[s] = s.length
  
      def pl2(node):
          '''Calculate the path length using cached section lengths'''
          return sum(dist[n] for n in node.iupstream())
  
      return map_sections(pl2, neurites, neurite_type=neurite_typef section_path_lengths(neurites, neurite_type=NeuriteType.all):
      '''Path lengths of a collection of neurites '''
      # Calculates and stores the section lengths in one pass,
      # then queries the lengths in the path length iterations.
      # This avoids repeatedly calculating the lengths of the
      # same sections.
      dist = {}
      neurite_filter = is_type(neurite_type)
  
      for s in iter_sections(neurites, neurite_filter=neurite_filter):
          dist[s] = s.length
  
      def pl2(node):
          '''Calculate the path length using cached section lengths'''
          return sum(dist[n] for n in node.iupstream())
  
      return map_sections(pl2, neurites, neurite_type=neurite_type)
docs: Path lengths of a collection of neurites