`Raw.resample` doesn't handle NaNs
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Start by running the reproduction script in the issue, which builds a RawArray with trailing NaNs and calls raw.resample(500). Find where Raw.resample is implemented in mne-python and check how it treats NaN samples. Done means NaN-containing channels keep NaNs only at the corresponding time points instead of turning the whole channel into NaN. The approach (interpolate, resample, restore NaNs) is the author's suggestion and still needs a maintainer decision.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description of the problem
Raw.resample turns the entire channel into NaN if even one sample is NaN. This can occur in real-world data, for example, in eye-tracking recordings (blinks, see #11879) or XDF recordings where streams end at different times.
Steps to reproduce
import mne
import numpy as np
sfreq = 1000
data = np.sin(2 * np.pi * 10 * np.arange(10000) / sfreq)[np.newaxis]
data[0, -10:] = np.nan
raw = mne.io.RawArray(data, mne.create_info(1, sfreq, "eeg"))
raw.resample(500)
print(np.isnan(raw.get_data()).mean()) # 1.0
Link to data
No response
Expected results
I think Raw.resample should handle NaN, for example by temporarily filling NaNs with linear interpolation, resampling, and then restoring NaNs at the corresponding locations. Unlike #11408, this approach relies on the data rather than annotations.
I'm happy to open a PR.
Actual results
The entire channel consists of NaN after resampling.
Additional information
Platform Linux-7.2.9-arch1-1-x86_64-with-glibc2.44 (Wayland)
Python 3.12.14 (main, Aug 25 2026, 14:00:49) [Clang 22.1.3 ]
Executable /home/clemens/Projects/mnelab/.venv/bin/python
CPU AMD Ryzen 7 9700X 8-Core Processor (16 cores)
Memory 60.5 GiB
Core
├☑ mne 1.13.2 (latest release)
├☑ numpy 2.5.3 (OpenBLAS 0.3.34.106.0 with 16 threads via pthreads)
├☑ scipy 1.18.1
└☑ matplotlib 3.11.2 (backend=qtagg)
Numerical (optional)
├☑ scikit-learn 1.9.0
├☑ threadpoolctl 3.6.0
├☑ h5io 0.2.5
├☑ h5py 3.16.0
└☐ unavailable numba, nibabel, nilearn, dipy, openmeeg, python-picard, jamica, cupy, pandas
Visualization (optional)
├☑ qtpy 2.4.3 (PySide6=6.11.2)
├☑ pyqtgraph 0.14.0
├☑ mne-qt-browser 0.7.5
└☐ unavailable pyvista, pyvistaqt, vtk, ipympl, ipywidgets, trame, trame_client, trame_server, trame_pyvista, trame_vtk, trame_vuetify
Ecosystem (optional)
├☑ autoreject 0.4.4
├☑ edfio 0.4.17
├☑ pybv 0.8.1
└☐ unavailable mne-bids, mne-nirs, mne-features, mne-connectivity, mne-icalabel, mne-bids-pipeline, neo, eeglabio, curryreader, mffpy, pymef, antio, defusedxml
- Lingua principale
- Python
- Stelle
- 3.5k
- Fork
- 1.6k
- Merge medio
- 1g 3h
- PR unite (30g)
- 73
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di mne-tools/mne-python
-
ENH: Add `description` filter parameter to `Raw.crop_by_annotations()`Forse già presa @aman-coder03 l’ha presa 193 giorni fa. ApertaENH
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
mne-tools/mne-python#13743 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
ENH
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
mne-tools/mne-python#14427 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 56/100
mne-tools/mne-python#14426 ·
I maintainer di solito rispondono entro 1 giorno
-
BUG
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
mne-tools/mne-python#14420 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
BUG: fNIRS `interpolate_bads` copies wrong channel when positions are missingForse già presa @kalomak l’ha presa 3 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 20/100
mne-tools/mne-python#14415 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di mne-tools/mne-python
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
aws-samples/sample-per-model-bedrock#295 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
pyrevitlabs/pyRevit#3792 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
zephyrproject-rtos/reqmgmt#177 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
polarsource/polar#15580 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
521xueweihan/HelloGitHub#4011 ·