def summarize()

in lucid/scratch/atlas_pipeline/pipeline.py [0:0]


def summarize(tiles, params, layout, metadata):
  # calculate summary statistics that may be useful for rendering
  # e.g. max point density, bounds of x and y
  # we can also track the parameters for convenience
  summary = {
  }
  x = layout["x"]
  y = layout["y"]
  summary["x_min"] = np.min(x)
  summary["x_max"] = np.max(x)
  summary["y_min"] = np.min(y)
  summary["y_max"] = np.max(y)
  # the size of a cell in layout coordinate space
  summary["x_bin"] = abs(summary["x_max"] - summary["x_min"])/params["n_layer"]
  summary["y_bin"] = abs(summary["y_max"] - summary["y_min"])/params["n_layer"]

  # maximum density of a cell
  max_density = 0
  min_density = float("inf")
  user_max_density = 0
  user_min_density = float("inf")

  num_cells = 0
  total_count = 0
  user_total_count = 0
  def density(cell, metadata):
    return len(cell["gi"])
  # if the user doesn't provide a scale function its just the density
  user_density = params.get("density_function", density)

  for t in grid.enumerate_tiles(tiles):
    tile = t[2] 
    cells = grid.tile_cells(tile) 
    keys = cells.keys()
    for i,key in enumerate(keys):
      num_cells += 1
      num_points = density(cells[key], metadata)
      user_num_points = user_density(cells[key], metadata)
      
      total_count += num_points
      user_total_count += user_num_points
      if num_points > max_density:
        max_density = num_points
      if num_points < min_density:
        min_density = num_points
      if user_num_points > user_max_density:
        user_max_density = user_num_points
      if user_num_points < user_min_density:
        user_min_density = user_num_points
  summary["max_density"] = max_density
  summary["min_density"] = min_density
  summary["total_count"] = total_count
  summary["user_max_density"] = user_max_density
  summary["user_min_density"] = user_min_density
  summary["user_total_count"] = user_total_count
  summary["num_cells"] = num_cells
  # TODO: enable summarizing of meta attributes?
  return summary