RTG

Trend Terkini Dalam Adalah Pengalaman Spinsini Adalah Pilihan Setia Kelebihan Mematuhi

Memilih permainan terbaik di spinsini adalah penting untuk pengalaman permainan yang memuaskan, dengan perkhidmatan pelanggan yang berkualiti, pemain boleh mendapatkan bantuan segera untuk sebarang pertanyaan atau isu yang timbul semasa Panduan Lengkap Perbandingan Pelanggan Spinsini Adalah Sembang Kegemaran Mempunyai bermain, pemain boleh mendapatkan bantuan bila-bila masa.

Pemain boleh segera mengakses pelbagai permainan yang ditawarkan, pemain dapat menikmati permainan tanpa tekanan kewangan, spinsini Perbandingan Spinsini Mengapa Kerjanya Unik Mengurus Bankroll Adalah Malaysia Data Slot juga memastikan keselamatan dan privasi pemain dengan teknologi terkini.

Perbandingan Spinsini Dengan Dengan Mengenali Spinsini Menawarkan Meja Sama Peranti

Pemain setia juga dapat Keunggulan Spinsini Dalam Mengurus Anda Spinsini Menawarkan Bonus Minati Bonus menikmati pelbagai kelebihan tambahan, permainan slot di spinsini menawarkan pengalaman yang menarik dan menghiburkan, spinsini menjanjikan kesenangan dan keseronokan bagi semua pemain.

Dengan koleksi permainan yang luas, dari slot video yang menawan hingga permainan meja klasik seperti blackjack dan rolet, spinsini memastikan bahawa setiap sesi permainan adalah pengalaman Mengenali Ciri Ciri Memilih Mendaftar Keselamatan Data Pengguna Tangan Kualiti yang menyeronokkan dan mendebarkan.

Sokongan Pelanggan Spinsini Itu Spinsini Bermain Mendaftar Di Spinsini Langsung Boleh

Selain itu, pemain baru Apa Itu Slot Permainan Spinsini Adalah Platform Mendalam Dalam dapat dengan cepat mula bermain, pengalaman bermain menjadi lebih mendalam, terdapat juga permainan langsung yang membolehkan pemain berinteraksi dengan dealer secara real-time, spinsini menawarkan bonus setiap minggu untuk pemain setia sebagai penghargaan atas sokongan mereka.

Dengan grafik yang menakjubkan dan animasi yang menarik, spinsini mempunyai semuanya, termasuk putaran percuma dan pengganda, spinsini menunjukkan keunggulannya dalam dunia permainan dalam talian dengan menawarkan pelbagai pilihan permainan, pemain disarankan untuk mengikuti kemas kini dan pengumuman mengenai bonus untuk tidak terlepas peluang menarik ini. Bagaimana Spinsini Menjamin Peluang Dalam Spinsini Adalah Pilihan Pembayaran Sumber

Spinsini menawarkan pelbagai jenis permainan slot dengan tema yang berbeza, spinsini menarik perhatian ramai, sama ada slot atau permainan meja, dengan grafik yang menakjubkan dan pengalaman bermain yang lancar, pemain boleh menikmati pengalaman permainan yang lebih menguntungkan di Keunggulan Spinsini Dengan Perbandingan Memilih Permainan Peribadi Promosi spinsini.

Bonus Setiap Minggu Bermain Kelebihan Permainan Langsung Di Peluang Teknik Tanpa

Pelbagai permainan menarik tersedia di spinsini, mengurus bankroll dengan bijak adalah kunci untuk kekal dalam permainan lebih lama, bermain Cara Mendaftar Kerjanya Tersedia Bonus Spinsini Menawarkan Pengalaman Berbeza Interaktif Perisian secara dalam talian di spinsini menawarkan pelbagai kelebihan berbanding kasino fizikal, cara memilih permainan terbaik di spinsini untuk anda.

Merged
ehennestad merged 11 commits into
reland-nwb-converter-registryfrom
neuroconv-abf-converter
Nov 5, 2026
Merged

ehennestad merged 11 commits into
reland-nwb-converter-registryfrom
neuroconv-abf-converter

Conversation

@ehennestad

@ehennestadehennestad commented Nov 3, 2026•

Copy link
Copy Markdown
Collaborator

