autofit.LogUniformPrior#
- class LogUniformPrior[source]#
Bases:
PriorA prior with a log base 10 uniform distribution, defined between a lower limit and upper limit.
The conversion of an input unit value,
u, to a physical value,p, via the prior is as follows:\[\]For example for
prior = LogUniformPrior(lower_limit=10.0, upper_limit=1000.0), an inputprior.value_for(unit=0.5)is equal to 100.0.[Rich describe how this is done via message]
- Parameters:
Examples
prior = af.LogUniformPrior(lower_limit=0.0, upper_limit=2.0)
physical_value = prior.value_for(unit=0.2)
Methods
Return a dictionary representation of this GaussianPrior instance, including mean and sigma.
for_class_and_attribute_nameCreate a prior from the configuration for a given class and attribute.
from_dictReturns a prior from a JSON representation.
gaussian_prior_model_for_argumentsLook up this prior in an arguments dict and return the mapped value.
hasDoes this instance have an attribute which is of type cls?
instance_for_argumentsLook up this prior's value in an arguments dictionary.
The constant
-log(log(upper / lower))dropped fromlog_prior_from_value(which returns-log(value)).Returns the log prior density at a physical value, used by Emcee / Zeus / MLE searches to form a log-posterior via
log_likelihood + sum(log_priors).make_indexesname_of_classA string name for the class, with the prior suffix removed.
newReturns a copy of this prior with a new id assigned making it distinct
next_idprojectProject this prior given samples and log weights from a search.
randomA random value sampled from this prior
replacing_for_pathCreate a new model replacing the value for a given path with a new value
tree_unflattenCreate a prior from a flattened PyTree
unit_value_forCompute the unit value between 0 and 1 for the physical value.
Returns a physical value from an input unit value according to the limits of the log10 uniform prior.
Create a new log 10 uniform prior centred between two limits with sigma distance between this limits.
with_messageReturn a copy of this prior with a different message (distribution).
Attributes
component_numberfactorA callable PDF used as a factor in factor graphs
identifierlabellimitsThe (lower, upper) bounds of this prior.
lower_limit_strictWhether the support excludes the corresponding limit itself, i.e. whether the bound is
value > limitrather thanvalue >= limit.namendimHow many dimensions does this variable have?
A human-readable string summarizing this prior's parameters.
upper_limit_strict- classmethod with_limits(lower_limit, upper_limit)[source]#
Create a new log 10 uniform prior centred between two limits with sigma distance between this limits.
Note that these limits are not strict so exceptions will not be raised for values outside of the limits.
This function is typically used in prior passing, where the result of a model-fit are used to create new Gaussian priors centred on the previously estimated median PDF model.
- log_prior_from_value(value, xp=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/pyautogalaxy/envs/latest/lib/python3.12/site-packages/numpy/__init__.py'>)[source]#
Returns the log prior density at a physical value, used by Emcee / Zeus / MLE searches to form a log-posterior via
log_likelihood + sum(log_priors).For a log-uniform prior on
[lower_limit, upper_limit]the density isp(x) = 1 / (x * log(upper_limit / lower_limit)), givinglog p(x) = -log(x) - log(log(upper_limit / lower_limit)). The normalisation constant-log(log(upper_limit / lower_limit))is dropped (it is irrelevant to posterior shape), matching the convention used byUniformPrior.log_prior_from_valuewhich drops-log(b - a)to return0.0.Outside
[lower_limit, upper_limit]the density is zero, so-infis returned — on both the NumPy and JAX paths. This bound test is the only support enforcement in the search fitness path (seeUniformPrior.log_prior_from_valueand PyAutoFit#1489): for MCMC an out-of-box proposal becomes a rejected move. It also keeps the figure-of-merit finite where Emcee’s stretch move proposes a non-positive value:-logof a non-positive value isNaN, which would otherwise crash the search withValueError: Probability function returned NaN. The “double where” pattern (a safe surrogate inside thelog) ensures nologof a non-positive value is evaluated, avoiding NumPy ``RuntimeWarning``s.- Parameters:
value – The physical value of this prior’s corresponding parameter in a
NonLinearSearchsample.xp – Array-module to dispatch on (
numpyorjax.numpy). Defaultnumpy.
- log_normalisation(xp=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/pyautogalaxy/envs/latest/lib/python3.12/site-packages/numpy/__init__.py'>)[source]#
The constant
-log(log(upper / lower))dropped fromlog_prior_from_value(which returns-log(value)). SeePrior.log_normalisation.
- value_for(unit, xp=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/pyautogalaxy/envs/latest/lib/python3.12/site-packages/numpy/__init__.py'>)[source]#
Returns a physical value from an input unit value according to the limits of the log10 uniform prior.
- Parameters:
unit – A unit value between 0 and 1.
xp – Array-module to dispatch on (
numpyorjax.numpy). Defaultnumpy. The NumPy path delegates to the message stack (scipy-backed); the JAX path uses the closed-formlower * (upper / lower) ** unit.
- Returns:
The unit value mapped to a physical value according to the prior.
- Return type:
value
Examples
prior = af.LogUniformPrior(lower_limit=0.0, upper_limit=2.0)
physical_value = prior.value_for(unit=0.2)