# Python
__pycache__/
*.pyc
*.pyo
*.egg-info/
.venv/
venv/
env/

# Data subfolders ? only the 6 required files at data/ root are committed
data/raw/
data/processed/
data/labels/
data/environmental/
data/*.xlsx
data/brian_plate_aware_control_sample.csv
data/solar_reflection_results_*.csv
data/spectral_nuclear_crossref_*.csv
data/README.md

# Results ? only committed outputs are a curated subset (to be added in next step)
results/**
!results/combined_threshold_results_wls.csv
!results/shadow_deficit_covariate_adjusted.csv
!results/nuclear_validation_us_only_5cov.csv
!results/compact_substructures.csv
!results/compact_substructures_summary.csv
!results/shadow_deficit_deciles/
!results/nuclear_permutation_deciles/

# ML pipeline outputs ? regenerated by reproduce.py, not committed
# results/ml_pipeline_red_allcandidates/  # handled by specific excludes below

# Large binary files (belong in GitHub Releases, not the repo)
*.xlsb
*.parquet
*.joblib
*.7z
*.tar

# Logs and scratch
*.log
reproduce_run.log
backup/
*_BACKUP_*/
*_ORIGINAL*
*_BEFORE_*

# OS cruft
.DS_Store
Thumbs.db
desktop.ini

# Editor
.vscode/
.idea/

# Local secrets
.env
*.token
*_credentials.json

# Keep small summary files, ignore the 27 MB xlsb and 54 MB csv

results/ml_pipeline_red_allcandidates/*

!results/ml_pipeline_red_allcandidates/training_report.json

!results/ml_pipeline_red_allcandidates/scored_catalog_summary.json
