smpy.Config

class smpy.Config(config_dict=None)[source]

Manage configuration dictionaries for SMPy mass mapping analysis.

Handle loading, merging, and validating configuration dictionaries from YAML files and user parameters. All configurations use consistent nested structure for clean architecture and reliable error handling.

Parameters:

config_dict (dict, optional) – Configuration dictionary. If None, creates empty config.

Notes

The Config class uses a consistent nested configuration structure:

  • General settings: config['general'] - Input/output, coordinate system, analysis settings

  • Method-specific: config['methods'][method_name] - Parameters for each mapping method

  • Plotting settings: config['plotting'] - Visualization parameters

  • SNR settings: config['snr'] - Signal-to-noise map generation parameters

Configuration access follows the fail-fast principle:

  • Required parameters use direct access: config['section']['parameter']

  • Optional parameters use .get(): config['section'].get('parameter', default)

  • Missing required config raises immediate KeyError for clear debugging

Examples

Load default configuration for Kaiser-Squires:

>>> config = Config.from_defaults('kaiser_squires')
>>> config.show_config()

Load existing user configuration:

>>> config = Config.from_file('my_config.yaml')
>>> config.show_config(section='general')

Access method-specific parameters:

>>> cfg_dict = config.to_dict()
>>> smoothing = cfg_dict['methods']['kaiser_squires']['smoothing']

Save current configuration:

>>> config.save_config('output_config.yaml')

Update configuration programmatically:

>>> config.update_from_kwargs(
...     data='catalog.fits',
...     coord_system='radec',
...     pixel_scale=0.168
... )
__init__(config_dict=None)[source]

Initialize Config with optional configuration dictionary.

Parameters:

config_dict (dict, optional) – Configuration dictionary. If None, creates empty config.

Methods

__init__([config_dict])

Initialize Config with optional configuration dictionary.

from_defaults([method])

Load default configuration for specified method.

from_file(path)

Load configuration from YAML file.

save_config(path)

Save current configuration to YAML file.

show_config([section])

Print current configuration in YAML format.

to_dict()

Return configuration as dictionary.

update_from_kwargs(**kwargs)

Update configuration from keyword arguments.

validate()

Validate configuration for required parameters.

validate_file_existence()

Validate that input files exist on disk.

__init__(config_dict=None)[source]

Initialize Config with optional configuration dictionary.

Parameters:

config_dict (dict, optional) – Configuration dictionary. If None, creates empty config.

classmethod from_file(path)[source]

Load configuration from YAML file.

Parameters:

path (str or pathlib.Path) – Path to YAML configuration file.

Returns:

config – Configuration instance loaded from file.

Return type:

Config

classmethod from_defaults(method='kaiser_squires')[source]

Load default configuration for specified method.

Load configuration from the default.yaml file and return the nested structure as-is. This provides consistent configuration structure regardless of loading method.

Parameters:

method (str, optional) – Method name (‘kaiser_squires’, ‘aperture_mass’, or ‘ks_plus’). Default is ‘kaiser_squires’.

Returns:

config – Configuration instance with default settings in nested structure.

Return type:

Config

Raises:

Notes

Returns the full nested configuration structure:

  • General settings: config['general']

  • Method-specific: config['methods'][method_name]

  • Plotting settings: config['plotting']

  • SNR settings: config['snr']

Examples

Load Kaiser-Squires defaults:

>>> config = Config.from_defaults('kaiser_squires')
>>> smoothing = config.to_dict()['methods']['kaiser_squires']['smoothing']
>>> print(smoothing['type'])
gaussian

Load KS+ defaults:

>>> config = Config.from_defaults('ks_plus')
>>> ks_config = config.to_dict()['methods']['ks_plus']
>>> print(ks_config['inpainting_iterations'])
100
update_from_kwargs(**kwargs)[source]

Update configuration from keyword arguments.

This method maps simple keyword arguments to the nested configuration structure expected by SMPy.

Parameters:

**kwargs – Keyword arguments to convert to config structure

validate()[source]

Validate configuration for required parameters.

Expects nested configuration structure only.

Raises:

ValueError – If required parameters are missing or invalid

validate_file_existence()[source]

Validate that input files exist on disk.

Expects nested configuration structure only.

Raises:

FileNotFoundError – If input file does not exist

to_dict()[source]

Return configuration as dictionary.

Returns:

config – Configuration dictionary

Return type:

dict

show_config(section=None)[source]

Print current configuration in YAML format.

Parameters:

section (str, optional) – Show only specific section (‘general’, ‘plotting’, ‘snr’, ‘methods’). If None, shows entire configuration.

save_config(path)[source]

Save current configuration to YAML file.

Parameters:

path (str or pathlib.Path) – Path to save configuration file