๐ Stellium
A modern, extensible Python library for computational astrology
Built on Swiss Ephemeris for NASA-grade astronomical accuracy, Stellium brings professional astrological calculations to Python with a clean, composable architecture that works for everyone, from quick scripts to production applications.
Read the extensive documentation and API autodocs at Read The Docs.
Try out some quick examples immediately, no installation needed:
Stellium The Webapp is live! Visit it here! It represents about 50-60% of the functionality of the full package, but is great for testing out the core capabilities and getting quick chart outputs.
Star the repo if you find it useful! โญ
Why Stellium?
For Python Developers
- Fully typed with modern type hints for excellent IDE support
- Protocol-driven architecture - extend with custom engines, no inheritance required
- Fluent builder pattern - chainable, readable, intuitive API
- Flexible input formats - accepts datetime strings, city names, or precise coordinates
- Modular & composable - mix and match components as needed
- Production-ready with comprehensive test coverage
If you've used React (composable, plug-and-play components) or PyTorch (sensible defaults, progressive disclosure, lazy .calculate()), the API should feel familiar.
For Astrologers
Western:
- Large-scale data analysis with pandas DataFrames, batch calculation, and statistical tools
- 17 house systems including Placidus, Whole Sign, Koch, Equal, Regiomontanus, and more (see the full list).
- Multiple house systems in a single chart for comparison of traditions and meta-analysis
- Declination calculations with out-of-bounds planet detection and parallel/contraparallel aspects
- Bi-, tri- and quad-wheel charts for synastry, transits, progressions, returns, arc directions, and composite analysis
- Sect-aware calculations with proper day/night chart handling
- Birth-time rectification (sect) โ honest, human-in-the-loop recovery of day/night sect (~70%, cross-validated) via a compare-hypothesis workbench; deliberately does not fake minute-level time (it's an ill-posed inverse). Guide
- 25+ Arabic Parts with traditional formulas (see the full list)
- Essential & accidental dignity scoring for both traditional and modern rulerships
- Fixed stars โ the four Royal Stars and beyond, by tier or by name (e.g. Regulus, Algol)
- Chart rulership and profections for traditional astrology
- Dispositor graphs for planets and (experimentally) houses in reports
- Aspect pattern detection - Grand Trines, T-Squares, Yods, Stelliums, and more
- Zodiacal Releasing for 25+ lots (including Fortune and Spirit) and optional "fractal" calculation mode
- Firdaria โ the Persian time-lord system with day/night sequencing, seven Chaldean sub-periods, and Abu Ma'shar / Bonatti node presets
- Length of life โ the classical hyleg โ alcocoden years-table (Lilly) with a fully itemized, auditable result, plus a reusable almuten-of-a-degree calculator
- Uranian astrology including Trans-Neptunian Planets and 45/90/360-degree dials with pointers.
- Primary and Zodiacal directions with 3D modeling and and distribution across bounds
- Draconic Charts and Void of Course Moon
- Transit timeline analysis - Calculate transit-to-natal aspect periods with orb entry/exit windows, retrograde multi-pass detection, plain-text list output, and SVG Gantt chart visualization
- Prompt-friendly text export -
chart.to_prompt_text()generates clean markdown from any chart type, ready for LLM prompts. Handles single charts, synastry, composites, unknown-time charts, multiple house systems, and all components - Electional astrology - Find auspicious times with 30+ predicates, interval optimization, and planetary hours
- Heliocentric positions
- Antiscia and contra-antiscia with a dedicated report section
- Beautiful visualizations with professional SVG chart rendering and 14 themes
- Beautiful Composable PDF or CLI reports to show nitty-gritty details of the chart (see this example for a subset of what's available)
- Localized reports โ render terminal, Markdown, HTML, and PDF reports in multiple languages (Simplified Chinese included) via
with_locale() - Notable births database for quick exploration and learning. Check out the current list
- Notable life-event & temperament datasets โ taxonomy-tagged biographical timelines (888 dated events) and character descriptors for 60+ notables, honestly provenance-graded, via
get_notable_life_events()/get_notable_temperament()
Vedic:
- Both tropical and sidereal zodiacs with 9 ayanamsa systems for Vedic astrology
- North Indian and South Indian chart rendering โ traditional Vedic/Jyotish chart formats with 3 themes, 4 label styles, degree display, and full native info
Chinese:
- Ba Zi system with Ten Gods and Hidden Stems
Visual Chart Example
Synastry
Report Sample Pages
Vedic Charts (North Indian & South Indian)
Transit Timeline (Gantt Chart)
Graphic Ephemeris Example
What Makes Stellium Different
Unlike other Python astrology libraries, Stellium is designed for extensibility:
# Other libraries: rigid, hard-coded calculations
chart = AstrologyLibrary(date, location) # That's all you can do
# Stellium: composable, configurable, extensible
chart = (ChartBuilder.from_details("2000-01-06 12:00", "Seattle, WA")
.with_house_systems([PlacidusHouses(), WholeSignHouses()]) # Multiple systems!
.with_sidereal("lahiri") # Sidereal zodiac option
.with_aspects(ModernAspectEngine()) # Swap aspect engines
.with_orbs(LuminariesOrbEngine()) # Custom orb rules
.add_component(ArabicPartsCalculator()) # Plugin-style components
.add_component(MidpointCalculator()) # Stack as many as you want
.calculate()) # Lazy evaluation
- Performance - A chart builds in ~0.2 ms, with nothing to configure or warm up
- Flexibility - Calculate multiple house systems simultaneously
- Accuracy - Swiss Ephemeris positions, cross-checked against NASA JPL Horizons (every asteroid verified to within 2 arcseconds)
- Portable output - SVG, PDF and PNG that render identically everywhere: every font and glyph the charts need ships inside the package
- Modern Python - Takes full advantage of Python 3.11+ features
Installation
pip install stellium
Requirements
- Python 3.11 or higher
- All dependencies installed automatically (pyswisseph, pytz, geopy, rich, svgwrite)
- Note: On Python 3.12+, installing requires a C toolchain (until
pyswissephships newer wheels)
Optional Dependencies
# For data analysis with pandas DataFrames
pip install stellium[analysis]
Quick Start
Your First Chart (2 Lines of Code)
from stellium import ChartBuilder
chart = ChartBuilder.from_notable("Albert Einstein").with_aspects().calculate()
chart.draw("einstein.svg").save()
That's it! You now have a beautiful natal chart SVG for Einstein.
The from_notable() factory method uses our curated database of famous births. Other notables include: "Carl Jung", "Frida Kahlo", "Marie Curie", and more. Check out the current list.
Beautiful Visualizations, Zero Config
Want to customize your chart? The fluent .draw() API makes it effortless:
# Apply a preset for instant results
chart.draw("detailed.svg").preset_detailed().save()
# Choose a theme
chart.draw("midnight.svg").with_theme("midnight").save()
# Full customization
chart.draw("custom.svg") \
.with_theme("celestial") \
.with_zodiac_palette("rainbow_celestial") \
.with_moon_phase(position="bottom-left", show_label=True) \
.with_chart_info(position="top-left") \
.save()
Discover features through autocomplete! Type chart.draw(). and your IDE will show you everything available.
PNG export, without the tofu
chart.draw("einstein.svg").preset_standard().save_png(scale=2) # -> einstein.png
Rasterising an astrology SVG usually gives you a wall of tofu boxes, because general
rasterisers (rsvg, cairosvg, Inkscape) resolve โ โ โ against the host's fonts โ and
most machines have no symbol font. Stellium doesn't ask the host: it bundles every
font and glyph its charts need and renders with system fonts switched off, so the PNG
is identical on your laptop, in CI, and in a bare container.
scale is pixels per SVG unit; the background is transparent by default. Dial charts
export too.
๐ See the Visualization Guide for complete documentation, theme gallery, and examples.
Your Own Chart
from stellium import ChartBuilder
# Quick method: just pass datetime string and location
chart = ChartBuilder.from_details(
"2000-01-06 12:00", # ISO format, US format, or European format
"Seattle, WA" # City name or (lat, lon) tuple
).with_aspects().calculate()
# Access planetary positions
sun = chart.get_object("Sun")
print(sun)
moon = chart.get_object("Moon")
print(moon)
print(moon.phase)
Sun: 15ยฐ48' Capricorn (285.81ยฐ)
Moon: 16ยฐ36' Capricorn (286.61ยฐ)
Phase: New (0.0% illuminated)
Sun: 0ยฐ0' Libra (180ยฐ)
Moon: 0ยฐ0' Aries (0ยฐ)
Phase: Full (100% illuminated)
Key Features:
- Flexible datetime parsing: ISO 8601, US format, European format, or date-only
- Automatic geocoding: City name โ coordinates
- Automatic timezone handling: Naive datetimes converted to UTC
- Smart defaults: Placidus houses, major (Ptolemaic) aspects, tropical zodiac
Progressive Examples
Level 1: Exploring Chart Data
from stellium import ChartBuilder
# Modern convenience method - accepts datetime strings!
chart = ChartBuilder.from_details("2000-01-06 12:00", "Seattle, WA").with_aspects().calculate()
# Get all planets
for planet in chart.get_planets():
print(f"{planet.name}: {planet.longitude:.2f}ยฐ {planet.sign}")
# Get aspects
for aspect in chart.aspects:
print(f"{aspect.object1.name} {aspect.aspect_name} {aspect.object2.name} (orb: {aspect.orb:.2f}ยฐ)")
# Get house cusps
houses = chart.get_houses() # Returns HouseCusps for default (or first) system
for i, cusp in enumerate(houses.cusps, 1):
print(f"House {i}: {cusp:.2f}ยฐ")
Sun: 285.81ยฐ Capricorn
Moon: 286.61ยฐ Capricorn
Mercury: 280.27ยฐ Capricorn
Venus: 248.03ยฐ Sagittarius
Mars: 332.10ยฐ Pisces
Jupiter: 25.52ยฐ Aries
Saturn: 40.32ยฐ Taurus
Uranus: 315.08ยฐ Aquarius
Neptune: 303.39ยฐ Aquarius
Pluto: 251.64ยฐ Sagittarius
Sun Conjunction Moon (orb: 0.80ยฐ)
Sun Conjunction Mercury (orb: 5.54ยฐ)
Sun Trine Saturn (orb: 5.49ยฐ)
Sun Conjunction MC (orb: 3.49ยฐ)
Sun Square Vertex (orb: 5.36ยฐ)
Moon Conjunction Mercury (orb: 6.34ยฐ)
Moon Trine Saturn (orb: 6.30ยฐ)
Moon Conjunction MC (orb: 4.30ยฐ)
Moon Square Vertex (orb: 6.17ยฐ)
Mercury Trine Saturn (orb: 0.05ยฐ)
Mercury Conjunction MC (orb: 2.05ยฐ)
Mercury Square Vertex (orb: 0.18ยฐ)
Venus Square Mars (orb: 5.93ยฐ)
Venus Sextile Neptune (orb: 4.64ยฐ)
Venus Conjunction Pluto (orb: 3.61ยฐ)
Venus Trine True Node (orb: 4.36ยฐ)
Venus Conjunction Chiron (orb: 4.19ยฐ)
Venus Sextile South Node (orb: 4.36ยฐ)
Venus Sextile Vertex (orb: 2.42ยฐ)
Mars Sextile ASC (orb: 5.23ยฐ)
Jupiter Square Neptune (orb: 7.87ยฐ)
Jupiter Trine Mean Apogee (orb: 1.46ยฐ)
Jupiter Conjunction ASC (orb: 1.35ยฐ)
Saturn Square Uranus (orb: 4.77ยฐ)
Saturn Square Neptune (orb: 6.93ยฐ)
Saturn Square True Node (orb: 6.65ยฐ)
Saturn Square South Node (orb: 6.65ยฐ)
Saturn Trine MC (orb: 2.00ยฐ)
Uranus Sextile Pluto (orb: 3.45ยฐ)
Uranus Sextile Chiron (orb: 2.87ยฐ)
Uranus Trine Vertex (orb: 4.64ยฐ)
Neptune Opposition True Node (orb: 0.28ยฐ)
Neptune Conjunction South Node (orb: 0.28ยฐ)
Neptune Square ASC (orb: 6.52ยฐ)
Neptune Trine Vertex (orb: 7.06ยฐ)
Pluto Trine True Node (orb: 7.97ยฐ)
Pluto Conjunction Chiron (orb: 0.58ยฐ)
Pluto Sextile Vertex (orb: 1.19ยฐ)
True Node Square ASC (orb: 6.80ยฐ)
Chiron Sextile Vertex (orb: 1.77ยฐ)
Mean Apogee Trine ASC (orb: 2.81ยฐ)
South Node Square ASC (orb: 6.80ยฐ)
South Node Trine Vertex (orb: 6.78ยฐ)
MC Square Vertex (orb: 1.87ยฐ)
House 1: 26.87ยฐ
House 2: 61.59ยฐ
House 3: 83.34ยฐ
House 4: 102.31ยฐ
House 5: 123.53ยฐ
House 6: 154.05ยฐ
House 7: 206.87ยฐ
House 8: 241.59ยฐ
House 9: 263.34ยฐ
House 10: 282.31ยฐ
House 11: 303.53ยฐ
House 12: 334.05ยฐ
Level 2: Custom House Systems & Aspects
from stellium import ChartBuilder
from stellium.engines import WholeSignHouses, ModernAspectEngine, SimpleOrbEngine
chart = (ChartBuilder.from_details("2000-01-06 12:00", "Seattle, WA")
.with_house_systems([WholeSignHouses()]) # Use Whole Sign houses
.with_aspects(ModernAspectEngine()) # Explicit aspect engine
.with_orbs(SimpleOrbEngine()) # Simple orb rules
.calculate())
print(f"House System: {chart.default_house_system}")
# Access house cusps for the specific system
whole_sign_cusps = chart.get_houses("Whole Sign")
print(whole_sign_cusps.get_description(1)) # First House
House System: Whole Sign
House 1: 0ยฐ00' Aries (0.00ยฐ)
Available House Systems: Placidus (default), Whole Sign, Koch, Equal, Regiomontanus, Campanus, Porphyry, Alcabitius, Equal (MC), Vehlow Equal, Topocentric, Morinus, and 11+ more.
Level 3: Multiple House Systems
from stellium import ChartBuilder
from stellium.engines import PlacidusHouses, WholeSignHouses, KochHouses
chart = (ChartBuilder.from_details("2000-01-06 12:00", "Seattle, WA")
.with_house_systems([
PlacidusHouses(),
WholeSignHouses(),
KochHouses()
])
.calculate())
# Access each system independently
print(f"Sun in Placidus House: {chart.get_house('Sun', 'Placidus')}")
# House placements are tracked per-system
print(f"Sun in Whole Sign House: {chart.get_house('Sun', 'Whole Sign')}")
print(f"Sun in Koch House: {chart.get_house('Sun', 'Koch')}")
Sun in Placidus House: 10
Sun in Whole Sign House: 10
Sun in Koch House: 10
Level 4: Arabic Parts & Components
from stellium import ChartBuilder
from stellium.components import ArabicPartsCalculator, MidpointCalculator
chart = (ChartBuilder.from_details("2000-01-06 12:00", "Seattle, WA")
.add_component(ArabicPartsCalculator())
.add_component(MidpointCalculator())
.calculate())
# Arabic Parts (automatically sect-aware)
arabic_parts = chart.get_component_result("Arabic Parts")
for part in arabic_parts:
print(f"{part.name:25} {part.longitude:6.2f}ยฐ {part.sign:12} House {chart.get_house(part.name)}")
# Midpoints
midpoints = chart.get_component_result("Midpoints")
for mp in midpoints[:5]: # First 5 midpoints
print(f"{mp.object1.name}/{mp.object2.name} midpoint: {mp.longitude:.2f}ยฐ")
Part of Fortune 27.67ยฐ Aries House 1
Part of Spirit 26.06ยฐ Aries House 12
Part of Eros (Love) 248.83ยฐ Sagittarius House 8
Part of Eros (Planetary) 349.09ยฐ Pisces House 12
Part of Necessity (Ananke) 279.47ยฐ Capricorn House 9
Part of Courage (Tolma) 331.30ยฐ Pisces House 11
Part of Victory (Nike) 24.71ยฐ Aries House 12
Part of Nemesis 39.51ยฐ Taurus House 1
Part of Father 272.36ยฐ Capricorn House 9
Part of Mother 65.45ยฐ Gemini House 2
Part of Marriage 234.58ยฐ Scorpio House 7
Part of Children 12.07ยฐ Aries House 12
Part of Siblings 266.82ยฐ Sagittarius House 9
Part of Action (Praxis) 73.16ยฐ Gemini House 2
Part of Profession (User) 23.37ยฐ Aries House 12
Part of Passion / Lust 302.80ยฐ Aquarius House 10
Part of Illness / Disease 318.65ยฐ Aquarius House 11
Part of Death 140.57ยฐ Leo House 5
Part of Debt / Bondage 266.82ยฐ Sagittarius House 9
Part of Travel 78.70ยฐ Gemini House 2
Part of Friends / Associates 20.52ยฐ Aries House 12
Part of the Sun (Exaltation) 340.57ยฐ Pisces House 12
Part of the Moon (Exaltation) 65.45ยฐ Gemini House 2
Part of Mercury (Exaltation) 26.87ยฐ Aries House 1
Part of Venus (Exaltation) 249.38ยฐ Sagittarius House 8
Part of Mars (Exaltation) 318.65ยฐ Aquarius House 11
Part of Jupiter (Exaltation) 125.77ยฐ Leo House 5
Part of Saturn (Exaltation) 179.15ยฐ Virgo House 6
Sun/Moon midpoint: 286.21ยฐ
Sun/ASC midpoint: 336.34ยฐ
Sun/MC midpoint: 284.06ยฐ
Moon/ASC midpoint: 336.74ยฐ
Moon/MC midpoint: 284.46ยฐ
Available Components:
ArabicPartsCalculator- 25+ traditional lots (Part of Fortune, Spirit, Love, etc.)MidpointCalculator- Direct midpoints for all planet pairsDignityComponent- Essential dignities (rulership, exaltation, triplicity, etc.)AspectPatternAnalyzer- Detect Grand Trines, T-Squares, Yods, Stelliums, etc.
Level 5: Terminal Reports with Rich
from stellium import ChartBuilder, Native, ReportBuilder
from stellium.components import DignityComponent
from stellium.engines.patterns import AspectPatternAnalyzer
from datetime import datetime
native = Native(datetime(2000, 1, 6, 12, 00), "Seattle, WA")
chart = (ChartBuilder.from_native(native)
.with_aspects()
.add_component(DignityComponent())
.add_analyzer(AspectPatternAnalyzer())
.calculate())
# Build a comprehensive terminal report
report = (ReportBuilder()
.from_chart(chart)
.with_chart_overview() # Chart metadata (date, location, zodiac system)
.with_planet_positions(house_systems="all") # Positions with ALL house systems
.with_declinations() # Declination table with OOB detection
.with_house_cusps(systems="all") # House cusps for all systems
.with_aspects(mode="major") # Major aspects table
.with_aspect_patterns() # Grand Trines, T-Squares, Yods, etc.
.with_dignities(essential="both")) # Essential dignities (traditional + modern)
report.render(format="rich_table") # Beautiful terminal output
# Export to file
report.render(format="plain_table", file="my_chart.txt")
report.render(format="pdf", file="my_chart.pdf") # PDF with Typst
Chart Overview
โโโโโโโโโโโโโโ
Date: January 06, 2000
Time: 12:00 PM
Timezone: America/Los_Angeles
Location: Seattle, King County, Washington, United States
Coordinates: 47.6038ยฐ, -122.3301ยฐ
House System: Placidus
Zodiac: Tropical
Chart Sect: Day Chart
Chart Ruler: Mars (Aries Rising)
Planet Positions
โโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโ
โ Planet โ Position โ House (Pl) โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ โ Sun โ โ๏ธ Capricorn 15ยฐ48' โ 10 โ
โ โฝ Moon โ โ๏ธ Capricorn 16ยฐ36' โ 10 โ
โ โฟ Mercury โ โ๏ธ Capricorn 10ยฐ16' โ 9 โ
โ โ Venus โ โ๏ธ Sagittarius 8ยฐ01' โ 8 โ
โ โ Mars โ โ๏ธ Pisces 2ยฐ06' โ 11 โ
โ โ Jupiter โ โ๏ธ Aries 25ยฐ31' โ 12 โ
โ โ Saturn โ โ๏ธ Taurus 10ยฐ18' โ 1 โ
โ โ
Uranus โ โ๏ธ Aquarius 15ยฐ05' โ 11 โ
โ โ Neptune โ โ๏ธ Aquarius 3ยฐ23' โ 10 โ
โ โ Pluto โ โ๏ธ Sagittarius 11ยฐ38' โ 8 โ
โ โ North Node โ โ๏ธ Leo 3ยฐ40' โ 5 โ
โ โ South Node โ โ๏ธ Aquarius 3ยฐ40' โ 11 โ
โ โธ Black Moon Lilith โ โ๏ธ Sagittarius 24ยฐ03' โ 9 โ
โ ๐ Vertex โ โ๏ธ Libra 10ยฐ26' โ 6 โ
โ โท Chiron โ โ๏ธ Sagittarius 12ยฐ13' โ 8 โ
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Declinations
โโโโโโโโโโโโ
โโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโณโโโโโโโโโ
โ Planet โ Declination โ Direction โ Status โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ โ Sun โ 22ยฐ30' โ South โ โ
โ โฝ Moon โ 20ยฐ52' โ South โ โ
โ โฟ Mercury โ 24ยฐ30' โ South โ OOB โ โ
โ โ Venus โ 19ยฐ46' โ South โ โ
โ โ Mars โ 11ยฐ39' โ South โ โ
โ โ Jupiter โ 8ยฐ42' โ North โ โ
โ โ Saturn โ 12ยฐ36' โ North โ โ
โ โ
Uranus โ 16ยฐ56' โ South โ โ
โ โ Neptune โ 19ยฐ10' โ South โ โ
โ โ Pluto โ 11ยฐ24' โ South โ โ
โ โ North Node โ 19ยฐ19' โ North โ โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโ
House Cusps
โโโโโโโโโโโ
โโโโโโโโโณโโโโโโโโโโโโโ
โ House โ Cusp (Pl) โ
โกโโโโโโโโโโโโโโโโโโโโโฉ
โ 1 โ 26ยฐ โ๏ธ 51' โ
โ 2 โ 1ยฐ โ๏ธ 35' โ
โ 3 โ 23ยฐ โ๏ธ 20' โ
โ 4 โ 12ยฐ โ๏ธ 18' โ
โ 5 โ 3ยฐ โ๏ธ 31' โ
โ 6 โ 4ยฐ โ๏ธ 03' โ
โ 7 โ 26ยฐ โ๏ธ 51' โ
โ 8 โ 1ยฐ โ๏ธ 35' โ
โ 9 โ 23ยฐ โ๏ธ 20' โ
โ 10 โ 12ยฐ โ๏ธ 18' โ
โ 11 โ 3ยฐ โ๏ธ 31' โ
โ 12 โ 4ยฐ โ๏ธ 03' โ
โโโโโโโโโดโโโโโโโโโโโโโ
Major Aspects
โโโโโโโโโโโโโ
Aspectarian
[SVG: 404x404px - use HTML/PDF output to view]
Aspect List
โโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโณโโโโโโโโโโโ
โ Planet 1 โ Aspect โ Planet 2 โ Orb โ Applying โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ โฟ Mercury โ โณ Trine โ โ Saturn โ 0.05ยฐ โ Aโ โ
โ โฟ Mercury โ โก Square โ ๐ Vertex โ 0.18ยฐ โ โ โ
โ โ Neptune โ โ Conjunction โ โ South Node โ 0.28ยฐ โ Aโ โ
โ โ Neptune โ โ Opposition โ โ North Node โ 0.28ยฐ โ Aโ โ
โ โ Pluto โ โ Conjunction โ โท Chiron โ 0.58ยฐ โ โS โ
โ โ Sun โ โ Conjunction โ โฝ Moon โ 0.80ยฐ โ โS โ
โ โ Pluto โ โน Sextile โ ๐ Vertex โ 1.19ยฐ โ โ โ
โ โ Jupiter โ โ Conjunction โ ASC โ 1.35ยฐ โ โ โ
โ โ Jupiter โ โณ Trine โ โธ Black Moon Lilith โ 1.46ยฐ โ Aโ โ
โ โท Chiron โ โน Sextile โ ๐ Vertex โ 1.77ยฐ โ โ โ
โ MC โ โก Square โ ๐ Vertex โ 1.87ยฐ โ โ โ
โ โ Saturn โ โณ Trine โ MC โ 2.00ยฐ โ โ โ
โ โฟ Mercury โ โ Conjunction โ MC โ 2.05ยฐ โ โ โ
โ โ Venus โ โน Sextile โ ๐ Vertex โ 2.42ยฐ โ โ โ
โ โธ Black Moon Lilith โ โณ Trine โ ASC โ 2.81ยฐ โ โ โ
โ โ
Uranus โ โน Sextile โ โท Chiron โ 2.87ยฐ โ Aโ โ
โ โ
Uranus โ โน Sextile โ โ Pluto โ 3.45ยฐ โ โS โ
โ โ Sun โ โ Conjunction โ MC โ 3.49ยฐ โ โ โ
โ โ Venus โ โ Conjunction โ โ Pluto โ 3.61ยฐ โ Aโ โ
โ โ Venus โ โ Conjunction โ โท Chiron โ 4.19ยฐ โ Aโ โ
โ โฝ Moon โ โ Conjunction โ MC โ 4.30ยฐ โ โ โ
โ โ Venus โ โน Sextile โ โ South Node โ 4.36ยฐ โ โS โ
โ โ Venus โ โณ Trine โ โ North Node โ 4.36ยฐ โ โS โ
โ โ
Uranus โ โณ Trine โ ๐ Vertex โ 4.64ยฐ โ โ โ
โ โ Venus โ โน Sextile โ โ Neptune โ 4.64ยฐ โ โS โ
โ โ Saturn โ โก Square โ โ
Uranus โ 4.77ยฐ โ โS โ
โ โ Mars โ โน Sextile โ ASC โ 5.23ยฐ โ โ โ
โ โ Sun โ โก Square โ ๐ Vertex โ 5.36ยฐ โ โ โ
โ โ Sun โ โณ Trine โ โ Saturn โ 5.49ยฐ โ โS โ
โ โ Sun โ โ Conjunction โ โฟ Mercury โ 5.54ยฐ โ Aโ โ
โ โ Venus โ โก Square โ โ Mars โ 5.93ยฐ โ โS โ
โ โฝ Moon โ โก Square โ ๐ Vertex โ 6.17ยฐ โ โ โ
โ โฝ Moon โ โณ Trine โ โ Saturn โ 6.30ยฐ โ โS โ
โ โฝ Moon โ โ Conjunction โ โฟ Mercury โ 6.34ยฐ โ โS โ
โ โ Neptune โ โก Square โ ASC โ 6.52ยฐ โ โ โ
โ โ Saturn โ โก Square โ โ South Node โ 6.65ยฐ โ Aโ โ
โ โ Saturn โ โก Square โ โ North Node โ 6.65ยฐ โ โS โ
โ โ South Node โ โณ Trine โ ๐ Vertex โ 6.78ยฐ โ โ โ
โ โ South Node โ โก Square โ ASC โ 6.80ยฐ โ โ โ
โ โ North Node โ โก Square โ ASC โ 6.80ยฐ โ โ โ
โ โ Saturn โ โก Square โ โ Neptune โ 6.93ยฐ โ Aโ โ
โ โ Neptune โ โณ Trine โ ๐ Vertex โ 7.06ยฐ โ โ โ
โ โ Jupiter โ โก Square โ โ Neptune โ 7.87ยฐ โ Aโ โ
โ โ Pluto โ โณ Trine โ โ North Node โ 7.97ยฐ โ โS โ
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโ
Aspect Patterns
โโโโโโโโโโโโโโโ
โโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Pattern โ Planets โ Element/Quality โ Details โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Stellium โ โ Sun, โฝ Moon, โฟ Mercury, MC โ Earth / Cardinal โ 4 planets โ
โ T-Square โ โ Neptune, โ North Node, โ Saturn โ Fixed โ 3 planets, Apex: โ Saturn โ
โ T-Square โ โ Neptune, โ North Node, ASC โ Mixed โ 3 planets, Apex: ASC โ
โโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Essential Dignities
โโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโ
โ Planet โ Trad Score โ Mod Score โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ โ Sun โ 0 โ 0 โ
โ โฝ Moon โ -5 โ -5 โ
โ โฟ Mercury โ 0 โ 0 โ
โ โ Venus โ 0 โ 0 โ
โ โ Mars โ 0 โ 0 โ
โ โ Jupiter โ 0 โ 0 โ
โ โ Saturn โ 0 โ 0 โ
โ โ
Uranus โ 0 โ +6 โ
โ โ Neptune โ 0 โ -4 โ
โ โ Pluto โ 0 โ 0 โ
โ โท Chiron โ 0 โ 0 โ
โโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโ
Chart Overview
==============
Date: January 06, 2000
Time: 12:00 PM
Timezone: America/Los_Angeles
Location: Seattle, King County, Washington, United States
Coordinates: 47.6038ยฐ, -122.3301ยฐ
House System: Placidus
Zodiac: Tropical
Chart Sect: Day Chart
Chart Ruler: Mars (Aries Rising)
Planet Positions
================
| Planet | Position | House (Pl) |
|---------------------|-----------------------|------------|
| โ Sun | โ๏ธ Capricorn 15ยฐ48' | 10 |
| โฝ Moon | โ๏ธ Capricorn 16ยฐ36' | 10 |
| โฟ Mercury | โ๏ธ Capricorn 10ยฐ16' | 9 |
| โ Venus | โ๏ธ Sagittarius 8ยฐ01' | 8 |
| โ Mars | โ๏ธ Pisces 2ยฐ06' | 11 |
| โ Jupiter | โ๏ธ Aries 25ยฐ31' | 12 |
| โ Saturn | โ๏ธ Taurus 10ยฐ18' | 1 |
| โ
Uranus | โ๏ธ Aquarius 15ยฐ05' | 11 |
| โ Neptune | โ๏ธ Aquarius 3ยฐ23' | 10 |
| โ Pluto | โ๏ธ Sagittarius 11ยฐ38' | 8 |
| โ North Node | โ๏ธ Leo 3ยฐ40' | 5 |
| โ South Node | โ๏ธ Aquarius 3ยฐ40' | 11 |
| โธ Black Moon Lilith | โ๏ธ Sagittarius 24ยฐ03' | 9 |
| ๐ Vertex | โ๏ธ Libra 10ยฐ26' | 6 |
| โท Chiron | โ๏ธ Sagittarius 12ยฐ13' | 8 |
Declinations
============
| Planet | Declination | Direction | Status |
|--------------|-------------|-----------|--------|
| โ Sun | 22ยฐ30' | South | |
| โฝ Moon | 20ยฐ52' | South | |
| โฟ Mercury | 24ยฐ30' | South | OOB โ |
| โ Venus | 19ยฐ46' | South | |
| โ Mars | 11ยฐ39' | South | |
| โ Jupiter | 8ยฐ42' | North | |
| โ Saturn | 12ยฐ36' | North | |
| โ
Uranus | 16ยฐ56' | South | |
| โ Neptune | 19ยฐ10' | South | |
| โ Pluto | 11ยฐ24' | South | |
| โ North Node | 19ยฐ19' | North | |
House Cusps
===========
| House | Cusp (Pl) |
|-------|------------|
| 1 | 26ยฐ โ๏ธ 51' |
| 2 | 1ยฐ โ๏ธ 35' |
| 3 | 23ยฐ โ๏ธ 20' |
| 4 | 12ยฐ โ๏ธ 18' |
| 5 | 3ยฐ โ๏ธ 31' |
| 6 | 4ยฐ โ๏ธ 03' |
| 7 | 26ยฐ โ๏ธ 51' |
| 8 | 1ยฐ โ๏ธ 35' |
| 9 | 23ยฐ โ๏ธ 20' |
| 10 | 12ยฐ โ๏ธ 18' |
| 11 | 3ยฐ โ๏ธ 31' |
| 12 | 4ยฐ โ๏ธ 03' |
Major Aspects
=============
Aspectarian
-----------
(unknown type svg)
Aspect List
-----------
| Planet 1 | Aspect | Planet 2 | Orb | Applying |
|---------------------|---------------|---------------------|-------|----------|
| โฟ Mercury | โณ Trine | โ Saturn | 0.05ยฐ | Aโ |
| โฟ Mercury | โก Square | ๐ Vertex | 0.18ยฐ | โ |
| โ Neptune | โ Conjunction | โ South Node | 0.28ยฐ | Aโ |
| โ Neptune | โ Opposition | โ North Node | 0.28ยฐ | Aโ |
| โ Pluto | โ Conjunction | โท Chiron | 0.58ยฐ | โS |
| โ Sun | โ Conjunction | โฝ Moon | 0.80ยฐ | โS |
| โ Pluto | โน Sextile | ๐ Vertex | 1.19ยฐ | โ |
| โ Jupiter | โ Conjunction | ASC | 1.35ยฐ | โ |
| โ Jupiter | โณ Trine | โธ Black Moon Lilith | 1.46ยฐ | Aโ |
| โท Chiron | โน Sextile | ๐ Vertex | 1.77ยฐ | โ |
| MC | โก Square | ๐ Vertex | 1.87ยฐ | โ |
| โ Saturn | โณ Trine | MC | 2.00ยฐ | โ |
| โฟ Mercury | โ Conjunction | MC | 2.05ยฐ | โ |
| โ Venus | โน Sextile | ๐ Vertex | 2.42ยฐ | โ |
| โธ Black Moon Lilith | โณ Trine | ASC | 2.81ยฐ | โ |
| โ
Uranus | โน Sextile | โท Chiron | 2.87ยฐ | Aโ |
| โ
Uranus | โน Sextile | โ Pluto | 3.45ยฐ | โS |
| โ Sun | โ Conjunction | MC | 3.49ยฐ | โ |
| โ Venus | โ Conjunction | โ Pluto | 3.61ยฐ | Aโ |
| โ Venus | โ Conjunction | โท Chiron | 4.19ยฐ | Aโ |
| โฝ Moon | โ Conjunction | MC | 4.30ยฐ | โ |
| โ Venus | โน Sextile | โ South Node | 4.36ยฐ | โS |
| โ Venus | โณ Trine | โ North Node | 4.36ยฐ | โS |
| โ
Uranus | โณ Trine | ๐ Vertex | 4.64ยฐ | โ |
| โ Venus | โน Sextile | โ Neptune | 4.64ยฐ | โS |
| โ Saturn | โก Square | โ
Uranus | 4.77ยฐ | โS |
| โ Mars | โน Sextile | ASC | 5.23ยฐ | โ |
| โ Sun | โก Square | ๐ Vertex | 5.36ยฐ | โ |
| โ Sun | โณ Trine | โ Saturn | 5.49ยฐ | โS |
| โ Sun | โ Conjunction | โฟ Mercury | 5.54ยฐ | Aโ |
| โ Venus | โก Square | โ Mars | 5.93ยฐ | โS |
| โฝ Moon | โก Square | ๐ Vertex | 6.17ยฐ | โ |
| โฝ Moon | โณ Trine | โ Saturn | 6.30ยฐ | โS |
| โฝ Moon | โ Conjunction | โฟ Mercury | 6.34ยฐ | โS |
| โ Neptune | โก Square | ASC | 6.52ยฐ | โ |
| โ Saturn | โก Square | โ South Node | 6.65ยฐ | Aโ |
| โ Saturn | โก Square | โ North Node | 6.65ยฐ | โS |
| โ South Node | โณ Trine | ๐ Vertex | 6.78ยฐ | โ |
| โ South Node | โก Square | ASC | 6.80ยฐ | โ |
| โ North Node | โก Square | ASC | 6.80ยฐ | โ |
| โ Saturn | โก Square | โ Neptune | 6.93ยฐ | Aโ |
| โ Neptune | โณ Trine | ๐ Vertex | 7.06ยฐ | โ |
| โ Jupiter | โก Square | โ Neptune | 7.87ยฐ | Aโ |
| โ Pluto | โณ Trine | โ North Node | 7.97ยฐ | โS |
Aspect Patterns
===============
| Pattern | Planets | Element/Quality | Details |
|----------|-----------------------------------|------------------|---------------------------|
| Stellium | โ Sun, โฝ Moon, โฟ Mercury, MC | Earth / Cardinal | 4 planets |
| T-Square | โ Neptune, โ North Node, โ Saturn | Fixed | 3 planets, Apex: โ Saturn |
| T-Square | โ Neptune, โ North Node, ASC | Mixed | 3 planets, Apex: ASC |
Essential Dignities
===================
| Planet | Trad Score | Mod Score |
|-----------|------------|-----------|
| โ Sun | 0 | 0 |
| โฝ Moon | -5 | -5 |
| โฟ Mercury | 0 | 0 |
| โ Venus | 0 | 0 |
| โ Mars | 0 | 0 |
| โ Jupiter | 0 | 0 |
| โ Saturn | 0 | 0 |
| โ
Uranus | 0 | +6 |
| โ Neptune | 0 | -4 |
| โ Pluto | 0 | 0 |
| โท Chiron | 0 | 0 |
Level 6: Advanced - Bi-Wheel Charts
from stellium import MultiChartBuilder
# Synastry chart (relationship analysis)
synastry = MultiChartBuilder.synastry(
("1994-01-06 11:47", "Palo Alto, CA"),
("1995-06-15 14:30", "Seattle, WA"),
label1="Kate",
label2="Alex",
).calculate()
# Draw bi-wheel with both charts
synastry.draw("synastry_biwheel.svg") \
.preset_detailed() \
.save()
# Access inner and outer charts separately
inner_chart = synastry.inner
outer_chart = synastry.outer
# Get cross-chart aspects
cross_aspects = synastry.get_cross_aspects()
for aspect in cross_aspects[:10]:
print(f"{aspect.object1.name} ({synastry.labels[0]}) "
f"{aspect.aspect_name} "
f"{aspect.object2.name} ({synastry.labels[1]})")
Sun (Kate) Trine Mars (Alex)
Sun (Kate) Trine Chiron (Alex)
Sun (Kate) Opposition MC (Alex)
Sun (Kate) Conjunction IC (Alex)
Moon (Kate) Sextile Mars (Alex)
Moon (Kate) Conjunction True Node (Alex)
Moon (Kate) Opposition South Node (Alex)
Moon (Kate) Trine MC (Alex)
Moon (Kate) Sextile IC (Alex)
Mercury (Kate) Trine Chiron (Alex)
Comparison Chart Types:
- Synastry: Relationship compatibility and dynamics
- Transit: Current planetary influences on natal chart
- Progression: Secondary progressions for timing
- Composite: Relationship midpoint chart (synthesis)
- Davison: Relationship chart with actual location
Command-Line Interface
Stellium includes a CLI for quick chart generation:
# Generate a chart from the notable database
stellium chart notable "Albert Einstein" --output einstein.svg
# Manage ephemeris data
stellium ephemeris download --years 1000-3000
# Clear calculation cache
stellium cache clear
See stellium --help for full CLI documentation.
Where Stellium Reads and Writes
Stellium touches exactly two directories, and they get opposite treatment:
| Default (macOS / Linux) | Default (Windows) | Override with | |
|---|---|---|---|
| Ephemeris โ data; keep it | ~/.stellium/ephe/ |
C:\Users\<you>\.stellium\ephe\ |
STELLIUM_EPHE_PATH |
| Cache โ disposable | ~/.cache/stellium/ |
%LOCALAPPDATA%\stellium\cache\ |
STELLIUM_CACHE_DIR |
Enough Swiss Ephemeris data to cover 1800โ2999 CE is bundled and unpacked on
first use, so most users never need to download anything. To see where both
directories actually resolved โ and whether a variable or the default put them
there โ run stellium cache info.
๐ docs/LOCATIONS.md โ custom ephemeris folders,
portable and read-only-$HOME installs (Docker, Lambda, Windows embedded Python
on a D: drive), what is safe to delete, and troubleshooting.
Feature Highlights
Zodiac Systems
- Tropical Zodiac (Western astrology) - default
- Sidereal Zodiac (Vedic/Hindu astrology) with 9 ayanamsa systems:
- Lahiri (default for sidereal)
- Fagan-Bradley
- Raman
- Krishnamurti
- Yukteshwar
- J.N. Bhasin
- True Chitrapaksha
- True Revati
- De Luce
# Tropical (default)
chart = ChartBuilder.from_native(native).calculate()
# Sidereal with Lahiri ayanamsa
chart = ChartBuilder.from_native(native).with_sidereal("lahiri").calculate()
# Sidereal with custom ayanamsa
chart = ChartBuilder.from_native(native).with_sidereal("fagan_bradley").calculate()
Celestial Objects
Calculate positions for 50+ celestial objects:
- Planets: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto
- Asteroids: Chiron, Ceres, Pallas, Juno, Vesta
- Lunar Nodes: North Node, South Node, True Node, Mean Node
- Lunar Apogee: Lilith (Mean, True, Osculating, Interpolated)
- Chart Points: Ascendant, Midheaven, Descendant, IC, Vertex, East Point
Coordinate Systems
- Ecliptic Coordinates: Longitude, latitude (distance from ecliptic)
- Equatorial Coordinates: Right ascension, declination (distance from celestial equator)
- Out-of-Bounds Detection: Automatically identifies planets with extreme declinations (>23ยฐ27')
sun = chart.get_object("Sun")
print(f"Ecliptic: {sun.longitude:.2f}ยฐ longitude, {sun.latitude:.2f}ยฐ latitude")
print(f"Equatorial: {sun.right_ascension:.2f}ยฐ RA, {sun.declination:.2f}ยฐ declination")
if sun.is_out_of_bounds:
print(f"โ Sun is out of bounds!")
Aspect Calculations
- Major Aspects (Ptolemaic): Conjunction (0ยฐ), Opposition (180ยฐ), Square (90ยฐ), Trine (120ยฐ), Sextile (60ยฐ)
- Minor Aspects: Semi-sextile (30ยฐ), Semi-square (45ยฐ), Sesquiquadrate (135ยฐ), Quincunx (150ยฐ)
- Harmonic Aspects: Quintile (72ยฐ), Bi-quintile (144ยฐ), Septile (51.43ยฐ), Novile (40ยฐ), and more
- Configurable Orbs: Simple, Luminaries-specific, or Complex (aspect-and-planet-pair-specific) orb engines
Dignities
- Essential Dignities: Ruler, Exaltation, Triplicity (by sect), Bound, Decan, Detriment, Fall
- Accidental Dignities: House placement, angular/succedent/cadent, joy
- Both Traditional & Modern rulerships supported
Comparison Charts (Bi-Wheels)
Create relationship, timing, and synthesis charts:
from stellium import MultiChartBuilder, Native, SynthesisBuilder
# Synastry (relationship analysis)
synastry = MultiChartBuilder.synastry(
("1994-01-06 11:47", "Palo Alto, CA"),
("1995-06-15 14:30", "Seattle, WA"),
label1="Person A",
label2="Person B",
).calculate()
synastry.draw("synastry.svg").save()
# Transits (timing analysis)
transits = MultiChartBuilder.transit(
natal_data=("1994-01-06 11:47", "Palo Alto, CA"),
transit_data=("2025-11-26 12:00", "Palo Alto, CA"),
).calculate()
# Composite (relationship midpoint chart)
native_a = Native("1994-01-06 11:47", "Palo Alto, CA")
native_b = Native("1995-06-15 14:30", "Seattle, WA")
composite = SynthesisBuilder.composite(native_a, native_b).calculate()
# Davison (relationship midpoint chart with actual location)
davison = SynthesisBuilder.davison(native_a, native_b).calculate()
Comparison Types:
- Synastry: Two natal charts overlaid (bi-wheel)
- Transit: Natal chart + current/future planets
- Progression: Natal chart + progressed positions
- Composite: Midpoint chart (mathematical average)
- Davison: Midpoint chart with actual geographic location
Unknown Birth Time Charts
Handle charts when birth time is unknown:
# Create chart with unknown time (defaults to noon, skips houses/angles)
chart = ChartBuilder.from_details(
"1994-01-06", # Date only
"Palo Alto, CA",
time_unknown=True
).calculate()
# Visualize with Moon's daily arc
chart.draw("unknown_time.svg").save() # Shows Moon's possible range
Birth-Time Rectification (Sect)
Recover the one thing that is recoverable from an unknown birth time โ sect (day vs night) โ at ~70% accuracy (cross-validated). It's a single honest call, and an indicator, not an oracle: Stellium deliberately refuses to invent a minute-level time (the inverse is ill-posed). See the Rectification Guide for what it does, and โ importantly โ how not to use it.
from stellium import ChartBuilder, analyze_sect
chart = ChartBuilder.from_notable("Frida Kahlo").calculate()
a = analyze_sect(chart) # events auto-looked-up for notables
print(f"{a.p_day:.2f} โ {a.leans}") # 0.80 โ day
# Or as a report section (renders in every format):
from stellium import ReportBuilder
ReportBuilder().from_chart(chart).with_sect_rectification().render(format="markdown")
0.80 โ day
## Sect Rectification
### Anchor
**Chart sect (as given):** Day
**Daylight prior P(day):** 0.55 (geometry, the base rate)
**Calibrated P(day):** 0.80 โ leans DAY (80% conf)
**Reading:** indicator, not oracle โ adjudicate with real knowledge
**โ Moon band:** Moon crosses Taurus โ Gemini within the 24h โ its sign (and anything it rules) is a band, not a point.
### Day vs Night hypotheses
| | IF DAY (above horizon) | IF NIGHT (below horizon) |
| ------------------- | --------------------------------------------------------- | ------------------------------------------------------------ |
| Sect light | Sun in Cancer (peregrine) | Moon in Taurus (exalted) |
| Out-of-sect malefic | Mars in Capricorn (exalted) | Saturn in Pisces (peregrine) |
| โ hardship reads | hot, sharp, sudden โ accidents, violence, fever, conflict | cold, slow, chronic โ illness, poverty, confinement, decline |
| In-sect benefic | Jupiter in Cancer (exalted) | Venus in Gemini (peregrine) |
| โ fortune reads | Jupiter-toned โ honour, wealth, law, faith, expansion | Venus-toned โ love, art, beauty, pleasure, music |
### Evidence & convergence
Evidence alignment โ does the life match each hypothesis?
hardship flavour (malefic-of-sect, VALIDATED +0.35): leans DAY (4.0 day / 2.0 night)
fortune flavour (benefic-of-sect): leans NIGHT (0.6 day / 7.6 night)
firdaria time-lord fit: day-hits 9 / night-hits 8 โ favours day
Soft signals (โ ~null on strangers โ high value only with real first-hand knowledge):
malefic-of-temperament (Mars-hot โ Saturn-cold) = +0 โ โ
sect-light temperament (Solar โ Lunar) = +1 โ DAY
Convergence (counted, never summed): DAY 3 ยท NIGHT 1 (of 4 techniques)
โ SECT: trust this anchor โ it is the only cross-validated signal (~70%). The soft/timing rows routinely point the wrong way; when they fight the anchor on sect, the anchor wins. TIME-within-sect is where your own knowledge decides.
Data Export
# Export to dictionary for JSON serialization
data = chart.to_dict()
# Includes:
# - All planetary positions with coordinates
# - House cusps for all calculated systems
# - All aspects with orbs
# - Component results (Arabic Parts, midpoints, etc.)
# - Chart metadata (date, location, timezone)
PDF Planner Generation
Generate a personalized year-long astrological planner as a PDF:
from stellium import Native, PlannerBuilder
native = Native("1990-05-15 14:30", "San Francisco, CA")
planner = (
PlannerBuilder.for_native(native)
.year(2026)
.timezone("America/Los_Angeles")
.theme("house") # or sepia / celestial / blues / greyscale
.page_size("letter")
.generate("my_planner.pdf")
)
The front matter is curated on by default, so that's already a complete planner.
Drop any page with the matching .without_*() call.
The reference section (front matter). A planner isn't a report โ you don't read it once, you consult it all year with a pen in hand. So its front matter answers the questions the daily pages provoke:
- The Year at a Glance โ Lord of the Year, the solar return, eclipses placed in your houses, every retrograde window, and the slow transits that shape the year
- A year overview โ twelve mini-months with eclipse and station days marked
- Your natal chart as a lookup โ the positions table leads (when a daily page
says
Moon โก natal Mercury, this is where you find out where natal Mercury is), with the wheel following - The year's transit map, solar return and profections
- The progressed Moon โ its dated exact aspects to your natal planets
- Zodiacal releasing, scoped to this year
- A glyph legend for reading the daily pages
The year itself. Monthly calendar grids with every event packed into the day cells, then weekly pages of day boxes with room to write.
Themed. All five design-system themes apply โ chart wheels, aspect colours and
table shading stay coordinated with the page. Use greyscale if you're printing at
home; it swaps ink fills for outlines. Fonts are bundled, so the PDF renders
identically on any machine.
Requires the typst binary.
See the planner cookbook for detailed recipes, and an example planner for the output.
Chart Atlas PDF Generation
Generate multi-page PDF documents with one chart per page, like an old-school astrologer's chart atlas:
from stellium.visualization.atlas import AtlasBuilder
from stellium.core.native import Native
from datetime import datetime
# Create an atlas from notables
(AtlasBuilder()
.add_notable("Albert Einstein")
.add_notable("Marie Curie")
.add_notable("Isaac Newton")
.with_title_page("Famous Scientists")
.with_header()
.with_theme("midnight")
.save("scientists_atlas.pdf"))
# Or with Uranian dials
native1 = Native(datetime(1994, 1, 6, 11, 47), "Palo Alto, CA")
native2 = Native(datetime(1995, 6, 15, 14, 30), "Seattle, WA")
native3 = Native(datetime(2000, 3, 20, 8, 0), "Portland, OR")
(AtlasBuilder()
.add_natives([native1, native2, native3])
.with_chart_type("dial", degrees=90)
.save("uranian_atlas.pdf"))
# Generate atlas from entire notables database
AtlasBuilder.from_all_notables().save("complete_atlas.pdf")
# Filter by category and sort by birth date
AtlasBuilder.from_all_notables(category="scientist", sort_by="date").save("scientists.pdf")
Atlas Features:
- Multiple input methods: Add natives directly, look up notables by name, or use
from_all_notables()for the entire database - Category filtering: Filter notables by category (scientist, artist, etc.) and sort by name or date
- Chart types: Natal wheels or Uranian dials (90ยฐ, 45ยฐ, 360ยฐ)
- Configurable: Headers, themes, page sizes (Letter, A4, half-letter)
- Title page: Optional title page for the atlas
Requires: pip install typst
Data Analysis (pandas Integration)
Batch calculate charts and analyze with pandas DataFrames:
from stellium.analysis import BatchCalculator, ChartStats, charts_to_dataframe
# Calculate 100s of charts from the notables database
charts = BatchCalculator.from_registry(category="scientist").calculate_all()
# Convert to pandas DataFrame
df = charts_to_dataframe(charts)
print(df['sun_sign'].value_counts())
# Statistical analysis
stats = ChartStats(charts)
print(stats.element_distribution())
print(stats.sign_distribution("Sun"))
sun_sign
Pisces 3
Capricorn 3
Scorpio 2
Cancer 2
Aquarius 2
Taurus 2
Sagittarius 2
Leo 2
Gemini 2
Name: count, dtype: int64
{'fire': 0.24, 'earth': 0.23, 'air': 0.215, 'water': 0.315}
{'Aries': 0, 'Taurus': 2, 'Gemini': 2, 'Cancer': 2, 'Leo': 2, 'Virgo': 0, 'Libra': 0, 'Scorpio': 2, 'Sagittarius': 2, 'Capricorn': 3, 'Aquarius': 2, 'Pisces': 3}
Requires: pip install stellium[analysis]
See the analysis cookbook for comprehensive examples.
Performance
A chart builds in about 0.2 ms. There is nothing to configure and nothing to warm up.
from stellium import ChartBuilder, Native
native = Native("2000-01-06 12:00", "Seattle, WA")
chart = ChartBuilder.from_native(native).calculate() # ~0.2 ms
Chart calculation is not cached โ recomputing is faster than reading a cache. Geocoding
is cached, since that one is a network call; it lives in ~/.cache/stellium/
(see docs/LOCATIONS.md).
Documentation & Learning
Example Cookbooks
๐ Read the cookbooks on the docs site: stellium.readthedocs.io โ Cookbooks
367 runnable recipes across 21 cookbooks โ each rendered with its real output: the tables it prints and the charts it draws, captured by running the code when the docs are built. Same recipes as
examples/, but you can see what they produce without running anything.
The examples/ directory is the source those pages are generated from โ every recipe on
the site is literalincluded from a real function in a real script, so the two can never
disagree.
| Charts & visuals | chart ยท dial ยท vedic ยท ephemeris ยท comparison |
| Traditional | dignities ยท hellenistic ยท profections ยท zodiacal releasing ยท directions ยท arc directions |
| Predictive | transit ยท progressions ยท returns ยท electional |
| Output | report ยท planner ยท io |
| Other traditions | bazi (Four Pillars) |
| Analysis | analysis โ pandas DataFrames, queries, statistics |
# Or run any of them yourself
python examples/chart_cookbook.py
User Guides
| Guide | Description |
|---|---|
| VISUALIZATION.md | Complete chart drawing guide with fluent API reference |
| REPORTS.md | Report generation guide: sections, presets, PDF output |
| CHART_TYPES.md | Chart types: natal, synastry, transit, composite, Davison |
| astrology/RECTIFICATION.md | Birth-time rectification & sect recovery: what it is, how to use it, and how not to |
Visual Galleries
| Gallery | Description |
|---|---|
| THEME_GALLERY.md | Visual showcase of every chart theme (generated from the registry) |
| PALETTE_GALLERY.md | Zodiac ring color palettes with previews |
| HTML overview | Full color story overview of all themes and palettes |
Lists of Implemented Options
- See the full documentation list
Quick Start
# Clone and install
git clone https://github.com/katelouie/stellium.git
cd stellium
pip install -e .
# Run example cookbooks
python examples/chart_cookbook.py # Generate chart SVGs
python examples/report_cookbook.py # Generate PDF reports
python examples/comparison_cookbook.py # Generate synastry charts
Roadmap
- See TODO.md for the full development roadmap.
- See CHANGELOG.md for a detailed changelog by version.
Contributing
I welcome contributions from both Python developers and astrologers! Whether you want to:
- Add new calculation engines
- Improve documentation
- Fix bugs
- Add new features
- Share examples
Please see CONTRIBUTING.md for detailed guidelines and an overview of the architecture philosophy and testing.
License
Stellium is released under the AGPLv3.0 License. See LICENSE for details. This is primarily because the core dependency pyswisseph uses AGPLv3 and the even-more-core-dependency Swiss Ephemeris has the dual licensing situation seen below.
Note on Swiss Ephemeris: This library uses the Swiss Ephemeris, which has its own licensing terms for commercial use. See the Swiss Ephemeris website for details.
Acknowledgments
- Swiss Ephemeris - Astronomical calculations of exceptional accuracy
- Astro.com - Ephemeris data and astrological resources
- PySwissEph - Python bindings for Swiss Ephemeris
- Zhanran Astrology / ๆน็ถๆๅบง for Chinese localization.
Community & Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with precision, designed for everyone
Whether you're building a professional astrology application, researching astrological patterns, or learning computational astrology: Stellium provides the tools you need with a modern, extensible architecture.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stellium-0.22.0.tar.gz.
File metadata
- Download URL: stellium-0.22.0.tar.gz
- Upload date:
- Size: 12.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f60beacc4799d93c163153bda4e208d1f425fe05194646256155735d31be1b0
|
|
| MD5 |
f6b9984ae87846b5d482ec0f2a40eb33
|
|
| BLAKE2b-256 |
94e108f0d0e830ef9318ba4c61a60c6494d47281edbbd7224483c6d8105317bf
|
File details
Details for the file stellium-0.22.0-py3-none-any.whl.
File metadata
- Download URL: stellium-0.22.0-py3-none-any.whl
- Upload date:
- Size: 8.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3de0f8c0ed787eb5ee0845f063a9fbf84f64b3e2d1fc3ae83428ff5c566389f
|
|
| MD5 |
6377965d40e65c7e5e4d98c4c1f8d9a1
|
|
| BLAKE2b-256 |
cd34cd3a430c32f43caa253db881409d30423a6764d29a6c8775893be8b95fc7
|