shine.config¶
Configuration handling with Pydantic models.
Parses YAML configuration files and validates all parameters. Distribution
parameters (Normal, LogNormal, Uniform) are automatically treated as latent
variables for Bayesian inference. The InferenceConfig supports three
inference methods (NUTS, MAP, VI) with method-specific config blocks
(NUTSConfig, MAPConfig, VIConfig).
config
¶
DistributionConfig
¶
Bases: BaseModel
Configuration for probability distributions used as priors.
Supports Normal, LogNormal, and Uniform distributions with appropriate parameters.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Distribution type (e.g., 'Normal', 'LogNormal', 'Uniform'). |
mean |
Optional[float]
|
Mean parameter for Normal/LogNormal distributions. |
sigma |
Optional[float]
|
Standard deviation for Normal/LogNormal distributions. |
min |
Optional[float]
|
Lower bound for Uniform distributions. |
max |
Optional[float]
|
Upper bound for Uniform distributions. |
validate_sigma_positive(v)
classmethod
¶
Validate that sigma is positive when provided.
Source code in shine/config.py
validate_distribution_params()
¶
Validate distribution type has required parameters.
Source code in shine/config.py
NoiseConfig
¶
Bases: BaseModel
Configuration for noise properties in observations.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Noise distribution type (currently only 'Gaussian' is supported). |
sigma |
float
|
Standard deviation of the Gaussian noise. |
validate_sigma_positive(v)
classmethod
¶
Validate that noise sigma is positive.
ImageConfig
¶
Bases: BaseModel
Configuration for image properties and rendering parameters.
Attributes:
| Name | Type | Description |
|---|---|---|
pixel_scale |
float
|
Physical size of one pixel in arcseconds. |
size_x |
int
|
Image width in pixels. |
size_y |
int
|
Image height in pixels. |
n_objects |
int
|
Number of galaxy objects to simulate/infer (default 1). |
noise |
NoiseConfig
|
Noise configuration for the observation. |
fft_size |
int
|
FFT size for JAX-GalSim rendering, must be a power of 2 (default 128). |
validate_pixel_scale_positive(v)
classmethod
¶
Validate that pixel scale is positive.
validate_dimensions_positive(v)
classmethod
¶
Validate that image dimensions are positive.
validate_n_objects_positive(v)
classmethod
¶
Validate that number of objects is positive.
validate_fft_size(v)
classmethod
¶
Validate that fft_size is a positive power of 2.
Source code in shine/config.py
PSFConfig
¶
Bases: BaseModel
Configuration for Point Spread Function (PSF) models.
Supports Gaussian and Moffat profiles.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
PSF model type ('Gaussian' or 'Moffat'). |
sigma |
float
|
Width parameter for the PSF in arcseconds. |
beta |
Optional[float]
|
Moffat beta parameter (only used for Moffat PSF, default 2.5). |
ShearComponentConfig
¶
Bases: BaseModel
Configuration for individual shear components (g1 or g2).
Allows specification of shear components as either fixed values or distributions.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
Optional[str]
|
Distribution type (optional, None for fixed values). |
mean |
Optional[float]
|
Mean value for the shear component (default 0.0). |
sigma |
Optional[float]
|
Standard deviation for the shear component distribution (default 0.05). |
ShearConfig
¶
Bases: BaseModel
Configuration for gravitational shear parameters.
Defines the shear as two components (g1, g2) which can be either fixed values or distributions for Bayesian inference.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Shear parameterization type (e.g., 'G1G2' for reduced shear). |
g1 |
Union[float, DistributionConfig]
|
First shear component (fixed value or distribution). |
g2 |
Union[float, DistributionConfig]
|
Second shear component (fixed value or distribution). |
EllipticityConfig
¶
Bases: BaseModel
Configuration for intrinsic galaxy ellipticity.
Defines the intrinsic ellipticity of galaxies before shearing, parameterized as two components (e1, e2).
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Ellipticity parameterization type (e.g., 'E1E2'). |
e1 |
Union[float, DistributionConfig]
|
First ellipticity component (fixed value or distribution). |
e2 |
Union[float, DistributionConfig]
|
Second ellipticity component (fixed value or distribution). |
PositionConfig
¶
Bases: BaseModel
Configuration for galaxy position priors.
Defines the prior distribution over galaxy positions in the image. Values less than 1 are treated as fractions of image size, values >= 1 as pixels.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Distribution type for positions (default 'Uniform'). |
x_min |
Optional[float]
|
Minimum x position (fraction if < 1, pixels if >= 1). |
x_max |
Optional[float]
|
Maximum x position (fraction if < 1, pixels if >= 1). |
y_min |
Optional[float]
|
Minimum y position (fraction if < 1, pixels if >= 1). |
y_max |
Optional[float]
|
Maximum y position (fraction if < 1, pixels if >= 1). |
validate_position_bounds()
¶
Validate that position bounds are consistent.
Source code in shine/config.py
GalaxyConfig
¶
Bases: BaseModel
Configuration for galaxy morphology and properties.
Attributes:
| Name | Type | Description |
|---|---|---|
type |
str
|
Galaxy profile type (e.g., 'Exponential', 'Sersic'). |
n |
Optional[Union[float, DistributionConfig]]
|
Sersic index (optional, not used for Exponential profiles). |
flux |
Union[float, DistributionConfig]
|
Total flux of the galaxy (fixed value or distribution). |
half_light_radius |
Union[float, DistributionConfig]
|
Half-light radius in arcseconds (fixed value or distribution). |
ellipticity |
Optional[EllipticityConfig]
|
Intrinsic ellipticity configuration (optional). |
shear |
ShearConfig
|
Gravitational shear configuration. |
position |
Optional[PositionConfig]
|
Position prior configuration (optional). |
MAPConfig
¶
Bases: BaseModel
Configuration for Maximum A Posteriori (MAP) initialization.
Attributes:
| Name | Type | Description |
|---|---|---|
enabled |
bool
|
Whether MAP initialization is enabled (default False). |
num_steps |
int
|
Number of optimization steps for MAP estimation (default 1000). |
learning_rate |
float
|
Learning rate for MAP optimization (default 1e-2). |
NUTSConfig
¶
Bases: BaseModel
Configuration for NUTS/MCMC inference.
Attributes:
| Name | Type | Description |
|---|---|---|
warmup |
int
|
Number of warmup/burn-in steps for MCMC (default 500). |
samples |
int
|
Number of posterior samples to draw (default 1000). |
chains |
int
|
Number of independent MCMC chains to run (default 1). |
dense_mass |
bool
|
Whether to use dense mass matrix in NUTS (default False). |
map_init |
Optional[MAPConfig]
|
Optional MAP initialization before NUTS. |
VIConfig
¶
Bases: BaseModel
Configuration for Variational Inference.
Attributes:
| Name | Type | Description |
|---|---|---|
num_steps |
int
|
Number of SVI optimization steps (default 5000). |
learning_rate |
float
|
Learning rate for SVI optimizer (default 1e-3). |
num_samples |
int
|
Number of posterior samples to draw from fitted guide (default 1000). |
InferenceConfig
¶
Bases: BaseModel
Configuration for Bayesian inference settings.
Supports three inference methods: - "nuts": NUTS/MCMC sampling (default), optionally with MAP initialization. - "map": MAP point estimation only. - "vi": Variational Inference with AutoNormal guide.
Each method reads its own config block; the others are ignored. When a method's config block is None, defaults are applied.
Attributes:
| Name | Type | Description |
|---|---|---|
method |
Literal['nuts', 'map', 'vi']
|
Inference method ("nuts", "map", or "vi"). |
nuts_config |
Optional[NUTSConfig]
|
Configuration for NUTS/MCMC (used when method="nuts"). |
map_config |
Optional[MAPConfig]
|
Configuration for MAP estimation (used when method="map"). |
vi_config |
Optional[VIConfig]
|
Configuration for Variational Inference (used when method="vi"). |
rng_seed |
int
|
Random number generator seed for reproducibility (default 0). |
validate_rng_seed_non_negative(v)
classmethod
¶
Validate that RNG seed is non-negative.
ShineConfig
¶
Bases: BaseModel
Top-level configuration for SHINE inference pipeline.
Attributes:
| Name | Type | Description |
|---|---|---|
image |
ImageConfig
|
Image and rendering configuration. |
psf |
PSFConfig
|
Point Spread Function configuration. |
gal |
GalaxyConfig
|
Galaxy morphology and properties configuration. |
inference |
InferenceConfig
|
Bayesian inference settings (default factory creates default config). |
data_path |
Optional[str]
|
Path to observational data file (optional, None for synthetic data). |
output_path |
str
|
Directory path for saving results (default 'results'). |
ConfigHandler
¶
Handler for loading and validating SHINE configuration files.
load(path)
staticmethod
¶
Load and validate configuration from YAML file.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
str
|
Path to the YAML configuration file. |
required |
Returns:
| Type | Description |
|---|---|
ShineConfig
|
Validated ShineConfig object. |
Raises:
| Type | Description |
|---|---|
FileNotFoundError
|
If config file does not exist. |
YAMLError
|
If YAML parsing fails. |
ValueError
|
If configuration validation fails. |