EEG Processing Pipeline Comparison

NOTE: This page is under construction and is not complete.

1 Pipeline Comparison Overview

2 Initial Set-Up

  1. Install MATLAB (admin login needed)
    1. Sign in to the UIowa MATLAB portal using your HawkID (hawkid@uiowa.edu) and password
    2. Click the “Install MATLAB” button in the upper right corner of the screen
    3. In the new tab that opens, click the “Download for (OS)” button in the middle of the screen (MATLAB will automatically detect the installer version needed for your computer)
    4. Open the installer file, wait for the installation files to be extracted, then sign in with an admin login when prompted
    5. Once the installer is open, sign in using your HawkID (hawkid@uiowa.edu) and password
    6. Agree to the terms of the license agreement
    7. Use the default license option and destination folder
    8. On the Products page, ensure the following products are selected:
      • MATLAB
      • Optimization Toolbox
      • Parallel Computing Toolbox
      • Signal Processing Toolbox
      • Statistics and Machine Learning Toolbox
      • Wavelet Toolbox
    9. Choose whether to add a desktop shortcut and/or sending user experience data to MathWorks
    10. Click “Begin Install”
    11. Once the installation is finished, open MATLAB and log in using your HawkID (hawkid@uiowa.edu) and password
    12. From the “Home” toolbar along the top, open Settings
    13. In the menu along the left side of the Settings window, select “General” then “Java Runtime Environment”
    14. Set the Java Heap Size to 3456 (double the default value of 1728), then click “OK”
      • NOTE: The range of the heap size depends on your computer’s processing capacity. There is not a specific minimum or maximum, but setting the heap size to a value that is too large or too small can slow your computer down. If your computer’s default is different from the one specified above, start by doubling the heap size and make adjustments from there depending on your computer’s performance.
  2. Install R and RStudio using the instructions here
  3. Clone the EEG Pipeline Comparison GitLab repository to your computer
  4. If you plan to use Argon/HPC for processing, also copy the EEG Pipeline Comparison repository into your Argon home directory

3 Running the Pipeline Comparison

  1. Open MATLAB
  2. Using either the “Files” window on the left or the “FILE” input under the toolbar, navigate to the EEG Pipeline Comparison repository and open the processing.m file
  3. In the toolbar along the top, go to the “Editor” pane, then click “Run”
  4. Respond to the prompts that appear in the Command Window using the documentation below

3.1 Parameters

3.1.1 Processing Info

NOTE: These inputs cannot be modified after entry. If you select the wrong option, press “Ctrl+C” to stop the script.

  1. Processing data using Argon/HPC? Indicate whether you would like to process the data using Argon. If you would like to use Argon, you must have an Argon account and have your Argon home directory mapped to your computer (see the HPC documentation for more information).

  2. Use parallel pool for initial processing? Indicate whether you would like to run the initial processing steps in parallel (i.e., multiple data files simultaneously) or in series (i.e., one file at a time). Parallel processing can be faster, but if you are processing the data on your computer rather than on Argon, it can cause your computer to run slowly, since most of its processing power will be dedicated to the EEG processing. Additionally, because file sizes are much larger for the initial processing steps, longer data files (like the ones produced for the Stop-Signal task) can cause MATLAB to freeze or can fail to load if using parallel processing on your computer.

  3. Use parallel pool for pipeline processing? Indicate whether you would like to run the pipeline-specific processing steps in parallel or in series. The file sizes for this step are much smaller, even for longer tasks, so it is more feasible to run pipeline-specific processing in parallel on your computer. However, much of your computer’s processing power would still be dedicated to the EEG processing, so your computer will likely slow down (albeit to a lesser degree).

  4. Enter the path to the folder containing the raw dataset. Enter the complete file path for the raw data that you would like to process. If MATLAB cannot locate the folder, it will prompt you to re-enter the file path.

  5. Where is the raw data saved? Indicate whether the raw data folder is saved locally (i.e., on your computer), in the PetersenLabEEGVideo drive, or in your Argon home directory. If you chose to process the data using Argon, you cannot process data that is saved locally, and that option will not be visible.

  6. Select processing mode. Indicate whether you would like to process all of the files in the raw data folder or only the files that have not yet been processed. The new option assumes that you will be processing the unprocessed files using the same parameters used to process other files.

    New Files

    These prompts will only appear if you chose to process only new data files.

    1. Enter the path to the existing output folder. Enter the complete file path to the main output folder with the data that is already processed. The main output folder is the one that contains the 0_input_parameters folder. If MATLAB cannot locate the folder, or if the folder exists but does not contain a folder called 0_input_parameters, it will prompt you to re-enter the file path.
    2. List of processed files not found. This prompt will only appear if MATLAB cannot locate processed_files_all.mat within the main output folder. When this happens, you can either specify a different list of processed files or process all of the files in the raw data folder. Depending on how many files have already been processed, it may be faster to close out of the script, manually create a list of the processed files, and restart.
    3. Enter the complete path to the list of processed files, including the file extension. This prompt will only appear if you selected file in the previous step. Enter the complete file path (including file name and extension) for a list of processed files. The list does not have to be named processed_files_all, but it must have a .mat file extension. If MATLAB cannot locate the file, or if the file does not have a .mat extension, it will prompt you to re-enter the file path.
  7. Where should processed data be saved? or Where is (original output folder)? Indicate whether the data should be (or are) saved locally (i.e., on your computer), in the PetersenLabEEGVideo drive, or in your Argon home directory. If you chose to process the data using Argon, you cannot process data that is saved locally, and that option will not be visible unless you chose to only process new files (see next step).

    • NOTE: Saving data to PetersenLabEEGVideo is strongly discouraged unless you have already discussed it with the LC or Dr. P. The storage space is extremely limited, and EEG data takes up a lot of space.
  8. Argon cannot access local directories. This prompt will only appear if you chose to process data using Argon, are only processing new data files, and indicated that the existing processed data are saved locally. Indicate whether you would like to process and save the new files using Argon or using your computer. If you choose Argon, you will have to manually move the newly processed files to the main output directly, and combine the QC files, error logs, and processed files lists manually when processing is complete.

  9. Enter the local path to your Argon home directory. This prompt will only appear if you are processing data using Argon, if your raw data are in Argon, or if you chose to save outputs in Argon. Enter the “base” file path for your Argon home directory. On Windows, this path is typically one letter followed by a colon (e.g., X:). If MATLAB cannot locate the folder, it will prompt you to re-enter it. If you indicated that you are using data stored in Argon, but the Argon folder you provided is not found in the file path for that data, the script will stop running with an error.

  10. Enter the local path to PetersenLabEEGVideo. This prompt will only appear if your raw data are in LSS or if you chose to save outputs in LSS. Enter the “base” file path for the PetersenLabEEGVideo drive. On Windows, this path is typically one letter followed by a colon (e.g., Y:). If MATLAB cannot locate the folder, it will prompt you to re-enter it. If you indicated that you are using data stored in PetersenLabEEGVideo, but the LSS folder you provided is not found in the file path for that data, the script will stop running with an error.

