Beispiel #1
0
 def load(fname, verbose=0):
     data = utils.parse_hvsrpy_output(fname)
     std_curve = np.log(data["upper"]) - np.log(data["curve"])
     clarity = utils.sesame_clarity(data["frequency"],
                                    data["curve"],
                                    std_curve,
                                    data["std_f0"],
                                    verbose=verbose)
     reliability = utils.sesame_reliability(data["windowlength"],
                                            data["accepted_windows"],
                                            data["frequency"],
                                            data["curve"],
                                            std_curve,
                                            verbose=verbose)
     return (reliability, clarity)
Beispiel #2
0
    def test_parse_hvsrpy_output(self):
        def compare_data_dict(expected_dict, returned_dict):
            for key, value in expected_dict.items():
                if isinstance(value, (str, int, bool)):
                    self.assertEqual(expected_dict[key], returned_dict[key])
                elif isinstance(value, float):
                    self.assertAlmostEqual(expected_dict[key],
                                           returned_dict[key],
                                           places=3)
                elif isinstance(value, np.ndarray):
                    self.assertArrayAlmostEqual(expected_dict[key],
                                                returned_dict[key],
                                                places=3)
                else:
                    raise ValueError

        # Ex 0
        fname = self.full_path + "data/utils/ex0.hv"
        expected = {
            "windowlength": 60.0,
            "total_windows": 30,
            "rejection_bool": True,
            "n_for_rejection": 2.0,
            "accepted_windows": 29,
            "distribution_f0": "normal",
            "mean_f0": 0.6976,
            "std_f0": 0.1353,
            "distribution_mc": "log-normal",
            "f0_mc": 0.7116,
            "amplitude_f0_mc": 3.8472,
        }
        names = ["frequency", "curve", "lower", "upper"]
        df = pd.read_csv(fname, comment="#", names=names)
        for name in names:
            expected[name] = df[name].to_numpy()
        returned = utils.parse_hvsrpy_output(fname)
        compare_data_dict(expected, returned)

        # Ex 1
        fname = self.full_path + "data/utils/ex1.hv"
        expected = {
            "windowlength": 60.0,
            "total_windows": 60,
            "rejection_bool": True,
            "n_for_rejection": 2.0,
            "accepted_windows": 48,
            "distribution_f0": "normal",
            "mean_f0": 0.7155,
            "std_f0": 0.0759,
            "distribution_mc": "log-normal",
            "f0_mc": 0.7378,
            "amplitude_f0_mc": 3.9661,
        }
        names = ["frequency", "curve", "lower", "upper"]
        df = pd.read_csv(fname, comment="#", names=names)
        for name in names:
            expected[name] = df[name].to_numpy()
        returned = utils.parse_hvsrpy_output(fname)
        compare_data_dict(expected, returned)

        # Ex 2
        fname = self.full_path + "data/utils/ex2.hv"
        expected = {
            "windowlength": 60.0,
            "total_windows": 30,
            "rejection_bool": True,
            "n_for_rejection": 2.0,
            "accepted_windows": 29,
            "distribution_f0": "normal",
            "mean_f0": 0.7035,
            "std_f0": 0.1391,
            "distribution_mc": "log-normal",
            "f0_mc": 0.7116,
            "amplitude_f0_mc": 3.9097,
        }
        names = ["frequency", "curve", "lower", "upper"]
        df = pd.read_csv(fname, comment="#", names=names)
        for name in names:
            expected[name] = df[name].to_numpy()
        returned = utils.parse_hvsrpy_output(fname)
        compare_data_dict(expected, returned)

        # Ex 3
        fname = self.full_path + "data/utils/ex3.hv"
        expected = {
            "windowlength": 60.0,
            "total_windows": 60,
            "rejection_bool": True,
            "n_for_rejection": 2.0,
            "accepted_windows": 33,
            "distribution_f0": "normal",
            "mean_f0": 0.7994,
            "std_f0": 0.0365,
            "distribution_mc": "log-normal",
            "f0_mc": 0.7933,
            "amplitude_f0_mc": 4.8444,
        }
        names = ["frequency", "curve", "lower", "upper"]
        df = pd.read_csv(fname, comment="#", names=names)
        for name in names:
            expected[name] = df[name].to_numpy()
        returned = utils.parse_hvsrpy_output(fname)
        compare_data_dict(expected, returned)