Output organizzato per analisi: cartella input/, output/<csv>/ con domini, sovrapposizione e report
- dati/ rinominata input/ (CSV ignorati, cartella tracciata con .gitkeep)
- lavoro/ sostituita da output/<nome csv>/{01_domini,02_sovrapposizione,03_report}
- report.md con indice, tabella equazioni e immagini incorporate
- sovrapposizione complessiva dati-equazioni per serie
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d92bcd198b
commit
da0964be4d
11 files changed
+186
-106
No files matched your search
@@ -15,26 +15,26 @@ uv pip install -e ".[dev]" # numpy, scipy, matplotlib; pytest e ruff per lo
|
||||
|
||||
## Dati di ingresso
|
||||
|
||||
CSV con intestazione, tempo crescente e le serie indicate in [config.toml](config.toml) (`[dati]`: colonne, unità `ms`/`s`, separatore). I CSV di prova vengono dal generatore `../gen_data`; i test di integrazione usano i seed 1–3 in `dati/` (ignorata da git):
|
||||
CSV con intestazione, tempo crescente e le serie indicate in [config.toml](config.toml) (`[dati]`: colonne, unità `ms`/`s`, separatore). I CSV di prova vengono dal generatore `../gen_data`; **metti i CSV da analizzare nella cartella `input/`** (la cartella è nel repository, i file `*.csv` no); i test di integrazione usano i seed 1–3:
|
||||
|
||||
```bash
|
||||
mkdir -p dati
|
||||
mkdir -p input
|
||||
for s in 1 2 3; do
|
||||
(cd ../gen_data && .venv/bin/python genera.py config.toml --seed $s -o ../EquationMiner/dati/gen_$s.csv)
|
||||
(cd ../gen_data && .venv/bin/python genera.py config.toml --seed $s -o ../EquationMiner/input/gen_$s.csv)
|
||||
done
|
||||
```
|
||||
|
||||
## Uso
|
||||
|
||||
```bash
|
||||
.venv/bin/fitseg domini dati/gen_1.csv # come verrebbero suddivisi i dati: tabella, lavoro/domini.toml, lavoro/proposta.png (nessun fit)
|
||||
.venv/bin/fitseg analizza dati/gen_1.csv # domini + regressione + report in lavoro/out/
|
||||
.venv/bin/fitseg domini input/gen_1.csv # passo 1: come verrebbero suddivisi i dati (tabella, domini.png, domini.toml), nessun fit
|
||||
.venv/bin/fitseg analizza input/gen_1.csv # tutti i passi: domini, equazioni, sovrapposizione, report
|
||||
```
|
||||
`--config PATH` (default `config.toml`) e `--lavoro DIR` (default `lavoro`) vanno **prima** del sottocomando.
|
||||
`--config PATH` (default `config.toml`) e `--output DIR` (default `output`) vanno **prima** del sottocomando. I file di ogni analisi vanno in `output/<nome del csv>/`.
|
||||
|
||||
**Correggere i domini a mano**: apri `lavoro/domini.toml`, modifica i tempi (i domini devono restare contigui) e rilancia
|
||||
**Correggere i domini a mano**: apri `output/gen_1/01_domini/domini.toml`, modifica i tempi (i domini devono restare contigui) e rilancia
|
||||
```bash
|
||||
.venv/bin/fitseg analizza dati/gen_1.csv --domini lavoro/domini.toml
|
||||
.venv/bin/fitseg analizza input/gen_1.csv --domini output/gen_1/01_domini/domini.toml
|
||||
```
|
||||
```toml
|
||||
[[dominio]]
|
||||
@@ -43,14 +43,24 @@ t0_s = 15.8 # incluso
|
||||
t1_s = 17.76 # escluso (l'ultimo dominio arriva a fine dati)
|
||||
```
|
||||
|
||||
### Cosa produce (in `lavoro/`, ignorata da git)
|
||||
### Cosa produce
|
||||
|
||||
| File | Contenuto |
|
||||
|---|---|
|
||||
| `domini.toml`, `proposta.png` | domini proposti e grafico dei dati con la suddivisione |
|
||||
| `out/report.md` | per dominio e serie: grafico, modello scelto con parametri ± IC 95 %, metriche, tabella di tutti i modelli provati |
|
||||
| `out/dominio<k>_<serie>.png` | dati grezzi contro il modello scelto (colore del dominio) e gli altri modelli validi (tratteggiati), più residui; campioni esclusi dal fit in grigio |
|
||||
| `out/risultati.json` | tutti i fit con tutte le metriche |
|
||||
Una cartella per ogni CSV analizzato, con un passo per sottocartella (`output/` è ignorata da git):
|
||||
|
||||
```
|
||||
output/gen_1/
|
||||
├── 01_domini/ suddivisione dei dati
|
||||
│ ├── domini.png dati grezzi con i domini (colore per tipo, numerati)
|
||||
│ └── domini.toml domini usati, modificabili a mano
|
||||
├── 02_sovrapposizione/ dati grezzi contro le equazioni trovate
|
||||
│ ├── sovrapposizione_<serie>.png serie intera con le equazioni a tratti e i residui
|
||||
│ └── dominio<k>_<serie>.png un dominio: dati, modello scelto, altri modelli validi, residui
|
||||
└── 03_report/
|
||||
├── report.md report completo con tutte le immagini incorporate
|
||||
└── risultati.json tutti i fit con tutte le metriche
|
||||
```
|
||||
|
||||
`report.md` contiene: (1) suddivisione in domini, (2) tabella delle equazioni con parametri ± IC 95 %, (3) sovrapposizione dati–equazioni, (4) dettaglio per dominio con metriche e tabella di tutti i modelli provati. Le immagini sono link relativi: si vedono in un visualizzatore Markdown.
|
||||
|
||||
Come leggere il report: **non adeguato** = RMSE oltre 1.3 volte il rumore stimato (guarda l'ACF1 dei residui); **indeterminato** = nessun modello valido o dominio con meno di `n_min_punti` campioni. Nel raffreddamento `τ` è la costante di tempo e `c` l'asintoto (≈ ambiente per `T_C`, ≈ 0 per `dT_C`).
|
||||
|
||||
@@ -84,9 +94,9 @@ Nuovo modello: voce in `MODELLI` di [src/fitseg/modelli.py](src/fitseg/modelli.p
|
||||
| `test_fit.py` | recupero di τ, `c`, `A` su segnale sintetico (τ = 16 s), parametri fissi, τ non identificabile su tratti corti e rumorosi, analisi completa, dominio troppo corto, riproducibilità | no |
|
||||
| `test_selezione.py` | regola di scelta | no |
|
||||
| `test_config_dati.py` | errori di config e CSV | no |
|
||||
| `test_integrazione.py` | domini e τ su `dati/gen_{1,2,3}.csv`; CLI `domini` e `analizza --domini`; codici di uscita | sì (altrimenti saltati) |
|
||||
| `test_integrazione.py` | domini e τ su `input/gen_{1,2,3}.csv`; CLI `domini` e `analizza --domini`; codici di uscita | sì (altrimenti saltati) |
|
||||
|
||||
I test unitari generano il segnale da soli (`tests/conftest.py`). Prova manuale: `fitseg analizza dati/gen_1.csv` e controlla in `lavoro/out/report.md` 4 domini (riposo, due riscaldamenti, raffreddamento) con τ ≈ 16 s.
|
||||
I test unitari generano il segnale da soli (`tests/conftest.py`). Prova manuale: `fitseg analizza input/gen_1.csv` e controlla in `output/gen_1/03_report/report.md` 4 domini (riposo, due riscaldamenti, raffreddamento) con τ ≈ 16 s.
|
||||
|
||||
Codici di uscita: 0 ok · 3 configurazione non valida · 4 CSV illeggibile/non valido · 6 `domini.toml` non valido.
|
||||
|
||||
|
||||
Reference in new issue
Block a user