Systèmes de maisons

Les systèmes de maisons divisent la sphère céleste en douze segments, appelés maisons, à partir de l’Ascendant (l’horizon est au moment de la naissance). Chaque système utilise une projection mathématique différente pour effectuer cette division, c’est pourquoi le même thème peut sembler très différent selon le système choisi. Ketu intègre six systèmes et permet d’en enregistrer d’autres.

Systèmes pris en charge

Les six systèmes intégrés sont exposés dans le dictionnaire SYSTEMS :

Clé

Nom

Description

placidus

Placidus

Basé sur le temps ; le plus courant en astrologie occidentale moderne

koch

Koch

Système du lieu de naissance ; similaire à Placidus aux latitudes moyennes

porphyry

Porphyre

Divise les quadrants en tiers ; fonctionne aux hautes latitudes

whole_sign

Signes entiers

Chaque maison = un signe complet ; le système le plus ancien répertorié

equal

Maisons égales

Maisons de 30° chacune, à partir de l’Ascendant

regiomontanus

Regiomontanus

Basé sur l’espace ; courant en astrologie horaire

from ketu.houses import SYSTEMS

print(list(SYSTEMS.keys()))
# ['placidus', 'koch', 'porphyry', 'whole_sign', 'equal', 'regiomontanus']

calculate_houses

calculate_houses(jd, lat, lon, system="placidus", polar_fallback="raise")

Calcule les douze cuspides de maisons et les angles (Ascendant, Milieu du ciel, ARMC, Vertex) pour un moment et un lieu donnés. Retourne un tableau structuré NumPy de type HOUSES_DTYPE.

Paramètres :

  • jd — Jour Julien (float, UTC)

  • lat — latitude géographique en degrés (+N / -S)

  • lon — longitude géographique en degrés (+E / -W)

  • system — l’une des six clés ci-dessus (défaut "placidus")

  • polar_fallback — comportement au-delà des cercles arctique/antarctique (voir ci-dessous)

Exemple — Thème de Paris à J2000

from ketu.houses import calculate_houses, house_of, SYSTEMS, HOUSES_DTYPE, HighLatitudeError

jd = 2451545.0       # J2000: 2000-01-01 12:00 UTC
lat = 48.8566        # Paris latitude
lon = 2.3522         # Paris longitude

h = calculate_houses(jd, lat, lon, system="placidus")

print(h["asc"])      # Ascendant longitude (degrees)
print(h["mc"])       # Midheaven longitude (degrees)
print(h["cusps"])    # Array of 12 cusp longitudes

Changer de système

for system in SYSTEMS:
    h = calculate_houses(jd, lat, lon, system=system)
    print(f"{system:16s}  ASC={h['asc']:.2f}  MC={h['mc']:.2f}")

house_of

house_of(planet_lon, cusps)

Place une ou plusieurs longitudes planétaires dans un numéro de maison (1–12), vectorisé sur un tableau de longitudes.

from ketu.houses import calculate_houses, house_of

jd = 2451545.0
h = calculate_houses(jd, 48.8566, 2.3522)
cusps = h["cusps"]

# Single planet
sun_lon = 280.5
print(house_of(sun_lon, cusps))   # e.g. 10

# Multiple planets at once
import numpy as np
planet_lons = np.array([280.5, 45.3, 123.7, 198.2])
houses = house_of(planet_lons, cusps)
print(houses)   # array of house numbers 1–12

HOUSES_DTYPE

Le tableau structuré retourné par calculate_houses possède les champs suivants :

Champ

Type

Description

jd

float64

Jour Julien du calcul

lat

float64

Latitude géographique

lon

float64

Longitude géographique

system

U20

Nom du système de maisons

cusps

float64[12]

Douze longitudes de cuspides de maisons (degrés)

asc

float64

Longitude de l’Ascendant (degrés)

mc

float64

Longitude du Milieu du ciel (degrés)

armc

float64

ARMC (angle du temps sidéral)

vertex

float64

Longitude du Vertex (degrés)

Gestion des hautes latitudes

Les systèmes basés sur la projection (Placidus, Koch) deviennent invalides aux latitudes extrêmes (approximativement au-delà de 66° N ou en deçà de 66° S) car l’écliptique peut ne pas intersecter le premier vertical.

polar_fallback="raise" (défaut) — lève HighLatitudeError lorsque le calcul est géométriquement impossible.

Fallback alternatif — passer le nom d’un autre système à utiliser comme fallback :

from ketu.houses import calculate_houses, HighLatitudeError

# Attempt Placidus; fall back to Porphyry at high latitudes
try:
    h = calculate_houses(jd, 70.0, 25.0, system="placidus", polar_fallback="porphyry")
except HighLatitudeError:
    # polar_fallback="raise" and the location is beyond the polar circle
    pass

Les Signes entiers et les Maisons égales ne lèvent jamais HighLatitudeError — ils fonctionnent partout.

Enregistrement de systèmes personnalisés

from ketu.houses import register

@register("my_system")
def my_system_calculator(jd, lat, lon):
    # Returns (cusps_array[12], asc, mc, armc, vertex)
    ...

Après l’enregistrement, "my_system" est disponible comme argument system= de calculate_houses.

Étapes suivantes