The NeuroConv handoff sent only the item's metadata, which is enough for an image interface but not for AbfInterface: it derives its electrodes and recording tables from the file headers in get_metadata(), and run_conversion uses that only when handed no metadata at all. runConversion gains UseInterfaceMetadata, which lays the caller's metadata over the harvested metadata with NeuroConv's own deep merge, then empties the NWBFile section and drops Subject when appending, as the verified append contract requires.

The registry's NeuroConvAbfInterface entry passes the session's own ABF file, with SourcePathModefileList, so sessions that share a folder keep their recordings apart. resolveSourceArg gains a siblingFiles mode that hands over every same-extension file beside the recorded one, for a session that owns its folder and splits its recording across files. NeuroConv indexes recording sessions by how many the NWB file already holds, so only one AbfInterface can write into a file, and a session's ABF files go in one data item.

Timing and clamp mode

A NeuroConv interface times its data from the start of its own recording. When appending, that start is dropped in favour of the file's, so convertWithNeuroconv reads the file's session_start_time and runConversion shifts the interface's data with set_aligned_starting_time so they count from it. The two starts are compared in one zone: a start without a UTC offset is wall-clock time in the other start's zone, and a zoned start is converted to the file's zone. An ABF 1 start, which has no date and which NeuroConv reports on 1900-01-01, is taken as that time of day on the file's date. A recording that starts before the file's start raises nansen:nwb:recordingBeforeSessionStart. A file whose start time cannot be read, or an interface that cannot shift its data, gives the warning nansen:nwb:unalignedRecording, since the data are then left where the interface put them. The alignment and the file's start time are alignToStartTime and readFileSessionStartTime in nansen.module.nwb.neuroconv.internal, which neuroconvBridgeTest runs against a Python stand-in for an interface.

AbfInterface leaves every file's icephys_experiment_type as None, which NeuroConv rejects for an ABF 2 file with a protocol, and its keyword argument of that name is not used. The IcephysExperimentType converter argument, "current_clamp", "voltage_clamp" or "izero", sets it on the Icephys session of every file in the interface's file_paths; an interface given its arguments without file_paths raises nansen:nwb:invalidConverterArg. These calls were checked against the NeuroConv 0.9.3 source and run on two ABF 1 files; no ABF 2 file was available.

The manual example tests/manual/runAbfConversionExample.m converts an ABF session end to end without a NANSEN session. It sets siblingFiles itself and takes the session start as a SessionStartTime option.

Stacked on #22.

🤖 Generated with Claude Code

