pop_load_frombids leaves None in chanlocs fields; pop_saveset raises TypeError on them
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 65/100
Direzione di ricerca
Inizia tracciando come pop_load_frombids assegna le coordinate dei canali quando per un canale non è presente alcuna riga in electrodes.tsv, quindi confronta come i canali rimossi rappresentano i valori numerici mancanti. Controlla pop_saveset e clean_channels per vedere come vengono gestiti questi valori. Il lavoro è completato quando la riproduzione viene salvata correttamente con un valore vuoto coerente per i campi numerici mancanti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
For a channel with no row in electrodes.tsv, pop_load_frombids leaves theta, radius, X, Y, Z, sph_theta, sph_phi and
sph_radius as None (and chaninfo plotrad and shrink as None). pop_saveset cannot write None:
import json, os, tempfile
import numpy as np
import pyedflib
from eegprep import pop_load_frombids, pop_saveset
root = tempfile.mkdtemp(); eeg_dir = os.path.join(root, "sub-01", "eeg"); os.makedirs(eeg_dir)
json.dump({"Name": "t", "BIDSVersion": "1.9.0", "DatasetType": "raw"}, open(os.path.join(root, "dataset_description.json"), "w"))
names = ["Fz", "Cz", "Pz"]
writer = pyedflib.EdfWriter(os.path.join(eeg_dir, "sub-01_task-x_eeg.edf"), 3, file_type=pyedflib.FILETYPE_EDFPLUS)
writer.setSignalHeaders([{"label": c, "dimension": "uV", "sample_frequency": 250, "physical_min": -500, "physical_max": 500,
"digital_min": -32768, "digital_max": 32767, "transducer": "", "prefilter": ""} for c in names])
writer.writeSamples(list(np.random.default_rng(0).standard_normal((3, 2500)) * 20)); writer.close()
open(os.path.join(eeg_dir, "sub-01_task-x_channels.tsv"), "w").write("name\ttype\tunits\n" + "".join(f"{c}\tEEG\tuV\n" for c in names))
open(os.path.join(eeg_dir, "sub-01_electrodes.tsv"), "w").write("name\tx\ty\tz\nFz\t0\t37\t84\nCz\t0\t-34\t105\n") # no row for Pz
json.dump({"EEGCoordinateSystem": "MNI305", "EEGCoordinateUnits": "mm"}, open(os.path.join(eeg_dir, "sub-01_coordsystem.json"), "w"))
eeg = pop_load_frombids(os.path.join(eeg_dir, "sub-01_task-x_eeg.edf"), bidsevent=False, verbose=False)
print("Pz X:", eeg["chanlocs"][2]["X"]) # None
pop_saveset(eeg, os.path.join(root, "out.set")) # TypeError: Could not convert None (type NoneType) to array
Expected: use the same empty value (numeric_null) for every missing numeric field, as pop_load_frombids already does for
channels it clears, or make pop_saveset write None as an empty array. Also: clean_channels already treats None as missing
by an ad hoc conversion, which a consistent empty value would make unnecessary.
Checked on eegprep 0.5.0.
- Lingua principale
- Python
- Stelle
- 38
- Fork
- 7
- Merge medio
- 22h 11m
- PR unite (30g)
- 65
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna 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 sccn/eegprep
-
Add a half-count tie test for 2-D _trimmed_channel_scoresForse già presa @claude l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
sccn/eegprep#570 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
-
clean_channels: raise on degenerate channel locations instead of returning a meaningless resultAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
sccn/eegprep#539 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
sccn/eegprep#533 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di sccn/eegprep
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
I maintainer di solito rispondono entro 7 giorni
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
MTSWebServices/RecTools#330 ·
-
S9.7: Methodology pageApertaarea: web priority: P1 story
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
nfiasco/Quant-Time-Machine#151 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
autowarefoundation/autoware_carla_scenario#2019 ·
I maintainer di solito rispondono entro 1 giorno