Skip to content

SpikeTrain waveform as AnalogSignalArray #105

Open
@toddrjen

Description

@toddrjen

Originally from #62 Remove sampling_rate from SpikeTrain

crodger wrote on 2011-09-28 01:15:59:

Actually it has not been clarified exactly what waveforms should be yet. Let me propose this:

* `waveforms` is a list of AnalogSignalArray
* len(sptr.waveforms) = len(sptr)
* sptr.waveforms[n].shape = (N_channels, spike_duration_in_channels)
* sptr.waveforms[n].t_start = sptr[n] - left_sweep
* sptr.waveforms[n].sampling_rate = sampling_rate

Then we do not need sampling rate or left sweep in sptr. It makes sense because these are properties of the waveforms, not the spike times. We also allow flexibility: each spike can be sliced differently.

Also, since t_start and sampling_rate are required (or highly recommended) for AnalogSignalArray, we will have to specify these attributes for each entry in sptr.waveforms anyway.

We can even define a property of SpikeTrain for left_sweep and sampling rate.

@property
def left_sweep(self):
  x = np.unique([self - wf.t_start for wf in self.waveforms])
  if len(x) == 1:
    return x[0]
  else: 
    raise ValueError("sampling rates are not consistent")

If the user knows that left_sweep should be consistent, this property confirms it. If left_sweep is not supposed to be consistent, the user should not be accessing the property anyway, so it appropriate to raise an exception. We can add another property without error checking if desired.

Actually it will need to be slightly more complicated because these values are floats, but you get the idea.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions