:py:mod:`pimf.sampling.sampling`
================================

.. py:module:: pimf.sampling.sampling

.. autodoc2-docstring:: pimf.sampling.sampling
   :parser: myst
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`IMFSample <pimf.sampling.sampling.IMFSample>`
     - .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample
          :parser: myst
          :summary:
   * - :py:obj:`IMFSampleList <pimf.sampling.sampling.IMFSampleList>`
     - .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList
          :parser: myst
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`draw_samples <pimf.sampling.sampling.draw_samples>`
     - .. autodoc2-docstring:: pimf.sampling.sampling.draw_samples
          :parser: myst
          :summary:
   * - :py:obj:`optimal_sampling <pimf.sampling.sampling.optimal_sampling>`
     - .. autodoc2-docstring:: pimf.sampling.sampling.optimal_sampling
          :parser: myst
          :summary:
   * - :py:obj:`smith2021_sampling <pimf.sampling.sampling.smith2021_sampling>`
     - .. autodoc2-docstring:: pimf.sampling.sampling.smith2021_sampling
          :parser: myst
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`rng <pimf.sampling.sampling.rng>`
     - .. autodoc2-docstring:: pimf.sampling.sampling.rng
          :parser: myst
          :summary:

API
~~~

.. py:data:: rng
   :canonical: pimf.sampling.sampling.rng
   :value: 'default_rng(...)'

   .. autodoc2-docstring:: pimf.sampling.sampling.rng
      :parser: myst

.. py:class:: IMFSample(masses, target_mass, stop_method)
   :canonical: pimf.sampling.sampling.IMFSample

   .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.__init__
      :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.sampling.sampling.IMFSample.__str__

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.__str__
         :parser: myst

   .. py:method:: add_number_of_supernovae(imf, mass_cutoff=8)
      :canonical: pimf.sampling.sampling.IMFSample.add_number_of_supernovae

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.add_number_of_supernovae
         :parser: myst

   .. py:method:: add_number_of_black_holes(imf, mass_cutoff_lower=25, mass_cutoff_higher=100)
      :canonical: pimf.sampling.sampling.IMFSample.add_number_of_black_holes

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.add_number_of_black_holes
         :parser: myst

   .. py:method:: add_interpolated_quantity(mass_grid, quantity_grid, imf, name, interp_kwargs={}, imf_extrapolate=False, Mmin=None, Mmax=None)
      :canonical: pimf.sampling.sampling.IMFSample.add_interpolated_quantity

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.add_interpolated_quantity
         :parser: myst

   .. py:method:: add_interpolated_quantity_time_dependant(mass_grid, quantity_grid, imf, name, interp_kwargs={}, imf_extrapolate=False, Mmin=None, Mmax=None)
      :canonical: pimf.sampling.sampling.IMFSample.add_interpolated_quantity_time_dependant

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.add_interpolated_quantity_time_dependant
         :parser: myst

   .. py:method:: add_quantity(function, imf_averaged_quantity, name)
      :canonical: pimf.sampling.sampling.IMFSample.add_quantity

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.add_quantity
         :parser: myst

   .. py:method:: save(filename)
      :canonical: pimf.sampling.sampling.IMFSample.save
      :abstractmethod:

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.save
         :parser: myst

   .. py:method:: load(filename, i=None)
      :canonical: pimf.sampling.sampling.IMFSample.load
      :classmethod:

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSample.load
         :parser: myst

.. py:class:: IMFSampleList(sample_list)
   :canonical: pimf.sampling.sampling.IMFSampleList

   .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.__init__
      :parser: myst

   .. py:method:: add_total_mass(imf)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_total_mass

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_total_mass
         :parser: myst

   .. py:method:: add_most_massive_star(imf_max=100)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_most_massive_star

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_most_massive_star
         :parser: myst

   .. py:method:: add_number_of_supernovae(imf, mass_cutoff=8)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_number_of_supernovae

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_number_of_supernovae
         :parser: myst

   .. py:method:: add_number_of_black_holes(imf, mass_cutoff_lower=25, mass_cutoff_higher=100)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_number_of_black_holes

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_number_of_black_holes
         :parser: myst

   .. py:method:: add_interpolated_quantity(mass_grid, quantity_grid, imf, name, interp_kwargs={}, imf_extrapolate=False, Mmin=None, Mmax=None)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_interpolated_quantity

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_interpolated_quantity
         :parser: myst

   .. py:method:: add_interpolated_quantity_time_dependant(mass_grid, quantity_grid, imf, name, interp_kwargs={}, imf_extrapolate=False, Mmin=None, Mmax=None)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_interpolated_quantity_time_dependant

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_interpolated_quantity_time_dependant
         :parser: myst

   .. py:method:: add_quantity(function, imf_averaged_quantity, name)
      :canonical: pimf.sampling.sampling.IMFSampleList.add_quantity

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.add_quantity
         :parser: myst

   .. py:method:: quantile(name, quantiles=[0.1, 0.5, 0.9], residual=False, ignore_nans=False)
      :canonical: pimf.sampling.sampling.IMFSampleList.quantile

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.quantile
         :parser: myst

   .. py:method:: save(filename)
      :canonical: pimf.sampling.sampling.IMFSampleList.save

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.save
         :parser: myst

   .. py:method:: load(filename)
      :canonical: pimf.sampling.sampling.IMFSampleList.load
      :classmethod:

      .. autodoc2-docstring:: pimf.sampling.sampling.IMFSampleList.load
         :parser: myst

.. py:function:: draw_samples(imf, stop_method='below', target_mass=None, full_output=False, rescale=False, rng=rng)
   :canonical: pimf.sampling.sampling.draw_samples

   .. autodoc2-docstring:: pimf.sampling.sampling.draw_samples
      :parser: myst

.. py:function:: optimal_sampling(imf, target_mass=None, Mmax=100, full_output=False)
   :canonical: pimf.sampling.sampling.optimal_sampling

   .. autodoc2-docstring:: pimf.sampling.sampling.optimal_sampling
      :parser: myst

.. py:function:: smith2021_sampling(imf, Nsamples, Mtarget=None)
   :canonical: pimf.sampling.sampling.smith2021_sampling

   .. autodoc2-docstring:: pimf.sampling.sampling.smith2021_sampling
      :parser: myst
