def shave_matrix(rawMatrix, mask, tools=TM_tools): if tools: return TM_tools.shaveMatrix(rawMatrix, mask) else: mask = np.ones(rawMatrix.shape[0], dtype=bool) for irow,row in enumerate(rawMatrix): if rawMatrix[irow,:].sum() == 0.0 and rawMatrix[:,irow].sum() == 0.0: mask[irow] = False return rawMatrix[...,mask][mask,...], mask
def normalize_matrix(shavedMatrix, tools=TM_tools): if tools: return TM_tools.normalizeMatrix(shavedMatrix) else: for irow, row in enumerate(shavedMatrix): total = row.sum() if total != 0.0: shavedMatrix[irow] = row/total return shavedMatrix
def build_raw_matrix(first_iter, last_iter, westH5, assignments, init_matrix, tools=TM_tools): '''Build the raw matrix, iteration window is left exclusive''' dim = init_matrix.shape[0] for iiter in range(first_iter, last_iter): print "Calculating iteration %i"%(iiter) iter_obj = westH5.openFile['iterations']['iter_%08d'%(iiter)] weights = iter_obj['seg_index']['weight'][...] if tools: curr_assignments = np.array(assignments[iiter-1], dtype=np.uint16) init_matrix = TM_tools.addIterToMatrix(curr_assignments, weights, init_matrix, dim) else: for iwalk, walkerObj in enumerate(assignments[iiter-1]): print walkerObj.dtype, walkerObj.shape for ipoint, point in enumerate(walkerObj): if ipoint == 0: prev_point = point if ipoint > 0 and point < dim: # Here it's now a transition between prev_point -> point #print prev_point, point, iwalk init_matrix[prev_point][point] += weights[iwalk] if point == dim: break return init_matrix