Skip to content

ICT-23 cellule 24 : dedupliquer le maillage du tore via torus_points (le remede torus_surface n'est pas equivalent) #20087

Description

@jsboige

Ce qui est duplique

ICT-23-PersonaCatastrophe-Python.ipynb, cellule 24 (0-indexee 23) reconstruit a la main le maillage du tore avant de le tracer :

u = np.linspace(0, 2 * np.pi, 40)
v = np.linspace(0, 2 * np.pi, 40)
U, V = np.meshgrid(u, v)
Xs = (2.0 + 1.0 * np.cos(U)) * np.cos(V)
Ys = (2.0 + 1.0 * np.cos(U)) * np.sin(V)
Zs = 1.0 * np.sin(U)
ax_3d.plot_wireframe(Xs, Ys, Zs, color='lightgray', alpha=0.25, lw=0.4)

Les equations du plongement du tore sont deja portees par ict/catastrophe.py :

  • torus_points(theta, phi, R, r) (l.541) -- x = (R + r cos phi) cos theta, y = (R + r cos phi) sin theta, z = r sin phi ;
  • torus_surface(ax, R, r, nu, nv, **kwargs) (l.627) -- construit son propre meshgrid puis appelle torus_points, et trace une surface.

Pourquoi la deduplication n'est pas le remplacement suggere

torus_surface n'est pas equivalente a la ligne de la cellule : elle trace une surface ombree (ax.plot_surface, defauts alpha=0.18, color="0.55", linewidth=0), alors que la cellule trace un fil de fer (ax.plot_wireframe, lw=0.4, alpha=0.25). Substituer l'une a l'autre change la figure du carnet.

La deduplication reellement identique passe par le point d'entree bas niveau, en gardant le trace en fil de fer :

Xs, Ys, Zs = torus_points(V, U, R=2.0, r=1.0)
ax_3d.plot_wireframe(Xs, Ys, Zs, color='lightgray', alpha=0.25, lw=0.4)

Attention a l'ordre des arguments : dans la cellule, U est l'angle du tube (phi) et V l'angle du grand cercle (theta) -- l'appel est donc torus_points(V, U), pas (U, V). Numeriquement c'est identique (memes formules, meme grille 40x40) : la figure reste inchangee, seule la duplication des equations disparait. torus_points s'ajoute a la liste d'imports de la cellule (from ict.catastrophe import ...), pour ne pas dependre de l'etat du noyau laisse par une cellule anterieure.

Provenance

Signale par la review Hermes de #19590 (COMMENT_WITH_CONCERNS, point secondaire, non bloquant), qui proposait cat.torus_surface(ax). Le constat de duplication est exact ; le remede propose ne l'est pas (voir ci-dessus).

Pourquoi c'est differe, et pas corrige dans #19590

Le diff de #19590 contre main est markdown seul (cellule de la section 8). Y ajouter une modification de cellule code ferait basculer une PR de prose en PR de code : re-execution complete obligatoire (C.2, cf .claude/rules/notebook-conventions.md) et re-armement des ratchets de sortie, pour un point explicitement non bloquant. Le report est donc conscient et nomme ici.

Critere de sortie

  • La cellule 24 ne derive plus aucune equation du tore a la main : elle consomme torus_points.
  • Le rendu de la figure est inchange (meme grille 40x40, meme plot_wireframe, memes couleurs).
  • Carnet re-execute de bout en bout, outputs committes (C.2).

Part of #19333

Activity

  1. jsboige commented on Oct 9, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2024:CoursIA-2 -- dedupliquer le maillage du tore en cellule 24 de ICT-23 via torus_points(theta, phi) (torus_points(V, U), R=2.0, r=1.0), import ajoute, carnet re-execute (C.2).

  2. jsboige commented on Oct 9, 2026

    @jsboige
    OwnerAuthor

    [INFO] Livre -- PR #20117 (fix/20087-ict23-torus-points).

    La cellule 24 consomme desormais torus_points(V, U, R=2.0, r=1.0) (organe natif ict.catastrophe), imports mis a jour. Pas torus_surface : elle trace une surface ombree la ou la cellule trace un fil de fer -- la remplacer changerait la figure (c'est le point que la review Hermes de #19590 avait mal cible).

    Figure inchangee, verifie par deux mesures : egalite bit-a-bit du maillage (max abs diff = 0.0) et image pixel-identique apres re-execution (seul l'octet IDAT compresse differe). Carnet re-execute de bout en bout (C.2) : 11 cellules, exec_count 1..11, 0 erreur ; gates check_exec_sequence CLEAN, check_c2_compliance 1/1, validate_pr_notebooks origin/main 1/1. Chemins papermill absolus scrubes au basename.

    La cloture revient au coordinateur / a l'adjoint (critere de sortie couvert par la PR).

    (lane myia-po-2024:CoursIA-2)

  3. added a commit that references this issue on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions