diff --git a/scripts/imaging/jax_likelihood/delaunay.py b/scripts/imaging/jax_likelihood/delaunay.py index 53484f1a..60fff590 100644 --- a/scripts/imaging/jax_likelihood/delaunay.py +++ b/scripts/imaging/jax_likelihood/delaunay.py @@ -353,9 +353,10 @@ ) print("PASS: jit(fit_from) round-trip matches NumPy scalar.") -nan_instance = model.instance_from_vector( - vector=np.full(model.total_free_parameters, np.nan) -) +# Construct a valid profile first, then poison the downstream lens mapping. Profile +# validation intentionally rejects concrete NaN constructor inputs before fitting. +nan_instance = model.instance_from_prior_medians() +nan_instance.galaxies.lens.mass.einstein_radius = np.nan nan_fit = fit_jit_fn(nan_instance) assert np.isnan(float(nan_fit.log_likelihood)) print("PASS: invalid Delaunay mesh reaches the raw imaging likelihood as NaN.") diff --git a/scripts/misc/aggregator/fit_imaging.py b/scripts/misc/aggregator/fit_imaging.py index 6b49df4c..cc108bbb 100644 --- a/scripts/misc/aggregator/fit_imaging.py +++ b/scripts/misc/aggregator/fit_imaging.py @@ -42,7 +42,10 @@ def aggregator_from(analysis, model, samples): result_path = path.join(conf.instance.output_path, "test_mode", database_file) clean() search = al.m.MockSearch( - samples=samples, result=al.m.MockResult(model=model, samples=samples) + samples=samples, + result=af.m.MockResult( + model=model, samples=samples, samples_summary=samples.summary() + ), ) search.paths = af.DirectoryPaths(path_prefix=database_file) search.fit(model=model, analysis=analysis) @@ -69,7 +72,17 @@ def make_model(): def make_samples(model): - parameters = [model.prior_count * [1.0], model.prior_count * [10.0]] + def parameter_list_with_physical_ell_comps(value): + parameter_list = model.prior_count * [value] + for index, path_tuple in enumerate(model.all_paths): + if "ell_comps" in path_tuple[0]: + parameter_list[index] = 0.1 + return parameter_list + + parameters = [ + parameter_list_with_physical_ell_comps(1.0), + parameter_list_with_physical_ell_comps(10.0), + ] sample_list = Sample.from_lists( model=model, parameter_lists=parameters, @@ -80,7 +93,7 @@ def make_samples(model): return al.m.MockSamples( model=model, sample_list=sample_list, - prior_means=[1.0] * model.prior_count, + prior_means=parameter_list_with_physical_ell_comps(1.0), ) diff --git a/scripts/misc/aggregator/fit_interferometer.py b/scripts/misc/aggregator/fit_interferometer.py index 9ead0dff..d585542f 100644 --- a/scripts/misc/aggregator/fit_interferometer.py +++ b/scripts/misc/aggregator/fit_interferometer.py @@ -42,7 +42,10 @@ def aggregator_from(analysis, model, samples): result_path = path.join(conf.instance.output_path, "test_mode", database_file) clean() search = al.m.MockSearch( - samples=samples, result=al.m.MockResult(model=model, samples=samples) + samples=samples, + result=af.m.MockResult( + model=model, samples=samples, samples_summary=samples.summary() + ), ) search.paths = af.DirectoryPaths(path_prefix=database_file) search.fit(model=model, analysis=analysis) @@ -69,7 +72,17 @@ def make_model(): def make_samples(model): - parameters = [model.prior_count * [1.0], model.prior_count * [10.0]] + def parameter_list_with_physical_ell_comps(value): + parameter_list = model.prior_count * [value] + for index, path_tuple in enumerate(model.all_paths): + if "ell_comps" in path_tuple[0]: + parameter_list[index] = 0.1 + return parameter_list + + parameters = [ + parameter_list_with_physical_ell_comps(1.0), + parameter_list_with_physical_ell_comps(10.0), + ] sample_list = Sample.from_lists( model=model, parameter_lists=parameters, @@ -80,7 +93,7 @@ def make_samples(model): return al.m.MockSamples( model=model, sample_list=sample_list, - prior_means=[1.0] * model.prior_count, + prior_means=parameter_list_with_physical_ell_comps(1.0), ) diff --git a/scripts/misc/aggregator/tracer.py b/scripts/misc/aggregator/tracer.py index 7bc2925d..a363fa33 100644 --- a/scripts/misc/aggregator/tracer.py +++ b/scripts/misc/aggregator/tracer.py @@ -42,7 +42,10 @@ def aggregator_from(analysis, model, samples): result_path = path.join(conf.instance.output_path, "test_mode", database_file) clean() search = al.m.MockSearch( - samples=samples, result=al.m.MockResult(model=model, samples=samples) + samples=samples, + result=af.m.MockResult( + model=model, samples=samples, samples_summary=samples.summary() + ), ) search.paths = af.DirectoryPaths(path_prefix=database_file) search.fit(model=model, analysis=analysis) @@ -69,7 +72,17 @@ def make_model(): def make_samples(model): - parameters = [model.prior_count * [1.0], model.prior_count * [10.0]] + def parameter_list_with_physical_ell_comps(value): + parameter_list = model.prior_count * [value] + for index, path_tuple in enumerate(model.all_paths): + if "ell_comps" in path_tuple[0]: + parameter_list[index] = 0.1 + return parameter_list + + parameters = [ + parameter_list_with_physical_ell_comps(1.0), + parameter_list_with_physical_ell_comps(10.0), + ] sample_list = Sample.from_lists( model=model, parameter_lists=parameters, @@ -80,7 +93,7 @@ def make_samples(model): return al.m.MockSamples( model=model, sample_list=sample_list, - prior_means=[1.0] * model.prior_count, + prior_means=parameter_list_with_physical_ell_comps(1.0), )