def test06e_estimate_parameters_lognormal(self): """ (TestSurvival) estimate_parameters should return False on success when estimating LogNormal parameters """ self.DUT.distribution_id = 6 self.DUT.start_time = 0.0 self.DUT.rel_time = 1000.0 self.DUT.n_rel_points = 10 self.DUT.confidence = 0.75 self.DUT.confidence_type = 3 self.DUT.confidence_method = 3 self.DUT.fit_method = 2 for _index, _data in enumerate(self.LOGN): _record = Record() _record.set_attributes(_data) self.DUT.dicRecords[_index] = _record self.DUT.dicRecords = OrderedDict( sorted( self.DUT.dicRecords.items(), key=lambda r: r[1].right_interval)) self.assertFalse(self.DUT.estimate_parameters()) self.assertEqual(self.DUT.n_failures, 14.0) self.assertEqual(self.DUT.n_suspensions, 0) self.assertAlmostEqual(self.DUT.scale[0], 3.4706899) self.assertAlmostEqual(self.DUT.scale[1], 3.5158554) self.assertAlmostEqual(self.DUT.scale[2], 3.5616086)
def test_format_data(self): """ (TestKaplanMeier) format_data should return a dictionary of lists on success """ _data = {} _assembly_id = [0, 0, 0, 0, 1, 1, 1] _fail_times = [56.7, 116.4, 152.1, 198.4, 233.3, 286.1, 322.9] _status = [0, 0, 0, 1, 0, 0, 1] _n_failures = [1, 1, 1, 1, 1, 2, 1] for i in range(len(_fail_times)): _record = Record() _record.assembly_id = _assembly_id[i] _record.right_interval = _fail_times[i] _record.status = _status[i] _record.n_failures = _n_failures[i] _data[i] = _record self.assertEqual(format_data(_data), ([(0, 0.0, 56.7, 0.0, 0, 1, 719163), (1, 0.0, 116.4, 0.0, 0, 1, 719163), (2, 0.0, 152.1, 0.0, 0, 1, 719163), (3, 0.0, 198.4, 0.0, 1, 1, 719163), (4, 0.0, 233.3, 0.0, 0, 1, 719163), (5, 0.0, 286.1, 0.0, 0, 2, 719163), (6, 0.0, 322.9, 0.0, 1, 1, 719163)], 6))
def test06g_estimate_parameters_weibull(self): """ (TestSurvival) estimate_parameters should return False on success when estimating Weibull parameters """ self.DUT.distribution_id = 8 self.DUT.start_time = 0.0 self.DUT.rel_time = 1000.0 self.DUT.n_rel_points = 10 self.DUT.confidence = 0.75 self.DUT.confidence_type = 3 self.DUT.confidence_method = 3 self.DUT.fit_method = 2 for _index, _data in enumerate(self.LOGN): _record = Record() _record.set_attributes(_data) self.DUT.dicRecords[_index] = _record self.DUT.dicRecords = OrderedDict( sorted( self.DUT.dicRecords.items(), key=lambda r: r[1].right_interval)) self.assertFalse(self.DUT.estimate_parameters()) self.assertEqual(self.DUT.n_failures, 14.0) self.assertEqual(self.DUT.n_suspensions, 0) self.assertAlmostEqual(self.DUT.scale[0], 44.9987914) self.assertAlmostEqual(self.DUT.scale[1], 45.0000000) self.assertAlmostEqual(self.DUT.scale[2], 45.0012087) self.assertAlmostEqual(self.DUT.shape[0], 33.5790669) self.assertAlmostEqual(self.DUT.shape[1], 33.6440913) self.assertAlmostEqual(self.DUT.shape[2], 33.7092415)
def test06d_estimate_parameters_exponential(self): """ (TestSurvival) estimate_parameters should return False on success when estimating Exponential parameters """ self.DUT.distribution_id = 5 self.DUT.start_time = 0.0 self.DUT.rel_time = 1000.0 self.DUT.n_rel_points = 10 self.DUT.confidence = 0.75 self.DUT.confidence_type = 3 self.DUT.confidence_method = 3 self.DUT.fit_method = 2 for _index, _data in enumerate(self.EXP): _record = Record() _record.set_attributes(_data) self.DUT.dicRecords[_index] = _record self.DUT.dicRecords = OrderedDict( sorted( self.DUT.dicRecords.items(), key=lambda r: r[1].right_interval)) self.assertFalse(self.DUT.estimate_parameters()) self.assertEqual(self.DUT.n_failures, 5.0) self.assertEqual(self.DUT.n_suspensions, 0) self.assertAlmostEqual(self.DUT.scale[0], 0.01407715) self.assertAlmostEqual(self.DUT.scale[1], 0.01448397) self.assertAlmostEqual(self.DUT.scale[2], 0.01490256)
def test06c_estimate_parameters_nhppll(self): """ (TestSurvival) estimate_parameters should return False on success when estimating NHPP - Log Linear parameters """ self.DUT.distribution_id = 4 self.DUT.start_time = 0.0 self.DUT.rel_time = 500.0 self.DUT.confidence = 0.75 self.DUT.confidence_type = 3 self.DUT.confidence_method = 3 self.DUT.fit_method = 2 for _index, _data in enumerate(self.NHPPPL): _record = Record() _record.set_attributes(_data) self.DUT.dicRecords[_index] = _record self.DUT.dicRecords = OrderedDict( sorted( self.DUT.dicRecords.items(), key=lambda r: r[1].right_interval)) self.assertFalse(self.DUT.estimate_parameters()) self.assertEqual(self.DUT.n_failures, 11) self.assertEqual(self.DUT.n_suspensions, 0) self.assertAlmostEqual(self.DUT.scale[0], 0.007534060) self.assertAlmostEqual(self.DUT.scale[1], 0.007875004) self.assertAlmostEqual(self.DUT.scale[2], 0.008231378)
def test06a_estimate_parameters_km(self): """ (TestSurvival) estimate_parameters should return False on success when estimating Kaplan-Meier parameters """ self.DUT.distribution_id = 2 self.DUT.start_time = 0.0 self.DUT.rel_time = 500.0 self.DUT.confidence = 0.75 self.DUT.confidence_type = 3 for _index, _data in enumerate(self.KAPLANMEIER): _record = Record() _record.set_attributes(_data) self.DUT.dicRecords[_index] = _record self.DUT.dicRecords = OrderedDict( sorted( self.DUT.dicRecords.items(), key=lambda r: r[1].right_interval)) self.assertFalse(self.DUT.estimate_parameters()) self.assertEqual(self.DUT.n_failures, 17.0) self.assertEqual(self.DUT.n_suspensions, 0.0) self.assertAlmostEqual(self.DUT.scale[0], 273.9018359) self.assertAlmostEqual(self.DUT.scale[1], 299.7176471) self.assertAlmostEqual(self.DUT.scale[2], 325.5334582)
def setUp(self): """ Sets up the test fixture for the Record class. """ _database = '/home/andrew/projects/RAMSTKTestDB.ramstk' self._dao = _dao(_database) self.DUT = Record()
def test05_calculate_tbf(self): """ (TestSurvival) calculate_tbf should return False on success and set the current record interarrival time to a float value """ _record = Record() _record.set_attributes( (1, 'Sub-System 1', 735835, 56.7, 56.7, 1, 1, 56.7, 1, 0, 719163, 719163, 0.0, 0.0, 0.0, 0, 0, 0, 'None', 'None', 'None')) self.DUT.dicRecords[1] = _record _record = Record() _record.set_attributes( (1, 'Sub-System 1', 735623, 198.4, 198.4, 1, 3, 0.0, 1, 0, 719163, 719163, 0.0, 0.0, 0.0, 0, 0, 0, 'None', 'None', 'None')) self.DUT.dicRecords[2] = _record self.DUT.dicRecords = OrderedDict( sorted( self.DUT.dicRecords.items(), key=lambda r: r[1].right_interval)) self.assertFalse(self.DUT.calculate_tbf(1, 2)) self.assertAlmostEqual(self.DUT.dicRecords[2].interarrival_time, 141.7)
def test_format_data(self): """ (TestMCF) format_data should return a dictionary of lists on success """ _data = {} _assembly_id = [0, 0, 0, 0, 1, 1, 1] _fail_times = [56.7, 116.4, 152.1, 198.4, 233.3, 286.1, 322.9] _status = [1, 1, 1, 2, 1, 1, 2] _n_failures = [1, 1, 1, 1, 1, 2, 1] for i in range(len(_fail_times)): _record = Record() _record.assembly_id = _assembly_id[i] _record.right_interval = _fail_times[i] _record.status = _status[i] _record.n_failures = _n_failures[i] _data[i] = _record self.assertEqual(format_data(_data), { 0: [56.7, 116.4, 152.1, '198.4+'], 1: [233.3, 286.1, 286.1, '322.9+'] })