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. 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

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.

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.

Grafico

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 (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.

S
Description
Generatore di dati sintetici per EquationMiner: CSV t_ms,T_C,dT_C di un sensore IR che si scalda e si raffredda, con rumore, quantizzazione e jitter realistici, riproducibile per seed.
Readme
92 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 95%
Shell 5%