# Output Ogni analisi scrive in `output//` (la cartella `output/` è ignorata da git). Ogni passo ha la sua sottocartella, numerata nell'ordine di esecuzione. Chi produce cosa: [moduli.md](moduli.md) (`uscita.py`). ``` output/gen_1/ ├── 01_domini/ passo 1 — suddivisione dei dati │ ├── domini.png dati grezzi con i domini (colore per tipo, numerati) + zoom sui gradini │ └── domini.toml domini usati, modificabili a mano ([uso.md](uso.md)) ├── 02_sovrapposizione/ passo 2 — dati grezzi contro le equazioni trovate │ ├── sovrapposizione_.png serie intera con le equazioni a tratti, residui e zoom │ └── dominio_.png un dominio: dati, modello scelto, altri modelli validi, residui └── 03_report/ passo 3 ├── report.md report completo, immagini incorporate, formule in LaTeX └── risultati.json tutti i fit con tutte le metriche (schema in moduli.md) ``` `fitseg domini` scrive solo `01_domini/`; `fitseg analizza` scrive tutto. ## Colori | Dominio | Colore | |---|---| | riposo | grigio | | riscaldamento | rosso (i suoi campioni sono evidenziati con pallini, perché la fascia è sottile) | | raffreddamento | un colore **diverso per ognuno**, in ordine: blu, verde, viola, arancio, ciano (poi si ricomincia) | Le fasce sono numerate come nelle tabelle (il numero compare solo se la fascia è abbastanza larga per il grafico). Il raffreddamento *k*-esimo ha lo stesso colore in tutti i grafici. ## `01_domini/domini.png` Una riga per serie. A sinistra l'intero segnale con le fasce dei domini; a destra lo **zoom** sulla zona dei gradini (da 2 s prima del primo riscaldamento a 8 s dopo l'ultimo), dove 7 domini in pochi secondi si distinguono. Serve a controllare la suddivisione *prima* di fidarsi delle equazioni: se è sbagliata si corregge `domini.toml` e si rilancia ([uso.md](uso.md) §3). ## `02_sovrapposizione/sovrapposizione_.png` Sopra: dati grezzi (punti grigi), fasce dei domini e **curva dell'equazione scelta** per ogni dominio nel colore del dominio. Sotto: residui $y - \hat y$ dei soli campioni usati nel fit (i campioni esclusi all'inizio dei raffreddamenti non compaiono, per non schiacciare la scala). A destra lo stesso con lo zoom. Il riscaldamento non ha curva (non si fitta) e i suoi campioni sono i pallini rossi. Come leggere i residui: attorno a zero e senza struttura = modello adeguato; ondulazioni o code verso il basso = **scarti casuali** del sensore non descritti dal modello (A14), non un errore del fit. ## `02_sovrapposizione/dominio_.png` - **Riposo e raffreddamento**: punti grigi = campioni esclusi dal fit; punti neri = campioni usati; **linea continua** = modello scelto (nel colore del dominio, con $\mathrm{RMSE}$ in legenda); **tratteggiate** = gli altri modelli validi (confronto); sotto i residui del modello scelto. - **Riscaldamento**: la salita (pallini rossi) con 8 campioni di contesto prima e dopo, e nel titolo $\Delta$, numero di campioni e durata. Nessuna curva. - Dominio indeterminato: solo i dati, con «indeterminato» nel titolo. ## `03_report/report.md` Le immagini sono link relativi (`../01_domini/domini.png`); le grandezze matematiche sono in LaTeX (`$…$` nel testo, `$$…$$` per l'equazione scelta con i valori sostituiti): servono un visualizzatore Markdown con supporto matematico (GitHub, VS Code, Obsidian). Struttura: | Sezione | Contenuto | |---|---| | intestazione | nome del CSV, data, serie, definizione $t' = t - t_0$, livello degli intervalli (95 %) | | 1. Suddivisione in domini | `domini.png` e tabella (#, tipo, $t_0$, $t_1$, campioni) | | 2. Equazioni trovate | criterio di scelta con le soglie correnti; tabella (dominio, tipo, serie, modello, equazione e parametri ± IC) con una riga per dominio e serie; i riscaldamenti hanno il salto | | 3. Sovrapposizione dati–equazioni | un grafico per serie | | 4. Dettaglio per dominio | per ogni dominio e serie: grafico, modello scelto, equazione con i valori ($$…$$), parametri ± IC, $\sigma_\text{rumore}$, $\mathrm{RMSE}$, $R^2$, $\rho_1$, motivo, tabella di tutti i modelli provati ($k$, RMSE, AICc, BIC, $\rho_1$, valido) | ### Come leggere i messaggi | Messaggio | Significato | Cosa fare | |---|---|---| | **salto** (riscaldamento) | salita rapida descritta, non fittata (A23) | niente: $\Delta$ è per difetto | | **(fisso)** accanto a un parametro | tenuto costante al valore del raffreddamento finale (A8); l'IC di $A$ è condizionato (A18) | niente; per disattivarlo vedi [configurazione.md](configurazione.md) | | **modello non adeguato** ($\mathrm{RMSE} > 1.3\,\sigma$) | il modello scelto è il migliore tra quelli validi ma non spiega tutta la varianza | guarda $\rho_1$ e i residui: tipicamente scarti casuali (A14) | | **Indeterminato** | nessun modello valido, o meno di `n_min_punti` campioni | verifica la suddivisione (domini troppo corti?) | | «valido: no» in tabella | fit non convergente, $\tau$ al limite o non identificabile ([algoritmi.md](algoritmi.md) §5.6) | un modello più semplice può essere preferito | ## `03_report/risultati.json` Lista di domini con tutti i fit e tutte le metriche, anche dei modelli scartati. Schema dei campi: [moduli.md](moduli.md), «Strutture dati comuni». È JSON valido (i campi non applicabili, come `sigma` del riscaldamento, sono `null`), adatto a elaborazioni successive (confronti tra analisi, tabelle).