Commit graph

6 commits

Author SHA1 Message Date
Aric Camarata
d9e8c8b062 Expand dataset to 4,428 Fajr records across 88 locations (Batch 5)
Added 32 new Fajr records from 8 new sites:
- 6 Indonesian cities from Saksono ISRN/UHAMKA 'Premature Dawn' series
  (Padang, Batusangkar, Cirebon, Balikpapan, Bitung, Manokwari) — urban LP,
  D0=-13.4°, 4 seasonal records each
- Tayu Beach, Pati, Central Java — Noor & Hamdani 2018 QIJIS, photoelectric+SQM,
  D0=-17.0°, 4 individual nights Aug-Sep 2016
- Cimahi, West Java — Herdiwijaya 2020, SQM, D0=-18.5°, 4 seasonal records

+8 new unique locations (80 → 88)
2026-02-25 21:00:00 -05:00
Aric Camarata
cc8d3c33d1 Expand dataset to 4,396 Fajr / 70 Isha records across 80 locations
Added sources and sites:
- Mount Timau NTT (CC0 BRIN SQM dataset): 97 individual Fajr nights
  at two target angles (16.51° and 18.0°); pristine 21.86 mpsas site,
  1,600m; data.brin.go.id hdl:20.500.12690/RIN/A5XCJB
- Baharia (Bahariya) Oasis, Egypt: 4 seasonal records; Hassan 2014,
  NRIAG J. 3:23-26; naked-eye multi-site 1984-1987, mean 14.7°
- Labuan Bajo, Flores, NTT, Indonesia: 4 seasonal records; Maskufa
  2024, Mazahib 23(1):155-198; dark sky SQM 19.30°
- Bogor, West Java, Indonesia: 4 seasonal records; Maskufa 2024,
  Mazahib 23(1):155-198; urban SQM 13.58°
- Pekan, Pahang, Malaysia: 9 individual DSLR observations Jun-Jul 2017;
  Kassim Bahali 2018, Sains Malaysiana 47(11):2877-2885; Do range
  -15.45° to -18.06°
- Kuala Terengganu, Malaysia: 1 record; Kassim Bahali 2018 Fig 4,
  Do=-16°, time inferred via PyEphem
- Additional batch 3 aggregate sites: Tubruq Libya (3 subsets),
  Fayum Egypt, Biak Papua, Manado North Sulawesi, Lombok NTB,
  Makkah, Madinah, Karachi, Ankara, Marrakech, Kano, Johannesburg,
  Dhaka, Alexandria

Source correction: removed incorrect Setyanto 2021 Al-Hilal
attribution from Labuan Bajo and Bogor (that paper covers zodiac
light, not Fajr, at different Indonesian sites)
2026-02-25 20:44:37 -05:00
Aric Camarata
0f01783516 Expand dataset to 4,149 Fajr / 58 Isha records across 46 locations
New records from research expansion:
- Tanjung Aru, Sabah Malaysia (Niri & Zainuddin): 4 Isha Shafaq Abyad records
- Teluk Kemang, Malaysia (Abdel-Hadi & Hassan 2022): 4 Fajr + 4 Isha SQM records
- Bosscha Observatory, Java 1310m (Herdiwijaya 2020): 4 Fajr records
- Yogyakarta, Java (Herdiwijaya 2014-2016, 136 nights): 4 Fajr records
- Kupang, NTT 10°S (Herdiwijaya 2020): 4 Fajr + 4 Isha records
- Matrouh, Egypt (Hassan et al.): 4 Fajr + 3 Isha records (1 filtered)
- Kharga Oasis, Egypt (Hassan et al. 2020): 4 Fajr records
- Hurghada, Egypt (Hassan et al. 2020): 4 Fajr records
- Marsa-Alam, Egypt (Hassan et al. 2020): 4 Fajr records
- 15th of May City, Egypt (Taha et al. 2025): 4 Fajr records
- Riyadh, Saudi Arabia (Taha et al. 2025): 4 Fajr records
- Mauritania 18°N (Taha et al. 2025): 4 Fajr records — first West Africa data

New modules:
- src/geocode.py: Nominatim geocoding with disk cache
- src/ingest.py: CSV ingestion and data standardization pipeline
- src/pipeline.py: integrated raw CSV loading via ingest module
2026-02-25 19:59:06 -05:00
Aric Camarata
a5b8adfb2d Add wiki docs, GitHub Actions wiki sync, and IDE/lint config
Five wiki pages covering Data Collection, ML Crunching, Architecture, Data
Sources, and Research Notes. GitHub Actions workflow syncs .wiki/ to the
GitHub Wiki on push to main. Adds .markdownlintignore and VS Code settings
to exclude .claude/ from lint checks. Adds .allow-ai-terms to allow the
.claude/ directory path reference in lint ignore files.
2026-02-25 19:46:19 -05:00
Aric Camarata
6e0f4a679c Rebuild as Python data science project
Replaces the original JS calibration library with a pure Python pipeline
for collecting and back-calculating solar depression angles from human-verified
Fajr and Isha prayer sightings.

What this does:
- src/pipeline.py: master pipeline; fetches iCal + manual records, back-calculates
  angles via PyEphem, applies quality filters, exports two clean CSVs
- src/collect/openfajr.py: parses the OpenFajr Birmingham iCal feed (~4,018 records)
- src/collect/verified_sightings.py: manually compiled records from peer-reviewed
  studies (Egypt, Saudi Arabia, Malaysia, Indonesia, UK, USA, Canada, and more)
- src/angle_calc.py: PyEphem back-calculation with atmospheric refraction
- src/elevation.py: Open-Elevation API batch lookup

Datasets generated:
- data/processed/fajr_angles.csv: 4,105 confirmed Fajr records, 35 locations,
  latitude range -37.8 to 53.7 degrees, date range 1985-2026
- data/processed/isha_angles.csv: 43 confirmed Isha records, 20+ locations

Also includes:
- notebooks/01_exploratory_analysis.ipynb: latitude, TOY, elevation pattern analysis
- research/: academic paper summaries (not training data)
- data/raw/sources.md: full citation table for all data sources
2026-02-25 19:32:47 -05:00
Aric Camarata
bbe1bf5cbc v1.0.0 — initial release
Weighted least-squares calibration of Islamic prayer time depression
angles from observed mosque announcement data. Uses golden-section
search to minimize the sum of squared residuals independently for
Fajr and Isha. Internal Jean Meeus solar ephemeris — zero runtime
dependencies.

API: calibrateAngles, scoreAngles, predictFajr, predictIsha.
Full TypeScript, dual CJS/ESM via tsup.
32 ESM tests, 6 CJS tests, all passing on Node 20/22/24.
2026-02-25 18:48:07 -05:00