diff --git a/docs/api/pixelization.rst b/docs/api/pixelization.rst index fad2102a8..c4770616e 100644 --- a/docs/api/pixelization.rst +++ b/docs/api/pixelization.rst @@ -66,6 +66,8 @@ Regularization [ag.reg] ConstantSplit Adapt AdaptSplit + AdaptPower + AdaptSplitPower Settings -------- diff --git a/test_autolens/config/priors/regularization.yaml b/test_autolens/config/priors/regularization.yaml index 732372ece..5caff013a 100644 --- a/test_autolens/config/priors/regularization.yaml +++ b/test_autolens/config/priors/regularization.yaml @@ -37,3 +37,143 @@ constant_zeorth.ConstantZeroth: width_modifier: type: Relative value: 0.5 +adapt_power.AdaptPower: + inner_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + outer_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + signal_scale: + lower_limit: 0.0 + type: Uniform + upper_limit: 1.0 + power: + type: Constant + value: 1.0 +adapt_split_power.AdaptSplitPower: + inner_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + outer_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + signal_scale: + lower_limit: 0.0 + type: Uniform + upper_limit: 1.0 + power: + type: Constant + value: 1.0 +adapt_split_zeroth_power.AdaptSplitZerothPower: + inner_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + outer_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + signal_scale: + lower_limit: 0.0 + type: Uniform + upper_limit: 1.0 + zeroth_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + zeroth_signal_scale: + lower_limit: 0.0 + type: Uniform + upper_limit: 1.0 + power: + type: Constant + value: 1.0 +matern_adapt_power_kernel.MaternAdaptPowerKernel: + inner_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + outer_coefficient: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.5 + signal_scale: + lower_limit: 0.0 + type: Uniform + upper_limit: 1.0 + scale: + limits: + lower: 0.0 + upper: inf + lower_limit: 1.0e-06 + type: LogUniform + upper_limit: 1000000.0 + width_modifier: + type: Relative + value: 0.2 + nu: + lower_limit: 0.5 + type: Uniform + upper_limit: 5.5 + power: + type: Constant + value: 1.0 diff --git a/test_autolens/test_regularization_power.py b/test_autolens/test_regularization_power.py new file mode 100644 index 000000000..50892d470 --- /dev/null +++ b/test_autolens/test_regularization_power.py @@ -0,0 +1,32 @@ +""" +Model-composition gate for the ``*Power`` regularization siblings added in PyAutoArray, through the +``al.reg`` namespace. + +Mirrors ``test_autogalaxy/test_regularization_power.py``; the prior entries this exercises live in +``test_autolens/config/priors/regularization.yaml``. +""" + +import autofit as af +import autolens as al + + +def test__power_classes_are_re_exported(): + assert al.reg.AdaptPower is not al.reg.Adapt + assert al.reg.AdaptSplitPower is not al.reg.AdaptSplit + assert al.reg.AdaptSplitZerothPower is not al.reg.AdaptSplitZeroth + assert al.reg.MaternAdaptPowerKernel is not al.reg.MaternAdaptKernel + + +def test__model_composition__power_is_a_constant_and_is_not_sampled(): + model = af.Model(al.reg.AdaptSplitPower) + + assert set(prior_tuple[0] for prior_tuple in model.prior_tuples) == { + "inner_coefficient", + "outer_coefficient", + "signal_scale", + } + assert model.instance_from_prior_medians().power == 1.0 + + +def test__model_identifier__differs_from_the_legacy_class(): + assert af.Model(al.reg.AdaptSplit).identifier != af.Model(al.reg.AdaptSplitPower).identifier