2.2 KiB
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. Lo script dichiara le sue dipendenze (Python ≥ 3.11, numpy): al primo avvio uv crea da solo l'ambiente virtuale, non serve installare altro.
Uso
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.
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 (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.
Documentazione
Modello, passi di calcolo, controlli di accettazione e limiti sono in docs/SPEC.md.