Incorrect scaling of complex multitaper coefficients with `normalization="full"`
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
- #14497 de @iis-MarkKuang — fusionado
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 74/100
Línea de trabajo
Empieza en mne.time_frequency.psd_array_multitaper() y sigue cómo se aplica la normalización para output="complex"; compara ese escalado con la salida de potencia y _psd_from_mt(). Usa la reproducción del issue para comprobar que ambas rutas producen PSD coincidentes para normalization="full" y "length"; el trabajo está terminado cuando ambas razones son 1.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description of the problem
normalization="full" in psd_array_multitaper() scales the data by 1/sfreq. This is fine for output="power", but for output="complex", the scaling should be 1/sqrt(sfreq).
Because of this, power subsequently computed from the coefficients (including in Spectrum.plot()) is of a much smaller scale than if output="power" was used.
Steps to reproduce
import numpy as np
from mne.time_frequency import psd_array_multitaper
from mne.time_frequency.multitaper import _psd_from_mt
sfreq = 100.0
x = np.random.default_rng(0).standard_normal((1, 1000))
for normalization in ("length", "full"):
psd, _ = psd_array_multitaper(
x, sfreq, normalization=normalization, output="power", verbose=False
)
coefs, _, weights = psd_array_multitaper(
x, sfreq, normalization=normalization, output="complex", verbose=False
)
psd_from_coefs = _psd_from_mt(coefs, weights)
print(f"{normalization}: ratio = {np.unique((psd_from_coefs / psd).round(6))}")
Link to data
No response
Expected results
The PSD constructed directly and subsequently computed from the complex coefficients are identical.
Actual results
With normalization="full", the PSD subsequently computed from the complex coefficients are scaled by 1/sfreq relative to the PSD constructed directly.
length: ratio = [1.]
full: ratio = [0.01]
Additional information
AI disclosure: was initially picked up by Claude Opus 5.5, and further investigated by myself.
- Lenguaje dominante
- Python
- Estrellas
- 3.6k
- Forks
- 1.6k
- Merge medio
- 1 d 18 h
- PR fusionados (30 d)
- 71
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mne-tools/mne-python
-
`mne.stats.f_oneway` returns wrong (even negative) F for small integer dtypesPosiblemente ocupada @darshpatel1052 la tomó hace 3 días. AbiertoBUG
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
mne-tools/mne-python#14477 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
ENH: Add `description` filter parameter to `Raw.crop_by_annotations()`Posiblemente ocupada @aman-coder03 la tomó hace 214 días. AbiertoENH
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mne-tools/mne-python#13743 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Nihon Kohden V2.0 supportAbiertoBUG
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
mne-tools/mne-python#14502 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
cannot plot into matplotlib subfigurePosiblemente ocupada @ishaaaan17 la tomó hace 4 días. AbiertoBUG
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
mne-tools/mne-python#14481 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
BUG: One layer BEM construction fails for current ANTS6-0Months3T templatePosiblemente ocupada @sruthisureshkumar-arch la tomó hace 5 días. AbiertoBUG
Dificultad 3/5 1-2 días Aptitud para principiantes 57/100
mne-tools/mne-python#14468 · 8 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de mne-tools/mne-python
Issues similares
-
Remove the `pull_request_target` workflow before GitHub blocks itPosiblemente ocupada @jat255 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
IBM/mcp-context-forge#7483 ·
Los mantenedores suelen responder en 2 días
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
[Bug Report]: OpenAI 辅助 API 连通性测试因输出上限仅 1 token 误报“未知错误”Posiblemente ocupada @fjfanjian la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Project-N-E-K-O/N.E.K.O#3640 ·
Los mantenedores suelen responder en 1 día
-
author-page correction
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
acl-org/acl-anthology#10808 · 1 comentario ·
Los mantenedores suelen responder en 1 día