Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
No unreleased changes.
[0.0.3] - 2026-04-07
Added
AllegoClient
- Added Sinaps probe control methods:
load_all_mosi(),transmit_mosi(),read_wire_out(),get_sinaps_status_registers(), andflash_sinaps(). - Added explicit action methods:
start_streaming(),stop_streaming(),start_recording(*, port?),stop_recording(*, port?),set_stim_trigger(*, trigger, on), andtoggle_stim_trigger(*, trigger). - Added partial-update method names:
update_recording_config(config)andupdate_core_config(*, samp_freq?, loop_dur?, pcache_persistence?, cable_delay?). - Added trigger helpers:
enable_trigger(*, channel, port?),disable_trigger(*, channel, port?), anddisable_all_triggers(). - Added spike sorter control methods:
get_spike_sorter_ids(),get_default_spike_sorter_id(),get_spike_sorter_state(),spike_sorter_command(),get_spike_sorter_dashboard(),get_detect_params(), andset_detect_params().
VidereClient
- Added offline spike sorter control methods:
get_spike_sorter_ids(),spike_sorter_launch(),spike_sorter_command(),spike_sorter_cancel(),get_spike_sorter_state(),get_spike_sorter_dashboard(),spike_sorter_delete(),get_detect_params(), andset_detect_params().
Domain Models And Exports
- Added
SinapsStatusRegisters. - Added spike sorter models and enums, including
SpikeSorterState,SpikeSorterLaunchParams,SpikeSorterLaunchResult,SpikeSorterDashboard,SpikeDetectParams,SpikeSorterCommand,SpikeSorterSubCommand,DashElement, and related feature/clustering parameter models. - Exported
TriggerChannelfrom the top-levelradiens_corepackage. - Added
FlexDataset(DatasetMetadata | str | Path) for dataset-taking methods in Videre and Curate clients.
Channel Metadata
- Added
ChannelInfofields:name,ntv_name,is_selected,probe_id,headstage_id, andsensor_id. - Added inline site position fields on
ChannelInfo(probe_*,tissue_*,site_shape,site_area_um2, bounding box limits, and transform offsets) withNonefor non-AMP channels. - Added
ChannelInfoconvenience APIs:has_position,bounding_box_size,bounding_box_center, andget_area(). - Added
ChannelMetadataper-channel metadata collections:chan_names,ntv_chan_names,probe_ids,headstage_ids, andsensor_ids.
Changed
- AllegoClient:
restart()now takes*, mode: BackboneModeinstead of aRestartRequestmodel. - AllegoClient:
set_stim_step()now takes*, step: StimStepinstead of aStimStepRequestmodel. - AllegoClient:
get_signals()now accepts an optionalsignalsparameter (defaults to all amplifier channels;time_rangeremains required). - AllegoClient:
get_kpi_metrics()now accepts optionalchannel_indicesandtime_range(defaults to all channels and a 5-second lookback window). - VidereClient:
set_dsp_group()now takesstageandparamsas keyword-only arguments. - VidereClient:
get_signals()now accepts optionaltime_rangeandsignals; omitted values default to full recording and all amplifier channels. - VidereClient:
get_kpi_metrics()now accepts optionalchannel_indicesandtime_range; omitted values default to all channels and full recording. - VidereClient:
get_spikes_by_channel(),get_spikes_by_neuron(), andget_neurons()now acceptchannelsaslist[int],SignalSpec, or"all"(in addition toNone). - VidereClient:
get_spikes_by_channel()andget_spikes_by_neuron()now accept optionaltime_rangeand default to full recording when omitted. - VidereClient:
get_spikes_spec(),get_spikes_by_channel(), andget_spikes_by_neuron()now use the dedicatedRADIENS_SPIKE_SORTERservice endpoint. - CurateClient: removed the
orderparameter fromnotch()andbulk_notch()(implementation is fixed to a second-order IIR notch). - DatasetMetadata: added
base_pathproperty. - ChannelInfo:
site_positionis now a computed@propertyrather than a stored field; access remainsinfo.site_position. - Models package:
TimeRangeSpecandSignalSpecare exported viaradiens_core.models.__all__.
Deprecated
AllegoClient.set_stream_state(): Usestart_streaming()orstop_streaming()instead.AllegoClient.set_record_state(): Usestart_recording()orstop_recording()instead.AllegoClient.manual_stim_trigger(): Useset_stim_trigger()instead.AllegoClient.manual_stim_trigger_toggle(): Usetoggle_stim_trigger()instead.AllegoClient.set_recording_config(): Useupdate_recording_config()instead.AllegoClient.set_core_config(): Useupdate_core_config()instead.AllegoClient.set_trigger_state(): Useenable_trigger(),disable_trigger(), ordisable_all_triggers()instead.
Fixed
- VidereClient:
get_spikes_by_channel()now correctly applies channel filtering to spike raster and optional waveform queries.
[0.0.2] - 2026-03-25
Added
VidereClient.get_spikes_spec(): Retrieve spike interface metadata for a linked dataset.VidereClient.get_spikes_by_channel(): Retrieve spike timestamps and neuron labels per recording channel, with optional waveform snippets.VidereClient.get_spikes_by_neuron(): Same spike data regrouped by sorted neuron identity.VidereClient.get_neurons(): Retrieve neuron descriptors (spike count, rate, SNR, waveform peak amplitude, probe position) per channel.- New domain models:
SpikesSpec,ChannelSpikeData,NeuronSpikeData,NeuronsResult,NeuronInfo. DatasetMetadata.associated_spikes_ids: List of registered spikes datasource IDs discovered when the recording file was linked.
Changed
link_data_file()now automatically discovers and registers any associated.spikesfile alongside the recording, populatingDatasetMetadata.associated_spikes_ids. No change required at the call site.
[0.0.1] - 2026-03-23
Initial stable release. All three clients (AllegoClient, VidereClient, CurateClient) with zero-config service discovery, strict mypy typing, and Pydantic v2 domain models.
Added
AllegoClient (Real-time Acquisition)
healthcheck(),get_status(),set_stream_state(),set_record_state(),restart()for session lifecycle.get_signals()for real-time signal data retrieval withFlexTimeRange/FlexSignalSpecconvenience types.get_channel_metadata()for channel information.get_stim_params(),set_stim_params(),set_trigger_control()for stimulation control, includingheadstage_global_amp_settle.get_recording_config()and related methods for recording configuration.get_dsp_group()andset_dsp_group()for real-time filter configuration.get_core_config()andset_core_config()for global hardware settings (sampling frequency, loop duration, cable delays).get_intan_impedance()for channel impedance measurement andscan_ports()for hardware discovery.get_dac_reg(),set_dac_gain(),set_dac_stream(),set_dac_off(),set_dac_highpass()for DAC control.get_dio_reg(),set_dio_events(),set_dio_manual(),set_dio_gated(),set_dio_pulse()for Digital Output control.get_kpi_metrics(),get_kpi_status(),set_kpi_packet_dur(),set_kpi_update_period()for real-time signal-quality metrics.
VidereClient (Offline Analysis)
link_data_file()for linking recorded data files (.xdat,.rhd).get_signals()for offline signal data retrieval.get_dsp_group()andset_dsp_group()for offline filter configuration.list_data_sources(),list_data_source_ids(),clear_data_sources(),export_data_source()for data source management.get_kpi_metrics(),get_kpi_status(),kpi_calculate(),kpi_clear(),set_kpi_packet_dur()for offline signal-quality metrics.
CurateClient (Data Curation)
link_data_file()withPathsupport and progress bars.slice_time()andslice_channels()for time and channel subsetting.downsample()for sample-rate reduction.highpass(),lowpass(),bandpass(),bandstop(),notch()for filtering transforms.car()for Common Average Reference,virtual_ref()andpaired_ref()for re-referencing.set_protocol()for registering arbitrary multi-step transform graphs (DAGs).
Domain Models
StimParamswith stimulation enums andheadstage_global_amp_settle.DSPGroup,DSPParams,DSPType,FilterStagefor filter configuration.CoreConfig,CableDelay,SetCoreConfigRequestfor hardware settings.Impedance,ImpedanceValuefor impedance data.AnalogOutRegister,AnalogOutChannel,DACHighPassfor DAC configuration.DigitalOutRegister,DigitalOutChannelRegister,DIOModefor DIO configuration.KpiMetric,KpiMetricId,KpiMetricsResult,KpiMode,KpiStatusfor signal-quality metrics.TransformNode,TransformEdge,TransformNodeTypeand all transform parameter models for curation protocols.FlexTimeRangeandFlexSignalSpecconvenience types with Pydantic runtime coercion.
Infrastructure
- Zero-config authentication via
AuthInterceptor. - Auto-discovery of server UUID and service endpoints.
BaseClientwith shared gRPC channel pool and lifecycle management.- Proto-driven type safety architecture with
_converters//_services/layer separation. - MkDocs documentation site with auto-generated API reference.
- Automated PyPI publishing via GitHub Actions (Trusted Publishing).