def run(self): self.set_status_message('Loading data') *_, mu, sig, w, _, _ = self.input() mu = load_csv(mu.path).ravel() sig = load_csv(sig.path).ravel() w = load_csv(w.path).ravel() self.set_status_message('Components merging') merged = mdl.merge(mdl.Components(mu, sig, w)) msg = "{0} merged components, compression rate {1}".format( merged.matches.indices.size, merged.matches.lengths.mean()) logger.info(msg) self.set_status_message(msg) indices, lengths, mu_dst, sig_dst, w_dst = self.output() save_csv_tmp(indices, merged.matches.indices, fmt='%i') save_csv_tmp(lengths, merged.matches.lengths, fmt='%i') save_csv_tmp(mu_dst, merged.new_components.means) save_csv_tmp(sig_dst, merged.new_components.sigmas) save_csv_tmp(w_dst, merged.new_components.weights)
def test_takes_mean_of_first_highest_component(self): self.weights[1] = 100. components = mdl.Components(self.means, .5 * self.sigmas, self.weights) merged = mdl.merge(components) self.assertEqual(merged.new_components.means[0], components.means[1]) self.assertEqual(merged.new_components.means[1], components.means[3])
def test_merged_components_have_proper_start_index_info(self): components = mdl.Components(self.means, .5 * self.sigmas, self.weights) merged = mdl.merge(components) self.assertEqual(merged.matches.indices[0], 0) self.assertEqual(merged.matches.indices[-1], 9)
def test_merged_components_have_proper_size_info(self): components = mdl.Components(self.means, .5 * self.sigmas, self.weights) merged = mdl.merge(components) self.assertEqual(merged.matches.lengths[0], 3) self.assertEqual(merged.matches.lengths[-1], 1)
def test_merges_each_components_within_4_sigma(self): components = mdl.Components(self.means, .5 * self.sigmas, self.weights) merged = mdl.merge(components) self.assertEqual(len(merged.matches), 4)
def test_merges_at_most_4_components(self): self.sigmas[0] = 100. components = mdl.Components(self.means, .1 * self.sigmas, self.weights) merged = mdl.merge(components) self.assertEqual(len(merged.matches), len(components) - 3)
def test_merges_none_components_if_too_distant(self): components = mdl.Components(self.means, .1 * self.sigmas, self.weights) merged = mdl.merge(components) self.assertEqual(len(merged.matches), len(components))