class Bio::Tree
Here we add to BioRuby's Bio::Tree
classes
Public Instance Methods
clone()
click to toggle source
# File lib/bio-alignment/tree.rb, line 164 def clone new_tree = self.class.new nodes.each do |x| new_tree.add_node(x) end self.each_edge do |node1, node2, edge| if new_tree.include?(node1) and new_tree.include?(node2) then new_tree.add_edge(node1, node2, edge) end end new_tree end
clone_subtree(start_node)
click to toggle source
Create a deep clone of the tree
# File lib/bio-alignment/tree.rb, line 128 def clone_subtree start_node new_tree = self.class.new list = [start_node] + start_node.descendents list.each do |x| new_tree.add_node(x) end each_edge do |node1, node2, edge| if new_tree.include?(node1) and new_tree.include?(node2) new_tree.add_edge(node1, node2, edge) end end new_tree end
clone_tree_without_branch(node)
click to toggle source
Clone a tree without the branch starting at node
# File lib/bio-alignment/tree.rb, line 143 def clone_tree_without_branch node new_tree = self.class.new original = [root] + root.descendents # p "Original",original skip = [node] + node.descendents # p "Skip",skip # p "Retain",root.descendents - skip nodes.each do |x| if not skip.include?(x) new_tree.add_node(x) else end end each_edge do |node1, node2, edge| if new_tree.include?(node1) and new_tree.include?(node2) new_tree.add_edge(node1, node2, edge) end end new_tree end
find(name)
click to toggle source
# File lib/bio-alignment/tree.rb, line 118 def find name get_node_by_name(name) end
map() { |leaf| ... }
click to toggle source
Walk the ordered tree leaves, calling into the block, and return an array
# File lib/bio-alignment/tree.rb, line 123 def map leaves.map { | leaf | yield leaf } end