Exemplo n.º 1
0
    def read_spiketrain(fh, block_id, array_id):
        nix_block = fh.handle.blocks[block_id]
        nix_da = nix_block.data_arrays[array_id]

        params = {
            'times': nix_da[:],  # TODO think about lazy data loading
            'dtype': nix_da.dtype,
            't_start': Reader.Help.read_quantity(nix_da.metadata, 't_start'),
            't_stop': Reader.Help.read_quantity(nix_da.metadata, 't_stop')
        }

        name = Reader.Help.get_obj_neo_name(nix_da)
        if name:
            params['name'] = name

        if 'left_sweep' in nix_da.metadata:
            params['left_sweep'] = Reader.Help.read_quantity(nix_da.metadata, 'left_sweep')

        if len(nix_da.dimensions) > 0:
            s_dim = nix_da.dimensions[0]
            params['sampling_rate'] = s_dim.sampling_interval * getattr(pq, s_dim.unit)

        if nix_da.unit:
            params['units'] = nix_da.unit

        st = SpikeTrain(**params)

        for key, value in Reader.Help.read_attributes(nix_da.metadata, 'spiketrain').items():
            setattr(st, key, value)

        st.annotations = Reader.Help.read_annotations(nix_da.metadata, 'spiketrain')

        return st
Exemplo n.º 2
0
 def _align_to_zero(self, spiketrains=None):
     if spiketrains is None:
         spiketrains = self.spiketrains
     t_lims = [(st.t_start, st.t_stop) for st in spiketrains]
     tmin = min(t_lims, key=lambda f: f[0])[0]
     tmax = max(t_lims, key=lambda f: f[1])[1]
     unit = spiketrains[0].units
     for count, spiketrain in enumerate(spiketrains):
         annotations = spiketrain.annotations
         spiketrains[count] = SpikeTrain(
             np.array(spiketrain.tolist()) * unit - tmin,
             t_start=0 * unit,
             t_stop=tmax - tmin)
         spiketrains[count].annotations = annotations
     return spiketrains