def compareRandom(num_trials, tensor_dimensions, matrix_data, cluster_dimensions, maxit_ebc, jitter_max_ebc, objective_tolerance): deltas = [] iterations_M = [] iterations_Mr = [] noconverge_M = 0 noconverge_Mr = 0 for j in range(num_trials): print "Trial ", j M = SparseMatrix(tensor_dimensions) M.read_data(matrix_data) Mr = M.shuffle() # could also be M.shuffle_old() M.normalize() ebc_M = EBC(M, cluster_dimensions, maxit_ebc, jitter_max_ebc, objective_tolerance) cXY_M, objective_M, it_M = ebc_M.run() if it_M == maxit_ebc: noconverge_M += 1 else: iterations_M.append(it_M) Mr.normalize() ebc_Mr = EBC(Mr, cluster_dimensions, maxit_ebc, jitter_max_ebc, objective_tolerance) cXY_Mr, objective_Mr, it_Mr = ebc_Mr.run() if it_Mr == maxit_ebc: noconverge_Mr += 1 else: iterations_Mr.append(it_Mr) deltas.append(objective_M - objective_Mr) return deltas, iterations_M, iterations_Mr, noconverge_M, noconverge_Mr
class TestMatrix(unittest.TestCase): def setUp(self): self.data = [l.split('\t') for l in open('tests/sample-matrix-file.txt', 'r').readlines()] self.matrix = SparseMatrix([2, 4, 9]) self.matrix.read_data(self.data) def testMatrixInit(self): self.assertEquals(self.matrix.nonzero_elements[(1, 3, 7)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(0, 0, 0)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(0, 0, 2)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(1, 1, 5)], 7.0) self.assertEquals(self.matrix.nonzero_elements[(1, 1, 3)], 3.0) self.assertEquals(self.matrix.nonzero_elements[(1, 3, 6)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(1, 3, 8)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(0, 0, 1)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(1, 1, 4)], 2.0) self.assertEquals(self.matrix.nonzero_elements[(1, 2, 5)], 2.0) self.assertEquals(len(self.matrix.nonzero_elements), 10) self.assertEquals(self.matrix.feature_ids[0], {'mice': 1, 'patient': 0}) self.assertEquals(self.matrix.feature_ids[1], {'R92Q': 1, 'R91W': 2, 'Val30Met': 0, 'R90W': 3}) self.assertEquals(self.matrix.feature_ids[2], {'START_ENTITY|nmod|END_ENTITY': 1, 'START_ENTITY|nummod|END_ENTITY': 5, 'FAP|compound|END_ENTITY': 2, 'expression|nmod|END_ENTITY': 8, '+|compound|END_ENTITY': 7, 'mice|nummod|END_ENTITY': 3, 'homozygous|nsubj|START_ENTITY': 6, 'mutation|appos|END_ENTITY': 4, 'START_ENTITY|nmod|FAP': 0}) def testShuffle(self): shuffled_matrix = self.matrix.shuffle() self.assertEquals(len(shuffled_matrix.nonzero_elements), len(self.matrix.nonzero_elements)) self.assertEquals(set(shuffled_matrix.nonzero_elements.values()), set(self.matrix.nonzero_elements.values())) print("shuffled matrix elements: ", shuffled_matrix.nonzero_elements)