Thèmes prédictifs : retours solaires et lunaires

Les thèmes de retour marquent le moment où une planète revient à la même longitude écliptique qu’elle occupait à la naissance. Ketu fournit deux fonctions de retour — solar_return pour le retour annuel du Soleil, et lunar_return pour le retour mensuel de la Lune.

Les deux fonctions retournent un tableau structuré CHART_DTYPE complet (identique à compute_chart), avec le système de maisons natal complet, les positions des corps et la matrice d’aspects calculés pour le moment exact du retour.

Asymétrie importante de l’API

Fonction

Paramètre cible

Type

Signification

solar_return

target_year

int

Année calendaire dans laquelle trouver le retour

lunar_return

target_jd

float

Jour Julien à partir duquel commencer la recherche

Cette distinction est importante : solar_return(natal_jd, ..., target_year=2026) trouve le retour qui tombe dans l’année 2026 (il y en a exactement un). lunar_return(natal_jd, ..., target_jd=jd_now) trouve le prochain retour lunaire à partir de target_jd ou après (il y en a ~13 par an).

solar_return

solar_return(
    natal_jd,
    natal_lat,
    natal_lon,
    target_year,
    return_lat=None,
    return_lon=None,
    system="placidus",
)

Paramètres :

  • natal_jd — Jour Julien du thème natal

  • natal_lat, natal_lon — emplacement natal (utilisé comme emplacement de retour par défaut)

  • target_year — année calendaire (int) dans laquelle trouver le retour solaire

  • return_lat, return_lon — coordonnées de relocalisation (voir ci-dessous) ; défaut None = emplacement natal

  • system — système de maisons pour le thème de retour (défaut "placidus")

Exemple — retour solaire pour 2026, emplacement natal

from ketu.returns import solar_return

natal_jd  = 2451545.0   # natal chart: J2000 (2000-01-01 12:00 UTC)
natal_lat = 48.8566     # Paris
natal_lon = 2.3522

sr = solar_return(natal_jd, natal_lat, natal_lon, target_year=2026)

print(f"Solar return JD:  {sr['jd']:.4f}")
print(f"Solar return ASC: {sr['asc']:.2f} deg")
print(f"Sun longitude:    {sr['body_lons'][0]:.4f} deg")  # Should match natal Sun

lunar_return

lunar_return(
    natal_jd,
    natal_lat,
    natal_lon,
    target_jd,
    return_lat=None,
    return_lon=None,
    system="placidus",
)

Paramètres :

  • natal_jd — Jour Julien du thème natal

  • natal_lat, natal_lon — emplacement natal

  • target_jd — Jour Julien à partir duquel commencer la recherche (float) ; la fonction retourne le premier retour lunaire à ce JD ou après

  • return_lat, return_lon — coordonnées de relocalisation ; défaut None = emplacement natal

  • system — système de maisons pour le thème de retour

Exemple — prochain retour lunaire depuis J2000

from ketu.returns import lunar_return

natal_jd  = 2451545.0   # natal chart: J2000
natal_lat = 48.8566     # Paris
natal_lon = 2.3522

# Find the lunar return starting from approximately the same date
lr = lunar_return(natal_jd, natal_lat, natal_lon, target_jd=natal_jd)

print(f"Lunar return JD:  {lr['jd']:.4f}")
print(f"Lunar return ASC: {lr['asc']:.2f} deg")
print(f"Moon longitude:   {lr['body_lons'][1]:.4f} deg")  # Should match natal Moon

Relocalisation

Les deux fonctions acceptent des paramètres optionnels return_lat / return_lon. Lorsqu’ils sont fournis, les cuspides de maisons et les angles dans le thème de retour sont calculés pour les coordonnées de relocalisation plutôt que pour l’emplacement natal. C’est utilisé dans l’analyse des thèmes de retour relocalisés.

from ketu.returns import solar_return

natal_jd  = 2451545.0
natal_lat = 48.8566   # natal: Paris
natal_lon = 2.3522

# Relocated solar return: body positions are for the exact return moment,
# but houses are cast for New York
sr_relocated = solar_return(
    natal_jd, natal_lat, natal_lon,
    target_year=2026,
    return_lat=40.7128,   # New York
    return_lon=-74.0060,
)

print(f"Relocated ASC: {sr_relocated['asc']:.2f} deg")

Lorsque return_lat=None et return_lon=None (les défauts), les coordonnées natales sont utilisées à la fois pour la recherche du moment de retour et le calcul des maisons.

Contrat UTC

Toutes les valeurs de Jour Julien (natal_jd, target_jd) doivent être en UTC. Les fonctions n’effectuent aucune conversion de fuseau horaire en interne.

from ketu.ephemeris.time import utc_to_julian
from datetime import datetime, timezone

natal_dt = datetime(2000, 1, 1, 12, 0, 0, tzinfo=timezone.utc)
natal_jd = utc_to_julian(natal_dt)

Prochaines étapes