DSP · EEG · ERP · connettività · sorgenti · patch-clamp

L’analisi dei biosegnali, dentro il browser. I dati non escono mai dal computer.

Sommario

Hertz è un programma per analizzare registrazioni EEG e tracce di corrente cellulare. Si apre come una pagina web, ma lavora sul computer di chi lo usa: non c’è nulla da installare, nessun file viene inviato a un server e, dopo la prima apertura, funziona anche senza connessione. Copre tutto il percorso di analisi, dall’apertura del file registrato fino alla generazione dei grafici, affiancando un report completo e la history della pipeline. I risultati sono stati confrontati con quelli ottenuti dai migliori programmi di riferimento del settore.

  • 0byte di segnale inviati a un server
  • 12formati di import
  • 16/16controlli automatici superati
  • vs. MNE · EEGLAB · ERPLAB
Vista principale su un EEG a 64 canali (PhysioNet, S109, 160 Hz): canale attivo con markers, panoramica, Analysis Spectrum PSD Multitaper dei dati raw originali e il pannello Channels con tutti i 64 canali.

1Tre scelte di progetto

Tre scelte che fanno la differenza

1.1Locale

I dati vengono elaborati sempre e solo in locale e non in remoto

I calcoli avvengono nel computer di chi usa Hertz, non su un server. In questo modo la protezione del dato è garantita e la privacy assicurata.

Inoltre, permette di usare l’applicazione anche su una rete chiusa o senza connessione.

1.2Hertz Core

Un motore di calcolo che usa tutta la potenza del computer

Hertz Core, il motore di calcolo dell’applicazione, sfrutta al meglio il processore del tuo computer , tutte le sue unità contemporaneamente e tiene separata l’interfaccia, che continua a rispondere mentre il calcolo procede. In questo modo permette la gestione di file grandi (centinaia di canali e ore di registrazione) anche sul portatile.

1.3Validazione

I risultati sono verificati contro i programmi di riferimento

Ogni funzione che esiste anche in MNE, EEGLAB, ERPLAB o scipy, i programmi di riferimento del settore, viene fatta girare su dati di prova di cui si conosce la risposta giusta, in Hertz e nel programma di riferimento, e le due risposte vengono confrontate. Il confronto è un test automatico che può fallire, non una dichiarazione: i numeri sono nella sezione 6.

2Installazione

Cosa costa avere lo strumento pronto

Prima ancora di aprire il primo file, uno strumento ha un costo: cosa scaricare, cosa installare, chi lo tiene aggiornato, quali licenze servono. Qui Hertz accanto a MNE (Python) ed EEGLAB (MATLAB), i due strumenti più usati nel settore.

2.1Dimensioni e installazione

Dimensioni misurate sul disco della macchina dei test, non prese dai siti dei produttori.

VoceHertzMNE (Python)EEGLAB (MATLAB)
Da scaricare33 MB alla prima apertura, in sottofondo; i primi 3 MB bastano per cominciare a lavorarePython con numpy, scipy, matplotlib e MNE: 180 MB di pacchetti, 0,5–1 GB con l’ambiente (856 MB misurati)MATLAB, diversi gigabyte con i toolbox; il solo MATLAB Runtime 2,8 GB, più EEGLAB 407 MB
Installazione e configurazioneNessuna: un indirizzo nel browser e la licenza in un campoUn ambiente Python, i suoi pacchetti, un editor; si lavora scrivendo scriptInstallazione di MATLAB con account e licenza; EEGLAB da aggiungere al percorso, plugin da scaricare a parte
AggiornamentiAutomatici, scaricano solo ciò che è cambiato, applicati su confermaA mano, dalla riga di comando, un ambiente alla voltaA mano, versione per versione
Cosa serveUn browser recente (sezione 7)Python 3.10 o successivo e dimestichezza con la riga di comandoUna licenza MATLAB, con il Signal Processing Toolbox per molte funzioni
Installazione

3Velocità

Quanto impiega a calcolare

