Skip to content

Tags: sciencecorp/synapse-python

Tags

v2.7.7

Toggle v2.7.7's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Record real electrode ids in broadband HDF5 output (#193)

* Record real electrode ids in broadband HDF5 output

detect_stream_parameters reported channels as range(len(frame_data)) and the
writer copied that straight into general/extracellular_ephys/electrodes/id, so
every row was labeled by its position in the frame. A recording therefore
carried no way to tell which electrode a row came from, and any configuration
whose electrodes aren't 0..N-1 in ascending order — a sparse selection, or one
deliberately ordered by the user — was silently mislabeled all the way through
analysis.

The new synapse.utils.electrode_ids reconstructs that identity. Frames describe
their own layout in channel_ranges (a type, a count, and the logical channel
ids in frame order), and the logical -> physical electrode mapping lives in the
applied device configuration, which build_channel_to_electrode_map reads out of
DeviceInfo. derive_electrode_row_ids combines the two into one id per
frame_data entry, re-keying GPIO rows into a high namespace so ids stay unique
within the table.

Identity degrades explicitly rather than quietly: the electrode map is applied
only when every electrode row resolves, so a dataset never mixes the two id
spaces, and frames with no usable channel_ranges fall back to the old
positional scheme with a warning printed to the console. Which of the three
happened is recorded as the electrodes group's id_source attribute, and the
logical channel id and channel type are written alongside id as equal-length
datasets so downstream analysis can reconstruct the full mapping. The live
plotter picks up the same ids, so its channel labels now name real electrodes.

The offline plotter labeled its DataFrame columns positionally while selecting
them by channel id, so --channels picked the wrong traces for any recording
whose ids aren't 0..N-1; it now labels columns by channel id and reports
id_source alongside the channel count.

This mirrors deriveElectrodeRowIds in nexus-desktop, which writes the same
layout from the desktop recording path.

* bump version

---------

Co-authored-by: calvinleng-science <[email protected]>

v2.7.6

Toggle v2.7.6's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Unify impedance CSV output across streaming and non-streaming paths (#…

…187)

* Unify impedance CSV output across streaming and non-streaming paths

Both synapsectl query and synapsectl query --stream now write identical
impedance CSVs via a shared synapse.cli.impedance_csv module:

  Peripheral: <name>
  Electrode ID,Magnitude (Ohms),Phase (degrees),Status
  <electrode_id>,<magnitude>,<phase>,<status>

Changes:
- Add a 'Peripheral: <name>' metadata header line, resolved from the
  device's peripheral list (preferring the query's peripheral_id, else
  the broadband recording source).
- Fix streaming CSV discrepancies: it previously wrote a different header
  ('Electrode ID,Magnitude,Phase'), omitted units, and had no Status
  column. It now matches the non-streaming format.
- Streaming now also writes failed measurements with Status=0 (success=1);
  previously failed measurements were dropped from the CSV entirely.

* Write impedance CSV peripheral metadata as a CSV row

Use 'Peripheral,<name>' (a valid 2-column CSV row) instead of the
colon-separated 'Peripheral: <name>' line, so standard CSV parsers handle
the metadata line gracefully.

* Bump version to 2.7.6

* Fix impedance display table unit label (Ohms, not kΩ)

* Resolve impedance peripheral name before query (consistent with streaming)

v2.7.5

Toggle v2.7.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
get extracted bitstream instead (#186)

v2.7.4

Toggle v2.7.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
bump version for peripheral sdk (#185)

v2.7.3

Toggle v2.7.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Pin synapse-api to main (2.4.1) and support peripheral_id in impedanc…

…e queries (#183)

* Pin synapse-api to main (2.4.1) and support peripheral_id in impedance queries

* chore: bump version 2.7.3

v2.7.2

Toggle v2.7.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(release): skip-existing on testpypi and longer wait before valida…

…te (#181)

testpypi publish failed with a 400 when the version was already
present on testpypi, blocking the downstream validate and pypi
publish jobs. skip-existing makes the upload idempotent, and the
wait before validating is bumped 60s -> 180s to give testpypi more
time to index the new release.

v2.7.1

Toggle v2.7.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: settings refactor (#177)

* Updated settings commands to pick up on new settings protos. Will not pick up settings from devices with outdated firmware

* chore: bump version to 2.7.1

v2.7.0

Toggle v2.7.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: peripheral SDK (#176)

* feat: synapsectl peripherals build/deploy subcommands

Mirrors apps build/deploy for peripheral plugin packages:

  synapsectl peripherals build .   — cross-compiles a plugin .so against
    scifi-peripheral-sdk inside the example repo's Dockerfile, then
    packages it (plus the bundled libscifi-peripheral-sdk.so* extracted
    from the builder image) into a .deb with Section=synapse-peripherals.

  synapsectl peripherals deploy .  — gRPC-streams the .deb via the
    existing DeployApp method. scifi-server's app_updater.cpp install
    gate now accepts either synapse-apps or synapse-peripherals.

No new RPCs. No SFTP. No systemd service wrapping (plugins live at
/usr/lib/scifi/plugins/ and are dlopen'd by scifi-server's PluginRegistry
at startup).

Also pins the synapse-api submodule to current main HEAD.

* repinned back to head of main, generalize settings pin is outside the scope of this PR

* bump version to 2.7.0

v2.6.0

Toggle v2.6.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
bump version 2.6.0 (#175)

v2.6.0a2

Toggle v2.6.0a2's commit message
bump version to 2.6.0a2 for fixed onnxruntime packaging and updated R…

…EADME