From e98e19a78c1389b1ae831e0423e0d2e6a5a8cef7 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Fri, 30 Oct 2026 08:57:40 +0100 Subject: [PATCH] CLAUDE.md: extern/gen_data, numero e durata dei test, comando per generare i CSV di prova Co-Authored-By: Claude Sonnet 5.5 --- CLAUDE.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index bfb6006..6eaedb5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,9 +14,10 @@ uv venv .venv && uv pip install -e ".[dev]" .venv/bin/fitseg analizza input/gen_7.csv [--domini output/gen_7/01_domini/domini.toml] # tutti i passi → output/gen_7/{01_domini,02_sovrapposizione,03_report} .venv/bin/pytest # tutti; singolo: -k raffreddamento o tests/test_fit.py .venv/bin/ruff check src tests +./scarica_gen_data.sh [-u] # clona/aggiorna gen_data in extern/ (serve a test_validazione) ./pulisci.sh [-n] [-y] [--solo-output] # svuota output/ e cancella input/*.csv (con conferma); -n dry-run, --solo-output lascia input/ ``` -`--config`/`--output` vanno **prima** del sottocomando. `input/` contiene i CSV da analizzare; `output/` e `input/*.csv` sono ignorati da git. Ogni analisi scrive in `output//` (`01_domini`, `02_sovrapposizione`, `03_report`, vedi `uscita.PASSI`). +`--config`/`--output` vanno **prima** del sottocomando. `input/` contiene i CSV da analizzare; `output/`, `input/*.csv` e `extern/` (clone di `gen_data`) sono ignorati da git. Ogni analisi scrive in `output//` (`01_domini`, `02_sovrapposizione`, `03_report`, vedi `uscita.PASSI`). ## Architettura (`src/fitseg/`, un modulo per responsabilità) @@ -29,8 +30,8 @@ uv venv .venv && uv pip install -e ".[dev]" ## Test -`.venv/bin/pytest` (≈ 50 s; nessun file esterno richiesto). Unitari su un segnale sintetico in [tests/conftest.py](tests/conftest.py) (τ = 16 s, 3 gradini, nessun disturbo a salto); -[tests/test_validazione.py](tests/test_validazione.py) genera 20 seed con `../gen_data` (saltato se manca) e confronta gradini, τ, ampiezze e salti con i **parametri veri** sorteggiati +`.venv/bin/pytest` (96 test, ≈ 40 s). Senza `extern/gen_data` i 20 di validazione sono saltati, gli altri non richiedono file esterni. Unitari su un segnale sintetico in [tests/conftest.py](tests/conftest.py) (τ = 16 s, 3 gradini, nessun disturbo a salto); +[tests/test_validazione.py](tests/test_validazione.py) genera 20 seed con `extern/gen_data` (clone gitignorato creato da `./scarica_gen_data.sh`; saltato se manca) e confronta gradini, τ, ampiezze e salti con i **parametri veri** sorteggiati (`genera.sorteggia`): è il test che protegge da regressioni sul comportamento reale. [tests/test_report.py](tests/test_report.py) e [tests/test_cli.py](tests/test_cli.py) controllano report, grafici e CLI su CSV sintetici. `gen_data` sorteggia a ogni seed numero di gradini (1–3), k (τ = 11–20 s), rumore e scarti (≤ 4 °C, residui autocorrelati: limite noto, non un bug). @@ -43,5 +44,6 @@ uv venv .venv && uv pip install -e ".[dev]" - «Adeguato» = scala **robusta** dei residui (1.4826·MAD) ≤ `scala_residui_vs_rumore_max`·σ, non la RMSE: gli scarti casuali gonfiano la RMSE ma non la scala robusta (vedi docs/algoritmi.md §6). `scarta_dopo_salto_n` vale 0 (la salita è già nel riscaldamento). - Gli intervalli di confidenza coprono il τ vero solo nel 73 % dei casi (disturbi non stazionari, concentrati a inizio raffreddamento): correzione a più lag e sandwich HAC provate e scartate (docs/limiti.md). Non cambiare lo stimatore senza rimisurare la copertura. - Limiti aperti (docs/limiti.md): falso «non adeguato» su ~metà dei raffreddamenti intermedi corti; `soglia_gradino_c` fissa (20 °C) non derivata dai dati; modello del riposo non unico (`T_C` e `dT_C` possono differire). +- `extern/gen_data` non è fissato a un commit: `./scarica_gen_data.sh -u` porta l'ultima versione, che può cambiare i seed. CSV di prova: `(cd extern/gen_data && ../../.venv/bin/python genera.py config.toml --seed 7 -o ../../input/gen_7.csv)`. - Cambiando la config di `gen_data` (gradini, rumore) ricontrolla `soglia_gradino_c` e le tolleranze di `tests/test_validazione.py`. - Exit code: 0 ok · 2 uso · 3 config · 4 CSV · 6 domini non validi.