Methodology
How VYOMIRA calculates and interprets
Everything we compute is reproducible: every chart carries its calculation version and conventions.
1. Time and place
Birthplaces come from the GeoNames database (cities with 15,000+ residents), each with its own IANA timezone identifier. Local birth time is converted to UTC using the full historical tz database — including local mean time, pre-independence Indian zones, wartime offsets and daylight saving. Times that occurred twice (clocks set back) are flagged and you can choose the occurrence; times that never existed (clocks set forward) are flagged for you to verify. We never infer a timezone from longitude.
2. Astronomy
- Ephemeris: astronomy-engine@2.1.19 (MIT-licensed; VSOP87-based planets, NAO lunar theory), geocentric apparent positions with light-time and aberration.
- Ayanamsa: Lahiri/Chitrapaksha: 23.245524743° at JD 2435553.5 TT, IAU 1976 precession, mean (no nutation).
- Rahu/Ketu: mean lunar node (Meeus 47.7). True node is not offered yet.
- Ascendant: from apparent sidereal time and true obliquity, converted to the sidereal zodiac.
Verification
Automated regression tests compare each planet, the mean node, the ascendant and the ayanamsa against Swiss Ephemeris (used only as an independent test oracle, not shipped) for charts spanning 1868–2030, both hemispheres, the equator, above the Arctic circle, leap days and DST transitions. Current tolerances: Sun/Moon/planets within 30″, ascendant within 30″, ayanamsa within 2″; observed agreement is typically a few arcseconds.
3. Vedic conventions
- Houses: whole-sign.
- Divisional charts: D1, D9 (Navamsa), D10 (Dashamsa) by Parashari rules.
- Vimshottari dasha with 365.25 days per year; Mahadasha, Antardasha and Pratyantardasha.
- Aspects: Parashari graha drishti (sign-based); Rahu/Ketu aspects not applied.
- Panchang: tithi, nakshatra, yoga, karana, and vara counted from local sunrise.
- Yogas: a catalog of precisely defined combinations (yogas-1.0.0); cancellation rules are not evaluated unless stated.
Advanced calculations and how they are verified
- Divisional charts D1, D2 (Parashari hora), D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30 (Parashari trimshamsa), D40, D45, D60 — all positions match PyJHora (an independent open-source implementation) on every reference chart. Divisional ascendants are withheld when they change faster than your birth-time precision.
- Ashtakavarga — BPHS bindu tables as published by B.V. Raman (totals 48/49/39/54/56/52/39 = 337). Sun, Mars, Mercury, Jupiter and Saturn match PyJHora exactly; PyJHora uses variant tables for a few Moon and Venus cells.
- Shadbala — all six components per BPHS. Sthana bala matches PyJHora exactly except for two documented conventions (whole-sign vs bhava Kendradi; Moon's moolatrikona 4°–20°). Abda/Masa lords use the Kali ahargana; Cheshta bala uses apparent motion. Yuddha bala is not applied. Shown only for exact birth times.
- True node — osculating lunar node from the Moon's state vector, within 2′ of Swiss Ephemeris. Dashas and yogas use the mean node; the chart can display either.
- Western chart — tropical apparent positions incl. Uranus–Pluto, Placidus houses (whole-sign fallback above ~66° latitude), Ptolemaic aspects; within 30″ of Swiss Ephemeris.
- Guna Milan — full 36-point Ashtakoota (version ashtakoota-1.0.0). Varna by element, Tara by the 9-fold count, Bhakoot and Nadi by classical rules; Vashya, Yoni and Gana tables from the open-source Maitreya documentation; Graha Maitri from BPHS natural friendships. Gana and Nadi match PyJHora for all 11,664 nakshatra-pada pairs. Dosha exceptions are reported, not silently applied.
4. Interpretation (interp-1.0.0)
Layer 1 computes the chart. Layer 2 applies versioned rules to produce evidence: each factor records the chart fact, the traditional reading, its polarity, and the rule id. Layer 3 selects the factors relevant to your question's theme, current dasha and transits. Layer 4 (optional, with your consent) asks a language model to phrase that evidence. Layer 5 validates the output: every planet–sign, planet–house, nakshatra, yoga, dasha lord and year must exist in your evidence, and guardrail phrases (certainty claims, death, illness, pregnancy, gem sales, investment tips) are rejected. Failing drafts are regenerated once, then replaced with a rule-engine answer.
5. Confidence
We separate computational confidence (how sure the numbers are, given your inputs) from interpretive uncertainty (astrology itself). With an approximate birth time we test the whole uncertainty window and withhold anything that changes inside it. With an unknown time we never show an ascendant.