NIRSTORM: a Brainstorm extension dedicated to functional near-infrared spectroscopy data analysis, advanced 3D reconstructions, and optimal probe design
The 22 matches · 7 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
- [1] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Motion correction ↔ bst_plugin/preprocessing/process_nst_motion_correction.m, lines 28–81 · score 0.82 · motion correction algorithm, temporal derivative distribution, spline interpolation, TDDR, repair, artifacts
- [2] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Physiological noise regression using short separation channel regression ↔ bst_plugin/GLM/process_nst_glm_fit.m, lines 39–172 · score 0.80 · source detector distance, superficial channels, Short separation channels, slow fluctuations, fitted, bands
- [3] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Bad channel detection ↔ bst_plugin/preprocessing/process_nst_quality_check.m, lines 270–352 · score 0.79 · scalp coupling, bandpass filtering, standard deviation, quality, 2.5 Hz, SCI
- [4] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Solving NIROT Inverse Problem › Minimum norm estimate ↔ bst_plugin/math/nst_mne_lcurve.m, the whole file · a weak match · score 0.75 · depth weighted factor, noise covariance, covariance matrix, identity, curve, MNE
- [5] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Motion correction ↔ bst_plugin/math/nst_tddr_correction.m, the whole file · a weak match · score 0.75 · temporal derivative distribution, motion correction, TDDR, optical density, repair, fNIRS
- [6] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Model of NIR Light Propagation Within the Head Tissues ↔ bst_plugin/forward/process_nst_cpt_fluences.m, lines 258–362 · score 0.74 · Monte Carlo simulations, optical properties, MCXlab, skin, tissues, fluences
- [7] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Solving NIROT Inverse Problem › Minimum norm estimate ↔ bst_plugin/math/nst_mne_lcurve_MAP.m, the whole file · a weak match · score 0.74 · depth weighted factor, noise covariance, covariance matrix, identity, curve, MNE
- [8] § Appendix A: Detection of Brain Activation Using the General Linear Model ↔ bst_plugin/GLM/process_nst_glm_fit.m, lines 39–172 · score 0.71 · nuisance regressors, HRF model, design matrix, superficial, event, Linear
- [9] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Physiological noise regression using short separation channel regression ↔ bst_plugin/preprocessing/process_nst_remove_ssc.m, lines 28–66 · score 0.71 · source detector distance, superficial channels, Short separation channels, SSCs, noise, filtering
- [10] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Frequency filtering ↔ bst_plugin/math/nst_math_build_basis_dct.m, the whole file · a weak match · score 0.70 · discrete cosines transform, frequency bands, physiological, regressing, signal
- [11] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Solving NIROT Inverse Problem › Computing HbO and HbR fluctuations along the cortical surface ↔ bst_plugin/OM/process_nst_compare_montage.m, lines 328–358 · score 0.67 · spatial dispersion, ground truth, ROC, AUC, metrics, SD
- [12] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Model of NIR Light Propagation Within the Head Tissues ↔ bst_plugin/forward/panel_nst_fluences.m, lines 190–243 · score 0.64 · Monte Carlo simulations, forward model, GPU, photon, MCXLab, tissues
- [13] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Model of NIR Light Propagation Within the Head Tissues ↔ bst_plugin/forward/process_nst_import_head_model.m, lines 174–319 · score 0.63 · surface interpolation, sensitivity map, kernel, cortical surface, voxel, Voronoi
- [14] § Multimodal Integration–Illustration in the Clinical Context of Epilepsy › Review of the Simultaneous EEG-fNIRS Data ↔ bst_plugin/preprocessing/process_nst_remove_ssc.m, lines 28–66 · score 0.63 · superficial noise, short separation channels, pre processed, filtering
- [15] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Motion correction ↔ bst_plugin/math/nst_tddr_correction.m, the whole file · a weak match · score 0.62 · temporal derivative, signal corrected, TDDR, Optical density, repair, fNIRS
- [16] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Frequency filtering ↔ bst_plugin/preprocessing/process_nst_iir_filter.m, lines 182–227 · score 0.61 · infinite impulse, Butterworth, IIR, detrending, Filtering, signal
- [17] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Motion correction ↔ bst_plugin/preprocessing/process_nst_motion_correction.m, lines 28–81 · score 0.57 · temporal derivative, spline interpolation, TDDR, repair, motion, fNIRS
- [18] § Appendix A: Detection of Brain Activation Using the General Linear Model ↔ bst_plugin/math/nst_math_build_basis_dct.m, the whole file · a weak match · score 0.56 · discrete cosine basis, physiological, regressors, matrix, signals
- [19] § Overview of NIRSTORM ↔ scripts/tutorial_nirstorn_2024.m, lines 1–80 · score 0.54 · corresponding online, tutorial, article, protocol, tapping, NIRSTORM
- [20] § fNIRS 3D Reconstruction Using Near-Infrared Optical Tomography › Solving NIROT Inverse Problem › Coherent maximum entropy on the mean ↔ scripts/tutorial_nirstorn_2024.m, lines 247–326 · score 0.53 · BEst, cMEM, localize, field, overlapping, Brainstorm
- [21] § Standard Channel Space Analysis of fNIRS Signals › Standard Hemodynamic Response Estimation Using fNIRS Signal Averaging ↔ scripts/nst_tutorial_tapping.m, the whole file · a weak match · score 0.52 · finger tapping, block, epochs, baseline, brain, event
- [22] § Standard Channel Space Analysis of fNIRS Signals › Preprocessing › Estimation of HbO and HbR fluctuations using the modified Beer-Lambert law ↔ bst_plugin/mbll/process_nst_mbll.m, lines 465–546 · score 0.51 · partial volume factor, age, PVF, wavelength
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 200 lines · 7.3 KB · GPL-3.0 · 2 matches
- function varargout = process_nst_motion_correction( varargin )
- % @=============================================================================
- % This software is part of the Brainstorm software:
- % http://neuroimage.usc.edu/brainstorm
- %
- % Copyright (c)2000-2013 Brainstorm by the University of Southern California
- % This software is distributed under the terms of the GNU General Public License
- % as published by the Free Software Foundation. Further details on the GPL
- % license can be found at http://www.gnu.org/copyleft/gpl.html.
- %
- % FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE
- % UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY
- % WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
- % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY
- % LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE.
- %
- % For more information type "brainstorm license" at command prompt.
- % =============================================================================@
- %
- % Authors: Thomas Vincent (2015-2018), Edouard Delaire (2023)
- eval(macro_method);
- end
- %% ===== GET DESCRIPTION =====
- function sProcess = GetDescription()
- % Description the process
- sProcess.Comment = 'Motion correction';
- sProcess.FileTag = '_motioncorr';
- sProcess.Category = 'Filter';
- sProcess.SubGroup = {'NIRS', 'Pre-process'};
- sProcess.Index = 1305;
- sProcess.Description = 'https://neuroimage.usc.edu/brainstorm/Tutorials/NIRSTORM#Motion_correction';
- sProcess.isSeparator = 0;
- % Definition of the input accepted by this process
- sProcess.InputTypes = {'data', 'raw'};
- sProcess.OutputTypes = {'data', 'raw'};
- sProcess.nInputs = 1;
- sProcess.nMinFiles = 1;
- % Definition of the options
- sProcess.options.method.Type = 'radio_linelabel';
- sProcess.options.method.Comment = {'Spline correction', ' Temporal Derivative Distribution Repair','Motion correction algorithm'; 'spline', 'tddr',''};
- sProcess.options.method.Controller = struct('spline','spline','tddr','tddr');
- sProcess.options.method.Value = 'spline';
- sProcess.options.option_event_name.Comment = 'Movement event name: ';
- sProcess.options.option_event_name.Type = 'text';
- sProcess.options.option_event_name.Value = '';
- sProcess.options.option_event_name.Class = 'spline';
- sProcess.options.option_smoothing.Comment = 'Smoothing Parameters';
- sProcess.options.option_smoothing.Type = 'value';
- sProcess.options.option_smoothing.Value = {0.99,'',3};
- sProcess.options.option_smoothing.Class = 'spline';
- sProcess.options.citation.Comment = '<b>Source:</b>';
- sProcess.options.citation.Type = 'label';
- sProcess.options.citation_spline.Comment = ['<p>Scholkmann, F., Spichtig, S., Muehlemann, T., & Wolf, M. (2010). <br />' ...
- 'How to detect and reduce movement artifacts in near-infrared imaging <br />' ...
- 'using moving standard deviation and spline interpolation. <br />' ...
- 'Physiological measurement, 31(5) <br />' ...
- 'https://doi.org/10.1088/0967-3334/31/5/004<p>'];
- sProcess.options.citation_spline.Type = 'label';
- sProcess.options.citation_spline.Class = 'spline';
- sProcess.options.citation_tddr.Comment = ['<p>Fishburn F.A., Ludlum R.S., Vaidya C.J., & Medvedev A.V. (2019). <br />' ...
- 'Temporal Derivative Distribution Repair (TDDR): A motion correction <br />' ...
- 'method for fNIRS. NeuroImage, 184, 171-179. <br />' ...
- 'https://doi.org/10.1016/j.neuroimage.2018.09.025</p>'];
- sProcess.options.citation_tddr.Type = 'label';
- sProcess.options.citation_tddr.Class = 'tddr';
- end
- %% ===== FORMAT COMMENT =====
- function [Comment, fileTag] = FormatComment(sProcess)
- % Get options
- % Format comment
- if strcmp(sProcess.options.method.Value,'spline')
- Comment = 'Motion Corrected (spline)';
- fileTag = 'motion';
- else
- Comment = 'Motion Corrected (TDDR)';
- fileTag = 'motion';
- end
- end
- %% ===== RUN =====
- function sInputs = Run(sProcess, sInputs)
- if strcmp(sProcess.options.method.Value,'spline')
- if ~license('test', 'Curve_Fitting_Toolbox')
- bst_error('Curve Fitting Toolbox not available');
- return
- elseif isempty(which('csaps'))
- bst_error(['Curve Fitting Toolbox OK but function csaps not found.<BR>' ...
- 'Try refreshing matlab cache using command: rehash toolboxcache']);
- return
- end
- end
- % Get selected events
- event_name = strtrim(sProcess.options.option_event_name.Value);
- % Load Events
- if strcmp(sInputs.FileType, 'data') % Imported data structure
- sDataIn = in_bst_data(sInputs.FileName, 'Events');
- events = sDataIn.Events;
- elseif strcmp(sInputs.FileType, 'raw') % Continuous data file
- sDataRaw = in_bst_data(sInputs.FileName, 'F');
- events = sDataRaw.F.events;
- end
- event = [];
- if strcmp(sProcess.options.method.Value,'spline')
- ievt_mvt = [];
- for ievt=1:length(events)
- if strcmp(events(ievt).label, event_name)
- event = events(ievt);
- ievt_mvt = ievt;
- break;
- end
- end
- if isempty(event)
- warning(['Event "' event_name '" does not exist in file.']);
- end
- end
- % Process only NIRS channels
- channels = in_bst_channel(sInputs.ChannelFile);
- nirs_ichans = channel_find(channels.Channel, 'NIRS');
- data_nirs = sInputs.A(nirs_ichans, :)';
- prev_negs = any(data_nirs <= 0, 1);
- data_corr = Compute(data_nirs, sInputs.TimeVector', event,sProcess.options.method.Value,sProcess.options.option_smoothing.Value{1});
- new_negs = any(data_corr <= 0, 1) & ~prev_negs;
- negative_chan=find(new_negs);
- pair_indexes = nst_get_pair_indexes_from_names({channels.Channel(nirs_ichans).Name});
- if any(new_negs)
- bst_report('Warning', sProcess, sInputs, 'Motion correction introduced negative values. Will be fixed by local offset');
- for ineg=1:length(negative_chan)
- ipair=find(any(pair_indexes(:, :) == negative_chan(ineg),2));
- offset = 2*abs(min(min(data_corr(:, pair_indexes(ipair, :)))));
- data_corr(:, pair_indexes(ipair, :)) = data_corr(:, pair_indexes(ipair, :)) + offset;
- end
- [isrcs, idets, measures, channel_type] = nst_unformat_channels({channels.Channel(pair_indexes(ipair, 1)).Name});
- msg=sprintf('S%dD%d corrected with offset: %.2f',isrcs,idets,offset);
- bst_report('Warning', sProcess, sInputs, msg);
- end
- % Export
- sInputs.A(nirs_ichans,:) = data_corr';
- sInputs.CommentTag = FormatComment(sProcess);
- end
- %% ===== Compute =====
- function [data_corr] = Compute(nirs_sig, t, event, method,exta_parameters)
- if nargin < 4
- method = 'spline';
- end
- if nargin < 5
- exta_parameters=0.99;
- end
- data_corr = nirs_sig;
- if strcmp(method,'spline') && ~isempty(event) && ~isempty(event.times)
- samples = time_to_sample_idx(event.times, t);
- data_corr = nst_spline_correction(nirs_sig, t, samples',exta_parameters);
- elseif strcmp(method,'tddr')
- fs = 1/(t(2)-t(1));
- data_corr = nst_tddr_correction( nirs_sig , fs );
- end
- end
- function samples = time_to_sample_idx(time, ref_time)
- if nargin < 2
- assert(all(diff(diff(time))==0));
- ref_time = time;
- end
- samples = round((time - ref_time(1)) / diff(ref_time(1:2))) + 1;
- end
process_nst_motion_correction.m at commit 1603dad, under GPL-3.0 · at the source
Overview
- Concordia University, School of Health, PERFORM Centre, Montréal, Quebec, Canada
- Concordia University, Multimodal Functional Imaging Laboratory, Department of Physics, Montréal, Quebec, Canada
- Montreal Heart Institute, EPIC Center, Montréal, Quebec, Canada
- McGill University, Montreal Neurological Institute, Montreal, Quebec, Canada
- McGill University, Multimodal Functional Imaging Laboratory, Biomedical Engineering Department, Neurology and Neurosurgery Department, Montreal, Quebec, Canada
- Institut du Cerveau ICM, Centre MEG-EEG, Paris, France
- Inserm, CNRS, Centre de Recherche en Neurosciences de Lyon, Lyon, France
- Independent Research Engineer, Grenoble, France
- McGill University, Montreal Neurological Institute, McConnell Brain Imaging Centre, Montreal, Quebec, Canada
- Université de Montréal, Department of Medicine, Montréal, Quebec, Canada
- École de Technologie Supérieure, Electrical Engineering Department, Montréal, Quebec, Canada
- Sorbonne Université, CNRS, Inserm, Laboratoire d’Imagerie Biomédicale, LIB, CNRS, INSERM, Paris, France
Abstract
The abstract is not reproduced here: the paper's license (none stated) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above, with 22 matches between paragraphs and lines of code.
Nirstorm/nirstorm
1603dad92e93000172a2069b182ff8d7d0e7fa62, 21 September 2026Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
153 files
- bst_plugin/
GLM/ , MATLAB, 338 linesnst_glm_add_regressors.m - bst_plugin/
GLM/ , MATLAB, 90 linesnst_glm_apply_filter.m - bst_plugin/
GLM/ , MATLAB, 65 linesnst_glm_display_model.m - bst_plugin/
GLM/ , MATLAB, 152 linesnst_glm_fit.m - bst_plugin/
GLM/ , MATLAB, 26 linesnst_glm_fit_B.m - bst_plugin/
GLM/ , MATLAB, 9 linesnst_glm_initialize_model .m - bst_plugin/
GLM/ , MATLAB, 11 linesnst_make_basic_contrasts .m - bst_plugin/
GLM/ , MATLAB, 26 linesnst_make_event_regressor s.m - bst_plugin/
GLM/ , MATLAB, 49 linesnst_make_event_toeplitz_ mtx.m - bst_plugin/
GLM/ , MATLAB, 154 linesprocess_nst_combine_mask s.m - bst_plugin/
GLM/ , MATLAB, 226 linesprocess_nst_glm_contrast .m - bst_plugin/
GLM/ , MATLAB, 154 linesprocess_nst_glm_contrast _mask.m - bst_plugin/
GLM/ , MATLAB, 157 linesprocess_nst_glm_contrast _ttest.m - bst_plugin/
GLM/ , MATLAB, 707 lines, 2 matchesprocess_nst_glm_fit.m - bst_plugin/
GLM/ , MATLAB, 59 linesprocess_nst_glm_fit1.m - bst_plugin/
GLM/ , MATLAB, 272 linesprocess_nst_glm_group_tt est.m - bst_plugin/
GLM/ , MATLAB, 144 linesprocess_nst_mask_from_at las.m - bst_plugin/
OM/ , MATLAB, 753 linespanel_nst_OM.m - bst_plugin/
OM/ , MATLAB, 247 linespanel_nst_rename_montage .m - bst_plugin/
OM/ , MATLAB, 223 linespanel_nst_search_space.m - bst_plugin/
OM/ , MATLAB, 1,323 linesprocess_nst_OM.m - bst_plugin/
OM/ , MATLAB, 746 lines, 1 matchprocess_nst_compare_mont age.m - bst_plugin/
OM/ , MATLAB, 44 linesprocess_nst_cpt_fluences _om.m - bst_plugin/
OM/ , MATLAB, 335 linesprocess_nst_export_chann els_info.m - bst_plugin/
OM/ , MATLAB, 43 linesprocess_nst_extract_sens itivity_from_head_model_ om.m - bst_plugin/
OM/ , MATLAB, 44 linesprocess_nst_import_head_ model_om.m - bst_plugin/
OM/ , MATLAB, 214 linesprocess_nst_merge_metric s.m - bst_plugin/
OM/ , MATLAB, 200 linesprocess_nst_merge_montag e.m - bst_plugin/
OM/ , MATLAB, 89 linesprocess_nst_rename_monta ge.m - bst_plugin/
OM/ , MATLAB, 128 linesprocess_nst_search_space .m - bst_plugin/
OM/ , MATLAB, 97 linesprocess_nst_snap_montage .m - bst_plugin/
core/ , MATLAB, 96 linesnst_bst_add_surf_data.m - bst_plugin/
core/ , MATLAB, 45 linesnst_bst_set_template_ana tomy.m - bst_plugin/
core/ , MATLAB, 6 linesnst_core_get_available_t emplates.m - bst_plugin/
core/ , MATLAB, 40 linesnst_format_channel.m - bst_plugin/
core/ , MATLAB, 63 linesnst_get_bst_func_files.m - bst_plugin/
core/ , MATLAB, 47 linesnst_get_pair_indexes_fro m_names.m - bst_plugin/
core/ , MATLAB, 16 linesnst_get_version.m - bst_plugin/
core/ , MATLAB, 12 linesnst_measure_types.m - bst_plugin/
core/ , MATLAB, 141 linesnst_montage_info_from_bs t_channels.m - bst_plugin/
core/ , MATLAB, 355 linesnst_run_bst_proc.m - bst_plugin/
core/ , MATLAB, 53 linesnst_unformat_channel.m - bst_plugin/
core/ , MATLAB, 118 linesnst_unformat_channels.m - bst_plugin/
deprecated/ , MATLAB, 218 linesprocess_nst_sci.m - bst_plugin/
forward/ , MATLAB, 429 linesnst_get_hb_extinctions.m - bst_plugin/
forward/ , MATLAB, 41 linesnst_get_tissues_optical_ properties.m - bst_plugin/
forward/ , MATLAB, 25 linesnst_headmodel_get_FOV.m - bst_plugin/
forward/ , MATLAB, 20 linesnst_headmodel_get_gains. m - bst_plugin/
forward/ , MATLAB, 600 lines, 1 matchpanel_nst_fluences.m - bst_plugin/
forward/ , MATLAB, 351 linesprocess_nst_compute_voro noi.m - bst_plugin/
forward/ , MATLAB, 121 linesprocess_nst_cpt_cortex_t o_head_distance.m - bst_plugin/
forward/ , MATLAB, 586 lines, 1 matchprocess_nst_cpt_fluences .m - bst_plugin/
forward/ , MATLAB, 412 linesprocess_nst_extract_sens itivity_from_head_model. m - bst_plugin/
forward/ , MATLAB, 680 lines, 1 matchprocess_nst_import_head_ model.m - bst_plugin/
inverse/ , MATLAB, 114 linesprocess_nst_bootstrap_ME M.m - bst_plugin/
inverse/ , MATLAB, 413 linesprocess_nst_bootstrap_MN E.m - bst_plugin/
inverse/ , MATLAB, 327 linesprocess_nst_cmem.m - bst_plugin/
inverse/ , MATLAB, 308 linesprocess_nst_wmne.m - bst_plugin/
io/ , MATLAB, 23 linesnst_download.m - bst_plugin/
io/ , MATLAB, 167 linesnst_filter_table.m - bst_plugin/
io/ , MATLAB, 13 linesnst_format_pval.m - bst_plugin/
io/ , MATLAB, 6 linesnst_get_formats.m - bst_plugin/
io/ , MATLAB, 3 linesnst_get_local_user_dir.m - bst_plugin/
io/ , MATLAB, 3 linesnst_get_repository_url.m - bst_plugin/
io/ , MATLAB, 78 linesnst_io_fetch_sample_data .m - bst_plugin/
io/ , MATLAB, 21 linesnst_parse_bst_item_name. m - bst_plugin/
io/ , MATLAB, 234 linesnst_request_files.m - bst_plugin/
io/ , MATLAB, 19 linesnst_save_figure.m - bst_plugin/
io/ , MATLAB, 67 linesnst_save_table_in_bst.m - bst_plugin/
io/ , MATLAB, 12 linesnst_split_ftp.m - bst_plugin/
io/ , MATLAB, 154 linesprocess_nst_export_nirs. m - bst_plugin/
io/ , MATLAB, 192 linesprocess_nst_project_volu mes.m - bst_plugin/
math/ , C/C++, 207 linesdg_chamfer.h - bst_plugin/
math/ , C, 325 linesdg_voronoi.c - bst_plugin/
math/ , MATLAB, 27 linesdg_voronoi.m - bst_plugin/
math/ , MATLAB, 117 linesnst_knnsearch.m - bst_plugin/
math/ , MATLAB, 63 linesnst_math_WelfordVariance .m - bst_plugin/
math/ , MATLAB, 100 lines, 2 matchesnst_math_build_basis_dct .m - bst_plugin/
math/ , MATLAB, 8 linesnst_math_dctmtx.m - bst_plugin/
math/ , MATLAB, 12 linesnst_math_fit_AR.m - bst_plugin/
math/ , MATLAB, 108 linesnst_mbll_source.m - bst_plugin/
math/ , MATLAB, 121 lines, 1 matchnst_mne_lcurve.m - bst_plugin/
math/ , MATLAB, 101 lines, 1 matchnst_mne_lcurve_MAP.m - bst_plugin/
math/ , MATLAB, 13 linesnst_pdist.m - bst_plugin/
math/ , MATLAB, 162 linesnst_spline_correction.m - bst_plugin/
math/ , MATLAB, 102 lines, 2 matchesnst_tddr_correction.m - bst_plugin/
mbll/ , MATLAB, 266 linesprocess_nst_dOD.m - bst_plugin/
mbll/ , MATLAB, 631 lines, 1 matchprocess_nst_mbll.m - bst_plugin/
mbll/ , MATLAB, 201 linesprocess_nst_mbll_dOD.m - bst_plugin/
misc/ , MATLAB, 18 linesnst_misc_FOV_to_cortex.m - bst_plugin/
misc/ , MATLAB, 17 linesnst_misc_convert_to_mumo l.m - bst_plugin/
misc/ , MATLAB, 16 linesnst_misc_unpack_glm_resu lt.m - bst_plugin/
misc/ , MATLAB, 14 linesnst_protect_fn_str.m - bst_plugin/
ppl/ , MATLAB, 764 linesnst_ppl_1st_level_channe l_V1.m - bst_plugin/
ppl/ , MATLAB, 944 linesnst_ppl_surface_V1.m - bst_plugin/
ppl/ , MATLAB, 1,284 linesnst_ppl_surface_template _V1.m - bst_plugin/
preprocessing/ , MATLAB, 231 linesprocess_nst_channel_clut er_auto.m - bst_plugin/
preprocessing/ , MATLAB, 121 linesprocess_nst_deglitch.m - bst_plugin/
preprocessing/ , MATLAB, 424 linesprocess_nst_detect_bad.m - bst_plugin/
preprocessing/ , MATLAB, 129 linesprocess_nst_detrend.m - bst_plugin/
preprocessing/ , MATLAB, 128 linesprocess_nst_extract_ssc. m - bst_plugin/
preprocessing/ , MATLAB, 450 lines, 1 matchprocess_nst_iir_filter.m - bst_plugin/
preprocessing/ , MATLAB, 200 lines, 2 matchesprocess_nst_motion_corre ction.m - bst_plugin/
preprocessing/ , MATLAB, 440 lines, 1 matchprocess_nst_quality_chec k.m - bst_plugin/
preprocessing/ , MATLAB, 165 lines, 2 matchesprocess_nst_remove_ssc.m - bst_plugin/
preprocessing/ , MATLAB, 146 linesprocess_nst_separations. m - scripts/
anatomy_based_full_group , MATLAB, 128 lines_pipeline_V1.m - scripts/
deglitch_example.m , MATLAB, 52 lines - scripts/
generate_colormap_matlab , Python, 79 lines.py - scripts/
nst_tutorial_tapping.m , MATLAB, 144 lines, 1 match - scripts/
process_memo.m , MATLAB, 52 lines - scripts/
source_space_full_group_ , MATLAB, 96 linespipeline_V1.m - scripts/
surface_group_pipeline_V , MATLAB, 119 lines1.m - scripts/
surface_template_full_gr , MATLAB, 81 linesoup_pipeline_V1.m - scripts/
surface_template_full_gr , MATLAB, 118 linesoup_pipeline_V1_all_opts .m - scripts/
tutorial_nirstorn_2024.m , MATLAB, 327 lines, 2 matches - test/
ArFitTest.m , MATLAB, 53 lines - test/
BstHelperTest.m , MATLAB, 468 lines - test/
CSVImportTest.m , MATLAB, 563 lines - test/
ConcatMatrixTest.m , MATLAB, 255 lines - test/
DeglitchTest.m , MATLAB, 86 lines - test/
EVTImportTest.m , MATLAB, 138 lines - test/
FilterTableTest.m , MATLAB, 209 lines - test/
GLMTest.m , MATLAB, 387 lines - test/
InstallSourceTest.m , MATLAB, 460 lines - test/
MbllTest.m , MATLAB, 134 lines - test/
MontageTest.m , MATLAB, 197 lines - test/
OptimalMontageTest.m , MATLAB, 138 lines - test/
PrefixMatrixTest.m , MATLAB, 50 lines - test/
ProjectionTest.m , MATLAB, 150 lines - test/
RemoteDataTest.m , MATLAB, 91 lines - test/
SciTest.m , MATLAB, 123 lines - test/
ScriptTest.m , MATLAB, 32 lines - test/
SeparationTest.m , MATLAB, 65 lines - test/
SpreeTest.m , MATLAB, 126 lines - test/
SurfTplPipelineTest.m , MATLAB, 310 lines - test/
WorkShopPerform2018Test. , MATLAB, 68 linesm - test/
all_close.m , MATLAB, 22 lines - test/
bst_create_nirs_data.m , MATLAB, 160 lines - test/
bst_create_scout.m , MATLAB, 49 lines - test/
bst_create_test_protocol , MATLAB, 21 lines.m - test/
bst_create_test_subject. , MATLAB, 31 linesm - test/
cpt_spherical_fluences.m , MATLAB, 80 lines - test/
forge_activity_test_data , MATLAB, 237 lines.m - test/
run_tests.m , MATLAB, 134 lines - test/
utest_bst_setup.m , MATLAB, 29 lines - test/
utest_clean_bst.m , MATLAB, 19 lines - test/
utest_get_test_bst_event , MATLAB, 32 liness.m - test/
utest_import_nirs_in_bst , MATLAB, 66 lines.m - test/
utest_request_data.m , MATLAB, 4 lines - test/
utest_reset_bst.m , MATLAB, 19 lines - LICENSE, License, 674 lines
- README.md, Text, 46 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 151 scripts, each with its path and the digest of its content;
- 22 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
Code and data availability statement
The paper has a code and data availability statement. Its license (none stated) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to a dataset: OSF md54y
- it points to the authors' code: Nirstorm/
nirstorm
Read it in the paper: doi.org/10.1117/1.nph.12.2.025011.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 12 authors, 6 keywords, 5 funders, 103 references.
Cite
This paper
Delaire, É., Vincent, T., Cai, Z., Machado, A., Hugueville, L., Schwartz, D., Tadel, F., Cassani, R., Bherer, L., Lina, J.-M., Pélégrini-Issac, M., & Grova, C. (2025). NIRSTORM: a Brainstorm extension dedicated to functional near-infrared spectroscopy data analysis, advanced 3D reconstructions, and optimal probe design. Neurophotonics, 12(2), 025011. https://
BibTeX
@article{delaire2025nirs
author = {Delaire, Édouard and Vincent, Thomas and Cai, Zhengchen and Machado, Alexis and Hugueville, Laurent and Schwartz, Denis and Tadel, Francois and Cassani, Raymundo and Bherer, Louis and Lina, Jean-Marc and Pélégrini-Issac, Mélanie and Grova, Christophe},
title = {{NIRSTORM: a Brainstorm extension dedicated to functional near-infrared spectroscopy data analysis, advanced 3D reconstructions, and optimal probe design}},
journal = {Neurophotonics},
year = {2025},
volume = {12},
number = {2},
pages = {025011},
publisher = {Society of Photo-Optical Instrumentation Engineers},
issn = {2329-423X},
doi = {10.1117/
url = {https://
pmcid = {PMC12081164}
}
RIS
TY - JOUR
AU - Delaire, Édouard
AU - Vincent, Thomas
AU - Cai, Zhengchen
AU - Machado, Alexis
AU - Hugueville, Laurent
AU - Schwartz, Denis
AU - Tadel, Francois
AU - Cassani, Raymundo
AU - Bherer, Louis
AU - Lina, Jean-Marc
AU - Pélégrini-Issac, Mélanie
AU - Grova, Christophe
TI - NIRSTORM: a Brainstorm extension dedicated to functional near-infrared spectroscopy data analysis, advanced 3D reconstructions, and optimal probe design
T2 - Neurophotonics
J2 - Neurophotonics
PY - 2025
DA - 2025
VL - 12
IS - 2
SP - 025011
SN - 2329-423X
PB - Society of Photo-Optical Instrumentation Engineers
DO - 10.1117/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1117/
"type": "article-journal",
"title": "NIRSTORM: a Brainstorm extension dedicated to functional near-infrared spectroscopy data analysis, advanced 3D reconstructions, and optimal probe design",
"container-title": "Neurophotonics",
"author": [
{
"family": "Delaire",
"given": "Édouard"
},
{
"family": "Vincent",
"given": "Thomas"
},
{
"family": "Cai",
"given": "Zhengchen"
},
{
"family": "Machado",
"given": "Alexis"
},
{
"family": "Hugueville",
"given": "Laurent"
},
{
"family": "Schwartz",
"given": "Denis"
},
{
"family": "Tadel",
"given": "Francois"
},
{
"family": "Cassani",
"given": "Raymundo"
},
{
"family": "Bherer",
"given": "Louis"
},
{
"family": "Lina",
"given": "Jean-Marc"
},
{
"family": "Pélégrini-Issac",
"given": "Mélanie"
},
{
"family": "Grova",
"given": "Christophe"
}
],
"container-title-short":
"volume": "12",
"issue": "2",
"page": "025011",
"DOI": "10.1117/
"PMCID": "PMC12081164",
"ISSN": "2329-423X",
"publisher": "Society of Photo-Optical Instrumentation Engineers",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2025
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1117/1.nph.13.s3.s32602 [code]
- Cedalion tutorial: a Python-based framework for comprehensive analysis of multimodal fNIRS and DOT from the lab to the everyday world.Journal: NeurophotonicsIn common: fNIRS, methods / tools, 17 references
- [2] doi:10.1117/1.nph.13.2.025001 [code]
- Surface-based image reconstruction optimization for high-density functional near-infrared spectroscopy.Journal: NeurophotonicsIn common: Matplotlib, NumPy, fNIRS, 11 references
- [3] doi:10.1162/imag.a.1289 [code]
- Measurement prediction and power analysis for fNIRS and DOT.Journal: Imaging neuroscience (Cambridge, Mass.)In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, Matplotlib, 1 other tool, fNIRS, 8 references
- [4] doi:10.1162/imag.a.1208 [code]
- Brain network analysis in Alzheimer's disease and mild cognitive impairment using high-density diffuse optical tomography.Journal: Imaging neuroscience (Cambridge, Mass.)In common: SPM, Statistics and Machine Learning Toolbox, Matplotlib, 1 other tool, fNIRS, 7 references
- [5] doi:10.1117/1.nph.13.3.035009
- Single-subject detection of speech network activation using functional near-infrared spectroscopy.Journal: NeurophotonicsIn common: fNIRS, 9 references
- [6] doi:10.1002/advs.77857 [code]
- Brain Network Dynamics of Local and Global Predictive Processing in Aging.Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany)In common: export_fig, SPM, Signal Processing Toolbox, 2 other tools, 4 references
- [7] doi:10.3389/fnhum.2026.1856059 [code]
- Feasibility of fNIRS for assessing n-back task-related prefrontal cortex oxygenation after continuous cycling at varying intensities: an evaluation of protocol feasibility.Journal: Frontiers in human neuroscienceIn common: Signal Processing Toolbox, fNIRS, 6 references
- [8] doi:10.1117/1.nph.13.3.035006 [code]
- Characterizing developmental changes in infant habituation using functional change point detection.Journal: NeurophotonicsIn common: Matplotlib, NumPy, fNIRS, 6 references
- [9] doi:10.1093/braincomms/fcaf170 [code]
- Noninvasive classification of physiological and pathological high frequency oscillations in childrenJournal: n/aIn common: Brainstorm, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, EEG, 4 references
- [10] doi:10.1111/desc.70188
- Contextual Transparency Supports Cognitive Control by Reducing Prefrontal Activation and Enhancing Cue Prioritization in Children.Journal: Developmental scienceIn common: fNIRS, 6 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 151 scripts, and 22 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:a8f787063e89e126…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
