code: def get_nsing(self,epsilon=1.0e-4):
          
          mx = self.xtqx.shape[0]
          nsing = mx - np.searchsorted(
                  np.sort((self.xtqx.s.x / self.xtqx.s.x.max())[:,0]),epsilon)
          if nsing == mx:
              self.logger.warn("optimal nsing=npar")
              nsing = None
          return nsing
docs: get the number of solution space dimensions given
          a ratio between the largest and smallest singular values
  
          Parameters
          ----------
          epsilon: float
              singular value ratio
  
          Returns
          -------
          nsing : float
              number of singular components above the epsilon ratio threshold
          
          Note
          -----
              If nsing == nadj_par, then None is returned