Beispiel #1
0
    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)
Beispiel #2
0
 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])
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
 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))