Method: Bio::Tree#remove_edge

Defined in:
lib/bio/tree.rb

#remove_edge(source, target) ⇒ Object

Removes an edge between source and target. Returns self. If the edge does not exist, raises IndexError.


If two or more edges exists between source and target, all of them are removed. +++



448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
# File 'lib/bio/tree.rb', line 448

def remove_edge(source, target)
  unless self.get_edge(source, target) then
    raise IndexError, 'edge not found'
  end
  fwd = [ source, target ]
  rev = [ target, source ]
  @pathway.relations.delete_if do |rel|
    rel.node == fwd or rel.node == rev
  end
  h = @pathway.graph[source]
  h.delete(target) if h
  h = @pathway.graph[target]
  h.delete(source) if h
  self
end