3.1.2 Parameter Set-Up

NOTE: The inputs in this section cannot be modified after entry. If you select the wrong option, press “Ctrl+C” to stop the script.

  1. Load pre-existing set of input parameters? This prompt will only appear if you chose to process all data in the raw data folder. If you are only processing new files, MATLAB assumes that you will load the parameter file used with the existing processed files. Pre-existing parameters must be saved as a .mat file and include all of the fields required by the processing script. To avoid processing errors, it is strongly recommended that you use a parameter file generated by the pipeline comparison script.

3.1.2.1 Pre-Existing Parameters

These prompts will only appear if you chose to load a pre-existing parameter file.

  1. Enter the path to the parameter file. If you are only processing new data files, MATLAB will search the original output folder for a parameter file and only display this prompt if it does not find one. Enter the complete path to the parameter file you would like to use, including the file name and extension. If MATLAB cannot locate the file, it will prompt you to re-enter it.
  2. Change an existing parameter? MATLAB will display the parameters from the loaded parameter file. If there is an error at this step, the parameter file you specified is likely from an older version of the pipeline comparison script and is missing necessary parameters. See the Appendix for further instructions. If you confirm the parameters, MATLAB will proceed to the next processing step. If not, you will be directed to the parameter change menu.
  3. Run pipeline comparison after processing? This prompt will only appear if your parameter file has multiple pipelines selected. This option will generate a few additional files to use in the generalizability.Rmd script (see the Comparison section).

3.1.2.2 New Parameter File

  1. Select pipeline. This prompt will only appear if you chose to save data in LSS or Argon. Because these locations have much more limited storage space, the script defaults to running only one pipeline at a time. Enter the pipeline you would like to use.
  2. Run all pipelines? This prompt will only appear if you chose to save data locally. This option includes APICE, HAPPE, MADE, NEAR, and RELAX-Jr. If you are running multiple pipelines, verify that your computer has enough space to store all of the data. For reference, folder sizes for each task for one pipeline are shown below. The initial output is only generated once, regardless of how many pipelines are used. The “Total” column includes initial output, HAPPE output, error files, and output logs, but does not include intermediate outputs or pipeline comparison | Task | Files | Initial Output | HAPPE Output | Total | |————-|——-|—————-|————–|——–| | Oddball | 569 | 269 GB | 118 GB | 391 GB | | Fish-Sharks | 566 | 362 GB | 49 GB | 412 GB | | Stop-Signal | 546 | 567 GB | 114 GB | 682 GB |
  3. Enter the pipeline(s) you would like to run This prompt will only appear if you chose not to run all pipelines. Enter at least one pipeline to use for processing. If you are running multiple pipelines, verify that your computer has enough space to store all of the data. See the table above for approximate folder sizes.

3.1.3 Initial Processing

