name (str) – name attributed to the Voronoi tessellation, for display and storing
purposes
vmin (Union[Number, np.ndarray]) – minimum/maximum value bounding each dimension
vmax (Union[Number, np.ndarray]) – minimum/maximum value bounding each dimension
perturb_std (Union[Number, np.ndarray]) – standard deviation of the Gaussians used to randomly perturb the Voronoi
sites in each dimension.
n_dimensions (Number, optional) – number of dimensions. None (default) results in a trans-dimensional
discretization, with the dimensionality of the parameter space allowed
to vary in the range n_dimensions_min-n_dimensions_max
n_dimensions_min (Number, optional) – minimum and maximum number of dimensions, by default 1 and 10. These
parameters are ignored if n_dimensions is not None, i.e. if the
discretization is not trans-dimensional
n_dimensions_max (Number, optional) – minimum and maximum number of dimensions, by default 1 and 10. These
parameters are ignored if n_dimensions is not None, i.e. if the
discretization is not trans-dimensional
n_dimensions_init_range (Number, optional) –
percentage of the range n_dimensions_min - n_dimensions_max used to
initialize the number of dimensions (0.3. by default). For example, if
n_dimensions_min = 1, n_dimensions_max = 10, and
n_dimensions_init_range = 0.5,
the maximum number of dimensions at the initialization is:
parameters (List[Prior], optional) – a list of free parameters, by default None
birth_from ({"prior", "neighbour"}, optional) – whether to initialize the free parameters associated with the newborn
Voronoi cell by randomly drawing from their prior or by perturbing the
value found in the nearest Voronoi cell (default).
the list of perturbation functions allowed in the parameter space linked to
the Voronoi discretization. Each function takes in a state (see State)
and returns a new state along with the corresponding partial acceptance
probability,
a list of perturbation weights, corresponding to each of the
perturbation_funcs() that determines the probability of each of them
to be chosen during each step
The weights are not normalized and have the following default values:
creates a new Voronoi cell, initializes all free parameters
associated with it, and returns the pertubed state along with the
log of the corresponding partial acceptance probability,
where \(k\) denotes the number of Voronoi cells, each entry of the
vector \({\bf c}\) corresponds to the position of a Voronoi site,
and each \(i\)th free parameter \({\bf v}\) has the same
dimensionality as \({\bf c}\).
Following [1], \(p({\bf c} \mid k) = \frac{k! \left(N - k \right)!}{N!}\). If we then
assume that \(p(k) = \frac{1}{\Delta k}\), where \(\Delta k = k_{max} - k_{min}\),
the prior ratio reads
where \(p(v_i^{k+1})\) denotes the prior probability of the newly
born \(i\)th parameter, which may be dependent on \({\bf c}\).
The proposal ratio reads
where \(q_{v_i}^{k+1}\) denotes the proposal probability for the
newly born \(i\)th parameter in the new dimension. It is easy to
show that, in the case of a birth from neighbor [1] or a birth from
prior [2] (see birth_from), \(\lvert \mathbf{J} \rvert = 1\)
and \(\alpha_{p} = \frac{p({\bf m'})}{p({\bf m})} \frac{q({\bf m} \mid {\bf m'})}{q({\bf m'} \mid {\bf m})}\).
It follows that
In the case of a birth from neighbor, \(q_{v_i}^{k+1} =
\frac{1}{\theta \sqrt{2 \pi}} \exp \lbrace -\frac{\left( v_i^{k+1} - v_i \right)^2}{2\theta^2} \rbrace\),
where the newly born value, \(v_i^{k+1}\), is generated by perturbing
the original value, \(v_i\), of the \(i\)th parameter. This is
achieved through a random deviate from the normal distribution
\(\mathcal{N}(v_i, \theta)\), with \(\theta\) denoting the
standard deviation of the Gaussian used to carry out the perturbation
(see, for example, bayesbay.prior.UniformPrior.perturb_std) .
The partial acceptance probability is then computed numerically.
compute Voronoi cell extents from the Voronoi sites. Voronoi-cell
boundaries are first drawn at the midpoint between consecutive Voronoi
nuclei. The extent is then derived from the distance between consecutive
boundaries.
Parameters:
voronoi_sites (np.ndarray of shape (n,)) – Voronoi-site positions. These should be greater or equal to zero
lb (float) – Lower and upper bounds used in the calculation of Voronoi-cell
extents. None values for lb or ub denote an unbounded cell.
The extent of an unbounded cell is set to fill_value.
ub (float) – Lower and upper bounds used in the calculation of Voronoi-cell
extents. None values for lb or ub denote an unbounded cell.
The extent of an unbounded cell is set to fill_value.
fill_value (float) – Value attributed to unbounded Voronoi cells
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
lb_tessellation (Number) – the lower boundary of the 1D tessellation, used to calculate the
interface positions when input_type is ‘extents’. Ignored otherwise.
It is straightforward to show that this equals the reciprocal of
the partial acceptance probability obtained in the case of a birth
perturbation (see birth()), i.e.,
get the standard deviation of the Gaussian used to perturb
the parameter at birth, which may be dependent on the position in the
discretization domain
Parameters:
position (Union[Number, np.ndarray], optional) – the position in the discretization domain at which the standard
deviation of the Gaussian used to perturb the parameter at birth
is returned. Default is None
Returns:
standard deviation of the Gaussian used to perturb the parameter at birth,
possibly at the specified position
plot a 2D density histogram of the Voronoi tessellation
Parameters:
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
samples_param_values (ndarray) – a 2D numpy array where each row contains the parameter values
associated with each Voronoi discretization found
in samples_voronoi_cell_extents at the same row index
position_bins (int or np.ndarray, optional) – the position bins or their number, default to 100
param_value_bins (int or np.ndarray, optional) – the parameter value bins or their number, default to 100
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
Returns:
density (ndarray, shape(nx, ny)) – The bi-dimensional histogram of samples x and y. Values in x are
histogrammed along the first dimension and values in y are histogrammed
along the second dimension
X (ndarray, shape(nx+1,)) – The bin edges along the first dimension.
Y (ndarray, shape(ny+1,)) – The bin edges along the second dimension.
Examples
frombayesbay.discretizationimportVoronoi1D# define and run the Bayesian inversion...# plotresults=inversion.get_results()samples_voronoi_sites=results["my_voronoi.discretization"]samples_param_values=results["my_voronoi.my_param_value"]density,X,Y=Voronoi1D.get_tessellation_density(samples_voronoi_sites,samples_param_values)
get the mean, median, std and percentiles of the given ensemble
Parameters:
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
samples_param_values (list) – a list of parameter values to draw statistics from
interp_positions (np.ndarray) – points to interpolate
percentiles (tuple, optional) – percentiles to calculate, by default (10, 90)
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
Returns:
a dictionary with these keys: “mean”, “median”, “std” and “percentile”
interpolates the values of a parameter associated with the given
Voronoi tessellation onto the specified positions
Parameters:
voronoi_cells (np.ndarray) – either Voronoi-cell extents or Voronoi-site positions (see
input_type)
param_values (np.ndarray) – the physical parameter value associated with each Voronoi cell
interp_positions (np.ndarray) – the positions at which the parameter values will be returned
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
Returns:
the physical parameter values associated with interp_positions
BayesBay implements the grid trick, which calculates the prior
probability of a Voronoi discretization through the combinatorial
formula \({N \choose k}^{-1}\), with k denoting the number of
Voronoi sites and N the number of possible positions allowed for the
sites [3].
plot the 1D histogram of Voronoi-interface positions
Parameters:
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
bins (int, optional) – number of histogram bins, by default 100
ax (matplotlib.axes.Axes, optional) – an optional user-provided ax, by default None
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
swap_xy_axes (bool) – if True (default), the x axis is swapped with the y axis so as to display
the parameter value associated with each Voronoi cell on the x axis
lb_tessellation (Number) – the lower boundary of the 1D tessellation, used to calculate the
interface positions when input_type is ‘extents’. Ignored otherwise.
kwargs (dict, optional) – additional keyword arguments to pass to ax.bar
plot multiple 1D Earth models based on sampled parameters.
Parameters:
voronoi_cells (list) – either Voronoi-cell extents or Voronoi-site positions (see
input_type)
param_values (ndarray) – parameter values associated with each Voronoi cell
ax (Axes, optional) – an optional Axes object to plot on
bounds (tuple, optional) – lower and upper boundaries within which the tessellation will be
displayed. Default is (0, None). When the upper boundary is None
(default), this is determined by the maximum value in voronoi_cells
swap_xy_axes (bool) – if True (default), the x axis is swapped with the y axis so as to display
the parameter value associated with each Voronoi cell on the x axis
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
kwargs (dict, optional) – additional keyword arguments to pass to ax.step
plot a 2D density histogram of the Voronoi tessellation
Parameters:
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
samples_param_values (ndarray) – a 2D numpy array where each row contains the parameter values
associated with each Voronoi discretization found
in samples_voronoi_cell_extents at the same row index
position_bins (int or np.ndarray, optional) – the position bins or their number, default to 100
param_value_bins (int or np.ndarray, optional) – the parameter value bins or their number, default to 100
ax (Axes, optional) – an optional Axes object to plot on
swap_xy_axes (bool) – if True (default), the x axis is swapped with the y axis so as to display
the parameter value associated with each Voronoi cell on the x axis
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
kwargs (dict, optional) – Additional keyword arguments to pass to ax.hist2d
Returns:
ax (Axes) – The Axes object containing the 2D histogram
cbar (Colorbar) – The Colorbar object associated with the 2D histogram
Examples
frombayesbay.discretizationimportVoronoi1D# define and run the Bayesian inversion...# plotresults=inversion.get_results()samples_voronoi_sites=results["my_voronoi.discretization"]samples_param_values=results["my_voronoi.my_param_value"]ax=Voronoi1D.plot_tessellation_density(samples_voronoi_sites,samples_param_values)
plot the mean, median, std and percentiles from the given samples
Parameters:
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
samples_param_values (list) – a list of parameter values to draw statistics from
interp_positions (_type_) – points to interpolate
percentiles (tuple, optional) – percentiles to calculate, by default (10, 90)
ax (matplotlib.axes.Axes, optional) – an optional user-provided ax, by default None
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
swap_xy_axes (bool) – if True (default), the x axis is swapped with the y axis so as to display
the parameter value associated with each Voronoi cell on the x axis
plot multiple 1D Earth models based on sampled parameters.
Parameters:
samples_voronoi_cells (list) – either a list of Voronoi-cell extents or of Voronoi-site positions
(see input_type)
samples_param_values (ndarray) – a 2D numpy array where each row contains the parameter values
associated with each Voronoi discretization found
in samples_voronoi_cell_extents at the same row index
ax (Axes, optional) – an optional Axes object to plot on
bounds (tuple, optional) – lower and upper boundaries within which the tessellation will be
displayed. Default is (0, None). When the upper boundary is None
(default), this is determined by the maximum value in voronoi_cells
swap_xy_axes (bool) – if True (default), the x axis is swapped with the y axis so as to display
the parameter value associated with each Voronoi cell on the x axis
input_type (str, {'nuclei', 'extents'}) – argument determining whether each entry of voronoi_cells should be
interpreted as a Voronoi-site position ('nuclei') or as the
extent of the Voronoi cell ('extents')
kwargs (dict, optional) – additional keyword arguments to pass to ax.step
initialize_func (Callable[["Prior", np.ndarray], np.ndarray]) – The function to use for initialization. This function should take a
Prior instance and optionally an array of positions as input
arguments, and produce an array of values as output.
Examples
defmy_init(param:bb.prior.Prior,position:np.ndarray)->np.ndarray:print("This is my custom init!")returnnp.ones(len(position))my_param.set_custom_initialize(my_init)