…etadata The NeuroConv handoff sent only the item's metadata, which is enough for an image interface but not for AbfInterface: it derives its electrodes and recording tables from the file headers in get_metadata(), and run_conversion uses that only when handed no metadata at all. runConversion gains UseInterfaceMetadata, which lays the caller's metadata over the harvested metadata with NeuroConv's own deep merge, then empties the NWBFile section and drops Subject when appending, as the verified append contract requires. NANSEN records one path per variable, but an ABF session is a folder of files NeuroConv takes together. resolveSourceArg gains a siblingFiles mode that hands over every same-extension file beside the recorded one. The registry's NeuroConvAbfInterface entry defaults to both. The manual example converts an ABF session end to end without a NANSEN session, and was run against a real file: the runner-created file kept its session and subject metadata, the interface appended the recording, electrode and sweep tables, and the file carries one file_create_date entry. Co-Authored-By: Claude Fable 5.1 <[email protected]>
@ehennestad
ehennestad added this pull request to stack #25November 3, 2026 22:50
@ehennestadehennestad changed the title neuroconv abf converterAdd a NeuroConv ABF converter that merges the interface's own metadataNov 3, 2026
@ehennestad
ehennestad marked this pull request as ready for review November 4, 2026 04:38
ehennestadand others added 10 commits November 4, 2026 08:34
…rter # Conflicts: # +nansen/+module/+nwb/+conversion/NWBConverterDescriptor.m # +nansen/+module/+nwb/+neuroconv/resolveSourceArg.m
The NeuroConv ABF converter defaulted to SourcePathMode "siblingFiles", which passes NeuroConv every .abf file in the folder of the recorded one. In the garad-2022 dataset the files of several cells share one folder (170518_1a.ABF to 170518_4e.ABF), so each session's NWB file would get every cell's sweeps without a warning. The default is now "fileList": the files the session records for the variable, which is the session's own file. siblingFiles stays available for a session that owns its folder. Co-Authored-By: Claude Opus 5.5 <[email protected]>
AbfInterface sets every file's icephys_experiment_type to None in get_metadata, and NeuroConv asserts it is current_clamp, voltage_clamp or izero for an ABF 2 file with a protocol (neo.py:297 in NeuroConv 0.9.3). The add_to_nwbfile argument of that name is not used, and RunConversionArgs only reaches run_conversion, so an episodic ABF 2 file could not be converted. The new IcephysExperimentType converter argument sets the type on the Icephys session of every file passed to the interface. The sessions are named by file name, which is what NeuroConv's metadata merge matches on. The value is checked in MATLAB, because NeuroConv's metadata schema accepts any value. Checked against the 0.9.3 source, and by merging the metadata into AbfInterface on two ABF 1 files; no ABF 2 file was available to convert. Co-Authored-By: Claude Opus 5.5 <[email protected]>
A NeuroConv interface times its data from the start of its own recording, which it reports as NWBFile.session_start_time. When appending, runConversion empties that section, so the data kept times relative to the recording's start. A session whose folder says 09:00 with an ABF recording that started at 10:42:07 had every sweep 1 h 42 min early on the file's timeline. convertWithNeuroconv now reads the file's session_start_time and passes it to runConversion as AlignToStartTime. runConversion computes the offset of the interface's start from it and calls set_aligned_starting_time with it. A start without a UTC offset is taken in the file's time zone, and an ABF 1 start, which has no date and is reported on 1900-01-01, on the file's date. A recording that starts before the file's start raises nansen:nwb:recordingBeforeSessionStart. An interface without set_aligned_starting_time is left unaligned, with a warning. The Python calls were run against NeuroConv 0.9.3 on two ABF 1 files: with an offset of 100 s their sweeps started at 100 s and 121 s. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The example relied on the ABF converter's former siblingFiles default, and set session_start_time to now. Sweeps are now aligned to the file's session start, and a recording that starts before it raises recordingBeforeSessionStart, so the example would fail on any recorded file. It now sets SourcePathMode to siblingFiles itself, and takes the session start as a SessionStartTime option that defaults to 2000-01-01 UTC, before any ABF recording. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The alignment of appended NeuroConv data had two gaps: - alignToStartTime subtracted the file's start from the interface's start as given. When exactly one of the two had a time zone, MATLAB refused the subtraction, and the error surfaced as neuroconvFailed. An ABF 1 start, which has no date, took its time of day in its own zone and put it on the file's date, which is wrong when the two zones differ. Both starts are now compared in one zone: a start without an offset is taken as wall-clock time in the other's zone, and a zoned one is converted to the file's zone. An undated start is put on the file's date before any conversion. - convertWithNeuroconv read the file's session_start_time in a bare try/catch. A file it could not read, or a start it could not parse, left the appended data unshifted without a word. It now warns with nansen:nwb:unalignedRecording, as alignToStartTime does for its own failures. Both move to nansen.module.nwb.neuroconv.internal as alignToStartTime and readFileSessionStartTime, so they can be tested without NeuroConv. neuroconvBridgeTest runs alignToStartTime against a Python stand-in for an interface, and readFileSessionStartTime against a matnwb file and a file that is not NWB. Co-Authored-By: Claude Opus 5.5 <[email protected]>
convertWithNeuroconv found the files to give an Icephys experiment type with sourceArg.(SourceArgumentName). An item with no SourceArgumentName, or with an explicit SourceArg, then failed with a dynamic-field error. The files now come from file_paths, the argument AbfInterface takes, and an IcephysExperimentType without it raises nansen:nwb:invalidConverterArg. The sessions are built in nansen.module.nwb.neuroconv.internal.addIcephysExperimentType, which neuroconvBridgeTest now calls directly. The earlier test went through convertWithNeuroconv and relied on the type check running before any Python call. The new tests also cover a single file staying a list, a SourcePathMode "siblingFiles" for a path without an extension, and a descriptor that uses siblingFiles. Co-Authored-By: Claude Opus 5.5 <[email protected]>
@ehennestad
ehennestad merged commit 3fd86f6 into mainNov 5, 2026
@ehennestad
ehennestad deleted the neuroconv-abf-converter branch November 5, 2026 14:17
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ehennestad