cogwheel.gw_prior.spin.CartesianUniformDiskInplaneSpinsIsotropicInclinationPrior

class cogwheel.gw_prior.spin.CartesianUniformDiskInplaneSpinsIsotropicInclinationPrior(**kwargs)

Bases: Prior

Similar to UniformDiskInplaneSpinsIsotropicInclinationPrior except it uses Cartesian rather than polar coordinates. It might behave better near the origin (i.e. aligned spins) as it naturally enforces the density to be azimuth-independent there.

The variables are defined with the following meaning:

  • (u1, v1) cartesian ≡ (sqrt(cums1r_s1z), phi_jl_hat) polar

  • (u2, v2) cartesian ≡ (sqrt(cums2r_s2z), phi12) polar

u, v pairs live in the disk u^2+v^2 < 1. These are in turn mapped to squares (x1, y1) and (x2, y2) via 2-squircular mappings.

Methods

generate_random_samples

Sample the prior using rejection sampling.

get_fast_sampled_params

Return a list of parameter names that map to given "fast" standard parameters.

get_init_dict

Return dictionary with keyword arguments to __init__.

get_module_name

Name of the module that defines the instance's class.

init_parameters

Return parameters accepted by the class constructor.

inverse_transform

standard_params to sampled_params.

inverse_transform_samples

Add columns in-place for self.sampled_params to samples.

ln_jacobian_determinant

Natural log Jacobian determinant of the inverse transform.

lnprior

Log prior density in the space of sampled parameters.

lnprior_and_transform

Return log prior and standard parameters.

reinstantiate

Return a new instance of the class, possibly updating init_kwargs.

standard_lnprior

Log prior density in standard coordinates.

to_json

Write class instance to json file.

transform

sampled_params to standard_params.

transform_samples

Add columns in-place for self.standard_params to samples.

unfold_apply

Return a function that unfolds its parameters and applies func to each unfolding.

Attributes

conditioned_on

folded_params

folded_reflected_params

folded_shifted_params

max_lnprior

Maximum log prior density, useful for rejection sampling.

periodic_params

range_dic

reflective_params

sampled_params

standard_params

subclass_registry

generate_random_samples(n_samples, seed=None, return_lnz=False)

Sample the prior using rejection sampling.

This is more efficient for more uniform priors.

Parameters:
n_samplesint

How many samples to generate.

seed

Passed to numpy.default_rng, for reproducibility.

Returns:
samplespd.DataFrame

Columns are .sampled_params + .standard_params, and rows are samples distributed according to the prior.

lnz, dlnzfloat, float

Log of the integral of the prior over the bounds, and estimate of the 1-sigma uncertainty. Only returned if return_lnz is set to True. Useful for estimating the normalization constant of the prior. Note: This differs from the lnz that nested samplers (e.g. PyMultiNest or Nautilus) would compute, in that it has the phase-space volume differential applied. I.e. if lnprior == 0, lnz == log(prod(self.cubesize)) while nested samplers would return lnz == 0.

classmethod get_fast_sampled_params(fast_standard_params)

Return a list of parameter names that map to given “fast” standard parameters.

Useful for sampling fast-slow parameters. Updating fast sampling parameters is guaranteed to only change fast standard parameters.

get_init_dict(**kwargs)

Return dictionary with keyword arguments to __init__.

Only works if the class stores its init parameters as attributes with the same names. Otherwise, the subclass should override this method.

Parameters:
**kwargs

Allows to manually override some keys. The remaining ones will be read from the instance’s attributes. All keywords must be in the __init__ signature. It’s mostly here to facilitate overriding by subclasses.

get_module_name()

Name of the module that defines the instance’s class.

classmethod init_parameters(include_optional=True)

Return parameters accepted by the class constructor.

The parameters are sorted by parameter kind (i.e. positional arguments first, keyword arguments last). The self parameter is excluded.

Parameters:
include_optionalbool

Whether to include parameters with defaults in the returned list.

Returns:
list of inspect.Parameter objects
inverse_transform(iota, s1x_n, s1y_n, s2x_n, s2y_n, s1z, s2z, m1, m2, f_ref)

standard_params to sampled_params.

inverse_transform_samples(samples: DataFrame)

Add columns in-place for self.sampled_params to samples.

Parameters:
samplespandas.Dataframe

Must include columns for .standard_params and .conditioned_on.

Raises:
ValueError

If samples.index is not a simple range.

ln_jacobian_determinant(iota, s1x_n, s1y_n, s2x_n, s2y_n, s1z, s2z, m1, m2, f_ref)

Natural log Jacobian determinant of the inverse transform.

Returns:
floatlog|∂{sampled_params} / ∂{standard_params}|
lnprior(costheta_jn, x1, y1, x2, y2, s1z, s2z, m1, m2, f_ref)

Log prior density in the space of sampled parameters.

lnprior_and_transform(*par_vals, **par_dic)

Return log prior and standard parameters.

The reason for this function is that for CombinedPrior it is already necessary to evaluate self.transform() in order to evaluate self.lnprior(). CombinedPrior overwrites this function so the user can get both lnprior and transform without evaluating transform twice.

Returns:
float

Log prior, output of .lnprior.

dict

Standard parameters, output of .transform.

property max_lnprior

Maximum log prior density, useful for rejection sampling.

reinstantiate(**new_init_kwargs)

Return a new instance of the class, possibly updating init_kwargs.

Values not passed will be taken from the current instance.

standard_lnprior(**parameters)

Log prior density in standard coordinates.

Parameters:
**parameters

Values for .standard_params and .conditioned_on parameters.

to_json(dirname, basename=None, *, dir_permissions=493, file_permissions=420, overwrite=False)

Write class instance to json file.

It can then be loaded with read_json.

transform(costheta_jn, x1, y1, x2, y2, s1z, s2z, m1, m2, f_ref)

sampled_params to standard_params.

transform_samples(samples: DataFrame)

Add columns in-place for self.standard_params to samples.

Parameters:
samplespandas.Dataframe

Must include columns for .sampled_params and .conditioned_on.

Raises:
ValueError

If samples.index is not a simple range.

unfold_apply(func, otypes=(<class 'float'>, ))

Return a function that unfolds its parameters and applies func to each unfolding.

The returned function returns a list of length 2**n_folds.

Parameters:
funccallable

A python function or method.

otypesstr or list of dtypes

Output type, passed to np.vectorize. You can pass None to decide automatically, but then an extra function call will be made.

Returns:
callable

Unfolding function.