def data_aligned(container): """ Check if all signals are aligned at the same time line, regarding (start, stop). Parameters ---------- container : list, tuple, iterable, dict, neo container The container for the neo objects. tuple: list of AnalogSignal objects and list of SpikeTrain objects A tuple consisting of two list with AnalogSignal and SpikeTrain objects. Returns ------- sigs, sts: `neo.core.AnalogSignal` and `neo.core.SpikeTrain` objects All time aligned objects regarding the same start and stop time are returned. """ as_time_list = [] st_time_list = [] sts = [] sigs = [] try: sts = nt.get_all_spiketrains(container) sigs = nt.get_all_analogsignals(container) except TypeError: if sts: sigs = [] sts = nt.get_all_spiketrains(container) else: sts = [] sigs = nt.get_all_analogsignals(container) # Empty signals if not (sts or sigs): return [] for st in sts: st_time_list.append((st.t_start, st.t_stop)) for sig in sigs: as_time_list.append((sig.t_start, sig.t_stop)) # Check if start and stop times are equal if len(as_time_list) == 0: if st_time_list.count(st_time_list[0]) != len( st_time_list): return [] elif len(st_time_list) == 0: if as_time_list.count(as_time_list[0]) != len( as_time_list): return [] else: if np.equal(st_time_list, as_time_list).all() is False: return [] if sigs: sigs.extend(sts) return sigs else: return sts
def contains_each_unit(container): """ Each `neo.core.SpikeTrain` object of given input has a link to each `neo.core.Unit`. Parameters ---------- container : list, tuple, iterable, dict, neo container The container for the neo objects. Returns ------- sts : list of neo.core.SpikeTrain objects List of `neo.core.SpikeTrain` objects with a link to each neo.core.Unit """ units = nt.get_all_units(container) sts = nt.get_all_spiketrains(container) return [spk for spk in filter(lambda st: st.unit in units, sts)]
def each_train_exact_n_spikes(container, n): """ Each SpikeTrain of the trial must have `n` spikes. Parameters ---------- container : list, tuple, iterable, dict, neo container The container for the neo objects. n: int Number of spikes each SpikeTrain object must have. Returns ------- """ if n < 1: raise ValueError("Please provide a number greater than %d, " "when setting the condition for an exact number " "of Spikes in each SpikeTrain." % n) sts = nt.get_all_spiketrains(container) return [st for st in filter(lambda st: np.size(st) == n, sts)]
def at_least_n_trains(container, n): """ Given input is checked if it has at least `n` **neo.core.SpikeTrain** objects. Parameters ---------- container : list, tuple, iterable, dict, neo container The container for the neo objects. n: int Number of SpikeTrain objects given input must have at least. Returns ------- list : list of `neo.core.SpikeTrain` objects. """ if n < 1: raise ValueError( "Please provide a number greater than %d, when setting " "the condition for a minimal number of SpikeTrains." % n) sts = nt.get_all_spiketrains(container) return sts if len(sts) >= n else []