Coverage analysis

Per-tile and per-obsid fractional coverage of dark deposits (union of fan + blotch polygons / tile pixel area). Verbatim port of Tom Ihro’s Calculate_Coverage_v2.ipynb (cells 0–28).

Per-tile coverage


source

compute_per_tile_coverage


def compute_per_tile_coverage(
    version:str='v3.1', fan:pandas.DataFrame | None=None, blotch:pandas.DataFrame | None=None, cache:bool=True,
    cache_dir:pathlib.Path | None=None
)->DataFrame:

Per-tile fractional dark-deposit coverage.

Verbatim port of Tom Ihro’s Calculate_Coverage_v2.ipynb cells 0–20. Result has columns [obsid, tile_id, Coverage]; for v3.1 it has ~64 494 rows. Cached as parquet so the (slow) Shapely union runs once per machine.

Per-obsid summary


source

compute_per_obsid_coverage


def compute_per_obsid_coverage(
    per_tile:DataFrame, with_homogeneity:bool=True
)->DataFrame:

Aggregate per-tile coverage to per-obsid summary statistics.

Verbatim port of cells 26–28 of Calculate_Coverage_v2.ipynb: mean, median, std, skew, kurtosis (and optional Homogeneity = mean / median).