[relacs] add __str__ and __repr__ methods to classes
This commit is contained in:
parent
8b93d92f4d
commit
6ab71b2fe9
@ -3,7 +3,6 @@ from .util import BoltzmannFit, unzip_if_needed, gaussian_kernel, zero_crossings
|
||||
import numpy as np
|
||||
import nixio as nix
|
||||
from scipy.stats import circstd
|
||||
# from scipy.optimize import curve_fit
|
||||
import os
|
||||
import subprocess
|
||||
from tqdm import tqdm
|
||||
@ -372,6 +371,15 @@ class BaselineData:
|
||||
l = f.readline()
|
||||
return np.asarray(data)
|
||||
|
||||
def __str__(self):
|
||||
str = "Baseline activity\n"
|
||||
str += "Cell %s\t avg. firing rate: %.2f Hz\n" % (self.cell.id, self.baseline_rate)
|
||||
str += "CV: %.2f\t vector strength: %.2f" % (self.coefficient_of_variation, self.vector_strength)
|
||||
return str
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
|
||||
|
||||
class FIData:
|
||||
"""Class representing the data recorded with the relacs FI-Curve repro. The instance will load the data upon
|
||||
@ -633,6 +641,14 @@ class FIData:
|
||||
boltzmann_fit = BoltzmannFit(contrasts, rates)
|
||||
return boltzmann_fit
|
||||
|
||||
def __str__(self):
|
||||
str = "FICurve\n"
|
||||
str += "FI Curve recorded for cell %s" % self.__cell.id
|
||||
return str
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
|
||||
|
||||
class FileStimulusData:
|
||||
"""The FileStimulus class provides access to the data recorded and the stimulus presented (if accessible)
|
||||
@ -892,12 +908,16 @@ class FileStimulusData:
|
||||
Returns:
|
||||
[type]: [description]
|
||||
"""
|
||||
|
||||
if index == -1:
|
||||
time_axes = []
|
||||
rates = []
|
||||
for i in range(self.size):
|
||||
t = self.time_axis(i)
|
||||
spikes = self.spikes(i)
|
||||
if len(spikes) == 0 or len(t) <= 1:
|
||||
print("Warning: no spikes or time axis to short for index:", i)
|
||||
continue
|
||||
r = spike_times_to_rate(spikes, t, kernel_width)
|
||||
time_axes.append(t)
|
||||
rates.append(r)
|
||||
@ -905,11 +925,31 @@ class FileStimulusData:
|
||||
elif index >= 0 and index < self.size:
|
||||
t = self.time_axis(index)
|
||||
spikes = self.spikes(index)
|
||||
if len(spikes) == 0 or len(t) <= 1:
|
||||
print("Warning: no spikes or time axis to short for index:", i)
|
||||
return None, None
|
||||
r = spike_times_to_rate(spikes, t, kernel_width)
|
||||
return t, r
|
||||
else:
|
||||
raise IndexError("FileStimulusData: index %i out of bounds for time_axes of size %i" % (index, self.size))
|
||||
|
||||
def __str__(self):
|
||||
str = "FileStimulusData\n"
|
||||
str += "Data recorded running the FileStimulus RePro on cell %s\n" % self.cell.id
|
||||
contrasts = np.array(self.contrast())
|
||||
stimuli = np.array(self.stimulus_files())
|
||||
|
||||
str += "Stimuli:\n"
|
||||
for s in np.unique(stimuli):
|
||||
str += "%s:\n" % (s.split("/")[-1])
|
||||
s_contrasts = np.unique(contrasts[stimuli == s])
|
||||
for c in s_contrasts:
|
||||
str += "\tcontrast %.2f (%i trials)\n" % (c, len(contrasts[(stimuli == s) & (contrasts == c)]))
|
||||
return str
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user