Source code for iocbio.kinetics.io.data
import copy, uuid
import numpy as np
class Carrier:
def __init__(self, name, unit, data):
self.name = name
self.unit = unit
self.data = data
[docs]class Data(object):
"""Class for representing recorded data"""
def __init__(self, experiment_id,
comment = None,
data = {},
xname = None,
xunit = None,
xlim = None,
config = {},
type = None,
type_generic = None,
name = None,
time = None,
data_id = None,
add_range=0.05):
if data_id is None:
data_id = str(uuid.uuid4())
self._data = data
self._xname = xname
self._xunit = xunit
self._xlim = xlim
self.config = config
self.type = type
self.type_generic = type_generic
self.name = name
self.time = time
self.experiment_id = experiment_id
self.data_id = data_id
self.event_name = None
self.event_value = None
self.add_range = add_range
k = list(self._data.keys())
def x(self, name):
if name is None:
return self.x(name=self._rep_key)
return self._data[name]['x']
def xlim(self):
return self._xlim
@property
def xname(self):
return self._xname
@property
def xunit(self):
return self._xunit
def y(self, name):
return self._data[name]['y']
def keys(self):
return self._data.keys()
def slice(self, x0, x1, data_id=None, event_name=None, event_value=None):
a = copy.deepcopy(self)
if data_id is None:
data_id = str(uuid.uuid4())
a.data_id = data_id
a.event_name = event_name
a.event_value = event_value
a._xlim = (x0, x1)
for k in a._data.keys():
i0 = np.argmin(np.abs(self._data[k]['x']-x0))
i1 = np.argmin(np.abs(self._data[k]['x']-x1))
a._data[k]['x'] = a._data[k]['x'][i0:i1]
a._data[k]['y'].data = a._data[k]['y'].data[i0:i1]
return a
def new_range(self, x0):
minx, maxx = self.xlim()
w = self.add_range*(maxx-minx)
return [x0, x0+w]
def __repr__(self):
s = 'type: %s; expid: %s; dataid: %s\nx: %s ' % (self.type, self.experiment_id, self.data_id,
self._xname)
# if self.x.data is not None: s += "%f..%f" % (self.x.data[0], self.x.data[-1])
# s += "; data:"
# for i in self.data:
# s += i + " "
# s += "\nconfig:\n"
# for k, v in self.config.items():
# s += k + ": " + str(v) + "\n"
return s