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és

  • system — système de maisons (défaut "placidus")

  • aspects — spécification de l’ensemble d’aspects (None utilise 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

jd

scalaire

Jour Julien

lat

scalaire

Latitude géographique

lon

scalaire

Longitude géographique

system

scalaire

Nom du système de maisons

body_lons

[14]

Longitudes écliptiques pour les corps 0–13

body_lats

[14]

Latitudes écliptiques pour les corps 0–13

body_speeds

[14]

Mouvement journalier en degrés pour les corps 0–13

cusps

[12]

Longitudes des cuspides de maisons

asc

scalaire

Longitude de l’Ascendant

mc

scalaire

Longitude du Milieu du ciel

armc

scalaire

ARMC (angle du temps sidéral)

vertex

scalaire

Longitude du Vertex

aspect_matrix

[14, 14]

Type d’aspect entre chaque paire de corps (0 = aucun)

aspect_orbs

[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és CHART_DTYPE issus de compute_chart

  • aspects — ensemble d’aspects : "classical", "traditional", "extended", ou une liste/masque. La valeur par défaut propre à calculate_synastry est "classical" (5 aspects majeurs), épinglée pour la stabilité d’octets rétrocompatible — ceci est distinct de la valeur par défaut globale de calculate_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 synastrie

  • mode"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

body_a

int

Indice de corps du thème A (0–15 ; 14=ASC, 15=MC)

body_b

int

Indice de corps du thème B (0–15)

lon_a

float64

Longitude écliptique du corps A

lon_b

float64

Longitude écliptique du corps B

aspect_type

int

Code de type d’aspect

orb

float64

Orbe en degrés

applying

bool

Vrai si l’aspect est appliquant

orb_limit

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