Before showing the next set of prompts, the script sets several parameters based on the lab’s EEG equipment. These include the raw data format, cap layout, electrode coordinate file, and channel labels. In the (extremely unlikely) event that you need to change any of these, you must do so manually by editing the parameters.m file.

  1. Channels of interest? Indicate whether you would like to include all available channels or only a subset of channels. If you are confident about the channel(s) you expect to see results in, choosing a subset of channels can help save space and decrease processing time. However, if you are unsure about the specificity of your results or you plan to do exploratory analysis, including all channels is recommended.

  2. Enter channels to exclude. This prompt will only appear if you chose to include a subset of channels to process. Enter the channels that you would like to REMOVE from processing, using the “E#” label format.

  3. Data type. Indicate whether you are processing baseline/resting-state or task-related data. This question does NOT determine whether data will be segmented.

    Task-Related Data

    The following prompts will only appear if you are processing task-related EEG data.

    1. Performing event-related potential (ERP) analysis? Indicate whether you will be using the processed data to examine ERPs. ERP processing can be strongly affected by certain filtering and data cleaning procedures, and this setting influences which options will be available to you later.

    2. Which task are you analyzing? Indicate which task your data is from. If you select one of the existing tasks, the onset tag and condition parameters will be set automatically, and accuracy coding will be applied during processing. If not, you will receive additional prompts for onset tag and condition information, and accuracy coding must be completed before running the pipeline.

      Other Tasks

      1. Enter the onset tags. Enter the tags used to label the trials in the EEG task. If you are not sure what tags were used, see the Appendix. When entering tags, include plus signs, but do not include quotation marks.
      2. Do multiple onset tags belong to a single condition? Indicate whether any of the task onset tags belong to a larger category. For example, in the Fish-Sharks task, we have onset tags for correct Go trials, incorrect Go trials, correct No-Go trials, and incorrect No-Go trials. We then include Go and No-Go as conditions.
      3. Enter each condition followed by its corresponding onset tags. This prompt will only appear if you indicated that your task has conditions. The condition name can be whatever makes sense, but the onset tags must include all of the tags provided above, and no additional onset tags. Additionally, each condition must contain at least two onset tags.
  4. Resample data? Indicate whether you would like to downsample the data. The lab’s equipment samples data at 1000Hz, which means it records 1000 measurements per channel per second during a task. If you are processing a very long data set, or if you are not segmenting the data later, downsampling the data can be helpful for reducing file sizes. For more complicated analysis, especially analysis involving high-frequency signals, keeping the original sampling frequency is typically recommended.

  5. Select sample frequency. This prompt will only appear if you indicated that you would like to resample the data. Indicate the new frequency you would like the data to have. The 1000 option is a holdover from the HAPPE pipeline parameter file–because the lab’s data is already at this frequency, selecting this option will not affect the data.

  6. Filtering method. Indicate whether you would like to use high-pass, low-pass, band-pass, or no filter on the data. Because we process child EEG, performing some amount of filtering is strongly recommended. A high-pass filter will remove lower frequencies, a low-pass filter will remove higher frequencies, and a band-pass filter will remove both.

  7. Filter type. This prompt will only appear if you selected a filtering option. The FIR (Finite Impulse Response) option is generally preferred for EEG processing since it preserves the “true” signal and is stable over time. However, it requires more computational power to run, though the lab’s tasks are short enough that this generally doesn’t cause problems. The IIR (Infinite Impulse Response) option requires less computational power, but since it relies on its own output, it can distort signal and/or become unstable over time.

  8. Enter low-pass filter. This prompt will only appear if you selected the low-pass or band-pass filtering option. Input the highest frequency you would like to keep in your data. The vast majority of analysis will only involve frequencies below 50Hz, which greatly reduces signals from skin conductance, muscle movements, and electrical line noise. Because time-frequency analysis is essentially a structured set of filters, there are few recommendations for low-pass cutoffs. However, ERP analysis is quite sensitive to filter settings, so the low-pass filter cutoff can depend on the ERP of interest (see Zhang et al., 2024).

  9. Enter high-pass filter. This prompt will only appear if you selected the high-pass or band-pass filtering option. Input the lowest frequency you would like to keep in your data. If you plan to apply ICA to the data, this value should be at least 1Hz. As with the low-pass filter, there are few cutoff recommendations for time-frequency analysis, but ERP can be greatly affected by the cutoff value. Additionally, most ERP high-pass filter cutoffs fall well below the 1Hz cutoff recommended for ICA, so use caution if applying ICA for ERP analysis.

    Line Noise Reduction

    The following prompts will only appear if you selected a low-pass frequency cutoff greater than or equal to 60Hz, or if you did not enable low-pass filtering.

    “Line noise” refers to the artifact caused by electrical frequencies in the wires (or “lines”) near the EEG equipment. These frequencies cause a very large spike in signal strength at the line noise frequency, which is 60Hz in the Unites States and 50Hz in most other places. They can also cause signal spikes at harmonic frequencies (i.e., multiples of the line noise frequency) if the noise is very strong.

    1. Line noise reduction method? Indicate which line noise reduction method to apply to the data. The notch (FIR) and Butterworth (IIR) filters operate as reverse bandpass filters–they keep frequencies below the lower cutoff and above the higher cutoff. The strengths and limitations of FIR and IIR filters in this context are the same as the strengths and limitations described above. Additionally, while both the standard notch filter and the IIR filter are relatively quick to apply, they both leave a gap in the signal at the line noise frequency, which can lead to edge artifacts on either side of the line noise frequency. The CleanLine and ZapLine options aim to remove the line noise artifact while preserving the true EEG signal at the line noise frequency, with the trade-off of requiring much more processing power (and processing time). CleanLine operates primarily in the time domain–it assumes that the line noise signal varies over time, so the regression model it uses to identify and remove that signal also varies over time. As a result, it applies this non-stationary model to each channel individually (i.e., it is univariate). ZapLine, on the other hand, operates primarily in the spatio-spectral domain, meaning it assumes that the relationships among the electrodes are consistent over time and applies the same model to all channels collectively (i.e., it is multivariate). ZapLine’s stationarity assumption is often violated in “real-world” data, but CleanLine takes significantly longer to run. Some researchers recommend using CleanLine and ZapLine in a complementary fashion (e.g., Miyakoshi et al., 2021), but this has not been implemented in our code (yet).
    2. Enter lower cutoff. This prompt will only appear if you selected the notch or Butterworth option. Input the lower cutoff for the line noise filter (typically 1-2Hz below the line noise frequency).
    3. Enter higher cutoff. This prompt will only appear if you selected the notch or Butterworth option. Input the higher cutoff for the line noise filter (typically 1-2Hz above the line noise frequency).
    4. Are there additional frequencies to reduce? This prompt will only appear if you selected the CleanLine option. As mentioned above, very strong line noise can cause additional artifacts at harmonic frequencies. Unless you know there are harmonic artifacts in your data, providing additional frequencies is typically unnecessary and will increase processing time.
    5. Enter the frequencies to pass through noise reduction. This prompt will only appear if you selected the CleanLine option and indicated that there are additional frequencies to reduce. Input the harmonic frequencies to add to the CleanLine reduction. These frequencies will often be multiples of the line noise frequency (e.g., 120Hz), but can also be “partial” multiples (e.g., 30Hz, 90Hz) if the line noise is particularly strong. If you are using this option, visual data inspection to identify harmonics is recommended.

3.1.4 Bad Channel Detection

The prompts for this section vary considerably depending on the pipeline(s) select earlier in the script. Pipeline-specific prompts are preceded by the pipeline name and only appear if that pipeline was selected.

  1. Perform bad channel rejection? Indicate whether you would like to reject bad channels identified during pre-processing. If you choose not to reject bad channels, MATLAB will identify bad channels using the default settings and keep them in the data set. This can be helpful in cases where you are analyzing a small subset of channels or for analyses that require all data files to have the same channels present. If you choose not to reject bad channels, proceed to Data Cleaning.
  2. HAPPE: Run bad channel rejection before or after wavelet thresholding? Indicate whether bad channels should be removed before or after wavelet thresholding. Because wavelet thresholding “flattens” the data amplitude, the bad channel identification parameters differ based on when they are applied. Additionally, because wavelet thresholding is a data cleaning step, more channels tend to be rejected if bad channel rejection is applied beforehand.
  3. APICE: Use custom thresholds? Indicate whether you would like to adjust any of the default APICE parameters for bad channel/artifact detection. If you choose to use custom parameters, you will need to modify the files directly–the script will not prompt you for them. Refer to Flo et al., 2022 for documentation on the various parameters. MATLAB will display the file path and the relevant parameter files, and it will wait until you confirm that you have finished editing the parameters.
  4. NEAR: Use all bad channel detection methods? Indicate whether you would like to use all three of NEAR’s bad channel detection methods (flat signals, local outlier factor, and periodogram analysis). “Flat signals” include channels identified as having no signal for 5s or more. The local outlier factor (LOF) algorithm evaluates signal based on the distances between electrodes and their neighbors and is calculated by comparing how “reachable” a given channel is to how “reachable” its neighbors are. If a channel is less reachable than its neighbors, it is considered a potential outlier and removed (for a more detailed explanation, see Kumaravel et al., 2022). Periodogram analysis is based on findings that motion-related artifacts tend to manifest as increased power in the beta frequency range with concomitant decreased power in the delta and alpha ranges (Georgieva et al., 2020). The creators of the NEAR pipeline note that the bad channels identified by periodogram are also identified by the flat signal and LOF methods, so it may not be necessary to implement. All three of these methods use the default settings recommended by the NEAR authors, which are specified in the parameters.m script.
  5. NEAR: Enter bad channel detection methods. This prompt will only appear if you chose not to use all bad channel detection methods for NEAR. Input the bad channel detection methods you would like to use for the data.

