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 |
Basé sur le temps ; le plus courant en astrologie occidentale moderne |
|
Koch |
Système du lieu de naissance ; similaire à Placidus aux latitudes moyennes |
|
Porphyre |
Divise les quadrants en tiers ; fonctionne aux hautes latitudes |
|
Signes entiers |
Chaque maison = un signe complet ; le système le plus ancien répertorié |
|
Maisons égales |
Maisons de 30° chacune, à partir de l’Ascendant |
|
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 |
|---|---|---|
|
float64 |
Jour Julien du calcul |
|
float64 |
Latitude géographique |
|
float64 |
Longitude géographique |
|
U20 |
Nom du système de maisons |
|
float64[12] |
Douze longitudes de cuspides de maisons (degrés) |
|
float64 |
Longitude de l’Ascendant (degrés) |
|
float64 |
Longitude du Milieu du ciel (degrés) |
|
float64 |
ARMC (angle du temps sidéral) |
|
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
Thèmes relationnels — synastrie et thème composite utilisant les cuspides de maisons
Référence API — liste complète des signatures
ketu.houses