docs: def apply_filter(
          filter_fn,
          collection,
          result_fn=None,
          filter_name="",
          collection_name=""):
      """
      Apply filter to effect collection and print number of dropped elements
  
      Parameters
      ----------
      """
      n_before = len(collection)
      filtered = [x for x in collection if filter_fn(x)]
      n_after = len(filtered)
      if not collection_name:
          collection_name = collection.__class__.__name__
      logging.info(
          "%s filtering removed %d/%d entries of %s",
          filter_name,
          (n_before - n_after),
          n_before,
          collection_name)
      return result_fn(filtered) if result_fn else collection.__class__(filtered)