L’altra metà della velocità si misura mentre lo strumento lavora: quanto si aspetta un risultato. Stesse operazioni, stessi dati, stesso computer, per Hertz e per i due strumenti di riferimento.

3.1Calcolare

Stesse operazioni, stessi dati, stesso computer (Apple M1, 8 core). Tempo mediano su più ripetizioni, misurato durante gli stessi confronti della sezione 6.

OperazioneHertzMNE / PythonEEGLAB / MATLAB
PSD di Welch, 65 536 campioni1,2 ms3,5 ms101 ms
Filtro passa-banda1,8 ms1,2 ms14 ms
Spettrogramma STFT2,9 ms1,9 ms16 ms
Scalogramma wavelet324 ms212 ms252 ms
Spettro di Hilbert102 ms205 ms207 ms
Comodulogramma PAC98 ms390 ms405 ms
Batteria completa di feature, 32 canali × 32 768 campioni58 ms22,8 s3,5 s
Tempi di elaborazione

Come leggere la tabella. Nelle prime righe MNE è di poco più veloce: quelle operazioni sono un’unica chiamata a una libreria già ottimizzata e la differenza, un millisecondo, non si nota. Nelle righe in basso, dove l’analisi ripete lo stesso passo migliaia di volte, Hertz è da decine a centinaia di volte più veloce: 58 millisecondi contro 23 secondi. I tempi di Hertz in tabella sono misurati su una sola unità del processore, perché così gira il banco automatico; nell’applicazione il motore le usa tutte.

3.2Perché compilato

Per chi vuole sapere da dove viene la differenza: si può saltare senza perdere nulla.

Interpretato

Python e MATLAB traducono mentre eseguono

Python e MATLAB traducono ogni istruzione nel momento in cui la eseguono, come un interprete che traduce frase per frase. Va bene quando il lavoro è un’unica grande operazione, affidata a una libreria già tradotta. Quando invece l’analisi ripete un passo migliaia di volte, per ogni canale, per ogni finestra, ogni ripetizione va tradotta di nuovo, e su una sola unità del processore alla volta.

Compilato

Hertz Core è tradotto una volta sola

Hertz Core è tradotto una volta per tutte, prima di essere distribuito, nella lingua che il processore esegue direttamente. Quando si apre un file non c’è più niente da tradurre, e le ripetizioni si dividono fra tutte le unità del processore. La fatica la fa chi scrive il programma, non chi lo usa.

Nella pratica

Il tempo che si sente

Un’analisi che in Python è uno script da lanciare e attendere, in Hertz è un pannello che risponde mentre si cambia un parametro. E prima ancora: MATLAB si avvia in decine di secondi, un ambiente Python va attivato; Hertz è una scheda del browser già aperta. Sono questi i tempi che contano in una giornata di laboratorio, non i millisecondi in tabella.

3.3Il browser come piattaforma

Perché un’applicazione che lavora in locale può vivere in una pagina web.

Compilato nella pagina

Il motore gira sul processore, non nell’interprete del browser

Da qualche anno i browser sanno eseguire programmi già tradotti per il processore (lo standard WebAssembly), non solo pagine. Hertz Core è distribuito così: la pagina lo scarica una volta e da quel momento ogni calcolo avviene sul computer di chi lo usa, con tempi dello stesso ordine di un programma installato. La tabella in 3.1 li mette accanto a scipy, che è tradotto allo stesso modo.

In parallelo

Tutti i core, una memoria sola, la scheda grafica

I browser moderni permettono a un programma di lavorare su tutte le unità del processore insieme, sugli stessi dati, senza copiarli: un file da milioni di campioni viene letto una volta e lavorato da tutte le unità contemporaneamente, mentre l’interfaccia resta su un percorso separato e continua a rispondere. Dove il browser mette a disposizione la scheda grafica (WebGPU), una parte dei calcoli passa lì.

Ovunque

Un solo programma, lo stesso su Windows, macOS e Linux