NOTE: RELAX-Jr’s bad channel detection is built in to its data cleaning procedures. Bad channels are identified using the default settings recommended by the RELAX-Jr authors, which are specified in the parameters.m script.

3.1.5 Data Cleaning

The prompts for this section vary considerably depending on the pipeline(s) select earlier in the script. Pipeline-specific prompts are preceded by the pipeline name and only appear if that pipeline was selected.

  1. HAPPE: Use ECGone to reduce excess ECG artifact? Indicate whether you would like to use ECGone to reduce ECG (i.e., heart rate and breathing) artifacts in the data. This algorithm requires either a dedicated ECG channel or channel(s) where you know that ECG artifacts are present. The documentation for this feature is somewhat limited, so errors that arise may be challenging to resolve. However, the script seems to primarily rely on the MATLAB function findpeaks, which has documentation here.

    ECGone

    These prompts will only appear if you chose to apply ECGone.

    1. Does the data contain a dedicated ECG channel? Indicate whether your data has a specific channel for recording ECG signal. If you are processing data collected with the DevPsy Lab equipment, there is not a dedicated ECG channel.
    2. Enter ECG channel name. This prompt will only appear if you indicated that the data has a dedicated ECG channel. Enter the name of the ECG channel.
    3. Enter channels with ECG artifact. This prompt will only appear if you indicated that the data does not have a dedicated ECG channel. Enter the name(s) of the channel(s) that have significant ECG artifact. The channel(s) will be used to create an ECG signal template, and MATLAB will remove that template signal from the rest of the data. Because these channels are used to build a representation of the ECG signal, you should only input channels that have very strong ECG signal in most/all recordings. The channel(s) are used across all participants, so visual inspection of several (if not all) recordings is strongly recommended when selecting the channel(s).
    4. Enter threshold for determining if proxy contains significant ECG artifacts. This prompt will only appear if you indicated that the data does not have a dedicated ECG channel. Indicate the minimum “peakiness” threshold for determining whether the data contains sufficient ECG signal to apply the ECGone algorithm. After identifying peaks, the algorithm subtracts the median value of the data from each peak, then divides those values by the median of the data. If the median of the transformed data is below the threshold set in this step, the data does not have enough ECG signal to run the algorithm.
    5. Enter window creation length. Enter the minimum length of time between peaks for identifying heart rate signal. This value should be less than the duration of a single heartbeat.
  2. RELAX-Jr: Use MWF for data cleaning? Indicate whether you would like to use multi-channel Wiener filtering (MWF) for data cleaning. The creators of RELAX-Jr recommend using either MWF or wICA, but not both, which could lead to “over-cleaning”.

  3. RELAX-Jr: Clean all artifact types? This prompt will only appear if you chose to run MWF. Indicate whether you would like to run all rounds of MWF to remove muscle, blink, and eye movement artifacts in the RELAX-Jr pipeline. RELAX-Jr was validated using MWF for all three artifact types simultaneously, but not separately. For more details on each option, see Bailey et al., 2023, Hill et al., 2024, and the RELAX-Jr Wiki. Also note that many of the RELAX-Jr functions have additional documentation written into the MATLAB scripts, located here.

  4. RELAX-Jr: Enter artifacts to reduce. This prompt will only appear if you chose to run MWF, but chose not to clean all artifact types. Indicate which rounds of MWF to complete on the data. See previous step for links to documentation.

  5. RELAX-Jr: Enter the delay period for MWF. This prompt will only appear if you chose to run MWF. Enter the delay period between the temporal and spatial filters for MWF. Because MWF applies both a temporal and a spatial filter simultaneously, it adds a delay before and after each point when constructing the filter to account for correlations within the data. Larger delays lead to better cleaning, but also much longer processing times. The suggested value in the MWF scripts is between 8 and 12ms.

  6. HAPPE: Thresholds for wavelet processing? This prompt will only appear if you are doing ERP processing. Indicate whether you would like to use “hard” or “soft” thresholds for the wavelet thresholding. The soft threshold is recommended for cleaner data to help preserve ERP amplitudes. The hard threshold is recommended for data with heavier artifacts to ensure data are sufficiently clean.

  7. Use ICA for artifact reduction? This prompt will only appear if you are not doing ERP processing. Indicate whether you would like to use ICA to remove “stereotyped” artifacts (i.e., artifacts that look similar every time they occur, such as blinks, eye movements, or jaw clenching). Child EEG data is often much noisier than adult EEG data, so many of the artifacts are non-stereotyped. As a result, ICA can be less reliable with child EEG data. ICA tends to work best with longer recordings and data that have been high-pass filtered to 1 Hz or higher. If you selected a high-pass filter below 1 Hz (or no high-pass filter), MATLAB will print a warning, but will still apply ICA to your data. All pipelines except for NEAR have the option to conduct ICA.

    ICA

    These prompts will only appear if you chose to apply ICA.

    1. ICA method? Indicate whether you would like to use the FastICA or the InfoMax algorithm for the ICA. The FastICA algorithm, as the name implies, runs faster (typically 1-3 minutes per data file), but the results are less stable for data with lots of channels. The InfoMax algorithm takes longer (typically 3-5 minutes per data file), but the decompositions are more stable when the recording has a sufficient number of samples. For a more detailed comparison, see the EEGLab documentation and Delorme et al., 2012.
    2. HAPPE: Use ICA for HAPPE anyway? Indicate whether you would like to use ICA in addition to wavelet thresholding for the HAPPE pipeline. Because HAPPE already implements wavelet thresholding, the majority of artifacts are removed prior to the ICA step, making it somewhat redundant. To avoid over-cleaning, applying both wavelet thresholding and ICA is not recommended unless the data are particularly noisy. The response for this prompt does not affect ICA for any other pipelines.
    3. APICE: Use custom parameters? Indicate whether you would like to adjust any of the default APICE parameters for wICA. If you choose to use custom parameters, you will need to modify the files directly–the script will not prompt you for them. Refer to Flo et al., 2022 for documentation on the various parameters. MATLAB will display the file path and the relevant parameter files, and it will wait until you confirm that you have finished editing the parameters.
    4. RELAX-Jr: Use ICA in addition to MWF? This prompt will only appear if you chose to use MWF for data cleaning. RELAX-Jr was tested using MWF only, ICA only, and both, and performed well with all three combinations. However, using both MWF and ICA substantially increases processing time, and (in less artifact-laden data) can lead to over-cleaning.
    5. RELAX-Jr: Use wICA or ICA subtract? Choose which ICA method to apply to the data. The creators of RELAX-Jr note that ICA by subtraction is “non-optimal” (see GitHub).
  8. NEAR: Enter threshold for artifact identification. Enter the maximum threshold for artifact removal when applying the ASR algorithm. Lower values are more strict (i.e., reject more data). The NEAR creators recommend a value between 20 and 30.

  9. NEAR: Run ASR in correction mode or rejection mode? Indicate whether you would like to correct artifacts identified by ASR or remove artifacts identified by ASR. Both the NEAR creators and the EEGLAB developers recommend rejecting artifacts rather than correcting, as the effects of correction are “not clearly understood” (see EEGLAB and Kumaravel et al., 2022).

  10. NEAR: Perform additional artifact rejection after ASR processing? This prompt will only appear if you chose to run ASR in rejection mode. Indicate whether you would like to reject remaining artifacts in the data after the initial ASR processing. This setting removes portions of the data where a given number of channels exceed a given standard deviation threshold for a given time period.

