--- title: "Kernel Portal Pipelines Release Notes" slug: "kernel-portal-pipelines-release-notes" updated: 2026-08-19T17:32:33Z published: 2026-08-19T17:32:33Z canonical: "docs.kernel.com/kernel-portal-pipelines-release-notes" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.kernel.com/llms.txt > Use this file to discover all available pages before exploring further. # Kernel Portal Pipelines Release Notes All notable changes to pipelines served in the Kernel Portal will be documented here. See [Data Export Pipelines](/v1/docs/data-export-pipelines) and [Data Analysis Pipelines](/v1/docs/analyzing-datasets) for descriptions of each pipeline. SNIRF and NIfTI exports are tagged with the version of the Portal pipeline that produced them, as YYYY.MM.DD. This tag can be found under [nirs/metaDataTags](https://github.com/fNIRS/snirf/blob/master/snirf_specification.md#nirsimetadatatags)/KernelPortalVersion in the SNIRF files; and in the “descrip” field of the NIfTI header. --- ### 2026-08-17 #### Changed - **SNIRF Gated**: TPSFs are now recovered using Richardson-Lucy deconvolution instead of a regularized FFT filter. The recovered mean time of flight and variance are essentially unbiased — the previous filter widened every TPSF, inflating its variance by roughly 18% and the absolute optical properties derived from it. #### Fixed - **SNIRF Moments**: the IRF moments shipped as aux data are now aligned correctly, so subtracting them from the exported moments yields the IRF-corrected (TPSF) moments. - **QC NIRS and SNIRF exports**: corrupt data in a side-input stream (e.g. EEG, temperature, SyncBox) no longer fails the whole run. That stream is skipped, so a QC report loses only the metrics it fed and a SNIRF file only its aux entries. Corrupt data in a photon-count stream (NIRS, IRF, physio) still fails the run. ### 2026-08-13 #### Changed - **QC NIRS (basic) and Any Steps**: the `streams` metric now lists every stream recorded in the session, rather than only the ones the report loads. - **All pipelines**: a session that fails because its data is corrupt is now reported as a data problem, quoting what the reader found wrong, instead of a generic unexpected-error message. - **Analysis EEG**: the time-frequency decomposition is now computed in single precision. Spectral values agree with the previous double-precision result to better than 0.1%. - **Analysis NIRS (epoched) and EEG**: on recordings short enough that the Butterworth fallback filter is used, that filter now achieves the attenuation actually requested (it previously applied roughly double). #### Fixed - **Analysis NIRS (epoched) and EEG**: recordings too short to build the requested filter no longer fail. The filter is reduced to the sharpest the recording supports. - **QC and Analysis reports**: task plots no longer fail on sessions whose blocks or trials carry no reported type. ### 2026-07-28 #### Changed - **All pipelines**: a session is no longer cropped to its task events when the event record looks incomplete — a missing start or end marker, or events spanning less than 60s. Those sessions are now analyzed in full rather than cut down to a misleading window. #### Fixed - **All NIRS pipelines**: sessions containing dark or dropped frames could fail to process. They now complete normally. ### 2026-07-22 #### Changed - **Analysis EEG**: conditioning now removes bad channels and filters at 0.1 Hz high-pass + 40 Hz low-pass (previously a 1–40 Hz band-pass with no channel removal); analysis outputs change accordingly. - **QC EEG report**: bad-channel detection made more robust and now flags exactly the channels removed in analysis conditioning (shared thresholds). #### Fixed - **QC NIRS (basic) and task pipelines**: no longer error out when expected events are missing. - **QC EEG**: sessions with an EEG recording too short to compute the quality metrics no longer crash. ### 2026-07-14 #### Added - **Analysis EEG (resting eyes-open/eyes-closed)**: new interactive spectral montage — every electrode shows its power spectrum at its scalp position; click one to inspect its full spectrum (median ± IQR across blocks), switch the montage to a per-band scalp topomap (alpha, beta, …), and compare conditions or their eyes-closed − eyes-open contrast. #### Changed - **QC EEG report**: revamped into a per-electrode quality report — a bad-channel summary (pass/fail scalp map plus a table of flagged reasons), per-metric scalp topomaps (amplitude, 1/f exponent, line noise, broadband/EMG, spectral fit, alpha, coupling) shown against acceptable ranges, RAW vs. cleaned spectra, and filtered EEG traces. - **Analysis EEG**: replaced the per-channel figure grids with a single interactive evoked-activity montage — click any electrode to view its ERP, single-trial image, evoked power, and inter-trial coherence, and switch between individual conditions and their contrasts. ### 2026-06-30 #### Changed - All pipelines: now use chunked processing to reduce memory requirements. ### 2026-06-25 #### Changed - Analysis NIRS GLM: results now display only the statistic and effect size; FDR-corrected p-values are computed at display time for displayed results only, and a two-tailed test is used. ### 2026-06-18 #### Changed - Analysis and QC pipelines: now report "Succeed" with a warning when a stream is missing (EEG, SyncBox) or the analysis is not implemented. These pipelines are expected not to produce outputs in those conditions. #### Fixed - SNIRF Gated: time samples with bad data no longer crash the whole pipeline; they now output NaN. ### 2026-06-17 #### Fixed - Analysis Task: fixed edge cases in the Stroop, NBACK, and TMT task analyses. ### 2026-06-15 #### Fixed - Analysis NIRS GLM: fixed a bug in the retinotopy analysis. ### 2026-06-11 #### Fixed - Analysis Task for NBACK: fixed a pandas read-only bug. ### 2026-06-10 #### Changed - All pipelines: bumped numpy and pandas to their current major versions. #### Fixed - Analysis NIRS GLM: added a random seed to nilearn's `run_glm` for deterministic outputs. ### 2026-06-08 #### Changed - All pipelines: optimized session loading to reduce RAM usage. ### 2026-06-05 #### Changed - All pipelines: bad channel removal for the physio stream made slightly less stringent (`source_reject = False`). ### 2026-06-02 #### Added - SNIRF moments and SNIRF gated: can bypass bad channel rejection with "Skip Channel Pruning" option - SNIRF Hb moments: can bypass bad channel rejection ("Skip Channel Pruning"), artifact correction (Skip Artifact Correction"), and global short channel regression ("Skip Global Short Channel Regression") #### Fixed - SNIRF Hb Moments: Updated the pipeline to set wavelengthIndex = -1 to ensure data readability in Cedalion and MNE; please note that while this matches current reader conventions, it will trigger an expected "FATAL ERROR" in the official SNIRF format validator until an official specification standard is finalized. ### 2026-05-21 #### Added - SNIRF moments: export IRF moments as an aux stream (2D) ### 2026-04-16 #### Added - QC Nirs: export a json file with metrics not reported in the basic QC metrics. - QC Nirs Basic: added a check for prefrontal gaping (something that may happen with the cradle setup) ### 2026-04-03 #### Changed - All pipelines: DCR correction now uses a simple approach to fit baselines using edge-bin estimation instead of full temporal curve fitting, producing cleaner baseline subtraction with fewer artifacts. ### 2026-01-07 #### Changed - All pipelines: do not crop the first and last 5s of the session in the absence of task events. ### 2025-12-31 #### Added - Reconstruction: added json header extension to nifti with "MeasurementDate" and "MeasurementTime" (similar to SNIRF), which represent the UTC timestamp for time=0. #### Changed - all pipelines: the session is only cropped to task events if there are at least 2 task events. #### Fixed - SNIRF: fixed metaDataTags["MeasurementTime"] to represent the UTC timestamp of the streams time=0 accurately, to the ms ### 2025-12-12 #### Fixed - Reconstruction: Fixed jacobians missing from cache ### 2025-12-10 #### Added - Reconstruction: Enabled for all standard DevKit devices #### Changed - Reconstruction: Removed downsampling, now reconstructs at the same sampling rate as the data ### 2025-11-19 - SNIRF Hb Moments: Fixed bug in physio aux stream export introduced in 2025-11-06 release ### 2025-11-06 #### Added - QC Nirs Basic: Added behavior check for Verbal Fluency Task #### Changed - QC Nirs Basic: Saturation, high baseline, and dropped packets sections are not displayed in report unless they are marked with a warning - QC Nirs Basic: "Good" threshold for retained channels changed from 40% to 50% ### 2025-11-03 #### Added - Reconstruction: Enabled for some known DevKit device configurations (DevKit-3 and DevKit-12) - QC Nirs Basic: counts number of start and end experiments in a multi-experiment task recording - QC Nirs Basic: New category for motion score, "Not computed" ### 2025-09-26 #### Changed - All data export pipelines: Added a new quality check (recently deployed in the algorithm driving real-time signal quality on the Flow User Interface). This check runs in 10-second windows throughout a session. Channels that are classified as “good” for at least 20% of the session are retained for further analysis. - QC Nirs Expert & QC Nirs Basic: Updated the algorithm for generating topoplots of retained channels to incorporate the new quality check. - QC Nirs Expert: The "Retained Channels Topoplot" section was renamed to "Retained Channels." A plot was added to this section that shows the fraction of channels retained over time. #### Removed - QC Nirs Expert: Flagged physiology topoplot was removed, as the change in the retained channels algorithm makes it irrelevant. ### 2025-09-08 #### Fixed - QC Nirs Expert: Fix physiology for very short sessions by adding safeguards to remez filter design ### 2025-09-06 #### Added - QC Nirs Expert & QC Nirs Basic: Add device type (Flow2 variants, DevKit) to the QC info section. ### 2025-08-12 #### Fixed - QC Nirs Basic: Format of json was slightly corrupted in previous release, fixed. ### 2025-08-04 #### Fixed - SNIRF (all). Export original `session_id` in metadata (instead of `tensor`) ### 2025-07-28 #### Changed - QC NIRS: updated motion score and reference sample. ### 2025-07-17 #### Added - QC EEG: now exports the following metrics for each channel in a json file: - impedances (min, max, mean) - power spectrum metrics (aperiodic exponent, alpha peak location and amplitude, line noise location and amplitude) #### Changed - QC NIRS Expert: improved algorithm to detect channels with poor heart rate signal (Flagged Physiology Topoplot) - QC EEG: updated data visualizations, added higher frequency for raw data spectrum, removed QQ plot. #### Fixed - Reconstruction: use anti-aliasing filter when downsampling data to 1Hz. ### 2025-05-21 #### Added - NEW Resting state metrics pipeline, enabled for the Kernel Resting State task. See [Data Export Pipelines](/v1/docs/data-export-pipelines) for full description. ### 2025-05-12 #### Changed - All pipelines: rename outputs; study name and participant name can only have alphanumeric characters. All other characters are removed, and lower case is enforced. In addition, we adopt a "BIDS"-inspired naming scheme: `study-{studyname}_sub-{participantname}_desc-{sessionid}_...` ### 2025-05-09 #### Fixed - All pipelines: handle rare issue with timestamps due to computer clock jumps ### 2025-05-02 #### Added - Reconstruction: enabled for Flow2.1 helmet #### Changed - Analysis Nirs Epoched: changed the display to an interactive topoplot with time courses for each condition. See documentation [here](/v1/docs/analyzing-datasets) ### 2025-04-07 #### Changed - SNIRF: output file prefixes are human-readable labels instead of codes - SNIRF Moments & Hb Moments: the absolute tissue oxygenation estimates may change very slightly due to the change in the histogram resampling algorithm #### Fixed - SNIRF Gates: fixed histogram resampling algorithm to correct total counts and mean time of flight in the gated output ### 2025-03-06 #### Removed - QC NIRS Basic: remove check for laser intensity above target ### 2025-01-24 #### Changed - QC NIRS Basic & QC NIRS Expert: changed visualizations of retained channels using lines to represent channels ### 2025-01-13 #### Added - QC NIRS Basic: added sampling rate and available streams to session information section #### Fixed - Analysis Nirs Epoched: FIR filter (low-pass) transition bandwidth was fixed to match the nominal bandwidth ### 2024-11-19 #### Fixed - Reconstruction: the "sum" moment was erroneously excluded from participating to reconstruction outputs since the `2024-08-27` release - QC NIRS Basic: high baseline threshold updated to count offending detectors, rather than modules ### 2024-10-23 #### Changed - SNIRF: Hb Moments, Analysis NIRS GLM, and Analysis NIRS Epoched: restore short channel regression to previous defaults (take mean of signal, use corresponding layer) until further investigation - QC NIRS Basic: only warn about missing response events for Kernel tasks that are expected to have response events - Upgrade Python (3.8.12 -> 3.11.7), and upgrade all dependencies to versions that support Python 3.11 ### 2024-09-20 #### Added - SNIRF (all): landmarks LPA, RPA, Nz are added for all Flow2 SNIRF exports. These are expected by e.g. Cedalion for plotting topoplots - SNIRF: Hb Moments: add optional dataUnit (µM) - SNIRF: Moments: add optional dataUnit (ps for mean, ps2 for variance) #### Changed - SNIRF (all): bad channels are no longer filled with NaNs. As a result, the SNIRF files are much smaller - SNIRF: Hb Moments, Analysis NIRS GLM, and Analysis NIRS Epoched: short channel regression is using the first PC instead of the mean across short channels #### Fixed - SNIRF: Hb Moments: `offset` field renamed `dataOffset` per the specification ### 2024-08-28 #### Changed - Analysis Task: always export task events and task raw events, whether a task analysis is implemented or not - Analysis: Task: rename exports `task_events.tsv` and `task_metrics.json` with the canonical prefix #### Fixed - SNIRF: Gated: make `timeDelayWidths` an array of widths (rather than a single float) ### 2024-07-23 #### Added - Analysis NIRS GLM: added support for retinotopy task - QC: Syncbox: added daq QC section #### Fixed - QC: Syncbox: fixed reading of SyncBox tensor ### 2024-07-06 ### Fixed - SNIRF: Hb Moments: fixed rare floating-point bug in absolute pipeline ### 2024-06-27 #### Changed - SNIRF: absolute HbO/HbR are only computed in SNIRF: Hb Moments pipeline - SNIRF: Hb Moments: absolute HbO/HbR are reported in the dataOffset field instead of as an auxiliary stream - SNIRF: Hb Moments: absolute HbO/HbR use 100 samples throughout the session that are not contaminated by motion, instead of the first 30s of the session. #### Removed - All pipelines: Flow1/Gamma support discontinued ### 2024-05-17 #### Added - QC: NIRS Expert: new topoplot showing channels with a heart rate that deviates from the median heart rate, indicating channels that may not be making good contact #### Changed - SNIRF: in the absence of an alignment stream, use default shifts to enable curve fitting and absolute Hb estimates - QC: NIRS Expert: motion scoring percentiles updated using [TRUST study](https://www.biorxiv.org/content/10.1101/2024.03.12.584660v1) data ### 2024-05-14 #### Added - Reconstruction: new pipeline for Flow2, using moments #### Removed - Reconstruction: remove MindsEye visualization and GLM MindsEye snapshots ### 2024-03-05 #### Changed - SNIRF: Add plate names #### Fixed - QC: NIRS: correct reporting of dropped packets - QC: NIRS Expert: remove channels with bad Scalp Coupling Index (SCI) to compute physiology - QC: NIRS Expert: better error handling for plots - SNIRF: NIRS: data now starts at time=0 (for MNE compatibility) ### 2024-02-01 #### Added - SNIRF: more session metadata ####