original_docstring:  A heuristic method for allocating a given number of channels (ch)
          into tensor types. Attempts to distribute the channels evenly across
          the different tensor types. Useful for hands off layer construction.
          
          Args:
              ch (int): total number of channels
              group (Group): symmetry group
  
          Returns:
              SumRep: The direct sum representation with dim(V)=ch
          
docstring: A heuristic method for allocating a given number of channels (ch)
  into tensor types. Attempts to distribute the channels evenly across
  the different tensor types. Useful for hands off layer construction.
docstring_tokens: A heuristic method for allocating a given number of channels ( ch ) into tensor types . Attempts to distribute the channels evenly across the different tensor types . Useful for hands off layer construction .
code: def uniform_rep(ch,group):
      """ A heuristic method for allocating a given number of channels (ch)
          into tensor types. Attempts to distribute the channels evenly across
          the different tensor types. Useful for hands off layer construction.
          
          Args:
              ch (int): total number of channels
              group (Group): symmetry group
  
          Returns:
              SumRep: The direct sum representation with dim(V)=ch
          """
      d = group.d
      Ns = np.zeros((lambertW(ch,d)+1,),int) # number of tensors of each rank
      while ch>0:
          max_rank = lambertW(ch,d) # compute the max rank tensor that can fit up to
          Ns[:max_rank+1] += np.array([d**(max_rank-r) for r in range(max_rank+1)],dtype=int)
          ch -= (max_rank+1)*d**max_rank # compute leftover channels
      sum_rep = sum([binomial_allocation(nr,r,group) for r,nr in enumerate(Ns)])
      sum_rep,perm = sum_rep.canonicalize()
      return sum_rep
code_tokens: def uniform_rep ( ch , group ) : d = group . d Ns = np . zeros ( ( lambertW ( ch , d ) + 1 , ) , int ) while ch > 0 : max_rank = lambertW ( ch , d ) Ns [ : max_rank + 1 ] += np . array ( [ d ** ( max_rank - r ) for r in range ( max_rank + 1 ) ] , dtype = int ) ch -= ( max_rank + 1 ) * d ** max_rank sum_rep = sum ( [ binomial_allocation ( nr , r , group ) for r , nr in enumerate ( Ns ) ] ) sum_rep , perm = sum_rep . canonicalize ( ) return sum_rep
short_docstring: A heuristic method for allocating a given number of channels (ch)
  into tensor types.
short_docstring_tokens: A heuristic method for allocating a given number of channels ( ch ) into tensor types .
comment: """ A heuristic method for allocating a given number of channels (ch)
          into tensor types. Attempts to distribute the channels evenly across
          the different tensor types. Useful for hands off layer construction.
          
          Args:
              ch (int): total number of channels
              group (Group): symmetry group
  
          Returns:
              SumRep: The direct sum representation with dim(V)=ch
          """$SEP$# number of tensors of each rank
  $SEP$# compute the max rank tensor that can fit up to
  $SEP$# compute leftover channels
  