uvex_transients.simulation.core#

Monte Carlo sampling of transient populations against a survey schedule.

SurveySimulator does exactly one job: given a collection of transient types, a ~uvex_transients.surveys.base.SurveySchedule, and a root seed, sample a Monte Carlo realization of every registered transient type into an EventCatalog (SurveySimulator.generate_events()). Real per-event synthetic photometry lives one level down, on ~uvex_transients.simulation.event.Event (simulate_photometry()) – it’s too expensive to run over a whole freshly-sampled population, which is typically dominated by events far too faint to ever matter. Two progressively more expensive screening steps narrow the catalog down first: filter_by_limiting_magnitude never touches the schedule at all (only “could this event, at its brightest, ever clear a fixed magnitude limit” over a shared per-type phase grid); filter_by_snr does consult the schedule – “is this event, at any observation the schedule actually made of it, ever detected above a given SNR” – batched across many events at once the same way Event.simulate_photometry batches across one event’s own observations.

Functions

cut(name)

Mark a SurveySimulator method as a named, registrable screening cut.

Classes

SurveySimulator(survey_schedule[, ...])

Samples transient populations against a survey schedule.