# Coverage analysis


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Per-tile coverage

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/coverage.py#L54"
target="_blank" style="float:right; font-size:smaller">source</a>

### compute_per_tile_coverage

``` python

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

------------------------------------------------------------------------

<a
href="https://github.com/michaelaye/p4tools/blob/main/p4tools/coverage.py#L99"
target="_blank" style="float:right; font-size:smaller">source</a>

### compute_per_obsid_coverage

``` python

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).
