def test_make_sample_pass(self):
        """Test generate sample"""

        exp_unc, _, haz_unc = make_imp_uncs()

        unc = Uncertainty({'exp': exp_unc, 'haz': haz_unc})

        #default sampling saltelli
        unc.make_sample(N=1, sampling_kwargs={'calc_second_order': True})
        self.assertEqual(unc.n_samples, 1 * (2 * 2 + 2))  # N * (2 * D + 2)
        self.assertTrue(isinstance(unc.samples_df, pd.DataFrame))
        self.assertTrue(
            np.allclose(unc.samples_df['x_exp'],
                        np.array([
                            1.239453, 1.837109, 1.239453, 1.239453, 1.837109,
                            1.837109
                        ]),
                        rtol=1e-05))
        self.assertListEqual(list(unc.samples_df['x_haz']),
                             [0.0, 0.0, 1.0, 1.0, 0.0, 1.0])

        #latin sampling
        unc.make_sample(N=1,
                        sampling_method='latin',
                        sampling_kwargs={'seed': 11245})
        self.assertEqual(unc.n_samples, 1)
        self.assertTrue(isinstance(unc.samples_df, pd.DataFrame))
        self.assertTrue(
            np.allclose(unc.samples_df['x_exp'],
                        np.array([2.58309]),
                        rtol=1e-05))
        self.assertListEqual(list(unc.samples_df['x_haz']), [2.0])
    def test_plot_sample_pass(self):

        exp_unc, _, haz_unc = make_imp_uncs()

        unc = Uncertainty({'exp': exp_unc, 'haz': haz_unc})

        unc.make_sample(N=1)
        unc.plot_sample()
        plt.close()
    def test_save_pass(self):
        """Test save samples"""

        exp_unc, impf_unc, haz_unc = make_imp_uncs()

        unc = Uncertainty({'exp': exp_unc, 'impf': impf_unc, 'haz': haz_unc})
        unc.make_sample(1)
        filename = unc.save_samples_df()

        unc_imp = UncImpact(exp_unc, impf_unc, haz_unc)
        unc_imp.load_samples_df(filename)

        unc_imp.calc_distribution()
        unc_imp.calc_sensitivity()
    def test_est_comp_time_pass(self):

        exp_unc, _, haz_unc = make_imp_uncs()

        unc = Uncertainty({'exp': exp_unc, 'haz': haz_unc})

        unc.make_sample(N=1, sampling_kwargs={'calc_second_order': False})
        est = unc.est_comp_time(0.12345)
        self.assertEqual(est, 1 * (2 + 2) * 0.123)  # N * (D + 2)

        pool = Pool(nodes=4)
        est = unc.est_comp_time(0.12345, pool)
        self.assertEqual(est, 1 * (2 + 2) * 0.123 / 4)  # N * (D + 2)
        pool.close()
        pool.join()
        pool.clear()