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)
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)