class_docstr: Collator is an NdMapping type which can merge any number
  of HoloViews components with whatever level of nesting
  by inserting the Collators key dimensions on the HoloMaps.
  If the items in the Collator do not contain HoloMaps
  they will be created. Collator also supports filtering
  of Tree structures and dropping of constant dimensions.
class_docstr_tok: ["Collator","is","an","NdMapping","type","which","can","merge","any","number","of","HoloViews","components","with","whatever","level","of","nesting","by","inserting","the","Collators","key","dimensions","on","the","HoloMaps",".","If","the","items","in","the","Collator","do","not","contain","HoloMaps","they","will","be","created",".","Collator","also","supports","filtering","of","Tree","structures","and","dropping","of","constant","dimensions","."]
docstr: Filter each Layout in the Collator with the supplied
  path_filters. If merge is set to True all Layouts are
  merged, otherwise an NdMapping containing all the
  Layouts is returned. Optionally a list of dimensions
  to be ignored can be supplied.
code: def __call__(self):
      """
      Filter each Layout in the Collator with the supplied
      path_filters. If merge is set to True all Layouts are
      merged, otherwise an NdMapping containing all the
      Layouts is returned. Optionally a list of dimensions
      to be ignored can be supplied.
      """
      constant_dims = self.static_dimensions
      ndmapping = NdMapping(kdims=self.kdims)
  
      num_elements = len(self)
      for idx, (key, data) in enumerate(self.data.items()):
          if isinstance(data, AttrTree):
              data = data.filter(self.filters)
          if len(self.vdims) and self.value_transform:
              vargs = dict(
                  zip(self.dimensions("value", label=True), data)
              )
              data = self.value_transform(vargs)
          if not isinstance(data, Dimensioned):
              raise ValueError(
                  "Collator values must be Dimensioned objects "
                  "before collation."
              )
  
          dim_keys = zip(self.kdims, key)
          varying_keys = [
              (d, k)
              for d, k in dim_keys
              if not self.drop_constant
              or (d not in constant_dims and d not in self.drop)
          ]
          constant_keys = [
              (d, k)
              for d, k in dim_keys
              if d in constant_dims
              and d not in self.drop
              and self.drop_constant
          ]
          if varying_keys or constant_keys:
              data = self._add_dimensions(
                  data, varying_keys, dict(constant_keys)
              )
          ndmapping[key] = data
          if self.progress_bar is not None:
              self.progress_bar(float(idx + 1) / num_elements * 100)
  
      components = ndmapping.values()
      accumulator = ndmapping.last.clone(components[0].data)
      for component in components:
          accumulator.update(component)
      return accumulator
  
imports: from itertools import groupby
  import numpy
  import pandas
  import param
  from .dimension import Dimensioned, ViewableElement, asdim
  from .layout import Composable, Layout, NdLayout
  from .ndmapping import NdMapping
  from .overlay import CompositeOverlay, NdOverlay, Overlayable
  from .spaces import GridSpace, HoloMap
  from .tree import AttrTree
  from .util import get_param_values
label_desc: Use image node_id 2 for calling the Collator obj's underlying member method code with example usage: obj.__call__() and returns: accumulator