From df23a65fdfbd2c748b1ad2786023c5913b5fd025 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Mon, 6 Apr 2026 21:06:10 +0100 Subject: [PATCH 1/2] fix: add VRAM timing notes and fix interferometer modeling bug - Add "takes about 20-30 seconds" note to all print_vram_use comments that were missing it (8 scripts) - Fix bug in interferometer/modeling.py line 477: fit=fit changed to fit=result.max_log_likelihood_fit (undefined variable) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../advanced/double_einstein_ring/modeling.py | 5 +- .../advanced/mass_stellar_dark/modeling.py | 5 +- .../imaging/features/pixelization/delaunay.py | 3 + .../imaging/features/pixelization/modeling.py | 5 +- .../features/pixelization/delaunay.py | 3 + .../features/pixelization/modeling.py | 5 +- scripts/interferometer/modeling.py | 2 +- scripts/multi/modeling.py | 5 +- scripts/path/to/model/json/model.json | 371 ++++++++++++++++++ scripts/point_source/modeling.py | 5 +- 10 files changed, 402 insertions(+), 7 deletions(-) create mode 100644 scripts/path/to/model/json/model.json diff --git a/scripts/imaging/features/advanced/double_einstein_ring/modeling.py b/scripts/imaging/features/advanced/double_einstein_ring/modeling.py index d5cdc01ea..c191e171d 100644 --- a/scripts/imaging/features/advanced/double_einstein_ring/modeling.py +++ b/scripts/imaging/features/advanced/double_einstein_ring/modeling.py @@ -265,8 +265,11 @@ images for different source planes can require all the additional data to be stored in VRAM. This will at least double the VRAM requirements compared to a single lens plane model, but often more than this. -Given VRAM use is an important consideration, we print out the estimated VRAM required for this +Given VRAM use is an important consideration, we print out the estimated VRAM required for this model-fit and advise you do this for your own double source plane lens model-fits. + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis.print_vram_use(model=model, batch_size=search.batch_size) diff --git a/scripts/imaging/features/advanced/mass_stellar_dark/modeling.py b/scripts/imaging/features/advanced/mass_stellar_dark/modeling.py index 69424c2ea..23dad442e 100644 --- a/scripts/imaging/features/advanced/mass_stellar_dark/modeling.py +++ b/scripts/imaging/features/advanced/mass_stellar_dark/modeling.py @@ -231,8 +231,11 @@ Deflection angle calculations of stellar mass models and dark matter mass models can use techniques whichs store more data in VRAM than other methods. -Given VRAM use is an important consideration, we print out the estimated VRAM required for this +Given VRAM use is an important consideration, we print out the estimated VRAM required for this model-fit and advise you do this for your own double source plane lens model-fits. + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis.print_vram_use(model=model, batch_size=search.batch_size) diff --git a/scripts/imaging/features/pixelization/delaunay.py b/scripts/imaging/features/pixelization/delaunay.py index 9de324afe..30e2ab119 100644 --- a/scripts/imaging/features/pixelization/delaunay.py +++ b/scripts/imaging/features/pixelization/delaunay.py @@ -421,6 +421,9 @@ and how it depends on image resolution, number of source pixels and batch size. This is true for the Delaunay mesh, therefore we print out the estimated VRAM required for this model-fit. + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis_1.print_vram_use(model=model_1, batch_size=search_1.batch_size) diff --git a/scripts/imaging/features/pixelization/modeling.py b/scripts/imaging/features/pixelization/modeling.py index c47afb18a..1a2ae8281 100644 --- a/scripts/imaging/features/pixelization/modeling.py +++ b/scripts/imaging/features/pixelization/modeling.py @@ -384,8 +384,11 @@ This is why the `batch_size` above is 20, lower than other examples, because reducing the batch size ensures a more modest amount of VRAM is used. If you have a GPU with more VRAM, increasing the batch size will lead to faster run times. -Given VRAM use is an important consideration, we print out the estimated VRAM required for this +Given VRAM use is an important consideration, we print out the estimated VRAM required for this model-fit and advise you do this for your own pixelization model-fits. + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis.print_vram_use(model=model, batch_size=search.batch_size) diff --git a/scripts/interferometer/features/pixelization/delaunay.py b/scripts/interferometer/features/pixelization/delaunay.py index 8b76422a9..ae0c59c65 100644 --- a/scripts/interferometer/features/pixelization/delaunay.py +++ b/scripts/interferometer/features/pixelization/delaunay.py @@ -323,6 +323,9 @@ and how it depends on image resolution, number of source pixels and batch size. This is true for the Delaunay mesh, therefore we print out the estimated VRAM required for this model-fit. + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis_1.print_vram_use(model=model_1, batch_size=search_1.batch_size) diff --git a/scripts/interferometer/features/pixelization/modeling.py b/scripts/interferometer/features/pixelization/modeling.py index ba5d9de64..f6d4531e9 100644 --- a/scripts/interferometer/features/pixelization/modeling.py +++ b/scripts/interferometer/features/pixelization/modeling.py @@ -399,8 +399,11 @@ This is because the sparse operator compresses all the visibility information into a matrix whose size depends only on the number of pixels in the real-space mask. VRAM use is therefore mostly driven by how many pixels are in the real space mask. -VRAM does scale with batch size though, and for high resoluiton datasets may require you to reduce from the value of +VRAM does scale with batch size though, and for high resoluiton datasets may require you to reduce from the value of 20 set above if your GPU does not have too much VRAM (e.g. < 4GB). + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis.print_vram_use(model=model, batch_size=search.batch_size) diff --git a/scripts/interferometer/modeling.py b/scripts/interferometer/modeling.py index 5d1771950..4903d1308 100644 --- a/scripts/interferometer/modeling.py +++ b/scripts/interferometer/modeling.py @@ -474,7 +474,7 @@ ) aplt.subplot_fit_interferometer(fit=result.max_log_likelihood_fit) -aplt.subplot_fit_dirty_images(fit=fit) +aplt.subplot_fit_dirty_images(fit=result.max_log_likelihood_fit) """ The result contains the full posterior information of our non-linear search, including all parameter samples, diff --git a/scripts/multi/modeling.py b/scripts/multi/modeling.py index 61f125ef5..a3f878419 100644 --- a/scripts/multi/modeling.py +++ b/scripts/multi/modeling.py @@ -297,8 +297,11 @@ When multiple datasets are fitted simultaneously, as in this example, VRAM usage increases with each dataset, as their data structures must all be stored in VRAM. -Given VRAM use is an important consideration, we print out the estimated VRAM required for this +Given VRAM use is an important consideration, we print out the estimated VRAM required for this model-fit and advise you do this for your own pixelization model-fits. + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ factor_graph.print_vram_use( model=factor_graph.global_prior_model, batch_size=search.batch_size diff --git a/scripts/path/to/model/json/model.json b/scripts/path/to/model/json/model.json new file mode 100644 index 000000000..4a2d5ca48 --- /dev/null +++ b/scripts/path/to/model/json/model.json @@ -0,0 +1,371 @@ +{ + "type": "collection", + "assertions": [ + { + "type": "compound", + "compound_type": "GreaterThanLessThanAssertion", + "left": { + "type": "Uniform", + "id": 142, + "lower_limit": 0.0, + "upper_limit": 30.0 + }, + "right": { + "type": "Uniform", + "id": 136, + "lower_limit": 0.0, + "upper_limit": 30.0 + } + }, + { + "type": "compound", + "compound_type": "GreaterThanLessThanAssertion", + "left": { + "type": "Uniform", + "id": 147, + "lower_limit": 0.0, + "upper_limit": 8.0 + }, + "right": 3.0 + } + ], + "arguments": { + "galaxies": { + "type": "collection", + "arguments": { + "lens": { + "class_path": "autogalaxy.galaxy.galaxy.Galaxy", + "type": "model", + "arguments": { + "redshift": { + "type": "Constant", + "value": 0.5 + }, + "bulge": { + "class_path": "autogalaxy.profiles.light.linear.sersic.Sersic", + "type": "model", + "arguments": { + "centre": { + "type": "tuple_prior", + "arguments": { + "centre_0": { + "type": "Gaussian", + "id": 138, + "mean": 0.0, + "sigma": 0.3 + }, + "centre_1": { + "type": "Gaussian", + "id": 139, + "mean": 0.0, + "sigma": 0.3 + } + } + }, + "ell_comps": { + "type": "tuple_prior", + "arguments": { + "ell_comps_0": { + "type": "TruncatedGaussian", + "id": 134, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + }, + "ell_comps_1": { + "type": "TruncatedGaussian", + "id": 135, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + } + } + }, + "effective_radius": { + "type": "Uniform", + "id": 136, + "lower_limit": 0.0, + "upper_limit": 30.0 + }, + "sersic_index": { + "type": "Constant", + "value": 4.0 + } + } + }, + "disk": { + "class_path": "autogalaxy.profiles.light.linear.exponential.Exponential", + "type": "model", + "arguments": { + "centre": { + "type": "tuple_prior", + "arguments": { + "centre_0": { + "type": "Gaussian", + "id": 138, + "mean": 0.0, + "sigma": 0.3 + }, + "centre_1": { + "type": "Gaussian", + "id": 139, + "mean": 0.0, + "sigma": 0.3 + } + } + }, + "ell_comps": { + "type": "tuple_prior", + "arguments": { + "ell_comps_0": { + "type": "TruncatedGaussian", + "id": 140, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + }, + "ell_comps_1": { + "type": "TruncatedGaussian", + "id": 141, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + } + } + }, + "effective_radius": { + "type": "Uniform", + "id": 142, + "lower_limit": 0.0, + "upper_limit": 30.0 + } + } + }, + "mass": { + "class_path": "autogalaxy.profiles.mass.total.isothermal.Isothermal", + "type": "model", + "arguments": { + "centre": { + "type": "tuple_prior", + "arguments": { + "centre_0": { + "type": "compound", + "compound_type": "SumPrior", + "left": { + "type": "Gaussian", + "id": 138, + "mean": 0.0, + "sigma": 0.3 + }, + "right": 0.1 + }, + "centre_1": { + "type": "compound", + "compound_type": "SumPrior", + "left": { + "type": "Gaussian", + "id": 139, + "mean": 0.0, + "sigma": 0.3 + }, + "right": 0.1 + } + } + }, + "ell_comps": { + "type": "tuple_prior", + "arguments": { + "ell_comps_0": { + "type": "TruncatedGaussian", + "id": 145, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + }, + "ell_comps_1": { + "type": "TruncatedGaussian", + "id": 146, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + } + } + }, + "einstein_radius": { + "type": "Uniform", + "id": 147, + "lower_limit": 0.0, + "upper_limit": 8.0 + } + } + }, + "shear": { + "class_path": "autogalaxy.profiles.mass.sheets.external_shear.ExternalShear", + "type": "model", + "arguments": { + "gamma_1": { + "type": "Uniform", + "id": 148, + "lower_limit": -0.3, + "upper_limit": 0.3 + }, + "gamma_2": { + "type": "Uniform", + "id": 149, + "lower_limit": -0.3, + "upper_limit": 0.3 + } + } + } + } + }, + "source": { + "class_path": "autogalaxy.galaxy.galaxy.Galaxy", + "type": "model", + "arguments": { + "redshift": { + "type": "Constant", + "value": 1.0 + }, + "bulge": { + "class_path": "autogalaxy.profiles.light.linear.sersic_core.SersicCore", + "type": "model", + "arguments": { + "centre": { + "type": "tuple_prior", + "arguments": { + "centre_0": { + "type": "Gaussian", + "id": 150, + "mean": 0.0, + "sigma": 0.3 + }, + "centre_1": { + "type": "Gaussian", + "id": 151, + "mean": 0.0, + "sigma": 0.3 + } + } + }, + "ell_comps": { + "type": "tuple_prior", + "arguments": { + "ell_comps_0": { + "type": "TruncatedGaussian", + "id": 152, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + }, + "ell_comps_1": { + "type": "TruncatedGaussian", + "id": 153, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + } + } + }, + "effective_radius": { + "type": "Uniform", + "id": 154, + "lower_limit": 0.0, + "upper_limit": 30.0 + }, + "sersic_index": { + "type": "Uniform", + "id": 155, + "lower_limit": 0.8, + "upper_limit": 5.0 + }, + "radius_break": { + "type": "Constant", + "value": 0.025 + }, + "gamma": { + "type": "Constant", + "value": 0.25 + }, + "alpha": { + "type": "Constant", + "value": 3.0 + } + } + }, + "disk": { + "class_path": "autogalaxy.profiles.light.linear.exponential_core.ExponentialCore", + "type": "model", + "arguments": { + "centre": { + "type": "tuple_prior", + "arguments": { + "centre_0": { + "type": "Gaussian", + "id": 156, + "mean": 0.0, + "sigma": 0.3 + }, + "centre_1": { + "type": "Gaussian", + "id": 157, + "mean": 0.0, + "sigma": 0.3 + } + } + }, + "ell_comps": { + "type": "tuple_prior", + "arguments": { + "ell_comps_0": { + "type": "TruncatedGaussian", + "id": 158, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + }, + "ell_comps_1": { + "type": "TruncatedGaussian", + "id": 159, + "mean": 0.0, + "sigma": 0.3, + "lower_limit": -1.0, + "upper_limit": 1.0 + } + } + }, + "effective_radius": { + "type": "Uniform", + "id": 160, + "lower_limit": 0.0, + "upper_limit": 30.0 + }, + "radius_break": { + "type": "Constant", + "value": 0.025 + }, + "gamma": { + "type": "Constant", + "value": 0.25 + }, + "alpha": { + "type": "Constant", + "value": 3.0 + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/scripts/point_source/modeling.py b/scripts/point_source/modeling.py index f0231f8fc..031e77d07 100644 --- a/scripts/point_source/modeling.py +++ b/scripts/point_source/modeling.py @@ -368,8 +368,11 @@ chosen batch size is comfortably below their GPU’s total VRAM. For a point solver with an image-plane chi squared and one set of positions with a single plane VRAM use is relatively -low (~0.1GB). For models with more planes and datasets with more multiple images it can be much higher (> 1GB going +low (~0.1GB). For models with more planes and datasets with more multiple images it can be much higher (> 1GB going beyond 10GB). + +The method below prints the VRAM usage estimate for the analysis and model with the specified batch size, +it takes about 20-30 seconds to run so you may want to comment it out once you are familiar with your GPU's VRAM limits. """ analysis.print_vram_use(model=model, batch_size=search.batch_size) From 758a6126068e76ac49475b616e0a142b0bf7acf7 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Mon, 6 Apr 2026 21:06:28 +0100 Subject: [PATCH 2/2] fix: remove stray test artifact scripts/path/ Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/path/to/model/json/model.json | 371 -------------------------- 1 file changed, 371 deletions(-) delete mode 100644 scripts/path/to/model/json/model.json diff --git a/scripts/path/to/model/json/model.json b/scripts/path/to/model/json/model.json deleted file mode 100644 index 4a2d5ca48..000000000 --- a/scripts/path/to/model/json/model.json +++ /dev/null @@ -1,371 +0,0 @@ -{ - "type": "collection", - "assertions": [ - { - "type": "compound", - "compound_type": "GreaterThanLessThanAssertion", - "left": { - "type": "Uniform", - "id": 142, - "lower_limit": 0.0, - "upper_limit": 30.0 - }, - "right": { - "type": "Uniform", - "id": 136, - "lower_limit": 0.0, - "upper_limit": 30.0 - } - }, - { - "type": "compound", - "compound_type": "GreaterThanLessThanAssertion", - "left": { - "type": "Uniform", - "id": 147, - "lower_limit": 0.0, - "upper_limit": 8.0 - }, - "right": 3.0 - } - ], - "arguments": { - "galaxies": { - "type": "collection", - "arguments": { - "lens": { - "class_path": "autogalaxy.galaxy.galaxy.Galaxy", - "type": "model", - "arguments": { - "redshift": { - "type": "Constant", - "value": 0.5 - }, - "bulge": { - "class_path": "autogalaxy.profiles.light.linear.sersic.Sersic", - "type": "model", - "arguments": { - "centre": { - "type": "tuple_prior", - "arguments": { - "centre_0": { - "type": "Gaussian", - "id": 138, - "mean": 0.0, - "sigma": 0.3 - }, - "centre_1": { - "type": "Gaussian", - "id": 139, - "mean": 0.0, - "sigma": 0.3 - } - } - }, - "ell_comps": { - "type": "tuple_prior", - "arguments": { - "ell_comps_0": { - "type": "TruncatedGaussian", - "id": 134, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - }, - "ell_comps_1": { - "type": "TruncatedGaussian", - "id": 135, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - } - } - }, - "effective_radius": { - "type": "Uniform", - "id": 136, - "lower_limit": 0.0, - "upper_limit": 30.0 - }, - "sersic_index": { - "type": "Constant", - "value": 4.0 - } - } - }, - "disk": { - "class_path": "autogalaxy.profiles.light.linear.exponential.Exponential", - "type": "model", - "arguments": { - "centre": { - "type": "tuple_prior", - "arguments": { - "centre_0": { - "type": "Gaussian", - "id": 138, - "mean": 0.0, - "sigma": 0.3 - }, - "centre_1": { - "type": "Gaussian", - "id": 139, - "mean": 0.0, - "sigma": 0.3 - } - } - }, - "ell_comps": { - "type": "tuple_prior", - "arguments": { - "ell_comps_0": { - "type": "TruncatedGaussian", - "id": 140, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - }, - "ell_comps_1": { - "type": "TruncatedGaussian", - "id": 141, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - } - } - }, - "effective_radius": { - "type": "Uniform", - "id": 142, - "lower_limit": 0.0, - "upper_limit": 30.0 - } - } - }, - "mass": { - "class_path": "autogalaxy.profiles.mass.total.isothermal.Isothermal", - "type": "model", - "arguments": { - "centre": { - "type": "tuple_prior", - "arguments": { - "centre_0": { - "type": "compound", - "compound_type": "SumPrior", - "left": { - "type": "Gaussian", - "id": 138, - "mean": 0.0, - "sigma": 0.3 - }, - "right": 0.1 - }, - "centre_1": { - "type": "compound", - "compound_type": "SumPrior", - "left": { - "type": "Gaussian", - "id": 139, - "mean": 0.0, - "sigma": 0.3 - }, - "right": 0.1 - } - } - }, - "ell_comps": { - "type": "tuple_prior", - "arguments": { - "ell_comps_0": { - "type": "TruncatedGaussian", - "id": 145, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - }, - "ell_comps_1": { - "type": "TruncatedGaussian", - "id": 146, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - } - } - }, - "einstein_radius": { - "type": "Uniform", - "id": 147, - "lower_limit": 0.0, - "upper_limit": 8.0 - } - } - }, - "shear": { - "class_path": "autogalaxy.profiles.mass.sheets.external_shear.ExternalShear", - "type": "model", - "arguments": { - "gamma_1": { - "type": "Uniform", - "id": 148, - "lower_limit": -0.3, - "upper_limit": 0.3 - }, - "gamma_2": { - "type": "Uniform", - "id": 149, - "lower_limit": -0.3, - "upper_limit": 0.3 - } - } - } - } - }, - "source": { - "class_path": "autogalaxy.galaxy.galaxy.Galaxy", - "type": "model", - "arguments": { - "redshift": { - "type": "Constant", - "value": 1.0 - }, - "bulge": { - "class_path": "autogalaxy.profiles.light.linear.sersic_core.SersicCore", - "type": "model", - "arguments": { - "centre": { - "type": "tuple_prior", - "arguments": { - "centre_0": { - "type": "Gaussian", - "id": 150, - "mean": 0.0, - "sigma": 0.3 - }, - "centre_1": { - "type": "Gaussian", - "id": 151, - "mean": 0.0, - "sigma": 0.3 - } - } - }, - "ell_comps": { - "type": "tuple_prior", - "arguments": { - "ell_comps_0": { - "type": "TruncatedGaussian", - "id": 152, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - }, - "ell_comps_1": { - "type": "TruncatedGaussian", - "id": 153, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - } - } - }, - "effective_radius": { - "type": "Uniform", - "id": 154, - "lower_limit": 0.0, - "upper_limit": 30.0 - }, - "sersic_index": { - "type": "Uniform", - "id": 155, - "lower_limit": 0.8, - "upper_limit": 5.0 - }, - "radius_break": { - "type": "Constant", - "value": 0.025 - }, - "gamma": { - "type": "Constant", - "value": 0.25 - }, - "alpha": { - "type": "Constant", - "value": 3.0 - } - } - }, - "disk": { - "class_path": "autogalaxy.profiles.light.linear.exponential_core.ExponentialCore", - "type": "model", - "arguments": { - "centre": { - "type": "tuple_prior", - "arguments": { - "centre_0": { - "type": "Gaussian", - "id": 156, - "mean": 0.0, - "sigma": 0.3 - }, - "centre_1": { - "type": "Gaussian", - "id": 157, - "mean": 0.0, - "sigma": 0.3 - } - } - }, - "ell_comps": { - "type": "tuple_prior", - "arguments": { - "ell_comps_0": { - "type": "TruncatedGaussian", - "id": 158, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - }, - "ell_comps_1": { - "type": "TruncatedGaussian", - "id": 159, - "mean": 0.0, - "sigma": 0.3, - "lower_limit": -1.0, - "upper_limit": 1.0 - } - } - }, - "effective_radius": { - "type": "Uniform", - "id": 160, - "lower_limit": 0.0, - "upper_limit": 30.0 - }, - "radius_break": { - "type": "Constant", - "value": 0.025 - }, - "gamma": { - "type": "Constant", - "value": 0.25 - }, - "alpha": { - "type": "Constant", - "value": 3.0 - } - } - } - } - } - } - } - } -} \ No newline at end of file