示例#1
0
 def test_efm_duplicates_content(self):
     V = np.array([[1, 2, -1, -1],
                   [2, 4, -2, 0],
                   [-1, -2, 1, 2]])
     efm_id2i = {0: 0, 1: 1, 2: 2, 3: 3}
     efm_duplicates = get_efm_duplicates(V, efm_id2i)
     self.assertSetEqual({0, 1}, set(efm_duplicates[0]),
                         'Was supposed to find [0, 1] as duplicates, found %s' % efm_duplicates[0])
示例#2
0
 def test_efm_duplicates_len(self):
         V = np.array([[1, 2, -1, -1],
                       [2, 4, -2, 0],
                       [-1, -2, 1, 2]])
         efm_id2i = {0: 0, 1: 1, 2: 2, 3: 3}
         efm_duplicates = get_efm_duplicates(V, efm_id2i)
         self.assertEqual(1, len(efm_duplicates),
                          'Was supposed to find one group of duplicates, found %d' % len(efm_duplicates))
示例#3
0
 def test_remove_efm_duplicates_V_shape(self):
     V = np.array([[1, 2, -1, -1],
                   [2, 4, -2, 0],
                   [-1, -2, 1, 2]])
     efm_id2i = {0: 0, 1: 1, 2: 2, 3: 3}
     efm_duplicates = get_efm_duplicates(V, efm_id2i)
     V_new, new_efm_id2i, efm_id2gr_id = remove_efm_duplicates(V, efm_duplicates, efm_id2i)
     self.assertTupleEqual((3, 3), V_new.shape,
                           'Was supposed to get 3x3 V, got %s' % [str(it) for it in V_new.shape])
示例#4
0
 def test_remove_efm_duplicates_V_content(self):
     V = np.array([[1, 2, -1, -1],
                   [2, 4, -2, 0],
                   [-1, -2, 1, 2]])
     efm_id2i = {0: 0, 1: 1, 2: 2, 3: 3}
     efm_duplicates = get_efm_duplicates(V, efm_id2i)
     V_new, new_efm_id2i, efm_id2gr_id = remove_efm_duplicates(V, efm_duplicates, efm_id2i)
     new_efm_index = new_efm_id2i[efm_id2gr_id[0]]
     r1_c = V_new[0, new_efm_index]
     r2_c = V_new[1, new_efm_index]
     ratio = r2_c / r1_c
     self.assertEqual(2, ratio,
                      'Was supposed to get 2 as a ratio between the coefficients of r1 and r2 in the grouped EFMs, got %g'
                      % ratio)
示例#5
0
    def remove_efm_duplicates(self):
        efm_id2i = self.get_main_efm_id2i()
        V = self.get_main_V(efm_id2i=efm_id2i)
        efm_id_groups = get_efm_duplicates(V, efm_id2i)

        gr_i = 0
        for efm_ids in efm_id_groups:
            grouped_efm_id, gr_i = get_unique_id(self.efm_id2i, 'efm_type', gr_i)
            self.folded_efms.add(grouped_efm_id)
            self.efm_id2gr_id.update({efm_id: grouped_efm_id for efm_id in efm_ids})
            self.gr_id2efm_ids[grouped_efm_id] = efm_ids
            self.efm_id2i[grouped_efm_id] = self.V.shape[1]

            sample_efm_index = self.efm_id2i[efm_ids[0]]
            self.V = np.concatenate((self.V, self.V[:, (sample_efm_index, )]), axis=1)

            self.efm_ids -= set(efm_ids)
            self.efm_ids.add(grouped_efm_id)