Repository navigation
PipeCompare 0.9.1
In short: PipeCompare now takes into account what was done to the data before it (filters,
re-reference, removed channels, ICA) and fixes the order of steps around the average reference
in the cases 0.9.0 still got wrong. Standard catches noisy bad channels it used to miss. The advanced
panel can now do everything the simple dialog does (band power, N2pc/LRP, progress window with
Stop, Save script…). Results can differ from 0.9.0 on data that were already filtered or
re-referenced, or that have noisy channels.
- Simple mode, step order with the average reference: Filters only with Average reference
averaged before any bad-channel check, so a bad channel spread into every channel (the order
fixed for Standard in 0.9.0). Both recipes now interpolate bad channels before the average.
Data that are already average-referenced (re-referenced before PipeCompare) are averaged again
after the interpolation, which removes the bad channels' share of the earlier average; before,
that share stayed in every channel. - Simple mode, data already filtered: the filter edges the data have were left out, and only
stricter ones compared, so every pipeline added a filter (data already low-passed at 30 Hz got
low-pass 20 Hz in every pipeline). Keeping the data's own filter is now one of the choices,
shown as e.g. low-pass as in the data (30 Hz). - Simple mode: filters applied before PipeCompare (read from the history) are outside the
pipelines' signal check, which starts from the data as they are. The same known signal is now
filtered at those edges; when that alone changes it beyond a pipeline's limit (e.g. a 1 Hz
high-pass on a P3), the result window and the Command Window say so and suggest starting from
the unfiltered data. Continuous data only (epoched data no longer hold what was filtered). - Simple mode: with the average reference, EEG channels removed before PipeCompare (with a
location) are interpolated back first, so the average covers the whole montage. Non-EEG channels
(EOG, ECG, ...) are no longer offered for restoring anywhere: the scalp cannot predict them. - The history gives the edges of filters other than
pop_eegfiltnew(ERPLAB'spop_basicfilter,
pop_firws,pop_firpm,pop_eegfilt,pop_iirfilt) and of clean_rawdata's own high-pass
(the end of its transition band). Before, such data counted as unfiltered, so the simple mode
compared filters they already had and could not check them. - The dialog says where PipeCompare starts (the raw continuous data with channel locations), which
steps were already done to the data (they are not compared), that Standard fits an ICA in the
data again (and does not use the components marked in it), and the inconsistencies between the
data and their history that only the panel showed before. The Command Window gets the same
lines. After Use this pipeline, the message says the data are ready to average and should not
be filtered, re-referenced or rejected again. - The panel defines band power too (Measure: Band power): bands with their electrodes and the
segment length, as the simple mode does; before, it defined ERP components only, and Advanced…
was off for band power. Advanced… now takes a band choice over to the panel. - Plans (panel and scripts): channels interpolated or removed after an average reference, with no
average reference after them, leave the bad channels' share of that average in every channel.
Such a pipeline is no longer legal: an order search never tries it (before, it compared it), and
a fixed order is refused with the reason. This includes data already average-referenced before
PipeCompare. - Panel, as in the simple mode: an added bad-channel, re-reference or epoch-rejection step leaves
the non-EEG channels (EOG, ECG, ...) out (before, an EOG channel was part of the average, could be
interpolated as a bad channel, and its blinks rejected epochs), and an added bad-channel step uses
kurtosis or joint probability (z = 5) on a 1 Hz high-passed copy (before: the catalog's search
lists on the data as they are). Both are shown and can be changed. - Panel: Add component… offers the ERP CORE components; N2pc and LRP are scored contralateral
minus ipsilateral (# contra), and Advanced… now takes them over too. A condition with fewer
trials than min trials is flagged before Run search, which then does not search. After a
search the panel says what the dialog's result window says (settings that make no difference,
what to try when no pipeline passed, filters applied before PipeCompare), and Adopt says the
data are to be averaged and measured as they are. - The panel's Run search shows the same progress window as the dialog, with Stop (the
pipelines already finished are ranked); before, a panel search could only be interrupted from the
Command Window. The panel also has Save script…, which writes the selected pipeline as a
function for any recording (Print script prints this dataset's exact commands). - In the dialog's result window, Use this pipeline on a pipeline that did not pass the checks
asks for confirmation and says why it did not pass, instead of an error that named a command. - A high-pass with a long FIR (above order 2000, e.g. 0.1 or 0.3 Hz at 250 Hz) runs in the frequency
domain (pop_eegfiltnewoptionusefftfilt) when the Signal Processing Toolbox is installed:
the same filter, much faster. This also applies to the 1 Hz copies used for bad-channel detection
and ICA when their FIR is that long. - Standard finds bad channels by kurtosis or joint probability (either above z = 5), not by
kurtosis alone. On a raw recording kurtosis missed two noisy channels, which then made the
epoch threshold reject most epochs in every pipeline. The
badchannelsstep takes several measures joined by+(e.g.'kurt+prob'). - When most pipelines were excluded for losing too many epochs, the result names the channels most
often over the rejection limit (summed over the pipelines), as likely bad channels to remove or
interpolate before running again. - Datasets imported with
pop_biosig(e.g. EDF files) keep their channels as a column, and the
simple mode stopped at once with an index error; channel lists are now read in either shape. - Eye channels named EYEL/EYER (also with the POL prefix of some EDF exports) are recognised as
non-EEG channels, so they are not tested as bad channels or counted by the epoch threshold. - When every pipeline that passed the checks has exactly the same noise, the result says that the
settings compared make no difference on these data, instead of recommending the first one as if
it were better. - Standard no longer fits ICA again when the dataset's history shows that ICA was run and
components were removed; this is named under Left out. pop_pipecomparesays why before any search when band power is asked of epoched data (it
needs continuous recordings) and when a recipe gives only one pipeline (e.g. Filters only on
epoched data). When every pipeline was excluded because a condition has fewer than 10 trials,
the summary suggests'pool', trueif the event types together have enough. When most pipelines
were excluded for losing too many epochs and the data keep their recorded reference, the result
suggests the average reference.- The ICA step's line in
EEG.historylacked thepop_runicacall (EEGLAB returns that command
only from its dialog), so the history of an adopted dataset did not refit ICA when run again.
The line now holds the call. Reading such a history also took the high-passed copy that ICA is
fitted on for a filter of the data (a 1 Hz high-pass), which a later comparison on that dataset
then treated as already applied.