示例#1
0
    def test_strict_logger(self):
        log = logger.StrictLogger()

        # default values
        self.assertEqual(log.log_level, log.WARNING)
        self.assertEqual(log.log_data, False)

        # skip info and debug
        log.i("Nothing - Info")

        # Errors on warning and above
        with self.assertRaises(RuntimeError,
                               msg="w triggered RuntimeError via logger"):
            log.w("w triggered RuntimeError via logger")
        with self.assertRaises(RuntimeError,
                               msg="e triggered RuntimeError via logger"):
            log.e("e triggered RuntimeError via logger")

        # Uo prefix
        uo = DummyUO()
        with self.assertRaises(RuntimeError, msg="w triggered RuntimeError"):
            uo.write_to_strict_logger(log.WARNING,
                                      "DummyUnitOp: w triggered RuntimeError")

        # skip adding any data
        data_tree = dict()
        log.set_data_tree("MainTree", data_tree)
        log.d_data(data_tree, "bo1", 10)
        log.i_data(data_tree, "bo2", 20)
        self.assertTrue(len(data_tree.keys()) == 0)

        # ensure empty function and call function for 100 % coverage
        self.assert_empty_function(log._on_data_stored)
        log._on_data_stored(0, dict(), "", "")
示例#2
0
 def run_emg_fixed_relative_width(self,
                                  t,
                                  rt_mean_list,
                                  sigma_list,
                                  skew_list,
                                  cutoff,
                                  ignore_logger=True) -> None:
     for skew in skew_list:
         for sigma in sigma_list:
             for rt_mean in rt_mean_list:
                 if rt_mean < 1 / skew:  # peak max would be at t < 0
                     continue
                 p = self.get_emg_pdf_with_cutoff(t, rt_mean, sigma, skew,
                                                  cutoff)
                 pd = pdf.ExpModGaussianFixedRelativeWidth(
                     t,
                     sigma_relative=sigma / rt_mean,
                     tau_relative=1 / skew / rt_mean)
                 if ignore_logger:
                     pd.log.log_level = pd.log.ERROR + 10
                 else:
                     pd.log = logger.StrictLogger()
                 pd.cutoff_relative_to_max = cutoff
                 pd.update_pdf(rt_mean=rt_mean)
                 np.testing.assert_array_almost_equal(pd.get_p(), p, 3)
                 pd.update_pdf(rt_mean=rt_mean / 2)
                 p = self.get_emg_pdf_with_cutoff(t, rt_mean / 2, sigma / 2,
                                                  skew * 2, cutoff)
                 np.testing.assert_array_almost_equal(pd.get_p(), p, 3)
                 pd.update_pdf(rt_mean=rt_mean / 2, skew=skew / 3)
                 p = self.get_emg_pdf_with_cutoff(t, rt_mean / 2, sigma / 2,
                                                  skew / 3, cutoff)
                 np.testing.assert_array_almost_equal(pd.get_p(), p, 3)
示例#3
0
    def setUp(self) -> None:
        self.logger = logger.StrictLogger()
        self.logger.log_data = True
        self.logger.log_level = self.logger.DEBUG
        self.uo_id = "combo_uo"
        self.gui_title = "Parent UO"
        self.t = np.linspace(0, 100, 1000)
        self.child_uo_list = [
            MockUpUnitOperation(self.t, "uo_1", "Unit Operation 1"),
            MockUpUnitOperation(self.t, "uo_2", "Unit Operation 2"),
            MockUpUnitOperation(self.t, "uo_3", "Unit Operation 3")
        ]
        self.child_uo_list[0].add_to_c = 0.1
        self.child_uo_list[1].add_to_c = 0.01
        self.child_uo_list[2].add_to_c = 0.001

        self.uo_combo = special_uo.ComboUO(self.t, self.child_uo_list,
                                           self.uo_id, self.gui_title)
示例#4
0
class DummyUO:
    _log_entity_id = "DummyUnitOp"
    default_logger = logger.DefaultLogger()
    data_storing_logger = logger.DataStoringLogger()
    strict_logger = logger.StrictLogger()

    def write_to_default_logger(self, lvl, msg):
        self.default_logger.log(lvl, msg)

    def write_to_data_storing_logger(self, lvl, msg):
        self.data_storing_logger.log(lvl, msg)

    def write_to_strict_logger(self, lvl, msg):
        self.strict_logger.log(lvl, msg)

    def data_write_to_data_storing_logger(self, tree, lvl, key, value):
        if lvl == self.data_storing_logger.INFO:
            self.data_storing_logger.i_data(tree, key, value)
        else:
            self.data_storing_logger.d_data(tree, key, value)
示例#5
0
 def run_tanks_in_series(self,
                         t,
                         rt_mean_list,
                         n_tank_list,
                         cutoff,
                         ignore_logger=True) -> None:
     for n_tanks in n_tank_list:
         for rt_mean in rt_mean_list:
             p = self.get_tanks_in_series_pdf_with_cutoff(
                 t, rt_mean, n_tanks, cutoff)
             pd = pdf.TanksInSeries(t, n_tanks)
             if ignore_logger:
                 pd.log.log_level = pd.log.ERROR + 10
             else:
                 pd.log = logger.StrictLogger()
             pd.cutoff_relative_to_max = cutoff
             pd.update_pdf(rt_mean=rt_mean)
             np.testing.assert_array_almost_equal(pd.get_p(), p, 3)
             pd.update_pdf(rt_mean=rt_mean / 2)
             p = self.get_tanks_in_series_pdf_with_cutoff(
                 t, rt_mean / 2, n_tanks, cutoff)
             np.testing.assert_array_almost_equal(pd.get_p(), p, 3)
示例#6
0
 def run_gauss_fixed_relative_with(self,
                                   t,
                                   rt_mean_list,
                                   sigma_list,
                                   cutoff,
                                   ignore_logger=True) -> None:
     for rt_mean in rt_mean_list:
         for sigma in sigma_list:
             p = self.get_gauss_pdf_with_cutoff(t, rt_mean, sigma, cutoff)
             pd = pdf.GaussianFixedRelativeWidth(t,
                                                 relative_sigma=sigma /
                                                 rt_mean,
                                                 cutoff=cutoff)
             if ignore_logger:
                 pd.log.log_level = pd.log.ERROR + 10
             else:
                 pd.log = logger.StrictLogger()
             pd.update_pdf(rt_mean=rt_mean)
             np.testing.assert_array_equal(pd.get_p(), p)
             pd.update_pdf(rt_mean=rt_mean / 2)
             p = self.get_gauss_pdf_with_cutoff(t, rt_mean / 2, sigma / 2,
                                                cutoff)
             np.testing.assert_array_almost_equal(pd.get_p(), p, 5)