本文整理汇总了Python中tree.Node.label方法的典型用法代码示例。如果您正苦于以下问题:Python Node.label方法的具体用法?Python Node.label怎么用?Python Node.label使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tree.Node
的用法示例。
在下文中一共展示了Node.label方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: parse_ontology
# 需要导入模块: from tree import Node [as 别名]
# 或者: from tree.Node import label [as 别名]
def parse_ontology(inp):
"""
Read the ontology and return it as a tree where labels are categories.
"""
root = Node()
root.label = 'root'
# We add an empty first line so that lineno can start at 1, and therefore
# match the actual line number in the file, which is 1-indexed.
lines = [''] + inp.readlines()
lineno = parse_ontology_level(lines, 1, 0, root)
if lineno != len(lines):
raise ValueError("line {}: underindented".format(lineno))
return root
示例2: parse_ontology_level
# 需要导入模块: from tree import Node [as 别名]
# 或者: from tree.Node import label [as 别名]
def parse_ontology_level(lines, lineno, root_spaces, root):
"""
Parse a level of the tree into `root` and return the next `lineno`.
The level is defined by the number of spaces.
"""
prev_categ = None
child_spaces = None
while True:
if lineno == len(lines):
# EOF; end recursion.
break
line = lines[lineno]
if not line.strip() or line.startswith('#'):
# Ignore blank line.
lineno += 1
continue
categ = line.strip()
spaces = 0
for c in line:
if c != ' ':
break
spaces += 1
if spaces < root_spaces:
# Handled by function above us.
break
if spaces == root_spaces:
# Handled by ourselves.
child = Node()
child.label = categ
root.children.append(child)
prev_categ = child
lineno += 1
elif spaces > root_spaces:
# Handled by a child function.
if child_spaces is None:
child_spaces = spaces
if child_spaces != spaces:
raise ValueError("line {}: indent mismatch".format(lineno))
if prev_categ is None:
raise ValueError("line {}: overindented".format(lineno))
lineno = parse_ontology_level(lines, lineno, spaces, prev_categ)
return lineno
示例3: parse_trees
# 需要导入模块: from tree import Node [as 别名]
# 或者: from tree.Node import label [as 别名]
def parse_trees(e, otus):
"""
Get trees from an etree object
Args:
e: A nexml document parsed by etree
otus: OTUs returned by parse_otus
Returns:
list: A list of ivy Storage objects each
containing every node of a tree.
"""
from tree import Node
v = []
for tb in e.findall(NEXML+"trees"):
for te in tb.findall(NEXML+"tree"):
t = storage.Storage()
t.attrib = storage.Storage(te.attrib)
t.nodes = {}
for n in te.findall(NEXML+"node"):
node = Node()
if n.attrib.get("otu"):
node.isleaf = True
node.otu = otus[n.attrib["otu"]]
node.label = node.otu.label
t.nodes[n.attrib["id"]] = node
for edge in te.findall(NEXML+"edge"):
d = edge.attrib
n = t.nodes[d["target"]]
p = t.nodes[d["source"]]
length = d.get("length")
if length:
n.length = float(length)
p.add_child(n)
r = [ n for n in t.nodes.values() if not n.parent ]
assert len(r)==1
r = r[0]
r.isroot = True
for i, n in enumerate(r): n.id = i+1
t.root = r
v.append(t)
return v
示例4: parse
# 需要导入模块: from tree import Node [as 别名]
# 或者: from tree.Node import label [as 别名]
#.........这里部分代码省略.........
previous = None
ni = 0 # node id counter (preorder) - zero-based indexing
li = 0 # leaf index counter
ii = 0 # internal node index counter
pi = 0 # postorder sequence
while 1:
token = tokens.get_token()
if token == ';' or token == tokens.eof:
assert lp == rp, \
"unbalanced parentheses in tree description: (%s, %s)" \
% (lp, rp)
break
# internal node
elif token == '(':
lp = lp+1
newnode = Node()
newnode.ni = ni; ni += 1
## newnode.isleaf = False
newnode.treename = treename
if node:
if node.children: newnode.left = node.children[-1].right+1
else: newnode.left = node.left+1
node.add_child(newnode)
else:
newnode.left = 1
newnode.right = newnode.left+1
node = newnode
elif token == ')':
rp = rp+1
node = node.parent
if node.children:
node.right = node.children[-1].right + 1
elif token == ',':
node = node.parent
if node.children:
node.right = node.children[-1].right + 1
# branch length
elif token == ':':
token = tokens.get_token()
if token == '[':
node.length_comment = tokens.parse_embedded_comment()
token = tokens.get_token()
if not (token == ''):
try: brlen = float(token)
except ValueError:
raise ValueError, ("invalid literal for branch length, "
"'%s'" % token)
else:
raise 'NewickError', \
'unexpected end-of-file (expecting branch length)'
node.length = brlen
# comment
elif token == '[':
node.comment = tokens.parse_embedded_comment()
if node.comment[0] == '&':
# metadata
meta = META.findall(node.comment[1:])
if meta:
node.meta = {}
for k, v in meta:
v = eval(v.replace('{','(').replace('}',')'))
node.meta[k] = v
# leaf node or internal node label
else:
if previous != ')': # leaf node
if ttable:
try:
ttoken = (ttable.get(int(token)) or
ttable.get(token))
except ValueError:
ttoken = ttable.get(token)
if ttoken:
token = ttoken
newnode = Node()
newnode.ni = ni; ni += 1
newnode.label = "_".join(token.split()).replace("'", "")
## newnode.isleaf = True
if node.children: newnode.left = node.children[-1].right+1
else: newnode.left = node.left+1
newnode.right = newnode.left+1
newnode.treename = treename
node.add_child(newnode)
node = newnode
else: # label
if ttable:
node.label = ttable.get(token, token)
else:
node.label = token
previous = token
## node.isroot = True
return node