3.1.6 Channel Interpolation

Although channel interpolation occurs after segmentation in the processing pipeline, MATLAB collects the parameters for each in the opposite order. Not all files/tasks are segmented, so all of the segmentation and segment-related parameters are grouped together in parameters.m. If you choose not to perform channel interpolation, the rest of the prompts in this section will not appear.

  1. Interpolate bad channels? Indicate whether you would like to interpolate channels identified by the bad channel detection step(s). Interpolation estimates the signal for a given channel based on the signal in nearby channels. A major benefit of interpolation is that it allows for future processing steps that require all data files to have the same channels. However, interpolated data is only as good as the data informing it. If your data are particularly noisy, or if you consistently have a high number of bad channels, the interpolated data will likely be unreliable. If you choose to interpolate channels, excluding files with high proportions of interpolated data (e.g., > 10%) is recommended.
  2. APICE: Enter channel-level interpolation methods. This prompt will only appear if you chose to interpolate channels and are using the APICE pipeline. Indicate which interpolation methods you would like to use on the data. According to the APICE documentation, target PCA reduces time-localized artifacts (e.g., artifacts caused by a yawn or a sneeze), while spline interpolation targets space-localized artifacts (e.g., artifacts caused by an electrode losing contact with the scalp). If PCA is selected, APICE only applies it to sections of the data that are identified as “bad”. The spline1 option applies spherical spline interpolation to sections of the data that are identified as “bad”, and the spline2 option applies spherical spline interpolation to channels that are “bad” for the entire recording. The pca and spline1 algorithms are applied prior to ICA (if enabled), and the spline2 algorithm is applied afterward. All three options can be used in any combination.
  3. APICE: Use custom parameters? This prompt will only appear if you chose to interpolate channels and are using the APICE pipeline. Indicate whether you would like to adjust any of the default APICE parameters for channel interpolation. If you choose to use custom parameters, you will need to modify the files directly–the script will not prompt you for them. Refer to Flo et al., 2022 for documentation on the various parameters. MATLAB will display the file path and the relevant parameter files, and it will wait until you confirm that you have finished editing the parameters.

3.1.7 Segmentation

  1. Segment/epoch data? Indicate whether you would like to split your data into smaller sections (i.e., segments/epochs) for analysis. If you are analyzing task data, it is extremely likely that it should be segmented. Baseline or resting state data can also be segmented if desired. If you choose not to segment your data, the rest of the prompts in this section, as well as the next several sections, will not appear–skip to Re-Referencing.
  2. Segment start time. This prompt will only appear if you are processing task (rather than baseline/resting state) data. Enter the start time of the segment relative to the start of the task trial. If you selected a pre-coded task (e.g., Oddball) at the beginning of the script, MATLAB will print the task timing details above this prompt. If you are applying baseline correction, the segment start time should be the time when you would like your baseline to start. For example, if you would like to include 400ms before the start of each trial for baseline correction, the segment start time should be -400. If you are not applying baseline correction, the segment start time will typically be 0.
  3. Segment end time. This prompt will only appear if you are processing task data. Enter the end time of the segment relative to the start of the task trial. This value effectively sets the duration of each segment/epoch, but it does not necessarily have to equal the trial duration. For example, if you are processing Fish-Shark data, not all trials are the same length, and there is no pre-trial baseline. If you set the segment end time to 2500ms, any trial where the participant responded in under 1750ms will partially overlap with the subsequent trial (e.g., a 750ms response time + the 750ms feedback screen only adds to 1500ms, so the remaining 1000ms of the segment will be from the next trial). To address this problem, determine how long you need each trial to be (typically ~1000ms), then exclude shorter trials from analysis (see the Appendix).
  4. Offset delay. This prompt will only appear if you are processing task data and you did not select a pre-coded task at the beginning of the script. If you selected a pre-coded task, this value is set automatically. Enter the duration of the delay between the task trigger and the stimulus presentation. For instructions on determining the offset delay, see the EGI documentation.
  5. Segment length. This prompt will only appear if you are processing baseline/resting state data. Enter the desired segment length for the data. Shorter segments may result in less data exclusion, but will increase processing time.

3.1.8 Baseline Correction

