BUG: fNIRS `interpolate_bads` copies wrong channel when positions are missing
メンテナーはふだん 1 日以内に返信
評価
調査の方向性
Start in _interpolate_bads_nirs, where the nearest good channel is chosen with np.argmin over distances; the reproduction script in the issue shows the wrong copy. Check the open pull request #14416 first, since it already targets this fix. Done means bad channels without positions become NaN, good channels without positions are never chosen as neighbours, and a ValueError is raised when a positioned bad channel has no good neighbour left.
索引モデルが issue の本文から書いたものです。
説明
For bad channels without positions (NaN or all zero), interpolate_bads warns that their values "will be all NaN". _interpolate_bads_nirs instead picks the nearest channel with np.argmin over the distances, which returns the first NaN index for NaN positions, so the bad channel gets data from an arbitrary channel. All-zero positions give the same result.
import mne
import numpy as np
names = [f"S{i}_D{i} {w}" for i in (1, 2, 3) for w in (760, 850)]
info = mne.create_info(names, 10.0, "fnirs_cw_amplitude")
for ch in info["chs"]:
ch["loc"][:] = np.nan
ch["loc"][9] = 760 if ch["ch_name"].endswith("760") else 850
raw = mne.io.RawArray(np.arange(1, 7)[:, None] * np.ones((6, 5)), info)
raw.info["bads"] = ["S3_D3 760", "S3_D3 850"]
raw.interpolate_bads(origin=(0, 0, 0))
# RuntimeWarning: ... The values of these channels will be all NaN.
print(raw.get_data()[4:, 0]) # [1. 2.]: S1_D1 copied, not NaN
Proposed fix, in _interpolate_bads_nirs:
- Set bad channels without positions to NaN, as the warning says.
- Never pick good channels without positions.
- Raise
ValueErrorwhen a bad channel with a position has no good neighbor left.
- 主要言語
- Python
- スター
- 3.5k
- フォーク
- 1.6k
- 平均マージ
- 1日 3時間
- マージ済み PR(30日)
- 74
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
mne-tools/mne-python のほかの issue
-
ENH: Add `description` filter parameter to `Raw.crop_by_annotations()`対応中かも @aman-coder03 が 192 日前に担当しました。 オープンENH
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
mne-tools/mne-python#13743 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
BUG
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
mne-tools/mne-python#14421 ·
メンテナーはふだん 1 日以内に返信
-
BUG
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
mne-tools/mne-python#14420 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
-
Add a check for `sklearn` availability to `decoding` module対応中かも @SohamXYZDev が 3 日前に担当しました。 オープン
難易度 3/5 半日 初心者へのやさしさ 35/100
mne-tools/mne-python#14394 · コメント 13 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 8/100
mne-tools/mne-python#14392 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
mne-tools/mne-python の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
EchoTools/nevr-runtime#651 ·
メンテナーはふだん 1 日以内に返信
-
bug frontend rt sev-3
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
noontide-co/mainbranch#1211 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[1.x Bug] run-operation --sql reports success but rolls back writes on transaction-capable adaptersオープンtriage
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
dbt-labs/dbt#16784 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信