Files
gen_data/README.md
T

65 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Generatore CSV `T` e `ΔT`
Genera un CSV con la temperatura `T` di un sensore IR e la differenza `ΔT = T − T_amb`, con rumore, quantizzazione e jitter dei tempi simili a un sensore reale. `T` parte dalla temperatura ambiente, sale con i gradini di riscaldamento e ridiscende fino a `T_amb`.
## Requisiti
[uv](https://docs.astral.sh/uv/). Gli script dichiarano le loro dipendenze (Python ≥ 3.11, `numpy`, `matplotlib` per il grafico): al primo avvio uv crea da solo l'ambiente virtuale e, se serve, scarica Python. Non serve installare altro.
### Installare uv
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux e macOS
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
pip install uv # alternativa, se hai già Python
```
Apri un nuovo terminale e verifica con `uv --version`. Altre opzioni (Homebrew, WinGet, ecc.) sono nella [guida ufficiale](https://docs.astral.sh/uv/getting-started/installation/).
## Uso
```bash
uv run genera.py config.toml # scrive output/gen_<seed>.csv, seed casuale
uv run genera.py config.toml --seed 42 # riproducibile: output/gen_42.csv
uv run genera.py config.toml -o dati/prova.csv # percorso a scelta (cartelle create se mancano)
uv run genera.py config.toml -o - > out.csv # su stdout
```
| Opzione | Descrizione |
|---|---|
| `config` | file di configurazione TOML (obbligatorio) |
| `-o`, `--output` | file di uscita; default `output/gen_<seed>.csv`; `-` = stdout |
| `--seed` | seme del generatore; se omesso è casuale e viene stampato su stderr |
Stesso seed e stessa configurazione danno sempre lo stesso file. La cartella `output/` è ignorata da git.
## Grafico
```bash
uv run grafico.py # apre il grafico dell'ultimo CSV in output/
uv run grafico.py output/gen_42.csv # un CSV preciso
uv run grafico.py -o grafico.png # salva l'immagine (png, pdf, svg) invece di aprire la finestra
```
Mostra `T` e `ΔT` in funzione del tempo. `grafico.py` ha le sue dipendenze (`numpy`, `matplotlib`), gestite da uv come per `genera.py`; senza schermo usa `-o`.
## Output
```
t_ms,T_C,dT_C
151,22.90,0.20
301,22.63,0.03
```
`t_ms` è intero; `T_C` e `dT_C` hanno due decimali. `ΔT` è calcolato dopo rumore e quantizzazione di entrambi i canali.
## Configurazione
Tutti i valori numerici sono in [config.toml](config.toml) (nessuno è scritto nello script). Le unità sono nei suffissi delle chiavi: `_s` secondi, `_ms` millisecondi, `_c` gradi C, `_hz` 1/s. Una chiave mancante è un errore (exit 1, messaggio in italiano), così come `t_impulsi_s` e `dT_impulsi_c` di lunghezza diversa.
Per cambiare il profilo di riscaldamento si modificano `t_impulsi_s` e `dT_impulsi_c` (un gradino per elemento; `[]` = nessun riscaldamento) e `k_raffreddamento_hz`. `durata_s` deve essere abbastanza lunga perché `T` torni a `T_amb`. Per ricalibrare il rumore si possono usare come riferimento le misure reali in [dati.csv](dati.csv).
## Documentazione
Modello, passi di calcolo, controlli di accettazione e limiti sono in [docs/SPEC.md](docs/SPEC.md).