Source code for allensdk.brain_observatory.ecephys.align_timestamps.channel_states

import numpy as np

from . import barcode


[docs]def extract_barcodes_from_states( channel_states, timestamps, sampling_rate, **barcode_kwargs ): """Obtain barcodes from timestamped rising/falling edges. Parameters ---------- channel_states : numpy.ndarray Rising and falling edges, denoted 1 and -1 timestamps : numpy.ndarray Sample index of each event. sampling_rate : numeric Samples / second **barcode_kwargs : Additional parameters describing the barcodes. """ on_events = np.where(channel_states == 1) off_events = np.where(channel_states == -1) T_on = timestamps[on_events] / float(sampling_rate) T_off = timestamps[off_events] / float(sampling_rate) return barcode.extract_barcodes_from_times(T_on, T_off, **barcode_kwargs)
[docs]def extract_splits_from_states( channel_states, timestamps, sampling_rate, **barcode_kwargs ): """Obtain data split times from timestamped rising/falling edges. Parameters ---------- channel_states : numpy.ndarray Rising and falling edges, denoted 1 and -1 timestamps : numpy.ndarray Sample index of each event. sampling_rate : numeric Samples / second **barcode_kwargs : Additional parameters describing the barcodes. """ split_events = np.where(channel_states == 0) T_split = timestamps[split_events] / float(sampling_rate) if len(T_split) == 0: T_split = np.array([0]) return T_split
[docs]def extract_splits_from_barcode_times( barcode_times, tolerance=0.0001 ): """Determine locations of likely dropped data from barcode times Parameters ---------- barcode_times : numpy.ndarray probe barcode times tolerance : float Timing tolerance (relative to median interval) """ barcode_intervals = np.diff(barcode_times) median_interval = np.median(barcode_intervals) irregular_intervals = np.where(np.abs(barcode_intervals - median_interval) > tolerance * median_interval)[0] T_split = [0] for i in irregular_intervals: T_split.append(barcode_times[i-1]) if i+1 < len(barcode_times): T_split.append(barcode_times[i+1]) return np.array(T_split)
#