class_docstr: Nested sampler with reactive exploration strategy.
  
  Storage & resume capable, optionally MPI parallelised.
class_docstr_tok: ["Nested","sampler","with","reactive","exploration","strategy",".","Storage","&","resume","capable",",","optionally","MPI","parallelised","."]
docstr: Widen roots, but populate ahead of initial plateau.
  
  calls _widen_roots, and if there are several points with the same
  value equal to the lowest loglikelihood, widens some more until
  there are `nroots`-1 that are different to the lowest
  loglikelihood value.
  
  Parameters
  -----------
  nroots: int
      Number of root live points, after the plateau is traversed.
  
  num_warn: int
      Warn if the number of root live points reached this.
  
  num_stop: int
      Do not increasing the number of root live points beyond this limit.
docstr_tok: ["Widen","roots",",","but","populate","ahead","of","initial","plateau",".","calls","_widen_roots",",","and","if","there","are","several","points","with","the","same","value","equal","to","the","lowest","loglikelihood",",","widens","some","more","until","there","are","`","nroots","`","-1","that","are","different","to","the","lowest","loglikelihood","value",".","Parameters","--","--","--","--","--","-","nroots",":","int","Number","of","root","live","points",",","after","the","plateau","is","traversed",".","num_warn",":","int","Warn","if","the","number","of","root","live","points","reached","this",".","num_stop",":","int","Do","not","increasing","the","number","of","root","live","points","beyond","this","limit","."]
code: def _widen_roots_beyond_initial_plateau(
      self, nroots, num_warn, num_stop
  ):
      """Widen roots, but populate ahead of initial plateau.
  
      calls _widen_roots, and if there are several points with the same
      value equal to the lowest loglikelihood, widens some more until
      there are `nroots`-1 that are different to the lowest
      loglikelihood value.
  
      Parameters
      -----------
      nroots: int
          Number of root live points, after the plateau is traversed.
  
      num_warn: int
          Warn if the number of root live points reached this.
  
      num_stop: int
          Do not increasing the number of root live points beyond this limit.
  
      """
      nroots_needed = nroots
      user_has_been_warned = False
      while True:
          self._widen_roots(nroots_needed)
          Ls = np.array([node.value for node in self.root.children])
          Lmin = np.min(Ls)
          if (
              self.log
              and nroots_needed > num_warn
              and not user_has_been_warned
          ):
              self.logger.warning(
                  """Warning: The log-likelihood has a large plateau with L=%g.
  
    Probably you are returning a low value when the parameters are problematic/unphysical.
    ultranest can handle this correctly, by discarding live points with the same loglikelihood.
    (arxiv:2005.08602 arxiv:2010.13884). To mitigate running out of live points,
    the initial number of live points is increased. But now this has reached over %d points.
  
    You can avoid this making the loglikelihood increase towards where the good region is.
    For example, let's say you have two parameters where the sum must be below 1. Replace this:
  
      if params[0] + params[1] > 1:
           return -1e300
  
    with:
  
      if params[0] + params[1] > 1:
           return -1e300 * (params[0] + params[1])
  
    The current strategy will continue until %d live points are reached.
    It is safe to ignore this warning.""",
                  Lmin,
                  num_warn,
                  num_stop,
              )
              user_has_been_warned = True
  
          if nroots_needed >= num_stop:
              break
          P = (Ls == Lmin).sum()
          if 1 < P < len(Ls) and len(Ls) - P + 1 < nroots:
              # guess the number of points needed: P-1 are useless
              if self.log:
                  self.logger.debug(
                      "Found plateau of %d/%d initial points at L=%g. "
                      "Avoid this by a continuously increasing loglikelihood towards good regions.",
                      P,
                      nroots_needed,
                      Lmin,
                  )
              nroots_needed = min(num_stop, nroots_needed + (P - 1))
          else:
              break
  
imports: from __future__ import print_function, division
  import os
  import sys
  import csv
  import json
  import operator
  import time
  import warnings
  from numpy import log, exp, logaddexp
  import numpy
  from .utils import create_logger, make_run_dir, resample_equal, vol_prefactor, vectorize, listify
  from .utils import is_affine_transform, normalised_kendall_tau_distance, distributed_work_chunk_size
  from ultranest.mlfriends import MLFriends, AffineLayer, ScalingLayer, find_nearby, WrappingEllipsoid, RobustEllipsoidRegion
  from .store import HDF5PointStore, TextPointStore, NullPointStore
  from .viz import get_default_viz_callback
  from .ordertest import UniformOrderAccumulator
  from .netiter import PointPile, SingleCounter, MultiCounter, BreadthFirstIterator, TreeNode, count_tree_between, find_nodes_before, logz_sequence
  from .netiter import dump_tree, combine_results
  from .hotstart import get_auxiliary_contbox_parameterization
label_desc: Use image node_id 6 for calling the ReactiveNestedSampler obj's underlying member method code with example usage: obj._widen_roots_beyond_initial_plateau(nroots, num_warn, num_stop) without return types