コード例 #1
0
ファイル: MaxTiC.py プロジェクト: ssolo/ALE
def tree_from_order(order):
  nodes = script_tree.getNodes(tree)
  for n in nodes:
    if not script_tree.isRoot(tree,n):
      if script_tree.isLeaf(tree,n):
	index = len(order)
      else:
	index = order.index(script_tree.getBootstrap(tree,n))
      index_parent = order.index(script_tree.getBootstrap(tree,script_tree.getParent(tree,n)))
      script_tree.setLength(tree,n,index-index_parent)

  return script_tree.writeTree(tree,root,False)
コード例 #2
0
def tree_from_order(order):
    nodes = script_tree.getNodes(tree)
    for n in nodes:
        if not script_tree.isRoot(tree, n):
            if script_tree.isLeaf(tree, n):
                index = len(order)
            else:
                index = order.index(script_tree.getBootstrap(tree, n))
            index_parent = order.index(script_tree.getBootstrap(tree, script_tree.getParent(tree, n)))
            script_tree.setLength(tree, n, index - index_parent)

    return script_tree.writeTree(tree, root, False)
コード例 #3
0
def donnor_search(t, n):
    current_node = n
    result = -1
    while result == -1 and not script_tree.isRoot(t, current_node):
        current_node = script_tree.getParent(t, current_node)
        annot = script_tree.getBootstrap(t, current_node)
        event = annot[1:].split(".")[0]
        if event[:2] != "T@" and event[:2] != "D@":
            result = event
        if annot.find("@T") >= 0:
            current_node = script_tree.getRoot(t)
            result = -1
    return result
コード例 #4
0
def donnor_search(t,n):
  current_node = n
  result = -1
  while result == -1 and not script_tree.isRoot(t,current_node):
    current_node = script_tree.getParent(t,current_node)
    annot = script_tree.getBootstrap(t,current_node)
    event = annot[1:].split(".")[0]
    if event[:2] != "T@" and event[:2] != "D@":
      result = event
    if annot.find("@T") >= 0:
      current_node = script_tree.getRoot(t)
      result = -1
  return result
コード例 #5
0
def parent(x):
  #print x
  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:
      if script_tree.isRoot(species_tree,n):
	result = -1
      else:
	result = script_tree.getBootstrap(species_tree,script_tree.getParent(species_tree,n))
  return result
コード例 #6
0
def parent(x):
    #print x
    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:
            if script_tree.isRoot(species_tree, n):
                result = -1
            else:
                result = script_tree.getBootstrap(
                    species_tree, script_tree.getParent(species_tree, n))
    return result
コード例 #7
0
# sortie = open("distribution_by_family","w")
# keys = by_family.keys()
# keys.sort()
# for f in keys:
# sortie.write(f+" "+str(by_family[f])+"\n")

total_transfers = sum(edge.values())

to_desc = 0
uninformative = 0
# initialise from branches
for n in nodes:
    if (not script_tree.isLeaf(tree, n)):
        if (not script_tree.isRoot(tree, n)):
            parent = script_tree.getBootstrap(tree, script_tree.getParent(tree, n))
            child = script_tree.getBootstrap(tree, n)
            if edge.has_key(parent + "," + child):
                to_desc = to_desc + edge[parent + "," + child]
                uninformative = uninformative + edge[parent + "," + child]
            else:
                graph[parent].append(child)
            edge[parent + "," + child] = MAX_NUMBER
    else:
        parent = script_tree.getBootstrap(tree, script_tree.getParent(tree, n))
        child = script_tree.getName(tree, n)
        if not child in graph[parent]:
            graph[parent].append(child)

edge_keys = edge.keys()
edge_keys.sort(lambda x, y: cmp(edge[x], edge[y]))
コード例 #8
0
# initialise from nodes
for n in nodes:
  if (not script_tree.isLeaf(tree,n)):
    node = script_tree.getBootstrap(tree,n)
    graph[node] = []
    degre_entrant[node] = []
    internal_nodes.append(node)
  else:
    node = script_tree.getName(tree,n)
    graph[node] = []

# initialise from branches
for n in nodes:
  if (not script_tree.isLeaf(tree,n)):
    if (not script_tree.isRoot(tree,n)):
      parent = script_tree.getBootstrap(tree,script_tree.getParent(tree,n))
      child = script_tree.getBootstrap(tree,n)
      graph[parent].append(child)
      edge[parent+","+child] = MAX_NUMBER
  else:
    parent = script_tree.getBootstrap(tree,script_tree.getParent(tree,n))
    child = script_tree.getName(tree,n)
    graph[parent].append(child)

# parse transfers
total_transfers = 0
uninformative = 0
by_family = {}
for line in constraints:
  #print line
  if (len(line.split()) >= 2 or len(line.split(",")) >= 2) and line.find("FRQ") <0:
コード例 #9
0
ファイル: MaxTiC.py プロジェクト: ssolo/ALE
#sortie = open("distribution_by_family","w")
#keys = by_family.keys()
#keys.sort()
#for f in keys:
  #sortie.write(f+" "+str(by_family[f])+"\n")

total_transfers = sum(edge.values())


to_desc = 0
uninformative = 0
# initialise from branches
for n in nodes:
  if (not script_tree.isLeaf(tree,n)):
    if (not script_tree.isRoot(tree,n)):
      parent = script_tree.getBootstrap(tree,script_tree.getParent(tree,n))
      child = script_tree.getBootstrap(tree,n)
      graph[parent].append(child)
      if edge.has_key(parent+","+child):
        to_desc = to_desc + edge[parent+","+child]
        uninformative = uninformative + edge[parent+","+child]
      edge[parent+","+child] = MAX_NUMBER
  else:
    parent = script_tree.getBootstrap(tree,script_tree.getParent(tree,n))
    child = script_tree.getName(tree,n)
    graph[parent].append(child)


edge_keys = edge.keys()
edge_keys.sort(lambda x,y: cmp(edge[x],edge[y]))