class Bio::Velvet::Graph::ArcArray
Public Class Methods
new()
click to toggle source
# File lib/bio-velvet/graph.rb, line 311 def initialize # Internal structure is hash of [node_id1, node_id2] => Array of arcs @internal_structure = {} @node_to_keys = {} end
Public Instance Methods
delete(arc)
click to toggle source
# File lib/bio-velvet/graph.rb, line 347 def delete(arc) key = [arc.begin_node_id, arc.end_node_id].sort @internal_structure[key].delete arc # If there is no other arcs with this same key, clean up more if @internal_structure[key].empty? @internal_structure.delete key @node_to_keys[key[0]].delete key @node_to_keys[key[1]].delete key @node_to_keys[key[0]] = nil if @node_to_keys[key[0]].nil? or @node_to_keys[key[0]].empty? @node_to_keys[key[1]] = nil if @node_to_keys[key[1]].nil? or @node_to_keys[key[1]].empty? end end
each(&block)
click to toggle source
# File lib/bio-velvet/graph.rb, line 364 def each(&block) @internal_structure.each do |internal_id, arcs| arcs.each do |arc| block.yield arc end end end
get_arcs_by_node_id(node_id1, node_id2=nil)
click to toggle source
Return all arcs into or out of the given node_id, or
# File lib/bio-velvet/graph.rb, line 330 def get_arcs_by_node_id(node_id1, node_id2=nil) if node_id2.nil? next_keys = @node_to_keys[node_id1] return [] if next_keys.nil? next_keys.uniq.collect do |key| @internal_structure[key] end.flatten else to_return = @internal_structure[[node_id1, node_id2].sort] if to_return.nil? return [] else return to_return end end end
length()
click to toggle source
# File lib/bio-velvet/graph.rb, line 360 def length @internal_structure.values.flatten.length end
push(arc)
click to toggle source
# File lib/bio-velvet/graph.rb, line 317 def push(arc) key = [arc.begin_node_id, arc.end_node_id].sort @internal_structure[key] ||= [] @internal_structure[key].push arc @node_to_keys[arc.begin_node_id] ||= [] @node_to_keys[arc.begin_node_id].push key unless arc.begin_node_id == arc.end_node_id @node_to_keys[arc.end_node_id] ||= [] @node_to_keys[arc.end_node_id].push key end end