redback.simulate_transients.SimulateTransientWithCadence

class redback.simulate_transients.SimulateTransientWithCadence(model, parameters, cadence_config, model_kwargs=None, snr_threshold=5, noise_type='limiting_mag', seed=1234, apply_snr_cut=True, observation_mode='optical', **kwargs)[source]

Bases: object

Simulate transient with specified observation cadence and SNR-based cuts

This class bridges the gap between SimulateGenericTransient (too simple) and SimulateOpticalTransient (requires full pointing database).

Supports: - Optical observations (bands, magnitudes) - Radio observations (frequencies, flux densities) - X-ray observations (frequencies, flux densities)

Perfect for: - Using PopulationSynthesizer parameters - Survey planning without full pointing database - Testing different cadence strategies - Simple SNR-based detection modeling - Multi-wavelength follow-up campaigns

__init__(model, parameters, cadence_config, model_kwargs=None, snr_threshold=5, noise_type='limiting_mag', seed=1234, apply_snr_cut=True, observation_mode='optical', **kwargs)[source]

Initialize transient simulation with cadence

Parameters:
  • model – String corresponding to redback model or callable function

  • parameters – Dictionary of parameters describing transient Can be from PopulationSynthesizer.generate_population() Must include ‘t0_mjd_transient’ or ‘t0’ for explosion time

  • cadence_config

    Dictionary specifying observation cadence

    For OPTICAL (observation_mode=’optical’):
    Required keys:

    ’bands’: list of filter names (e.g., [‘g’, ‘r’, ‘i’]) ‘cadence_days’: float or dict, days between observations ‘duration_days’: float, total observation duration ‘limiting_mags’: dict, 5-sigma limiting magnitudes per band

    Optional keys:

    ’start_offset_days’: float, days after t0 to start observing ‘band_sequence’: list, observation sequence if alternating

    For RADIO/X-RAY (observation_mode=’radio’ or ‘xray’):
    Required keys:

    ’frequencies’: list/array of frequencies in Hz ‘cadence_days’: float or dict, days between observations ‘duration_days’: float, total observation duration ‘sensitivity’: dict or float, 5-sigma sensitivity in Jy or erg/cm^2/s

    If dict: {freq1: sens1, freq2: sens2} If float: same for all frequencies

    Optional keys:

    ’start_offset_days’: float, days after t0 to start observing ‘frequency_sequence’: list, observation sequence if alternating

  • model_kwargs – Additional kwargs for model

  • snr_threshold – SNR threshold for detection (default: 5)

  • noise_type – How to calculate noise For optical: ‘limiting_mag’, ‘gaussian’, ‘gaussianmodel’ For radio/X-ray: ‘sensitivity’, ‘gaussian’, ‘gaussianmodel’

  • seed – Random seed for reproducibility

  • apply_snr_cut – Whether to mark non-detections (SNR < threshold)

  • observation_mode – ‘optical’, ‘radio’, or ‘xray’ (default: ‘optical’)

  • kwargs – Additional arguments

__call__(**kwargs)

Call self as a function.

Methods

__init__(model, parameters, cadence_config)

Initialize transient simulation with cadence

save_transient(name)

Save transient observations to CSV

Attributes

detected_observations

Return only detected observations

property detected_observations

Return only detected observations

save_transient(name)[source]

Save transient observations to CSV

Parameters:

name – Name for output files