Source code for neuroglia.nwb

import pandas as pd
from sklearn.base import BaseEstimator,TransformerMixin

[docs]class SpikeTablizer(BaseEstimator,TransformerMixin): """Convert a dictionary of spike times to a dataframe of spike times. It is common to store spike times as a dictionary where the keys are neuron IDs and the values are arrays of spike times for a given neuron. This transformer converts a dictionary of spike times into a table of spike times. Examples -------- >>> import numpy as np >>> import pandas as pd >>> from neuroglia.nwb import SpikeTablizer >>> binner = SpikeTablizer() >>> spike_dict = {0:[0.1,0.2,0.3],2:[0.11]} >>> spikes = binner.fit_transform(spike_dict) See also -------- neuroglia.spike.Smoother neuroglia.spike.Binner Notes ----- This estimator is stateless (besides constructor parameters), the fit method does nothing but is useful when used in a pipeline. """
[docs] def __init__(self): pass
def fit(self, X, y=None): # pragma: no cover """ Do nothing an return the estimator unchanged. This method is here to implement the scikit-learn API and work in scikit-learn pipelines. Parameters ---------- X : dictionary of spike times in the format {<neuron>:<spike_times} y : (ignored) Returns ------- self """ return self def transform(self, X): """ Convert a dictionary of spike times to a dataframe of spike times. Parameters ---------- X : dictionary of spike times in the format {<neuron>:<spike_times} Returns ------- Xt : pandas DataFrame with columns ['time','neuron'] """ population = {'neuron':[],'time':[]} for n,times in X.items(): for t in times: population['neuron'].append(n) population['time'].append(t) df = pd.DataFrame(population).sort_values('time') df.reset_index(drop=True, inplace=True) return df