def build_traces(cls, header_info, data_array): n_cols = data_array.shape[1] # Get the time column: time_data_raw = data_array[:, 0] time_unit = unit(str(header_info.column_data[0]['unit'])) time_data = time_data_raw * time_unit # Do we build as fixed or variable array: trace_builder = (TraceFixedDT if TraceFixedDT.is_array_fixed_dt(time_data) else TraceVariableDT) trcs = [] for i in range(1, n_cols): d_i = data_array[:, i] column_metadict = header_info.column_data[i] dataUnit = unit(str(column_metadict.get('unit', ''))) data_label = str(column_metadict.get('label', 'Column%d' % i)) data_tags = str(column_metadict.get('tags', '')).split(',') d = d_i * dataUnit tr = trace_builder(time_data, d, name=data_label, tags=data_tags) trcs.append(tr) return trcs
def rebase_to_fixed_dt(cls, original_trace, dt): print 'dt', dt from morphforge.core.quantities.wrappers import NpPqWrappers print original_trace time = NpPqWrappers.arange(start=original_trace.get_min_time(), stop=original_trace.get_max_time(), step=dt) data = original_trace.get_values(time) return TraceFixedDT(time, data, name=original_trace.name, comment=original_trace.comment, tags=original_trace.tags)
def build_traces(cls, header_info, data_array): n_cols = data_array.shape[1] # Get the time column: time_data_raw = data_array[:, 0] time_unit = qty(str(header_info.column_data[0]['unit'])) time_data = time_data_raw * time_unit # Do we build as fixed or variable array: trace_builder = (TraceFixedDT if TraceFixedDT.is_array_fixed_dt(time_data) else TraceVariableDT) trcs = [] for i in range(1, n_cols): d_i = data_array[:, i] column_metadict = header_info.column_data[i] dataUnit = qty(str(column_metadict.get('unit', ''))) data_label = str(column_metadict.get('label', 'Column%d' % i)) data_tags = str(column_metadict.get('tags', '')).split(',') d = d_i * dataUnit tr = trace_builder(time_data, d, name=data_label, tags=data_tags) trcs.append(tr) return trcs
def do_div(cls, lhs, rhs): time_axis = cls.get_new_time_axis(lhs, rhs) return TraceFixedDT( time_axis, lhs.get_values(time_axis) / rhs.get_values(time_axis))
def _clone_fixed(tr): tr_new = TraceFixedDT( time = np.copy( tr.time_pts_np) * tr.time_units, data = np.copy( tr.data_pts_np) * tr.data_units ) copy_trace_attrs(tr, tr_new, comment='+(cloned)') return tr_new
def do_sub(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == float assert isinstance(rhs.data_pts, pq.Dimensionless) return TraceFixedDT(rhs.time_pts, lhs - rhs.data_pts)
def do_div(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == float return TraceFixedDT(rhs.time_pts, lhs / rhs.data_pts)
def do_pow(cls, lhs, rhs): assert (type(lhs) == TraceFixedDT and (type(rhs) == float or type(rhs) == int)) return TraceFixedDT(lhs.time_pts, lhs.data_pts**rhs)
def do_mul(cls, lhs, rhs): assert (type(lhs) == TraceFixedDT and type(rhs) == float) return TraceFixedDT(lhs.time_pts, lhs.data_pts * rhs)
def do_add(cls, lhs, rhs): assert (type(lhs) == TraceFixedDT and type(rhs) == float) assert isinstance(lhs.data_pts, pq.Dimensionless) return TraceFixedDT(lhs.time_pts, lhs.data_pts + rhs)
def do_mul(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == pq.Quantity return TraceFixedDT(rhs.time_pts, lhs * rhs.data_pts)
def do_div(cls, lhs, rhs): assert (type(lhs) == TraceFixedDT and type(rhs) == pq.Quantity) return TraceFixedDT(lhs.time_pts, lhs.data_pts / rhs)