Summary
In the multi-session conversion workflow, the SpikeGLX (and any interface with a required non-path parameter such as stream_id) must have its stream entered separately on the Source Data page for every session. Because most users use the same stream across all sessions, this is tedious and error-prone as the session count grows.
Current behavior
stream_id is a required free-text string in neuroconv's SpikeGLX source schema (e.g. imec0.ap).
- With
locate_data enabled, the Locate Data (Path Expansion) page collects per-interface shared settings (base_directory, format_string_path) and auto-locates files across sessions, but it does not collect the stream.
- The Source Data page then renders one form per located session, each requiring
stream_id, so the same value is typed once per session.
A "set once" path already exists via the Edit Default Values button on the Source Data page (its global modal keeps stream_id), but it is hard to discover: a small header icon on a later page, with little suggesting that it can set the stream for all sessions.
Proposed change
Surface the shared non-path source-data fields (e.g. stream_id) on the Locate Data page, next to base_directory / format_string_path, backed by the same project.SourceData globals that Edit Default Values already writes. This keeps a single source of truth, lets the stream be set once where users expect it (right after autocomplete locates files), and keeps per-session override behavior.
Scope:
- For each interface on the Locate Data page, pull its required non-path properties from
globalState.schema.source_data and add them to that interface's generated schema.
- In
beforeSave, route those values into globalState.project.SourceData[interface] (not into the neuroconv/locate payload, which rejects unknown props).
- Keep Edit Default Values as the fallback/override editor, since the Locate Data page only exists when
locate_data is enabled.
Relevant files: src/electron/frontend/core/components/pages/guided-mode/data/GuidedPathExpansion.js, src/electron/frontend/core/components/pages/guided-mode/data/GuidedSourceData.js.
Summary
In the multi-session conversion workflow, the SpikeGLX (and any interface with a required non-path parameter such as
stream_id) must have its stream entered separately on the Source Data page for every session. Because most users use the same stream across all sessions, this is tedious and error-prone as the session count grows.Current behavior
stream_idis a required free-text string in neuroconv's SpikeGLX source schema (e.g.imec0.ap).locate_dataenabled, the Locate Data (Path Expansion) page collects per-interface shared settings (base_directory,format_string_path) and auto-locates files across sessions, but it does not collect the stream.stream_id, so the same value is typed once per session.A "set once" path already exists via the Edit Default Values button on the Source Data page (its global modal keeps
stream_id), but it is hard to discover: a small header icon on a later page, with little suggesting that it can set the stream for all sessions.Proposed change
Surface the shared non-path source-data fields (e.g.
stream_id) on the Locate Data page, next tobase_directory/format_string_path, backed by the sameproject.SourceDataglobals that Edit Default Values already writes. This keeps a single source of truth, lets the stream be set once where users expect it (right after autocomplete locates files), and keeps per-session override behavior.Scope:
globalState.schema.source_dataand add them to that interface's generated schema.beforeSave, route those values intoglobalState.project.SourceData[interface](not into theneuroconv/locatepayload, which rejects unknown props).locate_datais enabled.Relevant files:
src/electron/frontend/core/components/pages/guided-mode/data/GuidedPathExpansion.js,src/electron/frontend/core/components/pages/guided-mode/data/GuidedSourceData.js.