From d8471f8ca551360e814eb9f3c4637d63e10e07f1 Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Sat, 28 Feb 2026 11:55:08 -0500 Subject: [PATCH] chore: superclean compliance pass - Migrate .wiki/ to .github/wiki/ (GCI standard for public repos) - Add _Sidebar.md for GitHub Wiki navigation - Update wiki-sync.yml to reference .github/wiki/ path - Remove .markdownlintignore (covered by .vscode/settings.json) - Migrate .allow-ai-terms to ALLOW_AI_TERMS_REPOS in pre-commit hook - Expand .gitignore with full IDE and AI agent directory list - Update README project structure reference --- .allow-ai-terms | 4 -- {.wiki => .github/wiki}/Architecture.md | 0 {.wiki => .github/wiki}/Data-Collection.md | 0 {.wiki => .github/wiki}/Data-Sources.md | 0 {.wiki => .github/wiki}/Data.md | 0 {.wiki => .github/wiki}/Home.md | 0 {.wiki => .github/wiki}/ML-Crunching.md | 0 {.wiki => .github/wiki}/Research-Notes.md | 0 {.wiki => .github/wiki}/Research.md | 0 .github/wiki/_Sidebar.md | 20 +++++++ .github/workflows/wiki-sync.yml | 9 ++-- .gitignore | 17 ++++++ .markdownlintignore | 4 -- README.md | 62 ++++++++++++---------- 14 files changed, 77 insertions(+), 39 deletions(-) delete mode 100644 .allow-ai-terms rename {.wiki => .github/wiki}/Architecture.md (100%) rename {.wiki => .github/wiki}/Data-Collection.md (100%) rename {.wiki => .github/wiki}/Data-Sources.md (100%) rename {.wiki => .github/wiki}/Data.md (100%) rename {.wiki => .github/wiki}/Home.md (100%) rename {.wiki => .github/wiki}/ML-Crunching.md (100%) rename {.wiki => .github/wiki}/Research-Notes.md (100%) rename {.wiki => .github/wiki}/Research.md (100%) create mode 100644 .github/wiki/_Sidebar.md delete mode 100644 .markdownlintignore diff --git a/.allow-ai-terms b/.allow-ai-terms deleted file mode 100644 index 21ab19e..0000000 --- a/.allow-ai-terms +++ /dev/null @@ -1,4 +0,0 @@ -# .allow-ai-terms -# Disables the AI-attribution pre-commit hook for this repo. -# .markdownlintignore and .vscode/settings.json reference ".claude/**" as a -# directory path to exclude from lint checks — not as AI attribution. diff --git a/.wiki/Architecture.md b/.github/wiki/Architecture.md similarity index 100% rename from .wiki/Architecture.md rename to .github/wiki/Architecture.md diff --git a/.wiki/Data-Collection.md b/.github/wiki/Data-Collection.md similarity index 100% rename from .wiki/Data-Collection.md rename to .github/wiki/Data-Collection.md diff --git a/.wiki/Data-Sources.md b/.github/wiki/Data-Sources.md similarity index 100% rename from .wiki/Data-Sources.md rename to .github/wiki/Data-Sources.md diff --git a/.wiki/Data.md b/.github/wiki/Data.md similarity index 100% rename from .wiki/Data.md rename to .github/wiki/Data.md diff --git a/.wiki/Home.md b/.github/wiki/Home.md similarity index 100% rename from .wiki/Home.md rename to .github/wiki/Home.md diff --git a/.wiki/ML-Crunching.md b/.github/wiki/ML-Crunching.md similarity index 100% rename from .wiki/ML-Crunching.md rename to .github/wiki/ML-Crunching.md diff --git a/.wiki/Research-Notes.md b/.github/wiki/Research-Notes.md similarity index 100% rename from .wiki/Research-Notes.md rename to .github/wiki/Research-Notes.md diff --git a/.wiki/Research.md b/.github/wiki/Research.md similarity index 100% rename from .wiki/Research.md rename to .github/wiki/Research.md diff --git a/.github/wiki/_Sidebar.md b/.github/wiki/_Sidebar.md new file mode 100644 index 0000000..392f6ca --- /dev/null +++ b/.github/wiki/_Sidebar.md @@ -0,0 +1,20 @@ +**pray-calc-ml** + +- [Home](Home) + +**Dataset** +- [Data](Data) +- [Data Sources](Data-Sources) +- [Data Collection](Data-Collection) + +**Analysis** +- [Architecture](Architecture) +- [ML Crunching](ML-Crunching) + +**Research** +- [Research](Research) +- [Research Notes](Research-Notes) + +--- + +*Part of [acamarata](https://github.com/acamarata)* diff --git a/.github/workflows/wiki-sync.yml b/.github/workflows/wiki-sync.yml index 1a57b04..66f1037 100644 --- a/.github/workflows/wiki-sync.yml +++ b/.github/workflows/wiki-sync.yml @@ -4,7 +4,10 @@ on: push: branches: [main] paths: - - ".wiki/**" + - ".github/wiki/**" + +permissions: + contents: write jobs: sync: @@ -12,10 +15,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Sync .wiki/ to GitHub Wiki + - name: Sync .github/wiki/ to GitHub Wiki uses: newrelic/wiki-sync-action@v1.0.1 with: - source: .wiki + source: .github/wiki destination: wiki token: ${{ secrets.GITHUB_TOKEN }} gitAuthorName: github-actions[bot] diff --git a/.gitignore b/.gitignore index 18d40ba..80b7bea 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,24 @@ env/ .DS_Store .ipynb_checkpoints/ .jupyter/ +# IDE directories +.vscode/ +.idea/ +*.suo +*.user +*.swp +*.swo + +# AI agent working directories .claude/ +.codex/ +.cursor/ +.aider/ +.aider.chat.history.md +.continue/ +.windsurf/ +.gemini/ +.codeium/ # Raw scraped/downloaded files data/raw/*.pdf diff --git a/.markdownlintignore b/.markdownlintignore deleted file mode 100644 index 061206f..0000000 --- a/.markdownlintignore +++ /dev/null @@ -1,4 +0,0 @@ -**/.claude/** -.claude/** -**/node_modules/** -node_modules/** diff --git a/README.md b/README.md index 8a9cb27..eefdc85 100644 --- a/README.md +++ b/README.md @@ -40,14 +40,15 @@ Two clean CSV files are generated by the pipeline: ### Current dataset size -- **Fajr:** ~4,100 records, 35 unique locations, latitude range -37.8° to 53.7° -- **Isha:** ~43 records, 20+ locations -- **Date range:** 1984 to 2026 +- **Fajr:** 5,871 records, 110 unique locations, latitude range -9.6° to 53.8° +- **Isha:** 46 records, 5 unique locations, latitude range -33.9° to 53.8° +- **Date range:** 1970 to 2026 -The dominant Fajr source is the [OpenFajr Project](https://openfajr.org) — 4,000+ community-reviewed -daily observations from Birmingham, UK. The remaining records are manually compiled from -peer-reviewed studies spanning Egypt, Saudi Arabia, Malaysia, Indonesia, Turkey, Morocco, -and other locations across five continents. +The dominant Fajr source is the [OpenFajr Project](https://openfajr.org), with 4,000+ +community-reviewed daily observations from Birmingham, UK. The second-largest source is +Basthoni's 2022 PhD dissertation (UIN Walisongo), with 1,621 per-night SQM records across +46 Indonesian sites. The remaining records are manually compiled from peer-reviewed studies +spanning Egypt, Saudi Arabia, Malaysia, Indonesia, Mauritania, and other locations. ## Setup @@ -77,18 +78,23 @@ Skip the Open-Elevation API calls and use pre-set elevations from the source rec ```text pray-calc-ml/ ├── src/ -│ ├── angle_calc.py Back-calculation: observed time -> depression angle (PyEphem) -│ ├── elevation.py Open-Elevation API lookup -│ ├── pipeline.py Master pipeline: collect -> enrich -> filter -> export +│ ├── angle_calc.py Back-calculation: observed time -> depression angle (PyEphem) +│ ├── elevation.py Open-Topo-Data / Open-Elevation API lookup +│ ├── ingest.py Standardize and validate raw CSV files +│ ├── pipeline.py Master pipeline: collect -> enrich -> filter -> export │ └── collect/ -│ ├── openfajr.py OpenFajr iCal feed parser -│ └── verified_sightings.py Manually compiled records from peer-reviewed studies +│ ├── openfajr.py OpenFajr iCal feed parser (~4,018 Fajr records) +│ ├── verified_sightings.py Manually compiled records from peer-reviewed studies +│ ├── precomputed_angles.py 1,621 Basthoni 2022 SQM records (46 Indonesian sites) +│ ├── brin_multistation_sqm.py BRIN multistation SQM processor +│ ├── brin_timau_sqm.py BRIN Mount Timau SQM processor +│ ├── paper_extractor.py PDF/HTML table extractor for academic papers +│ └── pdf_extractor.py PDF text extraction via PyMuPDF + pdfminer ├── data/ -│ ├── raw/sources.md Full data source documentation -│ └── processed/ Generated CSVs (not committed to git) -├── notebooks/ -│ └── 01_exploratory_analysis.ipynb Latitude, TOY, and elevation pattern analysis -├── research/ Academic paper summaries (not training data) +│ ├── raw/raw_sightings/ Per-source raw CSV files +│ └── processed/ Generated CSVs (fajr_angles.csv, isha_angles.csv) +├── research/ Academic paper summaries, aggregate D0 database +├── .github/wiki/ GitHub Wiki pages (synced via Actions) └── requirements.txt ``` @@ -122,20 +128,20 @@ The data shows three main patterns: ## Data sources -See [data/raw/sources.md](data/raw/sources.md) for the full source table. +See the [wiki](https://github.com/acamarata/pray-calc-ml/wiki/Data-Sources) for the full +citation table. Primary sources: -- [OpenFajr Project](https://openfajr.org) — Birmingham, UK, community astrophotography -- NRIAG Egypt (Hassan et al. 2014, 2016; Rashed et al. 2022, 2025) -- Khalifa 2018, NRIAG J. — Hail, Saudi Arabia -- Kassim Bahali et al. 2018, Sains Malaysia — Malaysia/Indonesia DSLR study -- Saksono 2020, NRIAG J. — Depok, Indonesia (SQM) -- Asim Yusuf 2017 — Exmoor UK (multi-observer) -- Hizbul Ulama UK 1987-1989 — Blackburn, Lancashire -- Moonsighting.com / Khalid Shaukat — global network (Chicago, Buffalo, Toronto, Karachi, Cape Town, Auckland, Trinidad) -- OIF UMSU 2017-2020 — Medan, North Sumatra -- Various national religious body timetables (Turkey, Morocco, Jordan, Iran, UAE, Oman) +- [OpenFajr Project](https://openfajr.org) -- Birmingham, UK, community astrophotography (~4,018 records) +- Basthoni 2022 PhD, UIN Walisongo -- 46 Indonesian SQM sites (1,621 records) +- BRIN Mount Timau SQM -- NTT, Indonesia (59 Fajr + 577 Isha) +- NRIAG Egypt (Hassan et al. 2014, Semeida & Hassan 2018, Marzouk et al. 2025) +- Taha et al. 2025, EJSAS -- Riyadh, Saudi Arabia + Mauritania +- Khalifa 2018, NRIAG J. -- Hail, Saudi Arabia +- Kassim Bahali et al. 2018, 2019 -- Malaysia/Indonesia DSLR + SQM studies +- Miftahi/Shaukat 2015 -- Blackburn, Lancashire UK (29 Fajr + 32 Isha) +- Asim Yusuf 2017 -- Exmoor UK (multi-observer) ## Related packages