#!/usr/bin/env python3
"""Generate expected repeated-detection counts for the published teaching example."""
import csv
from pathlib import Path

HERE = Path(__file__).resolve().parent
TOTAL_SITES = 100
OCCUPIED_FRACTION = 0.4
PER_VISIT_DETECTION = 0.5
MAX_VISITS = 10
OCCUPIED_SITES = TOTAL_SITES * OCCUPIED_FRACTION

with (HERE / 'wildlife-detection.csv').open('w', newline='', encoding='utf-8') as stream:
    writer = csv.writer(stream)
    writer.writerow(('visits', 'sites_assumed_occupied', 'per_visit_detection_probability',
                     'expected_sites_detected', 'expected_occupied_sites_missed'))
    for visits in range(1, MAX_VISITS + 1):
        fraction_detected = 1 - (1 - PER_VISIT_DETECTION) ** visits
        detected = OCCUPIED_SITES * fraction_detected
        writer.writerow((visits, f'{OCCUPIED_SITES:g}', f'{PER_VISIT_DETECTION:g}',
                         f'{detected:.10g}', f'{OCCUPIED_SITES - detected:.10g}'))

print(f'Generated {MAX_VISITS} deterministic expectation rows in {HERE / "wildlife-detection.csv"}.')
