uvex_transients.simulation.event_catalog.EventCatalog.compute_yield_summary#
- EventCatalog.compute_yield_summary(detected: EventCatalog, exposure: ExposureCatalog, transients: dict[str, ExtragalacticTransient], confidence: float = 0.9) YieldTable[source]#
Build a per-transient-type yield summary, combining this catalog, detected, and exposure.
One row per transient type in transients, with:
total_exposure/total_exposure_fraction: ~uvex_transients.simulation.exposure_catalog.ExposureCatalog.total_effective_exposure/ ~uvex_transients.simulation.exposure_catalog.ExposureCatalog.coverage_fraction.integrated_rate: ~uvex_transients.transients.base.ExtragalacticTransient.integrated_rate (the per-steradian, per-year rate integrated over redshift).all_sky_rate: that same rate restored to the full \(4\pi\) sky (~uvex_transients.transients.base.ExtragalacticTransient.all_sky_rate), with no survey footprint applied.uvex_intrinsic_rate/uvex_intrinsic_events: the footprint-aware analogues of the previous two, derived from exposure rather than the full sky –uvex_intrinsic_eventsis exactly ~uvex_transients.simulation.exposure_catalog.ExposureCatalog.total_expected_events (\(\mu_0\) in Yield Statistics), anduvex_intrinsic_rateis that same count divided by ~uvex_transients.simulation.exposure_catalog.ExposureCatalog.total_duration.detected_events: \(k\), from compute_detection_efficiency.detection_probability: \(\hat\epsilon=k/n\) (compute_detection_efficiency).expected_detections: \(\hat\lambda=\mu_0\hat\epsilon\), Yield Statistics’s boxed yield estimator.
Every rate-derived quantity (
integrated_rate,all_sky_rate,uvex_intrinsic_rate,uvex_intrinsic_events) carries the rate-only bounds implied by each transient’s ownRATE_CIas..._lower/..._uppercolumns – these collapse to the point estimate whenRATE_CIis unset, exactly like ~uvex_transients.transients.base.ExtragalacticTransient.rate_ci itself.detection_probabilityandexpected_detectionseach carry two separate two-sided intervals rather than one combined box (Yield Statistics’s “simulation-only” vs. “rate-only” bounds, kept apart so either source of uncertainty stays inspectable on its own):..._binom_lower/..._binom_upper(Clopper-Pearson, propagated through \(\hat\lambda=\mu_0\hat\epsilon\) for expected_detections) and..._rate_lower/..._rate_upper(RATE_CI, holding \(\hat\epsilon\) fixed). detection_probability itself doesn’t depend on the rate normalization at all – it’s a ratio of Monte Carlo counts – so its..._rate_lower/..._rate_uppercolumns always equal its own point estimate; they’re included only so every row shares one column schema.- Parameters:
detected (
EventCatalog) – Forwarded to compute_detection_efficiency.exposure (
ExposureCatalog) – Supplies every footprint-aware quantity above; see the column list.transients (
dict[str,ExtragalacticTransient]) – Transient-type instances, keyed the same way as self.transient_type and exposure.transient_type. One output row per key, sorted by name.confidence (
float, optional) – Confidence level for the Clopper-Pearson binomial bounds. The default is0.9.
- Returns:
One row per transient type, sorted by name; see the column list above.
- Return type:
YieldTable- Raises:
KeyError – If exposure has no tabulated exposure for a type named in transients.