Il browser è lo strato che rende uguali i sistemi: Hertz è un unico programma che si apre da un indirizzo, senza installazione e senza versioni diverse per Windows, macOS o Linux, sul portatile del laboratorio come sulla postazione fissa. Legge i file direttamente dal disco, si aggiorna scaricando solo ciò che è cambiato e, dopo la prima apertura, funziona anche senza rete, perché il browser conserva l’applicazione intera sul computer.

4Funzionalità

Le funzioni, area per area

Gli elenchi qui sotto sono per gli specialisti: la riga sotto ogni titolo dice in una frase a cosa serve quell’area. Accanto a ciascuna voce un’etichetta dice quanto è diffusa negli strumenti EEG più usati (EEGLAB, MNE, Brainstorm, BrainVision Analyzer).

  • comune ce l’hanno tutti gli strumenti principali
  • raro in pochi strumenti, spesso come componente aggiuntivo
  • quasi esclusivo non ci risulta in altri programmi EEG con interfaccia grafica

4.1Import ed export

Legge i formati dei sistemi di registrazione clinici, di ricerca e di elettrofisiologia cellulare, conserva eventi e montaggi, e restituisce figure per la pubblicazione, dati esportabili e un report della sessione.

  • EDF / EDF+con annotazioni; il formato clinico più diffuso comune
  • Axon ABF 1 e 2pClamp, multicanale, unità e frequenza automatiche raro
  • NeuroExplorer NEX, HDF5 (g.tec g.HIamp)tracce continue, eventi e intervalli raro
  • CSV / TXT / DIF, binario int16, WAV, I/Q, ThinkGearcon scelta della colonna e del canale di eventi comune
  • Eventi e montaggi BIDSelectrodes.tsv, channels.tsv, coordsystem.json; layout 10-05, GSN-HydroCel 32–129, Biosemi, EasyCap comune
  • Sessione completa .hzz / .haesegnale, sequenza dei passi, marker e montaggio nello stesso file raro
  • Export in EDF, ABF, WAV, CSV, HDF5 LabHDF5 organizzato per unità, condizione e trial, con la provenienza raro
  • Figure scientifichePNG da ciascun grafico, preset carta, tema chiaro o scuro, metadati in calce raro
  • Batch: la stessa sequenza di passi su molti filesi applica a un’intera cartella di EDF raro
  • Research Reportreport HTML stampabile: statistiche, spettro, complessità, confronto raw/processed raro

4.2Preprocessing e pulizia

Filtraggio, ri-referenziazione, riparazione dei canali e rimozione degli artefatti (oculari, muscolari, cardiaci, di rete) con ICA e metodi a sottospazio. Ogni passo entra nella History: si può disattivare, annullare, rieseguire ed esportare, e ha un controllo di coerenza sull’uscita.

  • Filtri IIR Butterworth (zero-phase) e FIR a finestrapassa-alto, passa-basso, passa-banda, elimina-banda; notch e armoniche; CleanLine comune
  • Riferimento: CAR, CAR robusto, mediana, mastoidi, pool personalizzato, REST (approssimato)e trasformazioni spaziali: bipolare, CSD Hjorth, CSD spline sferica comune
  • Canali cattivi: rilevazione e riparazionevarianza, piatto, correlazione; interpolazione dai vicini comune
  • Regressione EOG / ECG, proiettori SSP comune
  • ICA FastICA con revisione componentiordinamento per kurtosi/varianza, marker automatici, salva/carica comune
  • Subspace Rescale (ASR-like)da un tratto pulito di calibrazione ricava le componenti principali e la loro ampiezza tipica; poi, finestra per finestra, riporta alla soglia le componenti che la superano. Attenua, non ricostruisce dal sottospazio pulito come l’ASR di EEGLAB: più conservativo, non inventa segnale comune
  • Pulizia single-channel: SSA, wavelet, Embedding ICAper le registrazioni a un solo canale, quando serve comunque una separazione raro
  • Rigetto epoche con le convenzioni di EEGLABampiezza, picco-picco, gradiente, drift, piatto, probabilità congiunta, kurtosi comune
  • Controllo di coerenza dopo ogni passola History confronta uscita e ingresso di ciascun passo: energia in dB, segnale perso o non numerico, esplosioni o attenuazioni anomale, componente continua residua dopo un detrend; ogni riga della History porta un esito PASS / WARN / FAIL raro
  • Downsampling con anti-alias FIRanche in import, per i file più grandi comune

