DOI: 10.5281/zenodo.18266173
title: Successful single-session neural self-regulation through neurofeedback varies between features

description: Data and code from: Successful single-session neural self-regulation through neurofeedback varies between features

Dataset DOI: 10.5281/zenodo.18266174

Dataset Overview

This repository contains the pre-processed EEG data supporting the findings of the pre-print "Successful single-session neural self-regulation through neurofeedback varies between features" published at bioRxiv with the doi: 10.64898/2026.01.07.698228. The dataset is organized at the single-subject level, provided in MATLAB (.mat) format. Each subject file contains time-frequency resolved data separated by feature, allowing for modular analysis. The data has been pre-processed and downsampled to 100 Hz, resulting in a three-dimensional array structure of 40 × 62 × 19,100 per feature. In addition, we share supporting information, and the code used to reproduce the results in the manuscript.

Description of the data and file structure

Data and computer code for "Successful single-session neural self-regulation through neurofeedback varies between features"

Files and variables

File: feedback_sessions.zip

Description: The main data file (see below for the complete archived repository including data overviews and computer code).

Variables:

The feedback_sessions.zip file contains individual neurofeedback files for each participant and session following this formatS(N) + Feature + feedbackPower.mat each file contains the following variables:



feedbackPowerASRdB: A three dimensional matrix of the size 40 x 62 x 19,100 corresponding to frequencies 1-40, 62 channels, and, 19,100 samples.

nftChanlocs: MATLAB structure that contains the channel names and locations.

nftChannels: Vector with indices to the channels which feedback was based on.

nftFreqs: Vector with indices to the frequencies which feedback was based on.


File: demographics.csv

Description: Demographic information about the participants, with the variables: ID, age, gender, handedness, and education.

Various files: aggregated_data.zip

Description: For convenience, we also provide some of the aggregated data generated by the shared code files in the repository.

Software

MATLAB (version R2022b) was used for pre-processing of raw EEG data. Analyses were performed with R (version 4.2.1), JOPS package (version 0.1.2), dtwclust package (version 5.5.11), eegUtils package (version 0.4.6), and mgcv package (version 1.9-1).

Code

Pre-process the raw EEG files

finalPreprocessNFT.m



Inputs



Feature.mat Raw EEG files



Outputs



S + ID + Feature + avgFeedbackPowerdBASR.mat

S + ID + Feature + avgFeedbackPower.mat



Dependencies



fExtractFeedbackPowerWaveletCompletedB.m

extractFeedbackSamples.m #

blocks2samples.m # Blocks to sample indices

laplacian_perrinX.m # Spatial filter




Export averaged EEG power to a text file for further analysis

export_EEG_PowerforAnalysis.m



Inputs



S + ID + Feature + avgFeedbackPowerdBASR.mat



Outputs



newPipelineAvgPowerdB + Feature + N20ASR.txt




Fit B-spline models with V-curve smoothing of power time-series data and compute Bayesian CIs for each participants and feature, save results, especially coefficients, for further analysis

smoothV-CurvSplineClustering.R



Inputs



newPipelineAvgPowerdB + Feature + N20ASR.txt



Outputs



Feature + CoeffsSmoothV127.rds

Feature + FitSmoothV127.rds




Cluster the learners

clusteringLearners.R



Inputs



Feature + CoeffsSmoothV127.rds

Feature + FitSmoothV127.rds



Outputs



Feature + Clusters.csv




Export averaged EEG power (per feature) for all EEG channels to a text file for further analysis

exportAvgNFTbyChannel.m



Inputs



S + ID + Feature + feedbackPower.mat



Outputs



S + ID + Feature + NFTbyChannel.txt




Model coefficients by cluster with mgcv package (bam), save data for plots with topoplot and trendlines

smoothModelsForClustersCoeffsAndToposFINAL.R



Inputs



Feature + Clusters.csv

Feature + NFTbyChannel.txt

chanlocs.txt



Outputs



Feature + CoeffsbyClusters2.csv

Feature + ToposbyBlockandClusters2.csv



Dependencies



flipSMRAmplitudesLaterallyAndEvaluate.R




Create plots for each feature displaying topoplots and trendlines for the clusters

plotCoeffsandTopoplotsByClusteredData.m



Inputs



Feature + NFTsettings.mat

Feature + Clusters.csv

Feature + CoeffsbyClusters2.csv

Feature + ToposbyBlockandClusters2.csv



Outputs



Figure3 + Feature + .png

Figure3 + Feature + .svg




Create plots for each feature displaying change between first and last block for each frequency band in the controlled channels

figureChangeLastblockVsThreshold.R



Inputs



S + ID + Feature + NFTbyChannelFrequency.txt

Feature + Clusters.csv



Outputs



Feature + FreqBandChangeFINAL2.svg