def get_clusters(x_original, axis=['row', 'column'][0]): """Performs UPGMA clustering using euclidean distances""" x = x_original.copy() if axis == 'column': x = x.T nr = x.shape[0] metric_f = get_nonphylogenetic_metric('euclidean') row_dissims = DistanceMatrix(metric_f(x), map(str, range(nr))) # do upgma - rows # Average in SciPy's cluster.heirarchy.linkage is UPGMA linkage_matrix = linkage(row_dissims.condensed_form(), method='average') tree = TreeNode.from_linkage_matrix(linkage_matrix, row_dissims.ids) row_order = [int(tip.name) for tip in tree.tips()] return row_order
def get_clusters(x_original, axis=['row','column'][0]): """Performs UPGMA clustering using euclidean distances""" x = x_original.copy() if axis=='column': x = x.T nr = x.shape[0] metric_f = get_nonphylogenetic_metric('euclidean') row_dissims = metric_f(x) # do upgma - rows BIG = 1e305 row_nodes = map(PhyloNode, map(str,range(nr))) for i in range(len(row_dissims)): row_dissims[i,i] = BIG row_tree = UPGMA_cluster(row_dissims, row_nodes, BIG) row_order = [int(tip.Name) for tip in row_tree.iterTips()] return row_order
def get_clusters(x_original, axis=['row', 'column'][0]): """Performs UPGMA clustering using euclidean distances""" x = x_original.copy() if axis == 'column': x = x.T nr = x.shape[0] metric_f = get_nonphylogenetic_metric('euclidean') row_dissims = metric_f(x) # do upgma - rows BIG = 1e305 row_nodes = map(PhyloNode, map(str, range(nr))) for i in range(len(row_dissims)): row_dissims[i, i] = BIG row_tree = UPGMA_cluster(row_dissims, row_nodes, BIG) row_order = [int(tip.Name) for tip in row_tree.iterTips()] return row_order