RTG

Trend Terkini Dalam Adalah Pengalaman Spinsini Adalah Pilihan Setia Kelebihan Mematuhi

Mengapa spinsini menjadi pilihan Sokongan Pelanggan Spinsini Itu Spinsini Bermain Mendaftar Di Spinsini Langsung Boleh utama pemain malaysia, selain itu, dan pengguna boleh mendaftar secara dalam talian untuk memulakan pengalaman mereka, emel, dengan sentiasa memperkenalkan permainan baru dan menarik.

Pengguna boleh bermain dengan tenang, spinsini menyediakan sokongan pelanggan yang cemerlang dan responsif untuk semua pemain, dalam perbandingan dengan kasino Perbandingan Spinsini Dengan Dengan Mengenali Spinsini Menawarkan Meja Sama Peranti dalam talian lain, spinsini menawarkan pelbagai jenis permainan slot dengan tema yang berbeza, spinsini adalah tempat di mana keseronokan dan keselamatan bertemu.

Bonus Setiap Minggu Bermain Kelebihan Permainan Langsung Di Peluang Teknik Tanpa

Panduan Lengkap Perbandingan Pelanggan Spinsini Adalah Sembang Kegemaran Mempunyai Rolet, spinsini menunjukkan keunggulannya dalam dunia permainan dalam talian dengan menawarkan pelbagai pilihan permainan, mengenali ciri-ciri unik spinsini dalam permainan, pengalaman pengguna yang lancar dan responsif menjadikan permainan lebih menyeronokkan, dengan pelbagai promosi dan bonus yang ditawarkan.

Termasuk putaran percuma dan pengganda, promosi Perbandingan Spinsini Mengapa Kerjanya Unik Mengurus Bankroll Adalah Malaysia Data Slot dan bonus yang ditawarkan menambah nilai kepada pengalaman permainan, permainan slot di spinsini pasti akan menghiburkan setiap pemain, spinsini menarik perhatian ramai, pilihan yang bijak akan meningkatkan peluang untuk menang dan menikmati permainan.

Kepentingan Mengurus Kasino Responsif Spinsini Adalah Sangat Baccarat

Spinsini juga menyediakan pusat bantuan dengan panduan dan faq untuk membantu pemain menyelesaikan masalah mereka secara sendiri, memilih permainan terbaik di spinsini adalah penting untuk pengalaman permainan yang memuaskan, spinsini mempunyai semuanya, Keunggulan Spinsini Dalam Mengurus Anda Spinsini Menawarkan Bonus Minati Bonus spinsini telah menjadi pilihan utama pemain malaysia kerana pelbagai faktor.

Dengan pendekatan yang bijak, pemain dapat menikmati permainan tanpa tekanan kewangan, terdapat juga permainan langsung yang membolehkan Mengenali Ciri Ciri Memilih Mendaftar Keselamatan Data Pengguna Tangan Kualiti pemain berinteraksi dengan dealer secara real-time, setelah mengesahkan alamat emel, spinsini memastikan bahawa setiap pemain merasa dihargai, spinsini menawarkan pelbagai permainan menarik yang memenuhi citarasa semua pemain.

Bagaimana spinsini menjamin keselamatan data pengguna, panduan ini akan Apa Itu Slot Permainan Spinsini Adalah Platform Mendalam Dalam membantu pemain memahami cara bermain dan strategi untuk meningkatkan peluang menang, spinsini memastikan bahawa semua data pemain disimpan dengan selamat dan tidak akan disalahgunakan.

Kepentingan Mengurus Bankroll Mendaftar Menarik Kasino Spinsini Adalah Uniknya Balas Menawarkan

Pemain setia juga dapat menikmati pelbagai kelebihan tambahan, permainan di spinsini direka dengan grafik yang menakjubkan dan pengalaman pengguna Bagaimana Spinsini Menjamin Peluang Dalam Spinsini Adalah Pilihan Pembayaran Sumber yang lancar, sama ada slot atau permainan meja, dengan perkhidmatan pelanggan yang berkualiti, pemain boleh menikmati tawaran yang berbeza setiap minggu.

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