class_docstr: Vectorized slice/HARM sampler.
  
  Can revert until all previous steps have likelihoods allL above Lmin.
  Updates currentt, generation and allL, in-place.
docstr: Sample a new live point.
  
  Parameters
  ----------
  region: MLFriends object
      Region
  Lmin: float
      current log-likelihood threshold
  us: np.array((nlive, ndim))
      live points
  Ls: np.array(nlive)
      loglikelihoods live points
  transform: function
      prior transform function
  loglike: function
      loglikelihood function
  ndraw: int
      not used
  plot: bool
      not used
  tregion: bool
      not used
  log: bool
      not used
  
  Returns
  -------
  u: np.array(ndim) or None
      new point coordinates (None if not yet available)
  p: np.array(nparams) or None
      new point transformed coordinates (None if not yet available)
  L: float or None
      new point likelihood (None if not yet available)
  nc: int
docstr_tok: ["Sample","a","new","live","point",".","Parameters","--","--","--","--","--","region",":","MLFriends","object","Region","Lmin",":","float","current","log-likelihood","threshold","us",":","np.array","(","(","nlive",",","ndim",")",")","live","points","Ls",":","np.array","(","nlive",")","loglikelihoods","live","points","transform",":","function","prior","transform","function","loglike",":","function","loglikelihood","function","ndraw",":","int","not","used","plot",":","bool","not","used","tregion",":","bool","not","used","log",":","bool","not","used","Returns","--","--","--","-","u",":","np.array","(","ndim",")","or","None","new","point","coordinates","(","None","if","not","yet","available",")","p",":","np.array","(","nparams",")","or","None","new","point","transformed","coordinates","(","None","if","not","yet","available",")","L",":","float","or","None","new","point","likelihood","(","None","if","not","yet","available",")","nc",":","int"]
code: def __next__(
      self,
      region,
      Lmin,
      us,
      Ls,
      transform,
      loglike,
      ndraw=10,
      plot=False,
      tregion=None,
      log=False,
  ):
      """Sample a new live point.
  
      Parameters
      ----------
      region: MLFriends object
          Region
      Lmin: float
          current log-likelihood threshold
      us: np.array((nlive, ndim))
          live points
      Ls: np.array(nlive)
          loglikelihoods live points
      transform: function
          prior transform function
      loglike: function
          loglikelihood function
      ndraw: int
          not used
      plot: bool
          not used
      tregion: bool
          not used
      log: bool
          not used
  
      Returns
      -------
      u: np.array(ndim) or None
          new point coordinates (None if not yet available)
      p: np.array(nparams) or None
          new point transformed coordinates (None if not yet available)
      L: float or None
          new point likelihood (None if not yet available)
      nc: int
  
      """
      nlive, ndim = us.shape
      # initialize
      if len(self.allu) == 0:
          self._setup(ndim)
  
      step_back(Lmin, self.allL, self.generation, self.currentt)
  
      starting = self.generation < 0
      if starting.any():
          self.setup_start(us[Ls > Lmin], Ls[Ls > Lmin], starting)
      assert (self.generation >= 0).all(), self.generation
  
      # find those where bracket is undefined:
      mask_starting = ~np.isfinite(self.currentt)
      if mask_starting.any():
          self.setup_brackets(mask_starting, region)
  
      if self.log:
          print(str(self), "(before)")
      nc = self.advance(transform, loglike, Lmin)
      if self.log:
          print(str(self), "(after)")
  
      # harvest top individual if possible
      if self.generation[self.ringindex] == self.nsteps:
          if self.log:
              print("have a candidate")
          u, p, L = (
              self.allu[self.ringindex, self.nsteps, :].copy(),
              self.currentp[self.ringindex, :].copy(),
              self.allL[self.ringindex, self.nsteps].copy(),
          )
          assert np.isfinite(u).all(), u
          assert np.isfinite(p).all(), p
          self.generation[self.ringindex] = -1
          self.currentt[self.ringindex] = np.nan
          self.allu[self.ringindex, :, :] = np.nan
          self.allL[self.ringindex, :] = np.nan
  
          # adjust guess length
          newscale = (
              self.current_right[self.ringindex]
              - self.current_left[self.ringindex]
          ) / 2
          self.scale = self.scale * 0.9 + 0.1 * newscale
  
          self.shift()
          return u, p, L, nc
      else:
          return None, None, None, nc
  
imports: import numpy
  from ultranest.utils import submasks
  from ultranest.stepfuncs import evolve, step_back
  from ultranest.stepfuncs import generate_cube_oriented_direction, generate_cube_oriented_direction_scaled
  from ultranest.stepfuncs import generate_random_direction, generate_region_oriented_direction, generate_region_random_direction
  from ultranest.stepfuncs import generate_differential_direction, generate_mixture_random_direction
  import scipy.stats
label_desc: Use image node_id 11 for calling the PopulationSliceSampler obj's underlying member method code with example usage: obj.__next__(region, Lmin, us, Ls, transform, loglike, ndraw, plot, tregion, log) and returns: u,  p,  L,  nc, None,  None,  None,  nc