The following prompts will only appear if you chose to segment your data and if you are not processing Fish-Sharks task data. If you choose not to baseline correct your data, the rest of the prompts in this section will not appear.

  1. Perform baseline correction? Indicate whether you would like to normalize the data for each trial/segment using a baseline period prior to the trial start time. In most cases, MATLAB will apply baseline correction by subtraction, where the mean signal of the baseline period is subtracted from the signal across the rest of the segment. Because baseline correction is applied on a per-trial and per-channel basis, the magnitude of the correction can vary, which may cause issues with data interpolation. However, without baseline correction, the starting signal for each channel/trial varies, potentially leading to skewed results. Baseline correction is most helpful when there are low-frequency drifts and/or artifacts remaining in the data, so baseline correction may not be necessary if a high-pass filter was applied to the data earlier in the pipeline.

  2. Baseline start time. This prompt will only appear if you chose to perform baseline correction. Enter the start time of the baseline period relative to the trial start. This time cannot be less than the segment start time provided earlier (e.g., if the segment start time is -400ms, the baseline period cannot start at -500ms–it must start at -400ms or later). The baseline period should be a minimum of 200ms for best performance.

  3. Baseline end time. This prompt will only appear if you chose to perform baseline correction. Enter the end time of the baseline period relative to the trial start. This time cannot be greater than 0, but for best performance, the baseline period should end at least 50ms before the trial start time (i.e., the baseline end time should be less than -50).

  4. RELAX-Jr: Use regression method? This prompt will only appear if you chose to perform baseline correction and you are using the RELAX-Jr pipeline. Indicate whether you would like to perform baseline correction for the RELAX-Jr pipeline by regressing the mean of the baseline period signal out of the data (rather than subtracting it). Currently, the RELAX-Jr pipeline only supports baseline correction by regression for task designs with 0, 1, or 2 factors, with no more than 2 levels in a given factor.

  5. RELAX-Jr: Enter the number of factors. This prompt will only appear if you are performing baseline correction by regression and you did not select a pre-coded task (e.g., Oddball) at the beginning of the script. Indicate how many factors are present in your task:

    • 0 factors: all trials are the same (e.g., a task where participants hear the same sound several times)
    • 1 factor: trials differ across one variable (e.g., an Oddball task, where each trial is either “frequent” or “infrequent”)
    • 2 factors: trials differ across two variables (e.g., an emotional Go/No-Go task, where each trial is either “happy” or “sad” and either “go” or “no-go”)

    The RELAX-Jr pipeline considers a maximum of two levels for each factor–the reference level (see next prompt) and the “active” level. If your task has more than two levels on a given factor, the pipeline will treat all of the non-reference levels as equivalent. For example, if the emotional Go/No-Go task included “angry” faces in addition to “happy” and “sad”, and the “happy” level is set as the reference, then the “sad” and “angry” trials will be compared to the “happy” trials as one collective group. For certain designs, this may not be a problem, but use caution if applying this method to tasks with more than two levels on any given factor.

    NOTE: If you enter a value greater than 2, MATLAB will print a warning and set the baseline correction method back to the default (subtraction).

  6. RELAX-Jr: Enter the onset tag(s) for the event(s) to include as the reference for the first factor. This prompt will only appear if you are performing baseline correction by regression, you did not select a pre-coded task (e.g., Oddball) at the beginning of the script, and your task has 1 or 2 factors. Enter the onset tags for the level of the first factor that you would like to use as the reference level. If you have two factors, either factor’s reference level can be entered for this step.

  7. RELAX-Jr: Enter the onset tag(s) for the event(s) to include as the reference for the second factor. This prompt will only appear if you are performing baseline correction by regression, you did not select a pre-coded task (e.g., Oddball) at the beginning of the script, and your task has 2 factors. Enter the onset tags for the level of the second factor that you would like to use as the reference level.

3.1.9 Segment Interpolation

The following prompts will only appear if you chose to segment your data, and if you are using the APICE, HAPPE, and/or MADE pipeline(s). If you choose not to perform segment interpolation, the rest of the prompts in this section will not appear.

  1. Interpolate bad segments? Indicate whether you would like to interpolate segments identified by the bad segment detection script. Interpolation estimates the signal for a given segment based on the signal in nearby channels during that segment. A major benefit of interpolation is that it allows for future processing steps that require all data files to have the same segments. Additionally, since segment interpolation only applies to certain segment-channel combinations (rather than a channel over an entire recording, like channel interpolation), the percentage of interpolated data is often lower. However, interpolated data is only as good as the data informing it. If your data are particularly noisy, or if you consistently have a high number of bad segments/channels, the interpolated data will likely be unreliable. If you choose to interpolate segments, excluding files with high proportions of interpolated data (e.g., > 10%) is recommended.
  2. MADE: Exclude custom frontal channels? This prompt will only appear if you are using the MADE pipeline and chose to interpolate segments. Indicate whether you would like to provide a custom list of frontal channels to exclude from segment interpolation. Because frontal channels often have more artifacts (due to their proximity to the eyes), the MADE pipeline excludes the data from these segments from the interpolation to avoid interpolating the artifacts into the cleaned data. If you choose not to provide custom frontal channels, the default list of channels will be used. If you do not want to exclude frontal channels, enter y for this prompt, and do not enter any channels in the next prompt.
  3. MADE: Enter channels one at a time This prompt will only appear if you chose to exclude custom frontal channels for the MADE pipeline’s segment interpolation. Enter the channels you would like to exclude, using the “E#” label format. If you do not want to exclude any channels, enter “done” without inputting any channels.
  4. APICE: Use custom parameters? This prompt will only appear if you chose to interpolate segments and are using the APICE pipeline. Indicate whether you would like to adjust any of the default APICE parameters for segment interpolation. If you choose to use custom parameters, you will need to modify the files directly–the script will not prompt you for them. Refer to Flo et al., 2022 for documentation on the various parameters. MATLAB will display the file path and the relevant parameter files, and it will wait until you confirm that you have finished editing the parameters.

3.1.10 Segment Rejection

