Ascendant

Python PackagePyPI

A Python library for Vedic astrology calculations, publishing to PyPI the ancient machinery of Jyotish: divisional charts, dasha timelines, and yoga combinations, all computable from a birth moment and a coordinate.

The Premise

Millionaires don't use astrology, billionaires do
- J.P. Morgan

Vedic astrology, whatever one's metaphysical disposition toward it, is a system of considerable computational complexity. The Vimshottari Dasha alone, which parcels a human life into a sequence of planetary periods and sub-periods governed by the Moon's natal nakshatra, involves arithmetic that is both precise and deeply inconvenient to perform by hand. The divisional charts, of which the classical literature enumerates sixteen, each require the transformation of planetary longitudes according to their own particular scheme. The yoga combinations, which identify auspicious and inauspicious configurations of planets relative to one another and to the ascendant, number in the hundreds across the canonical texts.

Ascendant is a library that takes the position that all of this ought to be expressible in Python, reproducibly, from a birth date, a birth time, and a geographic coordinate.

Installation

pip install astro-ascendant

For local development against the source:

pip install .

To include the test suite dependencies:

pip install ".[test]"

What It Computes

The library exposes three domains of calculation, each corresponding to a major branch of the Jyotish tradition.

Divisional Charts (Varga chakras) allow a single natal moment to be examined at multiple resolutions, the Rasi chart offering the broadest view of a life, the Navamsha illuminating the inner nature and the marriage house, the Dashamsha concerning itself with career, and so on through the remaining vargas. Each division is derived by subdividing the zodiacal signs according to a ratio specific to that varga and reassigning planetary positions accordingly.

The Vimshottari Dasha System maps the planetary periods that, in the Jyotish framework, govern successive phases of life. The starting point is the Moon's position in its birth nakshatra, from which the remaining dasha sequence and its precise duration are calculated. Ascendant produces the full timeline of mahadashas and their antardashas, anchored to the actual birth moment.

Yoga Combinations are planetary configurations that the classical texts identify as carrying particular significance, the Raj Yogas formed by the conjunction of kendra and trikona lords, the Dhana Yogas indicating accumulation, the Daridra Yogas their unfortunate opposite, and many besides. The library identifies which yogas are present in a given chart and returns them for interpretation.

Usage

from ascendant import Ascendant

# Initialize with birth details
astro = Ascendant(
    year=1990, month=1, day=1,
    hour=12, minute=0, second=0,
    latitude=28.6139, longitude=77.2090,
    utc="+5:30"
)

# Get Rasi Chart (D1)
chart = astro.get_chart(division=1)

# Get Yogas
yogas = astro.get_yogas()

# Get Dasha Timeline
dasha = astro.get_dasha_timeline()

Documentation

The full documentation lives in the repository and covers each computational domain in detail.


Source Code