return TraceVariableDT(rhs.time_pts, lhs - rhs.data_pts) @classmethod def do_mul(cls, lhs, rhs): assert type(rhs) == TraceVariableDT and type(lhs) == units.Quantity return TraceVariableDT(rhs.time_pts, lhs * rhs.data_pts) @classmethod def do_div(cls, lhs, rhs): assert type(rhs) == TraceVariableDT and type(lhs) == units.Quantity return TraceVariableDT(rhs.time_pts, lhs / rhs.data_pts) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TraceVariableDT, rhs_type=units.Quantity, operator_func=TraceOperator_TraceVariableDT_Quantity.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TraceVariableDT, rhs_type=units.Quantity, operator_func=TraceOperator_TraceVariableDT_Quantity.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TraceVariableDT, rhs_type=units.Quantity, operator_func=TraceOperator_TraceVariableDT_Quantity.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__div__, lhs_type=TraceVariableDT, rhs_type=units.Quantity,
def __pow__(self, rhs): from morphforge.traces.traceobjpluginctrl import TraceOperatorCtrl return TraceOperatorCtrl.operate(operator.__pow__, lhs=self, rhs=rhs)
return TraceVariableDT(rhs.time_pts, lhs - rhs.data_pts) @classmethod def do_mul(cls, lhs, rhs): assert type(rhs) == TraceVariableDT and type(lhs) == pq.Quantity return TraceVariableDT(rhs.time_pts, lhs * rhs.data_pts) @classmethod def do_div(cls, lhs, rhs): assert type(rhs) == TraceVariableDT and type(lhs) == pq.Quantity return TraceVariableDT(rhs.time_pts, lhs / rhs.data_pts) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TraceVariableDT, rhs_type=pq.Quantity, operator_func=TraceOperator_TraceVariableDT_Quantity.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TraceVariableDT, rhs_type=pq.Quantity, operator_func=TraceOperator_TraceVariableDT_Quantity.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TraceVariableDT, rhs_type=pq.Quantity, operator_func=TraceOperator_TraceVariableDT_Quantity.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator(
return TraceFixedDT(rhs.time_pts, lhs - rhs.data_pts) @classmethod def do_mul(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == units.Quantity return TraceFixedDT(rhs.time_pts, lhs * rhs.data_pts) @classmethod def do_div(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == units.Quantity return TraceFixedDT(rhs.time_pts, lhs / rhs.data_pts) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TraceFixedDT, rhs_type=units.Quantity, operator_func=TraceOperator_TraceFixedDT_Quantity.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TraceFixedDT, rhs_type=units.Quantity, operator_func=TraceOperator_TraceFixedDT_Quantity.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TraceFixedDT, rhs_type=units.Quantity, operator_func=TraceOperator_TraceFixedDT_Quantity.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__div__, lhs_type=TraceFixedDT, rhs_type=units.Quantity,
return TraceFixedDT( time_axis, lhs.get_values(time_axis) * rhs.get_values(time_axis)) @classmethod 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)) # FixedDT (+-*/) FixedDT TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TraceFixedDT, rhs_type=TraceFixedDT, operator_func=TraceOperator_TraceFixedDT_TraceFixedDT.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TraceFixedDT, rhs_type=TraceFixedDT, operator_func=TraceOperator_TraceFixedDT_TraceFixedDT.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TraceFixedDT, rhs_type=TraceFixedDT, operator_func=TraceOperator_TraceFixedDT_TraceFixedDT.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator(
def do_add(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__add__, rhs_scalar=rhs) for piece in lhs.pieces] ) @classmethod def do_sub(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__sub__, rhs_scalar=rhs) for piece in lhs.pieces] ) @classmethod def do_mul(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__mul__, rhs_scalar=rhs) for piece in lhs.pieces] ) @classmethod def do_div(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__div__, rhs_scalar=rhs) for piece in lhs.pieces] ) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TracePiecewise, rhs_type=units.Quantity, operator_func=TraceOperator_TracePiecewise_Quantity.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TracePiecewise, rhs_type=units.Quantity, operator_func=TraceOperator_TracePiecewise_Quantity.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TracePiecewise, rhs_type=units.Quantity, operator_func=TraceOperator_TracePiecewise_Quantity.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__div__, lhs_type=TracePiecewise, rhs_type=units.Quantity,
def do_add(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__add__, rhs_scalar=rhs) for piece in lhs.pieces] ) @classmethod def do_sub(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__sub__, rhs_scalar=rhs) for piece in lhs.pieces] ) @classmethod def do_mul(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__mul__, rhs_scalar=rhs) for piece in lhs.pieces] ) @classmethod def do_div(cls, lhs, rhs): return TracePiecewise( [PiecewiseOperationLHS.visit(lhs_piece=piece, operator_type=operator.__div__, rhs_scalar=rhs) for piece in lhs.pieces] ) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TracePiecewise, rhs_type=pq.Quantity, operator_func=TraceOperator_TracePiecewise_Quantity.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TracePiecewise, rhs_type=pq.Quantity, operator_func=TraceOperator_TracePiecewise_Quantity.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TracePiecewise, rhs_type=pq.Quantity, operator_func=TraceOperator_TracePiecewise_Quantity.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__div__, lhs_type=TracePiecewise, rhs_type=pq.Quantity,
def __pow__(self, rhs): from morphforge.traces.traceobjpluginctrl import TraceOperatorCtrl return TraceOperatorCtrl.operate(operator.__pow__, lhs=self, rhs=rhs)
@classmethod def do_mul(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == float return TraceFixedDT(rhs.time_pts, lhs * rhs.data_pts) @classmethod def do_div(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == float return TraceFixedDT(rhs.time_pts, lhs / rhs.data_pts) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TraceFixedDT, rhs_type=float, operator_func=TraceOperator_TraceFixedDT_Scalar.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TraceFixedDT, rhs_type=float, operator_func=TraceOperator_TraceFixedDT_Scalar.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TraceFixedDT, rhs_type=float, operator_func=TraceOperator_TraceFixedDT_Scalar.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__div__, lhs_type=TraceFixedDT, rhs_type=float,
return TraceFixedDT(rhs.time_pts, lhs - rhs.data_pts) @classmethod def do_mul(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == float return TraceFixedDT(rhs.time_pts, lhs * rhs.data_pts) @classmethod def do_div(cls, lhs, rhs): assert type(rhs) == TraceFixedDT and type(lhs) == float return TraceFixedDT(rhs.time_pts, lhs / rhs.data_pts) TraceOperatorCtrl.add_trace_operator( operator_type=operator.__add__, lhs_type=TraceFixedDT, rhs_type=float, operator_func=TraceOperator_TraceFixedDT_Scalar.do_add, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__sub__, lhs_type=TraceFixedDT, rhs_type=float, operator_func=TraceOperator_TraceFixedDT_Scalar.do_sub, flag='default') TraceOperatorCtrl.add_trace_operator( operator_type=operator.__mul__, lhs_type=TraceFixedDT, rhs_type=float, operator_func=TraceOperator_TraceFixedDT_Scalar.do_mul, flag='default') TraceOperatorCtrl.add_trace_operator(