4.3Spettro e tempo-frequenza

Spettri di potenza e rappresentazioni tempo-frequenza, dalla stima di Welch alle wavelet e al synchrosqueezing; accoppiamento fase-ampiezza con test per surrogati; misure di complessità nel tempo.

  • FFT, PSD Welch (assoluta e in %), istogramma per bande comune
  • PSD multitaper (DPSS)per segmenti brevi con poco leakage comune
  • Spettrogramma STFT e scalogramma waveletdisegnati a parte, senza bloccare l’interfaccia; risoluzione regolabile comune
  • Synchrosqueezing (SST)tempo-frequenza a creste strette raro
  • Spettro di Hilbert e HHTampiezza e frequenza istantanea per banda raro
  • Comodulogramma fase-ampiezza (PAC) con surrogatiil test di significatività per surrogati è nel pannello raro
  • Complessità nel tempoSample Entropy, Permutation Entropy, LZC, Higuchi, DFA, Hjorth raro
  • Sonificazione dei layer di decomposizioneuna banda o un layer si può ascoltare quasi esclusivo

4.4ERP e statistica per trial

Potenziali evento-correlati con la media e, accanto, l’errore standard della misura, l’affidabilità split-half e la curva affidabilità/numero di trial: quanto vale la media e quanti trial servono, stimati sui dati della sessione.

  • ERP perievento: media ± SEM e heatmap dei trial con segnobaseline, ordinamento, palette divergenti, marker di contesto con mediana e IQR comune
  • Standardized Measurement Error (SME)l’errore della misura ERP, analitico e bootstrap, verificato contro ERPLAB raro
  • Affidabilità split-half e curva affidabilità / numero di trialquanti trial servono, stimato sui dati della sessione quasi esclusivo
  • Event-Locked TF con contrasto statisticodue condizioni, t di Welch per pixel, correzione FDR, cinque mappe raro
  • Spectral Counterbalanceindividua in modo data-driven le bande che, attorno a un evento, salgono e scendono in modo compensato, e le quantifica quasi esclusivo
  • Ricerca automatica di patternmotivi ricorrenti, singolo e multicanale raro

4.5Connettività, topografie, sorgenti

Connettività funzionale fra canali con misure robuste alla conduzione di volume e distribuzione nulla per permutazione; mappe topografiche 2D e 3D; localizzazione delle sorgenti con modello dichiarato di ricerca.

  • Matrice di connettività: wPLI, dwPLI, PLI, coerenza immaginaria, ciPLV, coerenza, PLVper banda e finestra, con distribuzione nulla per permutazione raro
  • GFP, differenza RMS, PLV a coppie comune
  • Neuro View: testa 3D e mappe 2D con playbackinterpolazione gaussiana o IDW comune
  • Map Inspector: tre istantanee prima / adesso / dopo raro
  • Sorgenti sLORETA / eLORETAmodelli per i montaggi più diffusi, sezioni MNI152, atlante; il modello di testa è sferico e la funzione è dichiarata di ricerca raro

4.6Elettrofisiologia cellulare

Analisi di patch-clamp nella stessa applicazione dell’EEG: dal rumore di corrente alle proprietà del singolo canale (corrente unitaria, numero di canali, probabilità di apertura), con un protocollo operativo per ciascuna analisi.

  • Gating Noisedal rumore di corrente in voltage-clamp alla costante di tempo del canale: stazionarietà, spettro, fit lorentziano con rumore strumentale, sottrazione del controllo, corrente unitaria quasi esclusivo
  • ML-NSFAanalisi delle fluttuazioni non stazionarie a massima verosimiglianza su correnti evocate: corrente unitaria, numero di canali, probabilità di apertura al picco quasi esclusivo
  • Un protocollo operativo per ciascunacosa registrare, quali opzioni attivare, come leggere e riferire il risultato, compreso il caso in cui il dato non lo sostiene raro

