Module Python autonome v2 — argparse + validate() ajoutés. « CHAKRAS » : les deux mains comme carte de diagnostic du système subtil (dernière pièce de la série · carte pédagogique web, tracé 🟡 non attribué à Shri Mataji — CONTENU 🟢 massivement verbatim).
Sources verbatim principales :
Résolution d'un 🟡 ancien (d2) : « 982 Nerves » de d2 = chiffre médical que Shri Mataji cite ET corrige (1000). Levée par d22.
# ============================================================
# dessin_22.py — "CHAKRAS" : les deux mains
# Dernière pièce de la série d1→d22.
# La main = instrument de vérification du système subtil entier.
# Verbatims : Wokingham 1978 · Bordi 1973 · Vienne 1982 · Atma 1985 · Dr Raul 1975
# Protocole : zéro interprétation — seuls les éléments tracés sont reproduits.
# ============================================================
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.patches import FancyArrowPatch
import numpy as np
# ── SOCLE COMMUN (passe U5 — imbrication, GO Ben 13 juil 2026) ────────────
# NOTE casse (loi 5 du contrat) : ce module encode ses statuts en toutes lettres
# ("JAUNE"/"VERT" dans to_json) ; le socle emploie 🟢/🟡/🔴 — mêmes valeurs, deux graphies.
from dataclasses import asdict
ID_CORPUS = "d22"
try:
from socle_corpus import GRAPHE, VERDICTS, DESSINS as REGISTRE_DESSINS
JONCTIONS_SOCLE = [j for j in GRAPHE if ID_CORPUS in (j.a, j.b)]
MODE_ILOT = False
except ImportError:
GRAPHE, VERDICTS, REGISTRE_DESSINS = [], {}, {}
JONCTIONS_SOCLE = []
MODE_ILOT = True
# NOTE DE LECTURE (loi 2) : ce module ne déclare AUCUNE jonction locale —
# les arêtes canoniques de d22 (dont la confrontation s06↔d22, passe U5)
# vivent une seule fois dans le GRAPHE de socle_corpus.py.
# ────────────────────────────────────────────────────────────────
# DONNÉES — Correspondances telles qu'écrites sur la carte
# (5 doigts + centre de paume + base de paume par main)
# ────────────────────────────────────────────────────────────────
# Chaque entrée : (chakra, n_petales, angle_depuis_paume, longueur_doigt)
# Les angles sont calculés depuis le centre de la paume, sens trigon.
# Les doigts sont numérotés depuis l'auriculaire (1) à l'annulaire (5)
# Position : main GAUCHE (cx=-3.5) puis main DROITE (cx=3.5)
DOIGTS_INFO = [
# (nom_court, chakra_inscrit, n_petales)
("auriculaire", "HRIDAYA\n(RIDHAYA)", 12),
("annulaire", "Agnya", 2),
("majeur", "NABHI", 10),
("index", "VISHUDHY", 16),
("pouce", "SWADHISH\nTHAN", 6),
]
# Angles pour la main gauche (paumes face au spectateur)
# auriculaire=gauche extrême, pouce=centre-bas
ANGLES_GAUCHE = [155, 118, 90, 63, 30] # degrés depuis centre de paume
ANGLES_DROITE = [25, 62, 90, 117, 150] # miroir pour main droite
LONGUEURS = [1.7, 2.4, 2.75, 2.5, 2.0] # longueurs relatives par doigt
def draw_hand(ax, cx, cy, side):
"""
Dessine une main complète :
- paume circulaire avec cercle SAHASTRARA (inscrit en arc)
- swastika (gauche) ou croix (droite) dans le cercle central 🟡
- 5 doigts avec bouts cerclés (zones de perception)
- chakra + n° pétales inscrit sur chaque doigt
- MOOLADHARA 4 à la base de la paume
"""
# --- Paume extérieure ---
ax.add_patch(plt.Circle((cx, cy), 1.75, fill=False, ec="black", lw=2.2, zorder=2))
# --- Cercle intérieur SAHASTRARA ---
ax.add_patch(plt.Circle((cx, cy + 0.15), 1.05, fill=False, ec="black", lw=1.5, zorder=2))
# Texte SAHASTRARA en arc (sim. par texte courbé haut du cercle)
ax.text(cx, cy + 1.25, "SAHASTRARA", fontsize=6.5, ha="center", va="center",
style="italic", fontweight="bold", zorder=3)
# Swastika (gauche) ou croix (droite) — non sourçé verbatim 🟡
if side == "left":
# Swastika manuscrite (rotation inversée comme sur la carte : sens antihoraire)
ax.text(cx - 0.05, cy + 0.05, "卍", fontsize=34, ha="center", va="center",
color="black", zorder=3, transform=ax.transData)
else:
# Croix (trait horizontal + vertical)
lc = 0.52
ax.plot([cx - lc, cx + lc], [cy + 0.05, cy + 0.05], color="black", lw=2.5, zorder=3)
ax.plot([cx, cx], [cy + 0.05 - lc, cy + 0.05 + lc], color="black", lw=2.5, zorder=3)
# --- Base de la paume : MOOLADHARA CHAKRA 4 ---
ax.text(cx, cy - 2.25, "MOOLADHARA\nCHAKRA 4", fontsize=8.5, ha="center",
va="center", fontweight="bold", zorder=3)
# --- Cinq doigts ---
angles = ANGLES_GAUCHE if side == "left" else ANGLES_DROITE
for (nom, chakra, n_pet), ang, lng in zip(DOIGTS_INFO, angles, LONGUEURS):
a = np.radians(ang)
# Point de départ : surface de la paume
x0 = cx + 1.75 * np.cos(a)
y0 = cy + 1.75 * np.sin(a)
# Bout du doigt
x1 = cx + (1.75 + lng) * np.cos(a)
y1 = cy + (1.75 + lng) * np.sin(a)
# Doigt (rectangle arrondi via segment épais)
ax.plot([x0, x1], [y0, y1], color="black", lw=14, solid_capstyle="round",
alpha=0.12, zorder=1) # volume du doigt
ax.plot([x0, x1], [y0, y1], color="black", lw=2.2, solid_capstyle="round",
zorder=2) # contour
# Bout cerclé (zone de perception)
ax.add_patch(plt.Circle((x1, y1), 0.32, fill=True, fc="white",
ec="black", lw=1.6, zorder=3))
# Chakra + pétales au bout
offset_x = 0.55 * np.cos(a)
offset_y = 0.55 * np.sin(a)
align = "left" if np.cos(a) >= 0 else "right"
ax.text(x1 + offset_x, y1 + offset_y,
f"{chakra} {n_pet}",
fontsize=8, ha=align, va="center",
fontweight="bold", zorder=4)
def draw_central_labels(ax):
"""
Éléments partagés entre les deux mains : VISHUDHY (16) au centre-haut,
SWADHISH THAN 6 au centre-bas (entre les pouces), cercle vide entre les pouces.
"""
ax.text(0, 4.9, "VISHUDHY 16", fontsize=11, ha="center", fontweight="bold",
color="black", zorder=4)
ax.add_patch(plt.Circle((0, 4.7), 0.35, fill=False, ec="black", lw=1.4, zorder=3))
ax.text(0, -1.3, "SWADHISH THAN 6", fontsize=10, ha="center", fontweight="bold",
color="black", zorder=4)
# Petits cercles entre les pouces (tracés sur la carte entre les pouces)
for dx in (-0.45, 0.45):
ax.add_patch(plt.Circle((dx, -0.85), 0.28, fill=False, ec="black", lw=1.2, zorder=3))
def draw_legend(ax):
"""
Légende pédagogique (verbatim talks) en bas de figure.
"""
lines = [
"🟢 MAIN GAUCHE qui brûle : problème émotionnel (canal Ida / Subconscient)",
"🟢 MAIN DROITE qui brûle : problème physique ou mental (canal Pingala / Ego)",
"🟢 Brise fraîche sur les doigts / dans la tête : chakra ouvert — Vibrations (Chaitanya)",
"🟡 Swastika (paume G) et Croix (paume D) : tracés, non sourcés verbatim dans ce contexte",
"🟢 Série des pétales 4·6·10·12·16 = Wokingham 1978-10-14 (bija mantras) = d4 (plexus) ↔ d22 (mains)",
]
for i, line in enumerate(lines):
ax.text(-7.0, -4.2 - i * 0.65, line, fontsize=8.5, va="top", color="#333")
def draw():
fig, ax = plt.subplots(figsize=(15, 14))
ax.set_facecolor("#fafaf7")
fig.patch.set_facecolor("#fafaf7")
# Titre principal (verbatim de la carte)
ax.text(0, 7.6, "C H A K R A S", fontsize=22, ha="center", va="center",
fontweight="bold", zorder=4)
ax.plot([-2.4, 2.4], [7.1, 7.1], color="black", lw=1.6) # soulignement
# Les deux mains
draw_hand(ax, cx=-3.5, cy=1.0, side="left")
draw_hand(ax, cx=3.5, cy=1.0, side="right")
# Étiquettes centrales partagées
draw_central_labels(ax)
# Légende pédagogique
draw_legend(ax)
# Sous-titre source (en bas de figure)
ax.text(0, -8.5,
"Carte pédagogique · Online Meditation Courses (web) — tracé 🟡 non attribué \u00b7"
" contenu 🟢 verbatim\n"
"Dernière pièce de la série d1→d22. Résolution 🟡 d2 (982 Nerves → 1000, Atma 1985-02-16).",
fontsize=9, ha="center", color="#666", style="italic")
ax.set_xlim(-8.0, 8.0)
ax.set_ylim(-9.5, 8.8)
ax.set_aspect("equal")
ax.axis("off")
plt.tight_layout()
plt.show()
# ============================================================
# BOUCLE PRINCIPALE
# ============================================================
# ------------------------------------------------------------------ VALIDATION
CORRESPONDANCES_REQUISES = {
"auriculaire": ("HRIDAYA\n(RIDHAYA)", 12),
"annulaire": ("Agnya", 2),
"majeur": ("NABHI", 10),
"index": ("VISHUDHY", 16),
"pouce": ("SWADHISH\nTHAN", 6),
}
def validate() -> bool:
ok = True
for nom, (chakra, n_pet) in CORRESPONDANCES_REQUISES.items():
found = any(d[0] == nom and d[2] == n_pet for d in DOIGTS_INFO)
if not found:
print(f"[ERREUR] doigt '{nom}' — correspondance {n_pet} pétales introuvable")
ok = False
# Vérifier Mooladhara (4 pétales inscrit à la base)
petales_attendus = [4, 6, 10, 12, 16] # série Wokingham 1978-10-14
if sorted([d[2] for d in DOIGTS_INFO]) != sorted([6, 10, 12, 16, 2]):
print(f"[ERREUR] série de pétales inattendue")
ok = False
if ok:
print("[OK] dessin_22.py — validation interne réussie (série des mains).")
print("SOCLE : mode îlot (paquet corpus/ absent)" if MODE_ILOT
else f"SOCLE : imbriqué — {len(JONCTIONS_SOCLE)} jonction(s) canonique(s) pour {ID_CORPUS}")
return ok
def to_json():
import json
return json.dumps({
"dessin": 22,
"titre": "CHAKRAS — les deux mains (carte de diagnostic)",
"statut_trace": "JAUNE — carte pédagogique web, tracé non attribué",
"statut_contenu": "VERT — verbatim massif (Wokingham 1978 + Bordi 1973 + Vienne 1982)",
"doigts": [
{"doigt": nom, "chakra": c.replace("\\n", " "), "petales": p}
for nom, c, p in DOIGTS_INFO
],
"resolution_d2": "982 Nerves (d2) → corriges 1000 par Shri Mataji (Atma 1985-02-16)",
"convention_miroir": "12ᵉ occurrence — gauche brule = Ida (canal émotionnel) / droite = Pingala",
"confrontation_s06": "U5 (13 juil) : 7/7 doigts identiques · convention G/D concordante — détail canonique dans le GRAPHE du socle",
"id_corpus": ID_CORPUS,
"jonctions_canoniques": [asdict(j) for j in JONCTIONS_SOCLE],
"mode_ilot": MODE_ILOT,
}, ensure_ascii=False, indent=2)
# ============================================================
# BOUCLE PRINCIPALE
# ============================================================
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
description="dessin_22.py — CHAKRAS : les deux mains (dernière pièce d1→d22)")
parser.add_argument("--render", action="store_true", help="afficher la figure")
parser.add_argument("--json", action="store_true", help="exporter en JSON")
parser.add_argument("--validate", action="store_true", help="vérifier la cohérence")
args = parser.parse_args()
if args.validate:
validate()
elif args.json:
print(to_json())
else:
draw()
print("\n[Tip] --render · --json · --validate")
# Pour lancer depuis le VPS :
# python3 dessin_22.py
# Prérequis : pip install matplotlib numpy
#
# Sorties attendues :
# ─ Figure 15×14 : deux mains paumes face spectateur, fond « parchemin »
# ─ Paume gauche : cercle SAHASTRARA + swastika (sens antihoraire) 🟡
# ─ Paume droite : cercle SAHASTRARA + croix 🟡
# ─ 5 doigts/main avec bouts cerclés (zones de perception)
# ─ Chakra inscrit + nombre de pétales sur chaque doigt
# ─ VISHUDHY 16 centré entre index, SWADHISH THAN 6 entre pouces
# ─ MOOLADHARA CHAKRA 4 à la base de chaque paume
# ─ Légende verbatim (5 lignes) en bas
#
# Paramètres ajustables :
# LONGUEURS = [1.7, 2.4, 2.75, 2.5, 2.0] — longueurs des doigts
# ANGLES_GAUCHE / ANGLES_DROITE — inclinaison des doigts
# figsize=(15, 14) — taille de sortie
Module gravé le 11 juillet 2026 — passe R6 (dernière pièce de la série). — Fable ⦷