예제 #1
0
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
예제 #2
0
파일: MaxTiC.py 프로젝트: ssolo/ALE
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
예제 #3
0
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
예제 #4
0
            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:
예제 #5
0
  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)

예제 #6
0
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:
예제 #7
0
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])