4.7Live

Acquisizione in tempo reale da un headset seriale, con spettrogramma dal vivo e marcatura degli eventi: funzione secondaria, per la didattica e le prove rapide.

  • Acquisizione seriale da headset ThinkGeargrafico scorrevole, STFT dal vivo, marcatura eventi da tastiera, salvataggio della sessione comune

5Schermate

Schermate dell’applicazione

Figure 1–6: registrazione pubblica PhysioNet EEG Motor Movement/Imagery (BCI2000), soggetto S109, 64 canali a 160 Hz. Figura 7: traccia di corrente simulata a 50 kHz con parametri noti, la stessa del banco di validazione.

Densità spettrale di potenza
PSD di Welch nella tab in basso: assi per grafico, export CSV e PNG dall’icona.
Spettrogramma STFT
Spettrogramma STFT, disegnato a parte: l’interfaccia resta reattiva.
ERP perievento con heatmap dei trial
ERP perievento: per gruppo di marker, media sopra e heatmap dei trial con segno sotto; nella sidebar rigetto artefatti e qualità della misura (SME, affidabilità).
Event-Locked TF con contrasto
Event-Locked TF: una mappa tempo-frequenza per condizione, baseline in dB, contrasto con t di Welch e FDR, se attivato.
Matrice di connettività
Matrice di connettività wPLI 8–13 Hz su 64 canali, 122 segmenti; surrogati per permutazione attivabili.
Pannello Gating Noise
Gating Noise su una traccia di corrente simulata a 50 kHz con f_c nota: PSD log-log, fit lorentziano con rumore strumentale, stazionarietà e varianza–media.

6Test comparativi

Gli stessi dati, in Hertz e negli strumenti di riferimento

Per ogni funzione che esiste anche in un programma di riferimento, un banco automatico genera dati di prova di cui si conosce la risposta giusta, li fa analizzare a Hertz e al programma di riferimento e confronta i risultati. I risultati sono archiviati insieme al programma, versione per versione; un confronto non eseguito non compare in tabella. Come leggere l’esito: 100 vuol dire stesso risultato del riferimento; «identica» vuol dire uguale fino all’ultima cifra.

FunzioneRiferimentoEsito
PSD di WelchEEGLAB (MATLAB Runtime), MNEIdentica a EEGLAB (correlazione 1,000000, NRMSE 0); MNE 99,2/100 per convenzioni di finestra
Comodulogramma PAC (Modulation Index)MNE, EEGLAB, tensorpacIdentico a MNE (correlazione 1,000000); EEGLAB 0,998; surrogati: verdetto concorde con tensorpac su caso nullo e accoppiato
Spettro di HilbertMNE, EEGLAB99,9 / 97,3, correlazione 1,000000 con MNE
Spettrogramma STFTMNE, EEGLAB98,8 / 99,0, correlazione 1,000000 con EEGLAB
Scalogramma waveletMNE, EEGLAB98,0 / 98,2
Filtro passa-banda IIRMNE, EEGLAB, scipy98,5 / 96,5; poli coincidenti con scipy entro 10⁻¹³
Kernel FIR dell’applicazionescipy.firwin, MNE, EEGLABCoincidono con scipy.firwin; taglio entro 0,005 Hz dai kernel EEGLAB; fase simmetrica entro 10⁻¹¹
Multitaper DPSSscipyTaper identici entro l’arrotondamento
Features multicanaleMNE, EEGLAB99,9 / 99,9
SME dell’ERP (Luck 2021)ERPLAB sme_analytic, eseguitoScarto relativo 2·10⁻⁸; bootstrap entro 1,4%; split-half entro 0,006
Connettività (7 misure)mne-connectivityScarto massimo 8·10⁻⁴ su sei misure; classificazione «sensibile alla conduzione di volume» concorde
Rigetto epocheEEGLAB (jointprob, rejkurt, rejtrend, eegthresh), MNEStesse convenzioni, stessi esiti; le funzioni EEGLAB sono eseguite, non trascritte
Gating Noise — spettro, fit, varianza–mediascipy, MNE, EEGLAB (pwelch + fminsearch), verità analitica di un processo a due statiPSD entro 10⁻⁵ dai tre; frequenza d’angolo entro il 3% dal vero ed entro l’1% dagli altri ottimizzatori; su una registrazione senza gating misurabile Hertz rifiuta, gli ottimizzatori generici no
ICA (FastICA)MNE FastICA, EEGLAB runica, MNE Infomax estesoRecupero delle sorgenti identico a MNE (correlazione mediana 0,996 con le sorgenti vere, minima 0,986; EEGLAB runica 0,979); su 16 sorgenti in 16 canali tutti gli strumenti si fermano a 0,66
Canali cattivipyprep (NoisyChannels)F1 0,71 contro 0,41 su un montaggio sintetico a 64 canali (richiamo 0,83 contro 1,00, precisione 0,63 contro 0,26)
Subspace Rescale (ASR-like)EEGLAB clean_rawdata (ASR)Su burst sintetici a 64 canali: residuo sull’artefatto 1,56 contro 2,66 (RMSE), tratto pulito 0,0008 contro 0,029 — è un confronto su un solo dataset, non una classifica
Esito complessivo dei controlli8 confronti, 2 riferimenti obbligatori16/16 controlli superati, media 99,3/100 contro MNE e 97,8/100 contro EEGLAB

