Thèmes relationnels : Synastrie et Thème composite
Les thèmes relationnels analysent les thèmes de deux personnes ensemble plutôt que séparément. Ketu fournit trois modules à cet effet : ketu.charts construit les thèmes individuels, ketu.synastry les compare aspect par aspect, et ketu.composite dérive un thème composite basé sur les points médians représentant la relation elle-même.
Construction de thèmes avec compute_chart
compute_chart est la fonction centrale pour le calcul du thème natal. Elle calcule les 14 positions de corps célestes, les douze cuspides de maisons, les quatre angles, et la matrice d’aspects complète en un seul appel, retournant un tableau structuré CHART_DTYPE.
compute_chart(jd, lat, lon, system="placidus", aspects=None, polar_fallback="raise")
Paramètres :
jd— Jour Julien (float, UTC)lat/lon— latitude et longitude géographiques en degréssystem— système de maisons (défaut"placidus")aspects— spécification de l’ensemble d’aspects (Noneutilise la valeur par défaut de la bibliothèque — TRADITIONAL, les 7 aspects demi-cercle, v1.3+)polar_fallback— comportement de fallback aux hautes latitudes (voir Systèmes de maisons)
Exemple — deux thèmes
from ketu.charts import compute_chart
jd_a = 2451545.0 # 2000-01-01 12:00 UTC (J2000), Paris
jd_b = 2451910.0 # 2000-12-31 12:00 UTC, New York
chart_a = compute_chart(jd_a, 48.8566, 2.3522) # Paris
chart_b = compute_chart(jd_b, 40.7128, -74.0060) # New York
print(chart_a["asc"]) # Ascendant of chart A
print(chart_b["body_lons"][0]) # Sun longitude of chart B
Champs de CHART_DTYPE
Champ |
Forme |
Description |
|---|---|---|
|
scalaire |
Jour Julien |
|
scalaire |
Latitude géographique |
|
scalaire |
Longitude géographique |
|
scalaire |
Nom du système de maisons |
|
[14] |
Longitudes écliptiques pour les corps 0–13 |
|
[14] |
Latitudes écliptiques pour les corps 0–13 |
|
[14] |
Mouvement journalier en degrés pour les corps 0–13 |
|
[12] |
Longitudes des cuspides de maisons |
|
scalaire |
Longitude de l’Ascendant |
|
scalaire |
Longitude du Milieu du ciel |
|
scalaire |
ARMC (angle du temps sidéral) |
|
scalaire |
Longitude du Vertex |
|
[14, 14] |
Type d’aspect entre chaque paire de corps (0 = aucun) |
|
[14, 14] |
Orbe en degrés pour chaque aspect actif |
L’indice de corps 13 correspond à Chiron (voir Chiron).
Assistant de sect
from ketu.charts import is_day_chart
# Returns True if the Sun is above the horizon (day chart)
is_day = is_day_chart(jd_a, 48.8566, 2.3522)
Ceci est utilisé en interne par les Parties arabes pour sélectionner les formules tenant compte de la sect.
Synastrie
La synastrie superpose deux thèmes et trouve les aspects formés entre les planètes d’une personne et les planètes de l’autre.
from ketu.synastry import calculate_synastry, SYNASTRY_DTYPE
calculate_synastry(chart_a, chart_b, aspects="classical", orbs="synastry", mode="filtered")
Paramètres :
chart_a,chart_b— tableaux structurésCHART_DTYPEissus decompute_chartaspects— ensemble d’aspects :"classical","traditional","extended", ou une liste/masque. La valeur par défaut propre àcalculate_synastryest"classical"(5 aspects majeurs), épinglée pour la stabilité d’octets rétrocompatible — ceci est distinct de la valeur par défaut globale decalculate_aspects, qui est TRADITIONAL (7 aspects demi-cercle, v1.3+).orbs— ensemble d’orbes :"synastry"applique le facteur de réduction d’orbe standard pour la synastriemode—"filtered"retourne uniquement les aspects actifs ;"all"retourne chaque paire de corps
Exemple
from ketu.charts import compute_chart
from ketu.synastry import calculate_synastry
jd_a = 2451545.0
jd_b = 2451910.0
chart_a = compute_chart(jd_a, 48.8566, 2.3522)
chart_b = compute_chart(jd_b, 40.7128, -74.0060)
aspects = calculate_synastry(chart_a, chart_b)
for row in aspects:
print(
f"Body {row['body_a']} ({row['lon_a']:.1f} deg)"
f" {row['aspect_type']}"
f" Body {row['body_b']} ({row['lon_b']:.1f} deg)"
f" orb={row['orb']:.2f} deg"
f" applying={row['applying']}"
)
Champs de SYNASTRY_DTYPE
Champ |
Type |
Description |
|---|---|---|
|
int |
Indice de corps du thème A (0–15 ; 14=ASC, 15=MC) |
|
int |
Indice de corps du thème B (0–15) |
|
float64 |
Longitude écliptique du corps A |
|
float64 |
Longitude écliptique du corps B |
|
int |
Code de type d’aspect |
|
float64 |
Orbe en degrés |
|
bool |
Vrai si l’aspect est appliquant |
|
float64 |
Orbe maximum autorisé pour cet aspect |
La synastrie inclut l’ASC et le MC des deux thèmes, donnant jusqu’à 16 points par thème.
Thèmes composites
Un thème composite est construit à partir des points médians de chaque paire de planètes, maisons et angles entre deux thèmes nataux. Il représente l’énergie de la relation plutôt que celle de l’un ou l’autre individu.
from ketu.composite import calculate_composite, circular_midpoint
calculate_composite(chart_a, chart_b, system="placidus")
Retourne un seul tableau structuré CHART_DTYPE. Le système de maisons est recalculé à partir de l’Ascendant et du Milieu du ciel composites.
from ketu.charts import compute_chart
from ketu.composite import calculate_composite, circular_midpoint
jd_a = 2451545.0
jd_b = 2451910.0
chart_a = compute_chart(jd_a, 48.8566, 2.3522)
chart_b = compute_chart(jd_b, 40.7128, -74.0060)
composite = calculate_composite(chart_a, chart_b)
print(composite["asc"]) # Composite Ascendant
print(composite["body_lons"][0]) # Composite Sun
circular_midpoint
circular_midpoint calcule le point médian sur l’arc le plus court entre deux longitudes écliptiques, en gérant correctement le bouclage 0°/360°.
from ketu.composite import circular_midpoint
# Midpoint of 350° and 10° crosses the 0°-point: result is 0°
mid = circular_midpoint(350.0, 10.0)
print(mid) # 0.0
# Standard midpoint
mid2 = circular_midpoint(30.0, 90.0)
print(mid2) # 60.0
Étapes suivantes
Thèmes prévisionnels — thèmes de retour solaire et lunaire
Parties arabes — Fortune, Esprit et lots personnalisés
Référence API — signatures complètes pour
ketu.charts,ketu.synastry,ketu.composite