uvex_transients.surveys.base.SurveySchedule.compute_pair_count_curve#

SurveySchedule.compute_pair_count_curve(timescales: Quantity, minimum_factor: float | None = None, maximum_factor: float | None = None, start_time: Time | None = None, end_time: Time | None = None, nside: int | None = None, order: str | None = None, pairs: str = 'all') → Quantity[source]#

Compute sensitive sky area over a sequence of transient timescales.

The fast, curve-friendly counterpart to compute_pair_counts(): the (expensive, HEALPix-footprint-rasterizing) per-pixel visit times are computed once and reused for every timescale, rather than redoing that rasterization inside a loop the way an exact interval-union control-time curve would.

Each timescale still re-scans every observed pixel (via _pixel_pair_count() / _pixel_pair_count_consecutive(), selected by pairs), so cost scales as O(n_timescales * n_observed_pixels * log(visits per pixel)) – no repeated rasterization, and no O(n^2) blowup with the number of repeated full-sky passes, but also no way to get a timescale “for free” the way a precomputed, timescale-independent statistic could. If this loop itself becomes the bottleneck for very fine timescale grids on a very deep multi-pass survey, the per-pixel loop can be vectorized away too (encoding pixel id and time into one sortable key so the whole sky is searched in a single vectorized pass) – not done here since it adds real complexity that isn’t needed until it is.

Parameters:
  • timescales (Quantity) – Sequence of characteristic transient timescales.

  • minimum_factor (float, optional) – Bounds of the qualifying pair-separation window, relative to each timescale. Either may be None (the default) to use config["surveys.cadence.minimum_factor"]/ config["surveys.cadence.maximum_factor"].

  • maximum_factor (float, optional) – Bounds of the qualifying pair-separation window, relative to each timescale. Either may be None (the default) to use config["surveys.cadence.minimum_factor"]/ config["surveys.cadence.maximum_factor"].

  • start_time (Time, optional) – Optional survey interval to restrict the calculation to.

  • end_time (Time, optional) – Optional survey interval to restrict the calculation to.

  • nside (int, optional) – HEALPix resolution parameter, or None to use config["healpix.default_nside"].

  • order (str, optional) – HEALPix ordering scheme, either "nested" or "ring", or None to use config["healpix.default_order"].

  • pairs (str) – Which pairs of observations to include: "all" for every unique pair, or "consecutive" for only pairs of temporally-adjacent visits.

Returns:

Sensitive sky area (see compute_pair_counts()) for each input timescale.

Return type:

Quantity