def order_from_graph(graph): result = [] marques = {} for l in script_tree.getLeavesNames(tree): marques[l] = 0 while len(result) < len(graph.keys()) - len(script_tree.getLeavesNames(tree)): keys = graph.keys() i = 0 while marques.has_key(keys[i]): i = i + 1 current = keys[i] suivant = True while suivant: suivant = False for v in graph[current]: if not marques.has_key(v): suivant = True current = v result.append(current) marques[current] = 0 result.reverse() return result while len(graph[current]) > 0: current = graph[current][0] result.append(current) return result
def order_from_graph(graph): result = [] leaves = script_tree.getLeavesNames(tree) number_neighbors = {} visited_neigbors = {} keys = graph.keys() # print "construction of the inverse graph",len(keys),len(keys)-len(leaves) for k in keys: number_neighbors[k] = [] visited_neigbors[k] = [] for k in keys: for v in graph[k]: # if k in number_neighbors[v]: # print "error",k,v,graph[k] number_neighbors[v].append(k) # print "find roots" queue = [] for k in keys: if len(number_neighbors[k]) == 0: queue.append(k) # print "find order",len(queue) while len(queue) > 0: current = queue[0] del queue[0] result.append(current) for v in graph[current]: if not v in leaves: visited_neigbors[v].append(current) if len(visited_neigbors[v]) == len(number_neighbors[v]): queue.append(v) # i = 0 # while i < len(keys) and (not keys[i] in leaves) and len(number_neighbors[keys[i]]) != visited_neigbors[keys[i]]: # i = i + 1 # if i < len(keys): # current = keys[i] # visited = [] # while not current in visited: # print current, # visited.append(current) # for v in number_neighbors[current]: # if not v in visited_neigbors[current]: # suiv = v # current = suiv # print current # print len(result),len(marked) return result
species = mots[1].split("_")[0].title() + "_" + mots[1].split( "_")[1] genes[mots[2]] = [ species, mots[3], int(mots[4]), int(mots[5]), mots[6] ] l = l + 1 adjacence_file = open(analysisDir + "/deco_adjacences_" + name, "w") gene_file = open(analysisDir + "/deco_genes_" + name, "w") restricted_genes = [] for line in tree_file: tree = script_tree.readTree(line) leaves = script_tree.getLeavesNames(tree) for l in leaves: restricted_genes.append(l) print len(tree_file), len(restricted_genes) #print restricted_genes def compare(x, y): #print x,y if genes[x][0] != genes[y][0]: return cmp(genes[x][0], genes[y][0]) elif genes[x][1] != genes[y][1]: return cmp(genes[x][1], genes[y][1]) else:
order = [] nodes = script_tree.getNodes(tree) root = script_tree.getRoot(tree) for n in nodes: if not script_tree.isLeaf(tree,n): order.append(n) #print order order.sort(lambda x,y: cmp(script_tree.distanceFrom(tree,x,root),script_tree.distanceFrom(tree,y,root))) for i in range(len(order)): order[i] = script_tree.getBootstrap(tree,order[i]) return order # useful variables nodes1 = script_tree.getNodes(tree1) leaves1 = script_tree.getLeavesNames(tree1) root1 = script_tree.getRoot(tree1) internal_nodes1 = [] nodes2 = script_tree.getNodes(tree2) leaves2 = script_tree.getLeavesNames(tree2) root2 = script_tree.getRoot(tree2) internal_nodes2 = [] order_input1 = order_from_tree(tree1) order_input2 = order_from_tree(tree2) #value_input = value(order_input)
import sys, script_tree, random, time, math, string MINIMUM_SUPPORT_WITHIN_A_FAMILY = 0.05 MINIMUM_FAMILY_SIZE = 5 #MAXIMUM_DIFFERENCE_WITH_PROFILE = 6000 OUTPUT_FILE_REC = "constraints_from_recs" OUTPUT_FILE_TRF = "constraints_from_transfers" parameters = sys.argv[1:] species_tree = script_tree.readTree(open(parameters[0], "r").readline()) extant_species = script_tree.getLeavesNames(species_tree) gene_tree_file = parameters[1] gene_trees = [] for gt in open(gene_tree_file, "r").readlines(): gene_trees.append(gt.strip()) nodes = script_tree.getNodes(species_tree) for n in nodes: script_tree.setLength(species_tree, n, 1.0) def distance_from(x, y): nodes = script_tree.getNodes(species_tree) for n in nodes: if script_tree.isLeaf(species_tree, n): name = script_tree.getName(species_tree, n) else: name = script_tree.getBootstrap(species_tree, n) if name == x: A = n if name == y:
import sys,script_tree,random,time,math,string MINIMUM_SUPPORT_WITHIN_A_FAMILY = 0.05 MINIMUM_FAMILY_SIZE = 5 #MAXIMUM_DIFFERENCE_WITH_PROFILE = 6000 OUTPUT_FILE_REC = "constraints_from_recs" OUTPUT_FILE_TRF = "constraints_from_transfers" parameters = sys.argv[1:] species_tree = script_tree.readTree(open(parameters[0],"r").readline()) extant_species = script_tree.getLeavesNames(species_tree) gene_tree_file = parameters[1] gene_trees = [] for gt in open(gene_tree_file,"r").readlines(): gene_trees.append(gt.strip()) nodes = script_tree.getNodes(species_tree) for n in nodes: script_tree.setLength(species_tree,n,1.0) def distance_from(x,y): nodes = script_tree.getNodes(species_tree) for n in nodes: if script_tree.isLeaf(species_tree,n): name = script_tree.getName(species_tree,n) else: name = script_tree.getBootstrap(species_tree,n) if name == x: A = n
genes = {} l = 0 while l < len(fichier_ensembl): if fichier_ensembl[l][:3] == "SEQ": mots = fichier_ensembl[l].split() species = mots[1].split("_")[0].title()+"_"+mots[1].split("_")[1] genes[mots[2]] = [species,mots[3],int(mots[4]),int(mots[5]),mots[6]] l = l + 1 adjacence_file = open(analysisDir+"/deco_adjacences_"+name,"w") gene_file = open(analysisDir+"/deco_genes_"+name,"w") restricted_genes = [] for line in tree_file: tree = script_tree.readTree(line) leaves = script_tree.getLeavesNames(tree) for l in leaves: restricted_genes.append(l) print len(tree_file),len(restricted_genes) #print restricted_genes def compare(x,y): #print x,y if genes[x][0] != genes[y][0]: return cmp(genes[x][0],genes[y][0]) elif genes[x][1] != genes[y][1]: return cmp(genes[x][1],genes[y][1]) else: return cmp(genes[x][2],genes[y][2])