docs: def initialize_from_assignments(assignments, k, max_assign_weight=0.75):
      """
      Creates a weight initialization matrix from Poisson clustering assignments.
  
      Args:
          assignments (array): 1D array of integers, of length cells
          k (int): number of states/clusters
          max_assign_weight (float, optional): between 0 and 1 - how much weight to assign to the highest cluster. Default: 0.75
  
      Returns:
          init_W (array): k x cells
      """
      cells = len(assignments)
      init_W = np.zeros((k, cells))
      for i, a in enumerate(assignments):
          # entirely arbitrary... maybe it would be better to scale
          # the weights based on k?
          init_W[a, i] = max_assign_weight
          for a2 in range(k):
              if a2!=a:
                  init_W[a2, i] = (1-max_assign_weight)/(k-1)
      return init_W/init_W.sum(0)