Clients API
- class radiens.AllegoClient
AllegoClient implements the radiens API for data acquisition and instrument control. It matches and extends the functionality of the Radiens Allego UI app.
- workspace()
Allego workspace API
- spike_sorter()
Allego spike sorter API
- spikes()
Allego spikes API
- signal_metrics()
Allego signal metrics API
- restart(mode)
Restarts Allego in the requested mode.
Valid modes:
smartbox_pro,
smartbox_pro_sinaps_256
smartbox_pro_sinaps_512
smartbox_pro_sinaps_1024
smartbox_classic
smartbox_sim_gen_sine
smartbox_sim_gen_sine_mapped
smartbox_sim_gen_sine_high_freq
smartbox_sim_gen_sine_multi_band
smartbox_sim_gen_spikes
open_ephys_usb2
open_ephys_usb3
intan_usb2
intan_recording_controller_1024
intan_recording_controller_512
xdaq_one_req
xdaq_one_stim
xdaq_core_req
xdaq_core_stim
- Returns:
None
- Side Effect:
Resets all settings to their initialization values in the requested mode.
Example
>>> client.restart('sim-spikes') None
- get_available_sensors()
Gets dictionary of dictionaries of available Radiens headstage and probe models, with each model of form key=component ID, value=number of channels.
- Returns:
sensors (
dict
) – has keys ‘headstages’ and ‘probes’ that map to dictionaries of the available headstage models and probe models, respectively.
Example
>>> client.get_available_sensors() {'sensors': {'headstages': {'hstg__chronic_smartlink_HC16': 16, 'hstg__acute_smartlink_A64': 64, ...}, 'probes': {'a2x16_10mm50_500_177': 32, 'a1x16_5mm150_177': 16, ...}}
- get_status()
Gets the status of Allego.
- Returns:
status (
AllegoState
)
Example
>>> client.get_status().print() ALLEGO status: stream : S_ON time range : [0.000, 2149.197] sec HW memory : 0.0 recording : R_OFF duration : 0.000 sec file name : allego_0__uid0906-13-55-32 base name : allego path : /Users/akelly/sapiens/core_packages/radix/radiens_etc index : 0 file timestamp : 0906-13-55-32
- get_stream_loop_dur_ms()
Returns the stream loop duration in milliseconds
Notes
Make sure to convert this to seconds if you’re using it to set the sleep time in a loop.
- get_channel_metadata()
Gets the channel metadata for all connected ports
Notes
All ports are scanned to detect the connected ports.
- get_signals()
Gets the the most recent signals since last call of itself or
set_time_to_cache_head()
.- Returns:
sigarray (
ndarray[numpy.float32]
) – raw signal data; the mapping contained in signal_group (seeget_channel_metadata()
)time_range (
list[float]
) – time range (in seconds) of sigarray
Notes
Sets current time to most recent time point in signal cache.
This should be called before the first call of
get_signals()
. The first call ofget_signals()
will return the new signals since the last call toset_time_to_cache_head()
- get_digital_out_states()
Gets digital out state.
- Returns:
dout_state_dict (
dict
) – has keys ‘digital_outs_mode’ and ‘states’.
Example
>>> client.get_digital_out_states() {'digital_outs_mode': 'manual', 'states': [{'chan_idx': 0, 'state': True}, {'chan_idx': 1, 'state': False}]}
- get_analog_out_settings()
Gets analog out settings
- Returns:
settings (
dict
)
Example
>>> client.get_analog_out_settings() {'dac': [ {'amp_ntv_chan_idx': -1, 'aout_ntv_chan_idx': 0, 'stream': 0, 'stream_offset_idx': 0}, {'amp_ntv_chan_idx': -1, 'aout_ntv_chan_idx': 1, 'stream': 0, 'stream_offset_idx': 0} ], 'gain': 0, 'high_pass': {'enable': False, 'cutoff_freq': 0.0}}
- get_stim_params()
returns current stimulation params (see
set_stim_params()
)- Returns:
stim_params (
dict
) – a dictionary where the keys are the system channel indices and the values are dictionaries containing the stimulation parameters. Each dictionary associated with a channel will have the following key-value pairs:‘enabled’: stimulation enabled on channel (
bool
)‘enable_amp_settle’: amp settle enabled on channel (
bool
)‘enable_charge_recovery’: charge recovery enabled on channel (
bool
)‘first_phase_amplitude_uA’: Level of current in µA for the first phase of the stimulation waveform (type)
‘first_phase_duration_us’: (
float
)‘interphase_delay_us’: (
float
)‘maintain_amp_settle_us’: (
float
)‘number_of_stim_pulses’: (
int
)‘post_stim_amp_settle_us’: (
float
)‘post_stim_charge_recovery_off_us’: (
float
)‘post_stim_charge_recovery_on_us’: (
float
)‘post_trigger_delay_us’: (
float
)‘pre_stim_amp_settle_us’: (
float
)‘pulse_or_train’: (
int
)‘pulse_train_period_us’: (
float
)‘refactory_period_ms’: (
float
)‘second_phase_amplitude_uA’: Level of current in µA for the second phase of the stimulation waveform (type)
‘second_phase_duration_us’: (
float
)‘stim_polarity’: (
int
)‘stim_shape’: (
int
)‘stim_sys_chan_idx’: (
int
)‘trigger_edge_or_level’: (
int
)‘trigger_high_or_low’: (
int
)‘trigger_source_is_keypress’: (
bool
)‘trigger_source_idx’: (
int
)
Example
>>> get_stim_params() {6: # system idx {'stim_shape': 0, 'stim_polarity': 0, 'first_phase_duration_us': 100.0, 'second_phase_duration_us': 100.0, 'interphase_delay_us': 100.0, 'first_phase_amplitude_uA': 0.0, 'second_phase_amplitude_uA': 0.0, 'baseline_voltage': 0.0, 'trigger_edge_or_level': 0, 'trigger_high_or_low': 0, 'enabled': False, 'post_trigger_delay_us': 0.0, 'pulse_or_train': 0, 'number_of_stim_pulses': 2, 'pulse_train_period_us': 10000.0, 'refactory_period_ms': 1.0, 'pre_stim_amp_settle_us': 0.0, 'post_stim_amp_settle_us': 0.0, 'maintain_amp_settle_us': False, 'enable_amp_settle': False, 'post_stim_charge_recovery_on_us': 0.0, 'post_stim_charge_recovery_off_us': 0.0, 'enable_charge_recovery': False, 'trigger_source_is_keypress': True, 'trigger_source_idx': 1, 'stim_sys_chan_idx': 6 # redundant but expected when setting stim params }, {...}
- set_sampling_freq(fs)
Sets sampling frequency. Valid sampling frequencies: 625, 1000, 1250, 1500, 2000, 2500, 3000, 3333, 4000, 5000, 6250, 8000, 10000, 12500, 15000, 20000, 25000, 30000
- Parameters:
fs (
int
) – requested sampling frequency (samples/sec)- Returns:
None
Example
>>> client.set_samp_freq(12500) None
- set_analog_out_high_pass(cutoff_freq, enable=True)
Sets the analog out hardware filter
- Parameters:
fs (
int
) – requested sampling frequency (samples/sec)- Returns:
analog_out_settings (
dict
)
Example
>>> client.set_dac_high_pass(500, True) {...}
- set_sensor(port, headstage_id, probe_id)
Sets a sensor (headstage paired with probe) to the requested port.
- The
headstage_id
andprobe_id
arguments are: the labels listed in the
Allego
andVidere
Probe Model
UI tab.aliases in radiens.utils.HEADSTAGE_ALIAS and radiens.utils.PROBE_ALIAS
- Parameters:
- Returns:
None
Example
>>> client.set_sensor('A', 'smart-32', '4x8-32') None
Notes
radiens.utils.HEADSTAGE_ALIAS
andradiens.utils.PROBE_ALIAS
are an abridged set of headstage and probe aliases provided for convienence.See also
get_available_sensors()
get_connected_ports()
- The
- set_time_to_cache_head()
Sets current time to most recent time point in signal cache.
This should be called before the first call of
get_signals()
. The first call ofget_signals()
will return the new signals since the last call toset_time_to_cache_head()
- set_manual_stim_trigger(trigger)
- set_stim_params(param_dict)
Sets stimulation parameters to a stim channel. Any parameter not specified in the parameter
param_dict
will be kept as is, or set to default parameter, if not already set (seeget_stim_params()
).- Parameters:
param_dict –
has following key-value pairs; comments are defaults:
’enabled’: # False
’enable_amp_settle’: # False
’enable_charge_recovery’: # False
’first_phase_amplitude_uA’: # 0
’first_phase_duration_us’: # 0
’interphase_delay_us’: # 0
’maintain_amp_settle_us’: # 0
’number_of_stim_pulses’: # 2
’post_stim_amp_settle_us’: # 0
’post_stim_charge_recovery_off_us’: # 0
’post_stim_charge_recovery_on_us’: # 0
’post_trigger_delay_us’: # 0
’pre_stim_amp_settle_us’: # 0
’pulse_or_train’: # 0
’pulse_train_period_us’: # 0
’refactory_period_ms’: # 1
’second_phase_amplitude_uA’: # 0
’second_phase_duration_us’: # 0
’stim_polarity’: # 0
’stim_shape’: # 0
’stim_sys_chan_idx’: # 0
’trigger_edge_or_level’: # 0
’trigger_high_or_low’: # 0
’trigger_source_is_keypress’: # True
’trigger_source_idx’: # 0
- set_streaming(mode)
Sets signal streaming to ‘on’ or ‘off’
- Parameters:
mode – requested mode,
on
oroff
Example
>>> client.set_streaming('on') None
- set_recording(mode)
Sets signal recording to ‘on’ or ‘off’
- Parameters:
mode (
str
) – requested mode,on
oroff
- Returns:
None
- Side Effect:
sets streaming on if
mode=``on`
and streaming is off
Example
>>> client.set_recording('on') `AllegoState`
- set_recording_config(datasource_path, datasource_name, datasource_idx, is_time_stamp=True)
Sets recording configuration
- Parameters:
- Returns:
None
Example
>>> client.set_recording_config('~/radix/data', 'my_base_name', 0, True) None
- class radiens.VidereClient(hub_name='default')
VidereClient implements the radiens API for offline analysis and visualization. It matches and extends the functionality of the Radiens Videre UI app.
- property hubs
dict of active radiens hubs, with hub ID as key.
- property hub
Radiens hub for this instance of VidereClient.
- property id
UID of this client session.
- signal_metrics()
Videre signal metrics API
- spike_sorter()
Videre spike sorter API
- spikes()
Videre spikes API
- signals()
Signals API
- link_data_file(path, calc_metrics=True, force=False, hub_name='default', link_spikes=True)
Links a Radiens data file to the Radiens hub and returns the data set meta data. If force=False (default) and the ‘path’ is already linked then nothing is done and existing data set meta data is returned. Use force=True to always link the source as a new dataset. All instances of a linked data set are backed by the same data files.
- Parameters:
- Returns:
data_source (
DatasetMetadata
) – data file metadata
See also
rename_file()
clear_dataset()
get_dataset_ids()
- get_data_file_metadata(dataset_idx=None, dataset_id=None, path=None, hub_name='default', fail_hard=False)
Returns meta data for one Radiens dataset or file. The dataset can be requested by index, ID or full path, in that order of preference.
- Parameters:
dataset_idx (
int
) – index of dataset in table returned byget_dataset_ids()
dataset_id (
str
) – dataset ID as listed in table returned byget_dataset_ids()
path (
str, pathlib.Path
) – full path to data file set in form ofpath/base_name.ext
.hub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)fail_hard (
bool
) – if True, then an exception is raised if the requested dataset is not available.
- Returns:
dataset_meta (
DatasetMetadata
) – data set metadata
- Side Effects:
If the requested dataset is specified by
path
, then it is linked to the hub and remains linked.
See also
rename_file()
_clear_dataset()
get_dataset_ids()
- clear_dataset(dataset_idx=None, dataset_id=None, path=None, hub_name='default', fail_hard=False)
Clears one or more datasets of this Curate session from the Radiens hub. Use dataset_id=’all’ to clear all session datasets. This is a power user function.
- Parameters:
source (
str, list
) – data source file or list of data source files.dataset_id (
str, list
) – dataset ID or list of dataset IDs (default=[], ‘all’ clears all datasets for the Curate session)hub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
num_unlinked (
int
) – number of unlinked datasetsdataset_ids (
pandas.DataFrame
) – linked dataset IDs on the Radiens hub.
See also
- get_dataset_ids(hub_name='default')
Returns sorted list of linked dataset IDs on the Radiens hub.
- Returns:
dataset_ids (
pandas.DataFrame
) – linked dataset IDs on the Radiens hub.
See also
- dashboard(close=False, hub_name='default')
Launches a dashboard for the Radiens Hub
- Returns:
None
- summa_list_sessions(hub_name='default')
Lists the current Summa analysis sessions for the Radiens Hub
- Returns:
None
- summa_clear_sessions(hub_name='default')
Lists the current Summa analysis sessions for the Radiens Hub
- Returns:
None
- summa_launch_session_analysis(summa_id=None, dataset_ids=None, bin_dur_sec=1.0, hub_name='default')
Launches a new Summa analysis session.
- Returns:
status (
SummaStatus
) – Summa analysis status.
- summa_session_status(summa_id=None, hub_name='default')
Launches a dashboard for the Radiens Hub
- Returns:
None
- summa_get_session_aggregate_statistics(summa_id=None, hub_name='default')
Launches a dashboard for the Radiens Hub
- Returns:
None
- summa_get_session_datasource_statistics(summa_id=None, dataset_ids=None, hub_name='default')
Launches a dashboard for the Radiens Hub
- Returns:
None
- class radiens.CurateClient
CurateClient implements the radiens API for data curation. It matches and extends the functionality of the Radiens Curate UI app.
- property hubs
dict of active radiens hubs, with hub ID as key.
- property id
UID of this client session.
- signal_metrics()
Signal metrics API
- spikes()
Spikes API
- property dsp_stream
dict of DSP streams running in the background.
- dsp_clean_up()
Cleans up after any DSP operation that has finished.
- Returns:
None
Examples
>>> stream_id = client.dsp_low_pass_filter(750, './my_source_file', './my_output_file') >>> progress_bar(stream_id)
See also
- progress_bar(stream_id)
Displays a progress bar showing the progress of the DSP stream running in the background. This function blocks until the background DSP stream is complete. This is an optional function that does not effect the DSP operation.
- Parameters:
stream_id (
str
) – stream ID of the requested DSP stream.- Returns:
None
Examples
>>> stream_id = client.dsp_low_pass_filter(750, './my_source_file', './my_output_file') >>> progress_bar(stream_id)
See also
- dsp_progress(stream_id)
Returns the progress of the ‘stream_id’ DSP stream running in the background. It returns 1.0 if the DSP operation has completed. It is non-blocking.
- Parameters:
stream_id (
str
) – stream ID of the requested DSP stream.- Returns:
frac_complete (
float
) – fraction complete of the DSP stream.
Examples
>>> stream_id = client.dsp_low_pass_filter(750, './my_source_file', './my_output_file') >>> dsp_progress(stream_id) >>> 0.5
See also
dsp_progress_bar()
dsp_low_pass_filter()
- dsp_low_pass_filter(cutoff_freq, source_path, target_path, force=False, hub_name='default')
Applies low-pass filter to source file to result in target file.
The requested cut-off frequency must be < fs/2, where fs is the sample frequency of the source file.
- Parameters:
cutoff_freq (
float
) – filter cut-off frequency in samples/sec (Hz)source_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking and the requested DSP operation runs in the background.
Example
>>> client.dsp_low_pass_filter(750, './my_source_file', './my_output_file') my_stream_id_e4c-jnwq
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_high_pass_filter(cutoff_freq, source_path, target_path, force=False, hub_name='default')
Applies high-pass filter to source file to result in target file.
The requested cut-off frequency must be < fs/2, where fs is the sample frequency of the source file.
- Parameters:
cutoff_freq (
float
) – filter cut-off frequency in samples/sec (Hz)source_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking and the requested DSP operation runs in the background.
Example
>>> client.dsp_high_pass_filter(20, './my_source_file', './my_output_file') None
- dsp_band_pass_filter(low_cutoff_freq, high_cutoff_freq, source_path, target_path, force=False, hub_name='default')
Applies band-pass filter to source file to result in target file.
The requested cut-off frequencies must be < fs/2, where fs is the sample frequency of the source file. The low_cutoff_freq must be less than the high_cutoff_freq.
- Parameters:
low_cutoff_freq (
float
) – filter low cut-off frequency in samples/sec (Hz)high_cutoff_freq (
float
) – filter high cut-off frequency in samples/sec (Hz)source_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_band_pass_filter(750, 2000, './my_source_file', './my_output_file') my_stream_id_e4c-jtyn4
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_band_stop_filter(low_cutoff_freq, high_cutoff_freq, source_path, target_path, force=False, hub_name='default')
Applies band-stop (aka band reject) filter to source file to result in target file.
The requested cut-off frequencies must be < fs/2, where fs is the sample frequency of the source file. The low_cutoff_freq must be less than the high_cutoff_freq.
- Parameters:
low_cutoff_freq (
float
) – filter low cut-off frequency in samples/sec (Hz)high_cutoff_freq (
float
) – filter high cut-off frequency in samples/sec (Hz)source_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_band_stop_filter(750, 2000, './my_source_file', './my_output_file') my_stream_id_e4c-jtyn4
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_notch_filter(freq, bandwidth, source_path, target_path, force=False, hub_name='default')
Applies notch filter to source file to result in target file.
The requested frequency must be < fs/2, where fs is the sample frequency of the source file.
- Parameters:
freq (
float
) – notch frequency in samples/sec (Hz)bandwidth (
float
) – filter bandwidth in samples/sec (Hz)source_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_notch_filter(50, 2, './my_source_file', './my_output_file') my_stream_id_e4c-lkqw
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_paired_diff(source_chan, ref_chan, source_path, target_path, force=False, hub_name='default')
Applies paired differential transform to the source file resulting in the target file.
The source channel is set to the new value = (source-reference) for each time sample. The reference signal is zeroed.
- Parameters:
source_chan (
int
) – source channel indexref_chan (
int
) – reference channel indexsource_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_paired_diff(1, 5, './my_source_file', './my_output_file') my_stream_id_e4c-rt4m
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_virtual_ref(ref_chan, source_path, target_path, force=False, hub_name='default')
Applies virtual reference transform to the source file resulting in the target file.
All channels are set to the new value = (chan-ref_chan) for each time sample. The reference channel is zeroed.
- Parameters:
ref_chan (
int
) – reference channel indexsource_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_virtual_ref(5, './my_source_file', './my_output_file') my_stream_id_e4c-wq5c
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_car(source_path, target_path, force=False, hub_name='default')
Applies common average reference transform to the source file resulting in the target file.
All channels are set to the new value = (chan-v_ref) for each time sample, where v_ref is the sum of all the channels.
- Parameters:
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_car('./my_source_file', './my_output_file') my_stream_id_e4c-wq5c
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- dsp_time_decimate(decimate, source_path, target_path, force=False, hub_name='default')
Applies time decimation transform to the source file resulting in the target file.
All channels are decimated in time by ‘decimate’. The target file sampling frequency is equal to the source file sampling frequency divided by ‘decimate’ For example, if ‘decimate=2’ and ‘source_sampling_freq=10000’, then the target file consists of every two source channel samples and ‘target_sampling_freq=5000’
- Parameters:
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files must be XDAT files. This is non-blocking. The requested DSP operation runs in the background.
Example
>>> client.dsp_time_decimate(3, './my_source_file', './my_output_file') my_stream_id_e4c-wq5c
See also
dsp_progress()
dsp_progress_bar()
dsp_high_pass_filter()
- file_convert(source_path, dest_path, dest_file_type, force=False, hub_name='default')
Converts source file to target file.
- Parameters:
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
The source and target files
- dsp_slice_time(time_start, time_end, source_path, target_path, force=False, hub_name='default')
Slices the source data file in time to result in the target file.
- Parameters:
time_start (
float
) – slice start time in secondstime_end (
float
) – slice end time in secondssource_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
“time_start” and “time_end” are the absolute time in the source file. The source and target files must be XDAT files. This is non-blocking and the requested DSP operation runs in the background.
Example
>>> client.dsp_slice_time(0.5, 10, './my_source_file', './my_output_file') None
See also
dsp_progress()
dsp_progress_bar()
dsp_slice_channels()
- dsp_slice_channels(target_channels, source_path, target_path, force=False, hub_name='default')
Slices out (removes) the target channels from source data file to result in the target file.
- Parameters:
target_channels (
list
) – channel indices of channels to slice from the sourcesource_path (
str, pathlib.Path
) – path to source filetarget_path (
str, pathlib.Path
) – path to target (output) fileforce (
bool
) – flag to force replacing target file if it existshub_name (
str
) – radiens hub name (default=radiens.utils.constants.DEFAULT_HUB)
- Returns:
stream_id (
str
) – background DSP stream ID
Notes
“target_channels” are the absolute channel indices of the source file, including GPIO signals. The source and target files must be XDAT files. This is non-blocking and the requested DSP operation runs in the background.
Example
>>> client.dsp_slice_channels([0,2,8,5], './my_source_file', './my_output_file') None
See also
dsp_progress()
dsp_progress_bar()
dsp_slice_time()
SubClients API
- class radiens.workspace_client.WorkspaceClient
Workspace client object for AllegoClient
- property hubs
dict of active radiens hubs, with hub ID as key.
- property id
UID of this client session.
- workspace_save(workspace_id=None, tags='', notes='')
Saves current workspace
- Parameters:
- Returns:
None
Example
>>> client.workspace_save(workspace_id='my_wspace', tags='my_tags', notes='my_notes) None
- workspace_switch(workspace_id)
Switches to requested workspace
- Parameters:
workspace_id (
str
) – workspace ID- Returns:
None
Example
>>> client.workspace_switch('my_wspace') None
- workspace_delete(workspace_id)
Deletes requested workspace
- Parameters:
workspace_id (
str
) – workspace ID- Returns:
None
Example
>>> client.workspace_delete('my_wspace') None
- workspace_current()
Returns current workspace ID
- Returns:
workspaces (
pandas.DataFrame
)
Example
>>> client.workspace_current() df
- workspace_list()
Returns table of all available workspaces
- Returns:
workspaces (
pandas.DataFrame
)
Example
>>> client.workspace_list() df
- class radiens.spike_sorter_client.SpikeSorterClient(parent_client)
Spike sorter client object for AllegoClient, VidereClient
- initialize()
Stops, clears, and initializes spike sorter to its default parameters.
- Returns:
None
Example
>>> client.spike_sorter().initialize() None
- rebase()
Rebases the spike sorter, which clears all spike data and spike templates.
- Returns:
None
Example
>>> client.spike_sorter().rebase() None
- clear_spikes()
Clears all spike data from the spike sorter, but does not clear it’s sorting settings or spike templates.
- Returns:
None
Example
>>> client.spike_sorter().clear_spikes() None
- set_sorting(mode)
Sets spike sorting on or off
- Parameters:
mode (
str
) – mode [on
,off
]- Returns:
None
Example
>>> client.spike_sorter().set_sorting('on') None
- set_threshold_level(neg_thr=None, pos_thr=None, scale='uV', ntv_idxs=None, weak_thr=False, channel_meta=None)
Sets spike detection threshold levels. This function does not effect the threshold state.
- Parameters:
- Returns:
msg (
str
) – summary description of threshold levels
Example
>>> client.spike_sorter().set_threshold_level(neg_thr=85) '[32 channels] detect: neg thr=85.00 uV, pos thr=n/a uV'
See also
set_threshold()
get_channel_metadata()
- set_threshold(neg_thr=None, pos_thr=None, ntv_idxs=None, weak_thr=False, channel_meta=None)
Set threshold ‘on’ or ‘off’
- Parameters:
- Returns:
msg (
str
) – summary description of threshold levels
Example
>>> client.spike_sorter().set_threshold(neg_thr='on') '[32 channels] detect: neg thr='on', pos thr=n/a'
See also
set_threshold_level()
get_channel_metadata()
- set_spike_window(pre_thr_ms=None, post_thr_ms=None)
Set spike window.
- Parameters:
- Returns:
msg (
str
) – summary description of spike window
Example
>>> client.spike_sorter().set_threshold(neg_thr='on') '[32 channels] detect: neg thr='on', pos thr=n/a'
See also
set_threshold_level()
get_channel_metadata()
- set_spike_shadow(shadow_ms=None)
Sets spike shadow window. The shadow window is the time skipped after each threshold crossing.
- Parameters:
shadow_ms (
float
) – shadow window duration in ms (default None=not changed)- Returns:
msg (
str
) – summary description of spike shadow window
Example
>>> client.spike_sorter().set_spike_shadow(1.5) '[32 channels] shadow window: 1.5 ms [40 points]'
See also
set_threshold_level()
get_channel_metadata()
- get_params()
Returns the spike sorter parameters as a table.
- Returns:
pandas.DataFrame
Example
>>> client.sorter_get_params() None
- get_state()
Returns the spike sorter state as a table.
- Returns:
pandas.DataFrame
Example
>>> client.sorter_get_state() None
- get_dashboard()
Returns the spike sorter dashboard as a table.
- Returns:
pandas.DataFrame
Example
>>> client.sorter_get_dashboard() None
- class radiens.spikes_client.SpikesClient(parent_client)
Spikes object for AllegoClient, VidereClient
- get_spikes_metadata()
Returns metadata on the spikes processed by the spike sorter
- Returns:
pandas.DataFrame
Example
>>> client.get_spikes() None
- get_spike_rasters(dsource_id=None)
Returns spike rasters from the spike sorter
- Returns:
pandas.DataFrame
Example
>>> client.get_spikes() None
- get_recent_spikes(time_wdw_sec=1.0, ntv_chan_idxs=None, max_spikes_per_chan=100, channel_meta=None)
Returns the most recent spikes for the requested
ntv_chan_idxs
over the requested time window. The returned spike data has spike timestamps, spike waveforms, and spike labels.- Returns:
pandas.DataFrame
Example
>>> client.get_spikes() None
- get_spike_waveforms(dataset_id, time_range=None, hub_name='default')
Gets spike waveforms for specified time range of a spikes file
- Parameters:
dataset_id (
str
) – dataset IDtime_range (
list[float]
) –ntv_idxs (
list[float]
) –
Returns:
- get_spike_timestamps(dataset_id, time_range=None, hub_name='default')
Gets spike timestamps for specified time range of a spikes file
- Parameters:
dataset_id (
str
) – dataset IDtime_range (
list[float]
) –
Returns:
- get_neurons()
Returns neurons from the spike sorter
- Returns:
pandas.DataFrame
Example
>>> client.get_spikes() None
- convert_kilosort_output(source_bio_path='', source_bio_basename='', source_vex_path='', source_vex_basename='', sink_bio_path='', sink_bio_basename='', hub_name='default')
Converts the output of kilosort into a .spikes file that can be loaded into radiens
- class radiens.metrics_client.MetricsClient(parent_client)
Metrics client object for CurateClient, VidereClient
- clear(dataset_metadata=None, hub_name='default')
Clears KPI data. This is only available for
CurateClient
andVidereClient
- Parameters:
dataset_metadata (
DatasetMetadata
) – dataset metadata object- Returns:
None
Example
>>> client.signal_metrics().clear() None
See also
- calculate(dataset_metadata=None, hub_name='default')
Calculates and saves signal metrics for a linked dataset. If
cmd=standard
, then signal metrics are calculated using the set of standard parameters: thresholds: 2.0 * Vex_rms (negative and positive)If
cmd=standard
, then signal metrics are calculated using the existing signal metrics parameters (thresholds, windows, etc.)This is only available for CurateClient and VidereClient
- Parameters:
dataset_metadata (
DatasetMetadata
) – dataset metadata object- Returns:
None
Example
>>> client.signal_metrics().calculate() None
See also
- set_event_threshold_level(neg_thr=None, pos_thr=None, scale='uV', ntv_idxs=None, weak_thr=False, dataset_metadata=None, hub_name='default', channel_meta=None)
Sets the signal metrics event (spike) detection threshold. This function does not effect the threshold state.
- Parameters:
neg_thr (
str
) –on
|off
pos_thr (
str
) –on
|off
scale (
str
) –uV
|sd
ntv_idxs (
list
) – channel native indices (default None=all channels)weak_thr (
bool
) – use True to set the weak threshold (default=False)dataset_metadata (
DatasetMetadata
) – dataset metadata objectchannel_metadata (
ChannelMetadata
) – Allego connected channels
- Returns:
msg (
str
) – summary description of threshold levels
Example
>>> client.signal_metrics().set_threshold_level(neg_thr=85) '[32 channels] detect: neg thr=85.00 uV, pos thr=n/a uV'
See also
set_threshold()
get_channel_metadata()
- set_event_threshold(neg_thr=None, pos_thr=None, ntv_idxs=None, weak_thr=False, dataset_metadata=None, hub_name='default', channel_metadata=None)
Sets signal metrics event (spike) detection threshold ‘on’ or ‘off’.
- Parameters:
neg_thr (
str
) –on
|off
pos_thr (
str
) –on
|off
ntv_idxs (
list
) – channel native indices (default None=all channels)weak_thr (
bool
) – use True to set the weak threshold (default=False)dataset_metadata (
DatasetMetadata
) – dataset metadata objectchannel_metadata (
ChannelMetadata
) – Allego connected channels
- Returns:
msg (
str
) – summary description of threshold levels
Example
>>> client.signal_metrics().set_event_threshold(neg_thr='on') '[32 channels] detect: neg thr='on', pos thr=n/a'
See also
set_threshold_level()
get_channel_metadata()
- set_event_window(pre_ms, post_ms, dataset_metadata=None, hub_name='default', channel_metadata=None)
Sets signal metrics event (spike) window
- Parameters:
pre_ms (
float
) – ms before eventpost_ms (
float
) – ms after eventdataset_metadata (
DatasetMetadata
) – dataset metadata objectchannel_metadata (
ChannelMetadata
) – Allego connected channels
- Returns:
msg (
str
) – summary description of event window
Example
>>> client.signal_metrics().set_event_window(2, 2) '[32 channels] event window: pre-threshold=2 ms, post-threshold=2 ms
See also
set_threshold_level()
get_channel_metadata()
- set_event_shadow(shadow_ms, dataset_metadata=None, channel_metadata=None, hub_name='default')
Sets signal metrics event (spike) shadow time in milliseconds.
- Parameters:
shadow_ms (
float
) – duration of shadow in millisecondsdataset_metadata (
DatasetMetadata
) – dataset metadata objectchannel_metadata (
ChannelMetadata
) – Allego connected channels
- Returns:
msg (
str
) – summary description of event shadow
Example
>>> client.signal_metrics().set_event_shadow(1) '[32 channels] event shadow 1 ms'
See also
set_threshold_level()
get_channel_metadata()
- set_packet_duration(packet_dur_sec, dataset_metadata=None, hub_name='default')
Sets signal metrics packet duration in seconds
- Parameters:
packet_dur_sec (
float
) – duration in seconds of signals used to calculate signal metrics packetdataset_metadata (
DatasetMetadata
) – dataset metadata object
- Returns:
msg (
str
) – summary description of threshold levels
Example
>>> client.signal_metrics().set_packet_duration(neg_thr='on') None
See also
set_threshold_level()
get_channel_metadata()
- get_params(dataset_metadata=None, hub_name='default')
Returns signal metrics parameters as a table.
- Parameters:
dataset_metadata (
DatasetMetadata
) – metadata on linked datasethub_name (
str
) – Radiens hub name (default = DEFAULT_HUB, optional)dataset_metadata – dataset metadata object
- Returns:
pandas.DataFrame
- get_metrics_status(dataset_metadata=None, hub_name='default')
Returns the status of the signal metrics service. This is an advanced function and is not typically used.
- Parameters:
dataset_metadata (
DatasetMetadata
) – dataset metadata object- Returns:
status (
dict
) – dict of status parameters, with keys=’time_range’,’packet_dur_sec’, ‘beta’, ‘is_tracking_cache’, ‘wall_time_start’, ‘persistence_sec’
- get_metrics(time_range=None, metrics=None, ntv_idxs=None, tail=True, plot=True, file=None, data=True, dataset_metadata=None, hub_name='default', channel_metadata=None)
Gets the requested signal metrics from a linked dataset.
- Parameters:
time_range (
int, float, list, ndarray
) – if parent client isAllegoClient
, then this parameter can befloat
orint
; otherwise, it must belist
orndarray
metrics (
list
) – a list ofMetricID
. It specified a default list is used.dataset_metadata (
DatasetMetadata
) – dataset metadata objectchannel_metadata (
ChannelMetadata
) – Allego connected channels
- Returns:
SignalMetrics (
SignalMetrics
) – Requested metrics
- class radiens.signals_client.SignalsClient(parent_client)
Signals client object for Allego, Curate, and Videre
- get_signals(time_range=None, sel_mode=None, sig_sel=None, dataset_metadata=None, hub_name='default')
Gets signals over the specified time range from a linked dataset.
- Parameters:
time_range (
TimeRange
) – seemake_time_range()
dataset_metadata – see
link_data_file()
andget_data_file_metadata()
sel_mode – optional (default
TrsMode.SUBSET
)sig_sel – optional
hub_name – optional
- Returns:
signals (
Signals
)
- get_psd(time_range=None, sel_mode=None, sig_sel=None, samp_freq=2000.0, freq_range=[1, 300], collapse_freq=False, scaling=PsdScaling.ABSOLUTE, window=FftWindow.HAMMING_p01, freq_resolution=None, file=None, dataset_metadata=None, hub_name='default')
Gets the power spectral density (PSD) for the specified signals over the specified time range.
- Parameters:
time_range (
TimeRange
) – requested time range in seconds (required)sel_mode (
TrsMode
) – time range selection mode (optional, default=TrsMode.SUBSET)sig_sel (
SigSelect
) – requested AMP signals (optional, default=all AMP signals)samp_freq (
float
) – PSD sample frequency in Hz. (optional, default=dataset_metadata.TR.fs)freq_range (
list, np.ndarray
) – requested frequency range. (optional, default=[1, 300])collapse_freq (
bool
) – True collapsesfreq_range
into one frequency bin (optional, default=False)scaling (
PsdScaling
) – sets the PSD scale (optional, default=PsdScaling.ABSOLUTE)window (
FftWindow
) – sets the FFT window(optional, default=FftWindow.HAMMING_p01)freq_resolution (
float
) – requested frequency resolution in Hz (optional, default=None)file (
string
) – save psd data to file (optional, default=None)dataset_metadata (
DatasetMetadata
) – dataset metadata (required for Videre, optional for Allego, default=None)hub_name (
str
) – Radiens hub name (optional, default=DEFAULT_HUB)
- Returns:
psd (
PSD
) – container object for PSD data.
Enums
- class radiens.utils.enums.ClientType(value)
TYPE is used to specify the type of client.
- ALLEGO = 'AllegoClient'
Allego client
- VIDERE = 'VidereClient'
Videre client
- CURATE = 'CurateClient'
Curate client
- class radiens.utils.enums.KeyIndex(value)
An enumeration of key index types.
See also
Example
>>> key_ind = KeyIndex.NTV
Valid values are as follows:
- NTV = 0
The native key index is the position of the signal (channel) trace when the backing dataset was created for each signal type. For recording files, it is the position of the channels in the DAQ data stream or primary data file. The
ntv
index starts at zero for each signal type.
- DATA = 1
The dataset key index is the position of a signal trace in the backing dataset for each signal type. Unless the signal traces in the dataset were re-ordered,
dset
will equalntv
. Thedset
index starts at zero for each signal type.
- SYS = 2
The system key index starts at zero and increases in natural order over all signal types, always in the following order:
'amp'
,'gpio_ain'
,'gpio_din'
,'gpio_dout'
.
- class radiens.utils.enums.PsdScaling(value)
PsdScaling is used to set the power spectral density (PSD) scale.
- ABSOLUTE = 0
absolute scale
- class radiens.utils.enums.SignalUnits(value)
An enumeration.
- UNKNOWN = 0
unknown units
- MICROVOLTS = 1
microvolts
- VOLTS = 2
volts
- BINARY = 3
binary
- class radiens.utils.enums.FftWindow(value)
FftWindow is used to set the time-domain window function for power spectral density (PSD) analysis.
- HAMMING_p01 = 0
Hamming window with 1% overlap
- HAMMING_p05 = 1
Hamming window with 5% overlap
- PASS_THROUGH = 2
pass-through (no windowing)
- class radiens.utils.enums.RadiensFileType(value)
An enumeration of Radiens file types
- RHD = 0
RHD file
- XDAT = 1
XDAT file
- CSV = 2
CSV file
- HDF5 = 3
HDF5 file
- NEX5 = 4
NEX5 file
- NWB = 5
NWB file
- KILOSORT2 = 8
Kilosort2 (bin) file
- NSX = 13
NSX file
- TDT = 15
TDT file
- SPIKES = 16
Spikes file
- class radiens.utils.enums.MetricMode(value)
An enumeration.
- BASE = 0
base packet
- AVG = 1
running average of all base packets in the stream
- STREAM = 2
cumulative over all base packets in the stream
- class radiens.utils.enums.MetricName(value)
An enumeration.
- NUM_PTS = 0
Number of points in packet
- NUM_PTS_ISI = 1
Number of interspike intervals in packet
- DUR_SEC = 2
Packet duration in seconds
- MEAN = 3
Mean signal level in packet
- MIN = 4
Minimum signal level in packet
- MIN_ISI = 5
Minimum interspike signal level in packet
- MAX = 6
Maximum signal level in packet
- MAX_ISI = 7
Maximum interspike signal level in packet
- MAX_ABS = 8
Absolute maximum signal level in packet
- MAX_ABS_ISI = 9
Absolute maximum interspike signal level in packet
- TIMESTAMP_MIN = 10
Timestamp of minimum signal level in packet
- TIMESTAMP_MAX = 11
Timestamp of maximum signal level in packet
- MAX_MIN_DIFF_ABS = 12
Absolute difference between maximum and minimum signal levels in packet
- MAX_MIN_DIFF_ABS_ISI = 13
Absolute difference between maximum and minimum interspike signal levels in packet
- SD = 14
Signal standard deviation in packet
- SD_ISI = 15
Signal standard deviation calculated over interspike intervals
- VAR = 16
Signal variance in packet
- VAR_ISI = 17
Signal variance calculated over interspike intervals
- RMS = 18
Root mean square (RMS) signal value in packet
- RMS_ISI = 19
RMS signal value calculated over interspike intervals
- NOISE_UV = 20
Noise level in microvolts
- SNR = 21
Signal-to-noise ratio (SNR) of events in packet
- NUM_EVENTS = 22
Number of events in packet
- EVENT_RATE = 23
Event rate in packet
- EVENT_MAX = 24
Maximum amplitude of events in packet
- EVENT_MIN = 25
Minimum amplitude of events in packet
- EVENT_MAX_ABS = 26
Absolute maximum amplitude of events in packet
- EVENT_MAX_MIN_DIFF_ABS = 27
Absolute difference between maximum and minimum amplitudes of events in packet
- EVENT_TIMESTAMP_MIN = 28
Timestamp of minimum amplitude of events in packet
- EVENT_TIMESTAMP_MAX = 29
Timestamp of maximum amplitude of events in packet
- EVENT_TIMESTAMP_MAX_ABS = 30
Timestamp of maximum absolute amplitude of events in packet
- EVENT_TIMESTAMP_MAX_MIN_DIFF_ABS = 31
Timestamp of absolute difference between maximum and minimum amplitudes of events in packet
- MEAN_MAX = 32
Mean peak maximum amplitude of events in packet (max over all base packets)
- MEAN_MIN = 33
Mean peak minimum amplitude of events in packet (min over all base packets)
- MEAN_MAX_ABS = 34
Mean peak absolute maximum amplitude of events in packet (max over all base packets)
- EVENT_MEAN_MAX_MIN_DIFF_ABS = 35
Mean peak absolute amplitude of events in packet (max over all base packets)
- MAX_MIN_DIFF_ABS_AMPLIFIED = 36
Absolute difference between maximum and minimum amplitudes of events in packet, amplified
- class radiens.utils.enums.TrsMode(value)
TrsMode is the time range selector (TRS) enum used to control time range selection in calls to get signals, spikes, power spectral density, or similar data sets.
Example
>>> sel_mode = TrsMode.SUBSET
Given a time range [start, end) in seconds (dataset time), the selector modes are:
- SUBSET = 0
selects [start, end)
- TO_HEAD = 1
selects [start, head of stream/cache/file]
- FROM_HEAD = 2
selects [(head of stream/cache/file - start)
- class radiens.utils.enums.Port(value)
An enumeration of port types
Example
>>> port = Port.A
Valid values are as follows:
- A = 0
port A
- B = 1
port B
- C = 2
port C
- D = 3
port D
- E = 4
port E
- F = 5
port F
- G = 6
port G
- H = 7
port H
- class radiens.utils.enums.SystemMode(value)
An enumeration of system modes
Example
>>> sys_mode = SystemMode.SMARTBOX_PRO
Valid values are as follows:
- SMARTBOX_PRO = 0
Smartbox Pro
- SMARTBOX_PRO_SINAPS_256 = 13
Smartbox Pro Sinaps 256
- SMARTBOX_PRO_SINAPS_512 = 19
Smartbox Pro Sinaps 512
- SMARTBOX_PRO_SINAPS_1024 = 14
Smartbox Pro Sinaps 1024
- SMARTBOX_CLASSIC = 6
Smartbox Classic
- SMARTBOX_SIM_GEN_SINE = 1
Smartbox Sim Gen Sine
- SMARTBOX_SIM_GEN_SINE_MAPPED = 10
Smartbox Sim Gen Sine Mapped
- SMARTBOX_SIM_GEN_SINE_HIGH_FREQ = 11
Smartbox Sim Gen Sine High Freq
- SMARTBOX_SIM_GEN_SINE_MULTI_BAND = 12
Smartbox Sim Gen Sine Multi Band
- SMARTBOX_SIM_GEN_SPIKES = 2
Smartbox Sim Gen Spikes
- OPEN_EPHYS_USB2 = 8
Open Ephys USB2
- OPEN_EPHYS_USB3 = 4
Open Ephys USB3
- INTAN_USB2 = 9
Intan USB2
- INTAN_RECORDING_CONTROLLER_1024 = 5
Intan Recording Controller 1024
- INTAN_RECORDING_CONTROLLER_512 = 7
Intan Recording Controller 512
- XDAQ_ONE_REC = 15
XDAQ One Rec
- XDAQ_ONE_STIM = 16
XDAQ One Stim
- XDAQ_CORE_REC = 17
XDAQ Core Rec
- XDAQ_CORE_STIM = 18
XDAQ Core Stim