Most biosignal software is EEG software with fNIRS support added. The tell is the chromophore: if a tool ranks channels or runs a decomposition over HbO and HbR together, it is treating oxygenated and deoxygenated haemoglobin as two channels of one signal, which they are not.
BCILattice imports SNIRF, FIF and tabular fNIRS files, reads the sampling rate from the file rather than assuming an EEG-style rate, and exposes a chromophore control — All, HbO, HbR — on every fNIRS-capable step.
The chromophore control, and where it is not offered
Decomposing, ranking or reducing HbO and HbR together mixes two physiological signals with different time courses and different signs. Every fNIRS-capable step therefore lets you choose which chromophore it operates on.
Activation Maps is the deliberate exception: it offers HbO or HbR only, never both. A topomap draws one value per optode position, and rendering both at once would overplot the same sensors with two different quantities.
fNIRS conditioning
Optical density
Conversion from raw intensity, the first step before anything haemodynamic is meaningful.
Beer-Lambert
Modified Beer-Lambert conversion to concentration changes, producing the HbO and HbR channels the rest of the pipeline works on.
Motion correction
For the artifact class that dominates fNIRS recordings in any task involving movement.
Short-channel regression
Regressing out the superficial scalp signal that short source-detector separations capture, so what remains is closer to cortical.
Bands built for haemodynamics
The fNIRS band preset covers vlf (0.005–0.02 Hz), hemodynamic (0.01–0.08), Mayer (0.08–0.12), respiratory (0.2–0.4) and cardiac (0.8–1.5). The higher bands are there on purpose: Mayer waves, respiration and cardiac pulsation are the physiological confounds in an fNIRS recording, and being able to measure them is better than assuming them away.
Because sampling rate is read from the recording, a roughly 10 Hz fNIRS file is processed at 10 Hz. Nothing in the pipeline assumes a 250 Hz EEG rate.
A limit we document rather than hide
The haemodynamic response lives below about 0.1 Hz. At fNIRS sampling rates, a wavelet decomposition has limited resolution in that band, so time-frequency peaks read low — in our measurements, roughly 30% low in the fNIRS band.
That is a resolution limit of the method, not a defect in your recording and not a bug in the software. It is stated in the documentation because a number that is quietly wrong is worse than one you know how to interpret.
Questions
Which fNIRS formats are supported?
SNIRF, FIF, and tabular TXT, CSV and XLSX. Folder import handles multi-subject datasets in one action.
Can I analyse fNIRS and EEG in the same study?
Yes. A study can hold more than one modality, and each step reads the sampling rate and channel structure from the file it is operating on rather than from a study-wide assumption.
Does it do short-channel regression?
Yes, alongside optical density conversion, modified Beer-Lambert, and motion correction — the standard fNIRS conditioning chain before trial-level analysis begins.
Why do my time-frequency peaks look too low?
Because the haemodynamic response sits below about 0.1 Hz and wavelet resolution at fNIRS sampling rates is limited in that band. Peaks read roughly 30% low. It is a property of the method; interpret the peak location with that in mind rather than treating it as a measurement.
Read the reference
Related
fNIRS Machine Learning
The model canvas is the same one EEG uses. What changes for fNIRS is which features carry information at 10 Hz, how the chromophore enters the design matrix, and how little a small cohort forgives a bad split.
EEG Signal Processing Software
Filtering, referencing, resampling and normalization, each writing a named stage that carries the settings it ran with — so a downstream result can always be traced back to the conditioning that produced it.
BCI Analysis Software
Eleven steps sit between a conditioned recording and a labelled design matrix. In BCILattice each one shows you its result before you commit it, and records what it ran with afterwards.
EMG Analysis Software
RMS, mean absolute value, waveform length, slope sign changes and Willison amplitude are feature families in the catalogue, not something you script afterwards.