code: def _get_nsamps_samples_n(res):
      
      try:
          # Check if the number of live points explicitly changes.
          samples_n = res.samples_n
          nsamps = len(samples_n)
      except:
          # If the number of live points is constant, compute `samples_n`.
          niter = res.niter
          nlive = res.nlive
          nsamps = len(res.logvol)
          if nsamps == niter:
              samples_n = np.ones(niter, dtype='int') * nlive
          elif nsamps == (niter + nlive):
              samples_n = np.append(np.ones(niter, dtype='int') * nlive,
                                    np.arange(1, nlive + 1)[::-1])
          else:
              raise ValueError("Final number of samples differs from number of "
                               "iterations and number of live points.")
      return nsamps, samples_n
docs: Helper function for calculating the number of samples
  
      Parameters
      ----------
      res : :class:`~dynesty.results.Results` instance
          The :class:`~dynesty.results.Results` instance taken from a previous
          nested sampling run.
  
      Returns
      -------
      nsamps: int
          The total number of samples
      samples_n: array
          Number of live points at a given iteration