print matrix # #Names col1 col2 col3 col4 col5 col6 col7 # A -1.23 -0.81 1.79 0.78 -0.42 -0.69 0.58 # B -1.76 -0.94 1.16 0.36 0.41 -0.35 1.12 # C -2.19 0.13 0.65 -0.51 0.52 1.04 0.36 # D -1.22 -0.98 0.79 -0.76 -0.29 1.54 0.93 # E -1.47 -0.83 0.85 0.07 -0.81 1.53 0.65 # F -1.04 -1.11 0.87 -0.14 -0.80 1.74 0.48 # G -1.57 -1.17 1.29 0.23 -0.20 1.17 0.26 # H -1.53 -1.25 0.59 -0.30 0.32 1.41 0.77 # # # We load a tree structure whose leaf nodes correspond to rows in the # numerical matrix. We use the text_array argument to link the tree # with numerical matrix. t = ClusterTree("(((A,B),(C,(D,E))),(F,(G,H)));", text_array=matrix) print "Example tree", t # /-A # /--------| # | \-B # /--------| # | | /-C # | \--------| # | | /-D #---------| \--------| # | \-E # | # | /-F # \--------| # | /-G # \--------|
from ete_dev import ClusterTree, TreeStyle, AttrFace, ProfileFace, TextFace from ete_dev.treeview.faces import add_face_to_node # To operate with numbers efficiently import numpy PATH = "./" # Loads tree and array t = ClusterTree(PATH+"diauxic.nw", PATH+"diauxic.array") # nodes are linked to the array table array = t.arraytable # Calculates some stats on the matrix. Needed to establish the color # gradients. matrix_dist = [i for r in xrange(len(array.matrix))\ for i in array.matrix[r] if numpy.isfinite(i)] matrix_max = numpy.max(matrix_dist) matrix_min = numpy.min(matrix_dist) matrix_avg = matrix_min+((matrix_max-matrix_min)/2) # Creates a profile face that will represent node's profile as a # heatmap profileFace = ProfileFace(matrix_max, matrix_min, matrix_avg, \ 200, 14, "heatmap") cbarsFace = ProfileFace(matrix_max,matrix_min,matrix_avg,200,70,"cbars") nameFace = AttrFace("name", fsize=8) # Creates my own layout function that uses previous faces def mylayout(node): # If node is a leaf if node.is_leaf():