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
code: def _get_matrix(self, coeffs):
      if self.n_rows is None:
          raise ValueError(
              "'n_rows' parameter must be set before, either "
              "in constructor or manually"
          )
  
      range = self.range
      if range is None:
          start, end = 0, coeffs.shape[0]
      else:
          start, end = range
      n_rows = self.n_rows
      if (end - start) % n_rows:
          raise ValueError(
              "``end``-``start`` must be a multiple of " "``n_rows``"
          )
      n_cols = int((end - start) / n_rows)
      x = coeffs[start:end].copy().reshape((n_rows, n_cols))
      return x
  
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 2 for calling the ProxNuclear obj's underlying member method code with example usage: obj._get_matrix(coeffs) and returns: x