# Copyright 2015-2016 ARM Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import pandas as pd import trappy from utils_tests import TestBART from bart.common.signal import SignalCompare import numpy as np class TestSignalCompare(TestBART): def __init__(self, *args, **kwargs): super(TestSignalCompare, self).__init__(*args, **kwargs) def test_conditional_compare(self): """Test conditional_compare""" # Refer to the example in # bart.common.signal.SignalCompare.conditional_compare # doc-strings which explains the calculation for the # data set below A = [0, 0, 0, 3, 3, 0, 0, 0] B = [0, 0, 2, 2, 2, 2, 1, 1] trace = trappy.BareTrace() df = pd.DataFrame({"A": A, "B": B}) trace.add_parsed_event("event", df) s = SignalCompare(trace, "event:A", "event:B") expected = (1.5, 2.0 / 7) self.assertEqual( s.conditional_compare( "event:A > event:B", method="rect"), expected) def test_get_overshoot(self): """Test get_overshoot""" A = [0, 0, 0, 3, 3, 0, 0, 0] B = [0, 0, 2, 2, 2, 2, 1, 1] trace = trappy.BareTrace() df = pd.DataFrame({"A": A, "B": B}) trace.add_parsed_event("event", df) s = SignalCompare(trace, "event:A", "event:B") expected = (1.5, 2.0 / 7) self.assertEqual( s.get_overshoot(method="rect"), expected) A = [0, 0, 0, 1, 1, 0, 0, 0] B = [0, 0, 2, 2, 2, 2, 1, 1] df = pd.DataFrame({"A": A, "B": B}) trace.event.data_frame = df s = SignalCompare(trace, "event:A", "event:B") expected = (float("nan"), 0.0) result = s.get_overshoot(method="rect") self.assertTrue(np.isnan(result[0])) self.assertEqual(result[1], expected[1]) def test_get_undershoot(self): """Test get_undershoot""" A = [0, 0, 0, 1, 1, 1, 1, 1] B = [2, 2, 2, 2, 2, 2, 2, 2] trace = trappy.BareTrace() df = pd.DataFrame({"A": A, "B": B}) trace.add_parsed_event("event", df) s = SignalCompare(trace, "event:A", "event:B") expected = (4.0 / 14.0, 1.0) self.assertEqual( s.get_undershoot(method="rect"), expected) A = [3, 3, 3, 3, 3, 3, 3, 3] B = [2, 2, 2, 2, 2, 2, 1, 1] df = pd.DataFrame({"A": A, "B": B}) trace.event.data_frame = df s = SignalCompare(trace, "event:A", "event:B") expected = (float("nan"), 0.0) result = s.get_undershoot(method="rect") self.assertTrue(np.isnan(result[0])) self.assertEqual(result[1], expected[1])