The following prompts will only appear if you chose to segment your data, and if you are using the APICE, HAPPE, MADE, and/or RELAX-Jr pipeline(s). If you choose not to perform segment rejection, the rest of the prompts in this section will not appear.

  1. Perform segment rejection? Indicate whether you would like to discard segments identified by the bad segment detection script. Segment rejection can be applied with or without segment interpolation.
  2. HAPPE/MADE/RELAX-Jr: Enter minimum signal amplitude. This prompt will only appear if you are using the HAPPE, MADE, and/or RELAX-Jr pipeline(s). Enter the lower signal amplitude threshold for retaining segments in the data. Any segments with signal lower (i.e., more negative) than this value will be removed. Because child EEG data tend to be noisier, a more lenient threshold, such as -150mV, is recommended.
  3. HAPPE/MADE/RELAX-Jr: Enter maximum signal amplitude. This prompt will only appear if you are using the HAPPE, MADE, and/or RELAX-Jr pipeline(s). Enter the upper signal amplitude threshold for retaining segments in the data. Any segments with signal higher than this value will be removed. Because child EEG data tend to be noisier, a more lenient threshold, such as 150mV, is recommended.
  4. HAPPE: Perform segment rejection based on similarity? This prompt will only appear if you are using the HAPPE pipeline. Indicate whether you would like to reject segments based on joint-probability criteria, which assess how “typical” each segment is.
  5. HAPPE: Use segment rejection in region of interest? This prompt will only appear if you are using the HAPPE pipeline. Indicate whether you would like to restrict segment rejection to a subset of channels.
  6. HAPPE: Enter channels to include. This prompt will only appear if you are using the HAPPE pipeline and chose to apply segment rejection in a region of interest. Enter the channels you would like to include, using the “E#” label format.
  7. APICE: Use custom parameters? This prompt will only appear if you are using the APICE pipeline. Indicate whether you would like to adjust any of the default APICE parameters for segment rejection. If you choose to use custom parameters, you will need to modify the files directly–the script will not prompt you for them. Refer to Flo et al., 2022 for documentation on the various parameters. MATLAB will display the file path and the relevant parameter files, and it will wait until you confirm that you have finished editing the parameters.
  8. RELAX-Jr: Remove segments showing muscle activity? This prompt will only appear if you are using the RELAX-Jr pipeline. Indicate whether you would like the remove segments showing high levels of muscle artifacts. If you are removing muscle artifacts with MWF, this step is not recommended. Additionally, since child EEG data tend to have high muscle contamination, this setting will often remove a much higher proportion of segments than amplitude/similarity rejection criteria.
  9. RELAX-Jr: Enter the maximum proportion of muscle-contaminated segments that can be removed. This prompt will only appear if you are using the RELAX-Jr pipeline and chose to reject segments showing muscle activity. To prevent RELAX-Jr from rejecting too many segments, enter the maximum proportion of segments the pipeline can reject.

3.1.11 DSS (APICE Only)

  1. APICE: Apply DSS to ERP? This prompt will only appear if you are using the APICE pipeline and chose to do ERP processing. Indicate whether you would like to use Denoising Source Separation (DSS) to the ERP data to extract evoked activity. DSS identifies data components containing “evoked activity” (i.e., activity that is present across trials, rather than activity that is different between trials). Because it does not retain all non-phase-locked activity (signals with timing that is not consistently related to the stimulus onset), DSS is typically reserved for ERP analysis. See de Cheveigne and Simon (2008) and de Cheveigne and Parra (2014) for more information on DSS.
  2. APICE: Use custom parameters? This prompt will only appear if you are using the APICE pipeline and chose to apply DSS. Indicate whether you would like to adjust any of the default APICE parameters for DSS. If you choose to use custom parameters, you will need to modify the files directly–the script will not prompt you for them. Refer to Flo et al., 2022 for documentation on the various parameters. MATLAB will display the file path and the relevant parameter files, and it will wait until you confirm that you have finished editing the parameters.

3.1.12 Re-Referencing

  1. Re-reference data? Indicate whether you would like to re-reference your data. For many EEG systems, the neural signal is measured as the difference in electrical potential between each electrode and the reference electrode(s). Different EEG systems often use different locations for their reference electrode, making it difficult to compare results across systems and montages. Re-referencing transforms data to be “reference-independent” to make comparisons more straightforward. However, re-referencing transformations become more distorted as the number of electrodes decreases and as the scalp coverage of electrodes decreases. If you choose not to re-reference the data, the reference channel (for lab data, E129/Cz) should be excluded from analysis, because all data points will be 0.
  2. Re-referencing method. This prompt will only appear if you chose to re-reference your data. Indicate whether you would like to use average re-referencing or re-referencing to a subset of channels. Given the comparison difficulties without re-referencing, averaging re-referencing is typically preferred, because re-referencing to a subset effectively moves the reference location.
  3. Enter channel/subset of channels to re-reference to. This prompt will only appear if you chose to re-reference to a subset of channels. Enter the channels you would like to re-reference to, using the “E#” label format.

3.1.13 Visualization

If you are processing data using Argon, you will not be able to use pipeline visualizations, so none of the following prompts will appear.

  1. HAPPE: Run with visualizations? This prompt will only appear if you are using the HAPPE pipeline. Indicate whether you would like to generate figures for each data file. The HAPPE pipeline creators recommend running a subset of participants with visualizations to confirm parameter settings before running the full data set without visualization. For each file, the HAPPE pipeline will generate a power spectrum figure with spatial topoplots at specified frequencies across the top of the figure. If you enabled ICA for the HAPPE pipeline, it will generate a comparison of the data before and after ICA, a topoplot and power spectrum figure for each identified independent component, and a diagnostic plot for each independent component. If you are conducting ERP analysis, the HAPPE pipeline will also generate an ERP timeseries figure with spatial topoplots at specified latencies.
  2. HAPPE: Minimum value for power spectrum figure. This prompt will only appear if you enabled visualization for HAPPE. Enter the lowest frequency you would like to include for the power spectrum plots. If you are using a high-pass filter, this value should be greater than or equal to the filter cutoff.
  3. HAPPE: Maximum value for power spectrum figure. This prompt will only appear if you enabled visualization for HAPPE. Enter the highest frequency you would like to include for the power spectrum plots. If you are using a low-pass filter, this value should be less than or equal to the filter cutoff.
  4. HAPPE: Enter frequencies. This prompt will only appear if you enabled visualization for HAPPE. Enter each frequency you like a spatial topoplot for in the power spectrum figures. One topoplot per frequency band (delta, theta, etc.) is typical.
  5. HAPPE: Start time for the ERP timeseries figure. This prompt will only appear if you enabled visualization for HAPPE and are conducting ERP analysis. Enter the earliest time relative to stimulus onset that you would like in the ERP timeseries figure. This value is typically set to the stimulus time (i.e., 0), and it cannot be earlier than the segment start time.
  6. HAPPE: End time for the ERP timeseries figure. This prompt will only appear if you enabled visualization for HAPPE and are conducting ERP analysis. Enter the latest time relative to stimulus onset that you would like in the ERP timeseries figure. This value depends on the specific ERP you are interested in, but it must be less than (not equal to or greater than) the segment end time.
  7. HAPPE: Enter latencies. This prompt will only appear if you enabled visualization for HAPPE and are conducting ERP analysis. Enter each latency (time) you would like a spatial topoplot for in the ERP timeseries figures.
  8. APICE: Run with visualizations? This prompt will only appear if you are using the APICE pipeline. Indicate whether you would like to plot rejection matrices for each file during APICE processing. These matrices are generated after bad channel rejection and after data cleaning.
  9. NEAR: Run with visualizations? This prompt will only appear if you are using the NEAR pipeline and you are not completing pipeline-specific processing in parallel. Indicate whether you would like to visualize bad channel identification and rejection results for each file during NEAR processing. For each file, the NEAR pipeline will generate a plot of the LOF scores by channel. If periodogram analysis is enabled for bad channel detection, the NEAR pipeline will also generate a histogram of signal power across the periodogram frequency range (1Hz to 30Hz) for each channel.
  10. NEAR: Plot bad channels for manual rejection? This prompt will only appear if you enabled visualization for NEAR. Indicate whether you would like to manually inspect (and reject) channels identified as “bad” by the NEAR pipeline. For each file, the NEAR pipeline will show the signal for each channel. Flat-line channels and channels with high LOF are marked in red, and channels with outlier power spectrum values are marked in yellow. The plot is interactive, so you can mark additional channels for removal and/or choose to keep channels that were marked by the NEAR pipeline. Keep in mind that processing will pause until the channel rejection list is confirmed, so manual inspection/rejection may not be practical for all data sets.

