Commit 8214dc7d authored by Gaetano Scandariato's avatar Gaetano Scandariato
Browse files

refactor of group 5 (configuration and parsing) started

parent ae6d6fec
Loading
Loading
Loading
Loading
Loading
+15 −0
Changes for PyAETNA/sampling/config/parser/__init__.py: 15 added lines, 0 removed lines.
Original line number Diff line number Diff line
"""
parser/__init__.py \u2014 Top-level configuration parsing for PyAETNA.

This package exposes :func:`parse_config`, the single entry point for
converting a raw YAML configuration dictionary into the structured parameter
dictionaries used by the sampling engine.  Individual subsections are
delegated to the sibling modules:

* :mod:`.detrending`  \u2014 normalisation, polynomial, Fourier, EIV
* :mod:`.gp`          \u2014 Gaussian Process detrending
* :mod:`.planets`     \u2014 transit, RV, and TTV parameters
* :mod:`.star`        \u2014 stellar properties and RM effect
* :mod:`.scoping`     \u2014 scope keyword parsing and parameter expansion
* :mod:`.prior_refs`  \u2014 ``@name`` reference resolution
"""
import warnings

import jax.numpy as jnp
+11 −2
Changes for PyAETNA/sampling/config/parser/detrending.py: 11 added lines, 2 removed lines.
Original line number Diff line number Diff line
"""
detrending.py — Detrending configuration parsers for PyAETNA.

This module provides functions to parse detrending-related subsections of the
YAML configuration: baseline normalisation, polynomial and Fourier series
corrections, and Errors-in-Variables (EIV) linear detrending.
"""
import numpy as np
from ...utils import _safe_eval_math
from .prior_refs import is_resolved_prior_reference, resolve_config_value
@@ -205,6 +212,7 @@ def parse_fourier(detrending, plModel, n_instruments, visit_ids, instrument_ids,
                n_instruments, f'{fourier_name}.c{harmonic}'
            )
            coeff_scopes_dict[harmonic] = coeff_scope
            hybrid_all = frozenset()  # accumulate across sin and cos coefficients
            for sc in ['s', 'c']:
                base_name = f'{fourier_name}_c{harmonic}_{sc}'
                hybrid = _expand_detrend_coeff(
@@ -214,8 +222,9 @@ def parse_fourier(detrending, plModel, n_instruments, visit_ids, instrument_ids,
                    plModel.instrument_names,
                    global_name_override=tied_name
                )
            if hybrid:
                coeff_hybrid_insts_dict[harmonic] = hybrid
                hybrid_all = hybrid_all | hybrid
            if hybrid_all:
                coeff_hybrid_insts_dict[harmonic] = hybrid_all

        fourier_config = {
            'name': fourier_name,
+7 −0
Changes for PyAETNA/sampling/config/parser/gp.py: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
"""
gp.py — Gaussian Process detrending configuration parser for PyAETNA.

This module provides :func:`parse_gp`, which reads the ``detrending.GP``
subsection of the YAML configuration and builds per-instrument kernel
specifications consumed by the sampling engine.
"""
from ...utils import _get_default_param_order
from .prior_refs import is_resolved_prior_reference, resolve_config_value
from .scoping import _SCOPE_KEYWORDS, _parse_scoped_param
+8 −0
Changes for PyAETNA/sampling/config/parser/planets.py: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
"""
planets.py — Planet parameter configuration parser for PyAETNA.

This module provides :func:`parse_planets`, which reads all ``planet_*``
sections of the YAML configuration and registers transit, RV, and TTV
parameters in ``free_params`` / ``fixed_params``.  It also performs TTV
coverage analysis and emits warnings when transit epochs lack data coverage.
"""
import math as _math
import numpy as np
import warnings
+11 −0
Changes for PyAETNA/sampling/config/parser/prior_refs.py: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
"""
prior_refs.py — Named prior reference resolution for PyAETNA configuration.

This module handles the ``@name`` reference syntax that allows the same prior
specification to be shared across multiple configuration fields.  The public
entry points are :func:`load_named_priors` (reads the top-level ``priors:``
block) and :func:`resolve_config_value` (substitutes ``@name`` tokens in any
configuration value).
"""
import re

from .. import priors


_PRIOR_REF_RE = re.compile(r'^@([A-Za-z_][A-Za-z0-9_]*)$')
# NOTE: _SCOPE_KEYWORDS is intentionally duplicated from scoping.py to avoid
# a circular import (scoping.py already imports from this module).
_SCOPE_KEYWORDS = frozenset(('global', 'per_instrument', 'per_visit'))


Loading