Implementazioni introdotte tra 9 aprile 2026 e 4 agosto 2026.
|x| / max|x|. La media ERP invece era gia` corretta, r = 0.98 sulle tracce sovrapposte. Il nuovo pannello tiene l'ampiezza con segno, scala divergente centrata sullo zero e limiti da percentile robusto di |x|.erp2_compute_ptr esegue estrazione epoche, baseline, media e SEM, lisciatura, percentile e ordinamento; il canale attraversa il confine JS/wasm una volta sola e torna come buffer concatenati con gli offset per gruppo. Media e SEM si calcolano prima della lisciatura, il percentile dopo: una media mobile abbassa i picchi, e riusare la scala dei dati grezzi sbiadirebbe l'immagine invece di renderla leggibile.erpimage; sei palette divergenti, quattro a luminanza simmetrica fra i due rami; e gli altri marker che cadono nella finestra, disegnati alla posizione mediana con la banda interquartile a dichiararne la dispersione.baseline-correction continua a funzionare nella History e nel replay delle sessioni esistenti.fs*0.0015 e un tetto di 8 Hz; sopra 5333 Hz il pavimento superava il tetto, l'intervallo si invertiva e la funzione restituiva lo stesso numero per qualunque banda (a 10 kHz, 15 Hz di transizione tanto per una banda di 2 Hz quanto per una di 100). Conseguenze misurate, tutte silenziose: la banda 3000–3002 Hz usciva a −13.10 dB e larga 8.7 Hz, la banda delta a 10 kHz a −27.05 dB, un passa-alto chiesto a 0.5 Hz tagliava davvero a 4.4 Hz.4*fs/tw. Sostituita con overlap-add su FFT conservando l'allineamento temporale esatto: su 60 s a 10 kHz con kernel da 50001 tap, da 28156 ms a 32 ms. La soglia di commutazione e` fissata a 2668 tap, uno piu` del massimo che la vecchia stima potesse produrre, cosi` ogni filtro gia` costruibile resta bit-identico per costruzione.2.0. Ora band-pass, band-stop, passa-alto, passa-basso e Decomposition rifiutano con un messaggio esplicito. Tolto il tetto di costo, il limite residuo e` la durata della registrazione — circa 10/W secondi per una banda larga W — e la soglia coincide con quella di MNE, non piu` stretta.scipy.firwin coincide esattamente. Il referto documenta anche che MNE ed EEGLAB derivano la transizione dalla frequenza di taglio: su 3000–3002 Hz a 10 kHz entrambi calcolano 750 Hz di transizione e 45 tap. Riproducibile con node scripts/comparative/run-fir-validation.mjs.jsfive (JavaScript puro) a h5wasm. Su un file g.tec da 106 MB l'import scende da circa 5000 ms a 138 ms e il picco di memoria da 967 MB a 11 MB — prima era venti volte il file, con rischio di blocco della scheda su macchine con poca RAM. Il segnale prodotto e` identico, hash SHA-256 di tutti i 26 milioni di campioni compreso.index.html (70 su 70). Cartella uat/ autonoma con i segnali di prova e l'ordine di esecuzione.Session; aggiunta la scelta fra scala lineare e logaritmica sull'asse Y.Spectral Sensitivity compare solo dove ha effetto; rimosso psdFmax, che non controllava nulla.f32, divergeva sopra i 4 kHz producendo zero campioni finiti. Risolto con decimazione della fase e calcolo in f64; le bande di ampiezza sono ora log-spaziate fino a 0.85 Nyquist.k, unita` di misura visibili anche nelle immagini esportate; corretta la scala delle PSD che stampava solo zeri.Gating Noise, ML-NSFA e Spectral Counterbalance, con i rispettivi moduli WASM (gating_noise, ml_nsfa, spectral_redistribution), viste e profili di analisi dedicati. Inclusi aggiornamenti al parser ABF, nuovi test e i manuali dei pannelli in docs/.hertz-wasm-v2 come modulo condivisibile (SDK/DLL): caricamento, modello di memoria a riuso di buffer, gate di licenza e catalogo delle 166 funzioni esportate. Include l'audit del manuale contro il codice, che ha corretto fra l'altro il conteggio reale delle funzioni, il fatto che le sa_* non sono compilate, e la descrizione di cleanline come regressione sinusoidale.Contrast/Resolution non rifanno il passaggio sui quantili di ogni heatmap ad ogni ridisegno.Reference/Contrast i menu di selezione condizioni e canali restano aperti finche` non si clicca fuori, permettendo di selezionare e deselezionare piu` voci senza dover riaprire il menu ad ogni scelta.t (Welch) invece del fuorviante z-score.docs/ il manuale completo del pannello Event-Locked TF (Markdown, HTML stampabile e PDF).C-1/2); eLORETA centra il lead field sotto average reference come MNE/sLORETA. Formule verificate contro Pascual-Marqui 2002/2007.ICBM152 (MNI152) 2009 brain-extracted (livelli z=+12, y=−18, x=0 mm), al posto delle immagini generate da AI, con orientamenti L/R · A/P · S/I coerenti con le convenzioni del pannello e attribuzione del template inclusa.MNI(mm)→pixel fissa, derivata dalla geometria reale del template, al posto dell'euristica bounding-box + affine “a blend”: ogni sorgente cade sulla sua posizione anatomica corretta (verificato su punti MNI noti).scipy.stats.ttest_ind) al posto della normale standard, che sottostimava p di 1.6x-6.3x ai trial count tipici degli ERP; le statistiche sufficienti sono accumulate in f64 per evitare la perdita di precisione con baseline sottrattiva; default minTrialsPerGroup alzato da 2 a 10..dat, .iq e .wav molto grandi gira ora nel core Rust/WASM con parallelismo Rayon per canale (mc_average_decimate_dat_i16_ptr, mc_average_decimate_iq_f32_ptr, mc_average_decimate_wav_ptr) al posto del vecchio loop JS single-thread, con fallback automatico al percorso JS se il core caricato non espone ancora le nuove funzioni.src/config/runtimeEndpoints.js non veniva incluso nello staging di produzione, causando il fallimento silenzioso del bootstrap del WASM worker sulle build fresche.onmessage/onerror quando un worker viene ricreato dopo un errore, evitando blocchi silenziosi delle richieste in corso durante l'import di file grandi.workerHelpers.js generato da wasm-bindgen-rayon, che causava un errore di tipo MIME all'avvio dei thread WASM..nex, il parser importa stream continui ed eventi base e ELTF promuove automaticamente marker testuali a gruppi condizione selezionabili quando il dataset non contiene codici numerici condition-phase, senza piu` toggle manuale nel pannello Session.ELTF Results usa una testata piu` compatta, mostra marker contestuali dentro le epoche come guide grigie e puo` far collassare il signal plot top in una strip Open signal plot ripristinabile o nel comando manuale Hide.Preferences, mantenendo il modello dark-first con variante light opzionale.About, popup startup file, EEG gate e controlli utility flottanti, riducendo la dipendenza da palette dark hardcoded.Help un toggle rapido a icona singola; in tema dark mostra il sole, in tema light mostra la luna, restando sincronizzato con Preferences > Appearance.Show markers / Hide markers del grafico principale usa ora uno stato condiviso e si propaga anche alle view bottom che supportano overlay marker, inclusa Decomposition.src/, il bootstrap legacy separato e` stato rimosso e la cartella bfd/ e` stata eliminata dal runtime e dal repo./bfd/ ne` il worker dedicato bigDataWorker.js; il file mode principale resta l'unico entrypoint operativo.sw.js, precache-manifest.json e build-info.json nella root runtime, cosi` il confronto dei manifest puo` rilevare davvero gli aggiornamenti pubblicati sul server.https://localhost il service worker non viene piu` azzerato automaticamente; il popup Update Available segue lo stesso flusso della produzione e aspetta conferma esplicita dell'utente.Refresh per entrare subito nella build aggiornata oppure Cancel per restare nella sessione corrente.ELTF, vengono costruiti on-demand durante lo scroll con placeholder e piccolo loader centrale, evitando di consumare CPU/WASM per pannelli non ancora visibili.working copy per file .dat molto grandi, con downsampling diretto, sidecar events/timestamps e metadata originali preservati.Event-Locked TF e` ora disponibile nel file mode principale, con setup in sidebar e risultati nel tab bottom ELTF RESULTS.Original / Processed e` stato spostato nella testata del panel e il calcolo mostra stato/progresso senza riempire la sidebar di heatmap.Show markers / Hide markers.Hertz Lab HDF5 (.h5) con schema gerarchico /DATA/unit/condition/trial, ordine canali configurabile e documentazione hertz_lab_hdf5_v1.src/wasm, includendo anche gli entrypoint ELTF usati dal file mode e dal BFD.Privacy & cookies e` stato spostato nel footer persistente per evitare sovrapposizioni con i controlli laterali.#footerConsentSlot accanto a #footerRuntimeStatus cosi` il bottone consenso viene montato in una posizione stabile.Source, con info operative ripulite e controlli concentrati su segnale, metodo, lambda, noise, finestra e azioni Run/Reload.Orthogonal e Scalp, con slice assiale/coronale/sagittale su asset anatomici runtime e heatmap mascherata.res/loreta-slices-gemini-20260411 viene ora inclusa nello staging di produzione per evitare 404 sugli asset ortogonali.MARKER e` ora esposto come ERP, mantenendo lista eventi, heatmap epoche e click marker..h5/.hdf5 con lettura binaria, parser jsfive, riconoscimento firma HDF5 e metadata uV/SampleRate./RawData/Samples, esclusa la colonna contatore campioni quando presente e letti AcquisitionTaskDescription/DAQDeviceDescription.coordsystem.json, electrodes.tsv e channels.tsv, con unita convertite in mm e supporto NAS/LPA/RPA.registration, surfaceAnchoring, proiezioni axial/coronal/sagittal e payload QA esportabile dal debug JSON.work-in-progress per ricerca e validazione tecnica; non e` un output clinico individualizzato e richiede ancora scalp mesh validata, lead field dedicato e soglie QA bloccanti.warn quando l'anchoring usa il fallback ellissoidale; serve una scalp mesh validata per promuovere il flusso a livello clinico.EDF/REC, con output EDF/REC/ABF.BATCH con stati per-file queued/loading/processing/exporting/done/error e azione finale Apri.File Import Settings riallineato allo stesso linguaggio UI, piu leggibile per sampling rate, auto-detect, unita e colonne eventi.Update Available.precache-manifest.json, sync con hash e update offline che riscarica solo i file cambiati.EDF, CSV/TXT e ABF, inclusa configurazione file piu controllata.PAC, PSD Multitaper, STFT Scalogram, heatmap avanzata e WebGPU wavelet.Questa sezione raccoglie la documentazione operativa di Hertz. Se ti serve la reference tecnica completa su filtri, analisi, parametri richiesti e formule matematiche usate dal motore WASM, il punto giusto da aprire è questo:
Matematiche e processing reference: https://hertz.wavehub.it/docs/processing_reference.html
Guida completa, menu-per-menu, per uso pratico e ricerca EEG. Ogni voce include scopo, procedura, esempio e algoritmo.
original = sorgente caricata, processed = risultato pipeline.electrodes.tsv, channels.tsv e coordsystem.json BIDS per costruire il modello spaziale degli elettrodi.Quality Factor (Q) da 1 a 100.BW = f / Q o regressione armonica locale (CleanLine).Q.Q la banda e` BW = center / Q.Q.Q=35.IIR + single + Q.Questa guida descrive come funziona la validazione DSP attuale di Hertz: cosa viene controllato realmente, come interpretare PASS/WARN/FAIL e come replicare i check in MATLAB/Python.
La validazione viene eseguita step-by-step sulla pipeline (input vs output di ogni azione).
qualityFactor) restano serializzati per undo/redo e ricarica file.Per validazioni piu avanzate usa la sezione sotto ("External Repro Checks") o i benchmark comparativi offline.
Formula: RMS(x) = sqrt( (1/N) * sum(x[n]^2) )
Formula: dB = 20 * log10( RMS(out) / max(RMS(in), 1e-10) )
Formula: mean_out = (1/N) * sum(y[n])
PASS quando |mean_out| < 1.0.
%% MATLAB
y = x - mean(x);
# Python / NumPy
y = x - x.mean()
%% MATLAB
y = detrend(x);
# Python / SciPy
from scipy.signal import detrend
y = detrend(x)
%% MATLAB
wo = 50/(fs/2); bw = wo/35;
[b,a] = iirnotch(wo,bw);
y = filtfilt(b,a,x);
# Python / MNE
import mne
y = mne.filter.notch_filter(x, sfreq=fs, freqs=[50])
%% MATLAB (example: band-pass)
[b,a] = butter(4, [l h]/(fs/2), 'bandpass');
y = filtfilt(b,a,x);
# Python / MNE
y = mne.filter.filter_data(x, sfreq=fs, l_freq=l, h_freq=h)
%% MATLAB
rms_in = sqrt(mean(x.^2));
rms_out = sqrt(mean(y.^2));
db = 20*log10(rms_out/max(rms_in,1e-10));
clean_asr).