Beispiel #1
0
    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)
Beispiel #2
0
    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))
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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()
Beispiel #8
0
    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)
Beispiel #9
0
    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+']
        })