3.1.14 Saving

  1. Format to save processed data. Indicate which format you would like to save the processed data in. Both save formats take up roughly the same amount of storage space, so the decision primarily depends on the format(s) needed for post-processing steps. If you are processing ERP data, the ERP data will be saved to .txt files in addition to the selected format.
  2. Save intermediate outputs? This prompt will only appear if you are not using Argon for data processing. Indicate whether you would like MATLAB to save files after each major processing step (filtering, cleaning, and segmentation) in addition to the final processed data. This will substantially increase the storage space required for processing, especially if you are using more than one pipeline. Ensure you have sufficient storage space to avoid overwriting data.
  3. Save data by onset tag? This prompt will only appear if you are not using Argon for data processing and if you are processing task data with more than one onset tag. Indicate whether you would like MATLAB to save the events from each onset tag as a separate file in addition to the full processed data set. This setting only applies to the final processed data, so separate files are not generated after intermediate processing steps (if enabled). This will substantially increase the storage space required for processing, especially if you are using more than one pipeline. Ensure you have sufficient storage space to avoid overwriting data.
  4. Save data by condition? This prompt will only appear if you are not using Argon for data processing and if you are processing task data with more than one condition. Indicate whether you would like MATLAB to save the events from each condition as a separate file in addition to the full processed data set. This setting only applies to the final processed data, so separate files are not generated after intermediate processing steps (if enabled). This will substantially increase the storage space required for processing, especially if you are using more than one pipeline. Ensure you have sufficient storage space to avoid overwriting data.

3.1.15 Confirmation

At this point, MATLAB will print a summary of the parameters you selected in the Command Window. If the parameters are correct, confirm your selections by entering y into the Command Window. If you are using Argon for data processing, proceed to the Argon Processing section. If not, processing will begin immediately.

If you need to modify any parameters, enter n into the Command Window. A list of parameter categories will appear. Enter the name of the category that needs to be modified, and MATLAB will repeat all of the prompts from that category. The list of parameter categories will re-appear after each modified category until you input done.

NOTE: Because parameter prompts are determined by file paths, processing mode, and pipeline selection, these settings cannot be modified from the confirmation list. If you need to change these settings, enter Ctrl+C to exit the script, and re-run processing.m from the beginning.

3.2 Argon Processing

After you confirm the processing parameters, MATLAB will save all of the necessary variables to your Argon home directory in a file called procVars.mat. It will also copy eeg_processing_script.m and eeg_processing.job into your Argon home directory. Lastly, it will copy all of the scripts from the pipeline_scripts folder into your Argon home directory to ensure you have the most recent versions. However, because the pipeline-specific scripts do not change often, the rest of the repository does not get copied over–you must do this manually the first time you use Argon to run the processing script. The pipeline folders should be in the “first level” of your Argon home directory (i.e., when you open the directory, it should have folders called APICE, HAPPE, etc.). Once MATLAB finishes transferring the files, the script will end, and you can proceed with the steps below.

  1. Update the .job file
    1. Open your Argon home directory, then open the eeg_processing.job file
    2. Update the output and error log paths (-o and -e) to include your HawkID instead of “HAWKID”
    3. Update the email field (-M) to your UIowa email address instead of “first-last@uiowa.edu”
    4. Update the name of the container file to match the name of your container instead of “CONTAINERNAME.sif”
      • NOTE: Your container must be on the first level of your Argon home directory
      • If you do not have a container, see the build instructions here
  2. Log in to Argon (see the Argon documentation for more detailed instructions)
  3. Enter qsub eeg_processing.job
  4. When processing finishes (or if it crashes), you will receive an email

3.3 Pipeline Comparison

4 Appendix

4.1 Missing Parameter File Fields

4.2 Check Onset Tags

  1. Using either the “Files” window on the left or the “FILE” input under the toolbar, navigate to the EEG Pipeline Comparison repository

  2. Add the necessary folders to the MATLAB path:

    % add pipeline_scripts to path
    addpath(genpath([pwd filesep 'pipeline_scripts']));
    
    % temporary variable to cut down on text
    eeglabDir = ['HAPPE' filesep 'packages' filesep 'eeglab2024.0'];
    
    % pipeline paths
    addpath('HAPPE', ['HAPPE' filesep 'packages'], ...
    ['HAPPE' filesep 'packages' filesep 'eeglab2024.0'], ...
    genpath([eeglabDir filesep 'functions']));
    rmpath(genpath([eeglabDir filesep 'functions' filesep 'octavefunc']));
    pluginDir = strcat(eeglabDir, filesep, 'plugins', filesep, ...
    {dir([eeglabDir filesep 'plugins']).name}, '; ');
    addpath([pluginDir{:}]);
  3. Using either the “Files” window on the left or the “FILE” input under the toolbar, navigate to the folder containing the raw data

  4. Load a raw data file:

    EEG = pop_loadset('name_of_file.mff', 'code');
  5. Once the file loads, double click on the EEG variable in the Workspace to open the structure

  6. In the EEG structure, locate the events field, then double click on it to open

  7. The code column will show the onset tags for the entire task

    • NOTE: There are often several onset tags for a given trial (e.g., bgin, TRSP, resp). Only include the onset tags that are relevant to the comparison(s) you are making. These tags often (but not always) end in ‘+’ and are usually added by the software used to run the task.

4.3 Discarding Short Segments (#sec-short-eps)

Developmental Psychopathology Lab