class_docstr: Proximal operator of the nuclear norm, aka trace norm
  
  Parameters
  ----------
  strength : `float`
      Level of penalization
  
  n_rows : `int`
      Number of rows in the matrix on which we apply this
      penalization. The number of columns is then given by
      (start - end) / n_rows
  
  range : `tuple` of two `int`, default=`None`
      Range on which the prox is applied. If `None` then the prox is
      applied on the whole vector
  
  positive : `bool`, default=`False`
      If True, apply nuclear-norm penalization followed by a
      truncation to make all entries non-negative
  
  rank_max : `int`, default=`None`
      Maximum rank to be used in the SVD (not used yet...)
  
  Notes
  -----
  The coeffs on which we apply this prox must be flattened (using
  `np.ravel` for instance), and not two-dimensional.
  This operator is not usable from a solver with wrapped C++ code.
  It is based on `scipy.linalg.svd` SVD routine and is not intended
  for use on large matrices
docstr: Returns the value of the penalization at ``coeffs``
  
  Parameters
  ----------
  coeffs : `numpy.ndarray`, shape=(n_coeffs,)
      The value of the penalization is computed at this point
  
  Returns
  -------
  output : `float`
      Value of the penalization at ``coeffs``
code: def value(self, coeffs: np.ndarray):
      """
      Returns the value of the penalization at ``coeffs``
  
      Parameters
      ----------
      coeffs : `numpy.ndarray`, shape=(n_coeffs,)
          The value of the penalization is computed at this point
  
      Returns
      -------
      output : `float`
          Value of the penalization at ``coeffs``
      """
      x = self._get_matrix(coeffs)
      if x.shape[0] != x.shape[1]:
          raise ValueError(
              "Prox nuclear must be called on a squared matrix"
              ", received {} np.ndarray".format(x.shape)
          )
      s = svd(x, compute_uv=False, full_matrices=False)
      return self.strength * s.sum()
  
file_path: tick/tick/prox/prox_nuclear.py
imports: import numpy
  from numpy.linalg import svd
  from tick.prox.base import Prox
label_desc: Use image node_id 4 for calling the ProxNuclear obj's underlying member method code with example usage: obj.value(coeffs) and returns: unknown