La localizzazione delle sorgenti (sLORETA/eLORETA) è verificata contro le formule pubblicate e, per scelta, non contro MNE: il modello di testa è semplificato e la funzione è dichiarata di ricerca. Tutti i risultati di questa tabella sono stati ricalcolati il 16 settembre 2026 con la versione di Hertz Core in uso.

7Piattaforma

Scheda tecnica

Dove giraSu un computer Windows, macOS o Linux con un browser aggiornato, senza installare nulla: Chrome o Edge dalla versione 91, Firefox dalla 114, Safari dalla 16.4 (schema in fondo alla sezione).
MotoreHertz Core, il motore di calcolo dell’applicazione: usa tutte le unità del processore insieme e lascia l’interfaccia reattiva anche con file grandi.
DatiRestano sul computer: nessun file viene caricato su un server; le sessioni si salvano sul disco locale nei formati Hertz.
OfflineDopo la prima apertura l’applicazione funziona senza rete; gli aggiornamenti scaricano solo ciò che è cambiato e si applicano quando l’utente conferma.
RiproducibilitàOgni sessione ricorda i passi eseguiti; la sequenza si può salvare, ripetere su altri file e allegare a una pubblicazione, così un risultato si può rifare.
PrivacySolo cookie analitici opzionali, con banner di consenso; nessun cookie pubblicitario, nessuna profilazione.
Uso previstoStrumento di ricerca e didattica. Non è un dispositivo medico e non va usato per diagnosi.
ApprofondimentiPer un formato non in elenco, un montaggio particolare o l’uso su un protocollo specifico: hertz@wavehub.it. Risponde chi ha scritto l’applicazione.
Chrome
150attuale
91 – 149
fino alla 90
Edge
150attuale
91 – 149
fino alla 90
Firefox
155attuale
114 – 154
fino alla 113
Safari
26attuale
16.4 – 25
fino alla 16.3

Funziona per intero Non si avvia

Versioni secondo caniuse.com e MDN al 16 settembre 2026. Su iPhone e iPad ogni browser usa il motore di Safari. L’acquisizione dal vivo da porta seriale è disponibile in Chrome, Edge e Firefox dalla 151.

Il browser con cui stai leggendo

Hertz Core, il motore di calcolo di Hertz, e la grafica e l’interfaccia utente (UX/UI) dell’applicazione sono proprietà intellettuale di Patrizio Anselmi e Isabella Zironi, dal 2025. Tutti i diritti riservati.