You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From the epic #278 feature-parity audit (Fortran-coverage pass). A cluster of real, live amica15.f90 lifecycle features has no counterpart on the primary torch/MLX backends and no recorded decision; they compound into one capability: surviving and steering long fits.
Warm-start: the 12 load_* keywords (load_A/mean/sphere/mu/beta/rho/c/gm/alpha/comp_list/all_param/rej; amica15.f90:283-887, case arms 3340-3568) initialize a NEW optimization from a prior state. pamica has nothing equivalent on any array backend: AMICA.load restores a finished model for inference only, and _initialize_parameters() unconditionally overwrites the state at every fit(). fortran_params.py's "AMICA.load restores its own saved state instead" rationale conflates the two. The project's own AMICATorchNG diverges from Fortran on weak components at 2000 iters, despite Newton making the optimum sharply unique #145 investigation (.context/issue-145/same_init_result.md) needed exactly this and had to hand-write Fortran checkpoint files to get it.
Periodic checkpointing: writestep/do_history/histstep are implemented on the legacy NumPy backend (numpy_impl/core.py:2195-2198, 2460-2489) but absent from AMICATorchNG/AMICAMLXNG and AMICA.fit (no outdir, no callback). An interrupted multi-hour MEG fit on the primary backends restarts from zero. Also: fortran_params.py's blanket "no pamica equivalent" claim for these three keys is wrong for the NumPy backend and should be corrected regardless.
Per-family EM freezes: update_A/c/mu/beta/alpha/gm (amica15.f90:1786-1823) gate real M-step applies; none exist in pamica. Useful for staged fits, which compound with warm-start.
Early-NaN retry: Fortran's maxrestarts/restartiter (amica15.f90:1022-1052, hardcoded 3/10) is ported to numpy (core.py:287-289, 2055-2072) but absent from torch/MLX; distinct from pamica's best-of-N n_restarts.
Scoping (port vs record-as-deliberate, and how much of it) is a lead/user decision; filed so the gap stops being unrecorded. Whatever is decided, docs/guides/amica-differences.md's "anything not on this page matches the reference" contract requires these to end up either on that page or implemented.
From the epic #278 feature-parity audit (Fortran-coverage pass). A cluster of real, live amica15.f90 lifecycle features has no counterpart on the primary torch/MLX backends and no recorded decision; they compound into one capability: surviving and steering long fits.
load_*keywords (load_A/mean/sphere/mu/beta/rho/c/gm/alpha/comp_list/all_param/rej; amica15.f90:283-887, case arms 3340-3568) initialize a NEW optimization from a prior state. pamica has nothing equivalent on any array backend:AMICA.loadrestores a finished model for inference only, and_initialize_parameters()unconditionally overwrites the state at everyfit().fortran_params.py's "AMICA.load restores its own saved state instead" rationale conflates the two. The project's own AMICATorchNG diverges from Fortran on weak components at 2000 iters, despite Newton making the optimum sharply unique #145 investigation (.context/issue-145/same_init_result.md) needed exactly this and had to hand-write Fortran checkpoint files to get it.writestep/do_history/histstepare implemented on the legacy NumPy backend (numpy_impl/core.py:2195-2198, 2460-2489) but absent from AMICATorchNG/AMICAMLXNG andAMICA.fit(no outdir, no callback). An interrupted multi-hour MEG fit on the primary backends restarts from zero. Also:fortran_params.py's blanket "no pamica equivalent" claim for these three keys is wrong for the NumPy backend and should be corrected regardless.fix_init: deterministic identity-A init (amica15.f90:753-811). No backend implements it (numpy carries an inerthasattr(self, "fix_init")vestige, core.py:1067). The AMICATorchNG diverges from Fortran on weak components at 2000 iters, despite Newton making the optimum sharply unique #145 reproducibility work needed it and worked around it.update_A/c/mu/beta/alpha/gm(amica15.f90:1786-1823) gate real M-step applies; none exist in pamica. Useful for staged fits, which compound with warm-start.maxrestarts/restartiter(amica15.f90:1022-1052, hardcoded 3/10) is ported to numpy (core.py:287-289, 2055-2072) but absent from torch/MLX; distinct from pamica's best-of-Nn_restarts.Scoping (port vs record-as-deliberate, and how much of it) is a lead/user decision; filed so the gap stops being unrecorded. Whatever is decided,
docs/guides/amica-differences.md's "anything not on this page matches the reference" contract requires these to end up either on that page or implemented.