Main Fitting Interface#

run_geko_fit(output, master_cat, line, parametric, save_runs_path, num_chains, num_warmup, num_samples, source_id, field, grism_filter='F444W', delta_wave_cutoff=0.005, factor=5, wave_factor=10, model_name='Disk', config=None, manual_psf_name=None, manual_theta_rot=None, manual_pysersic_file=None, manual_grism_file=None)#

Run geko fitting without requiring a YAML config file.

Parameters:
  • output (str) – Name of output subfolder

  • master_cat (str) – Path to master catalog file

  • line (int) – Emission line wavelength in Angstroms (e.g., 6562 for H-alpha)

  • parametric (bool) – Use parametric morphology fitting

  • save_runs_path (str) – Base directory containing data files

  • num_chains (int) – Number of MCMC chains

  • num_warmup (int) – Number of warmup iterations

  • num_samples (int) – Number of MCMC samples

  • source_id (int) – Source ID number

  • field (str) – Field name: ‘GOODS-N’, ‘GOODS-N-CONGRESS’, ‘GOODS-S-FRESCO’, or ‘manual’

  • grism_filter (str, optional) – Grism filter name (default: ‘F444W’)

  • delta_wave_cutoff (float, optional) – Wavelength bin size cutoff in microns (default: 0.005)

  • factor (int, optional) – Spatial oversampling factor (default: 5)

  • wave_factor (int, optional) – Wavelength oversampling factor (default: 10)

  • model_name (str, optional) – Kinematic model type (default: ‘Disk’)

  • config (FitConfiguration, optional) – Optional configuration object to override priors

  • manual_psf_name (str, optional) – PSF filename (required if field=’manual’). Should be in save_runs_path/psfs/ directory

  • manual_theta_rot (float, optional) – Rotation angle in degrees (required if field=’manual’) Angle to rotate morphology to match grism orientation

  • manual_pysersic_file (str, optional) – PySersic results filename (required if field=’manual’ and parametric=True) Should be in save_runs_path/morph_fits/ directory

  • manual_grism_file (str, optional) – Grism spectrum filename (required if field=’manual’) Should be in save_runs_path/output/ directory

Returns:

MCMC inference results

Return type:

arviz.InferenceData

class Fit_Numpyro(obs_map, obs_error, grism_object, kin_model, inference_data, parametric, config=None)#
__init__(obs_map, obs_error, grism_object, kin_model, inference_data, parametric, config=None)#

Class to fit model to data

Parameters:
  • obs_map (array-like) – Observed 2D grism spectrum

  • obs_error (array-like) – Error map for observations

  • grism_object (Grism) – Grism dispersion object

  • kin_model (KinModels) – Kinematic model object

  • inference_data (arviz.InferenceData or None) – Previous inference results

  • parametric (bool) – Whether to use parametric morphology

  • config (FitConfiguration, optional) – Configuration object with priors and settings

run_inference(num_samples=None, num_warmup=None, high_res=False, median=True, step_size=1, adapt_step_size=True, target_accept_prob=None, max_tree_depth=None, num_chains=None, init_vals=None)#

Run MCMC inference using the NUTS sampler.

Performs Bayesian parameter estimation using Numpyro’s No-U-Turn Sampler (NUTS). MCMC settings are taken from the config object if provided, otherwise defaults are used.

Parameters:
  • num_samples (int, optional) – Number of MCMC samples to draw (default: from config or 1000)

  • num_warmup (int, optional) – Number of warmup/burn-in samples (default: from config or 500)

  • high_res (bool, optional) – Use high resolution model (default: False)

  • median (bool, optional) – Initialize from median values (default: True)

  • step_size (float, optional) – NUTS step size (default: 1 or from config)

  • adapt_step_size (bool, optional) – Adapt step size during warmup (default: True)

  • target_accept_prob (float, optional) – Target acceptance probability (default: from config or 0.8)

  • max_tree_depth (int, optional) – Maximum NUTS tree depth (default: from config or 10)

  • num_chains (int, optional) – Number of MCMC chains (default: from config or 4)

  • init_vals (dict, optional) – Initial parameter values (default: None)

Notes

Results are stored in self.mcmc and printed to console. Creates a source mask automatically using photutils segmentation.

run_inference_ns(num_samples=2000, num_warmup=2000, high_res=False, median=True, step_size=1, adapt_step_size=True, target_accept_prob=0.8, max_tree_depth=10, num_chains=5, init_vals=None)#

Run nested sampling inference (experimental).

Uses Numpyro’s NestedSampler for Bayesian inference. This is an alternative to MCMC that may be more efficient for certain problems.

Parameters:
  • num_samples (int, optional) – Number of samples to draw (default: 2000)

  • num_warmup (int, optional) – Number of warmup iterations (default: 2000)

  • high_res (bool, optional) – Use high resolution model (default: False)

  • median (bool, optional) – Initialize from median (default: True)

  • step_size (float, optional) – Step size (default: 1)

  • adapt_step_size (bool, optional) – Adapt step size (default: True)

  • target_accept_prob (float, optional) – Target acceptance probability (default: 0.8)

  • max_tree_depth (int, optional) – Maximum tree depth (default: 10)

  • num_chains (int, optional) – Number of chains (default: 5)

  • init_vals (dict, optional) – Initial values (default: None)

Notes

This method is experimental and may not work for all models. Results are stored in self.ns.

diverging_parameters(chain_number, divergence_number)#

Extract parameter values at divergent MCMC transitions.

Retrieves the parameter values for a specific divergent transition, useful for diagnosing MCMC sampling problems.

Parameters:
  • chain_number (int) – Which MCMC chain to examine

  • divergence_number (int) – Index of the divergent transition within the chain

Returns:

  • fluxes (jax.numpy.ndarray) – Flux values at divergent point

  • PA (float) – Position angle at divergent point

  • i (float) – Inclination at divergent point

  • Va (float) – Asymptotic velocity at divergent point

  • r_t (float) – Turnover radius at divergent point

  • sigma0 (float) – Velocity dispersion at divergent point

Notes

Requires self.inference_data to be set with MCMC results. Used for debugging pathological MCMC behavior.

create_mask()#

Create a source mask for the grism spectrum using photutils segmentation.

Detects sources in the observed grism spectrum and creates a mask that isolates the central source, excluding contaminating sources.

Returns:

Binary mask array (1 for source, 0 for background) with same shape as obs_map

Return type:

numpy.ndarray

Notes

Uses photutils source detection with: - 2D Gaussian smoothing kernel (sigma=3.0, size=5x5) - Background estimation on 15x15 pixel boxes - Detection threshold of 5-sigma above background - Minimum source size of 10 pixels The mask selects only the source at the central pixel position.