class Bio::Relation

Bio::Relation is a simple object storing two nodes and the relation of them. The nodes and the edge (relation) can be any Ruby object. You can also compare Bio::Relation objects if the edges have Comparable property.

Attributes

edge[RW]
node[RW]

Public Class Methods

new(node1, node2, edge) click to toggle source

Create new binary relation object consists of the two object 'node1' and 'node2' with the 'edge' object as the relation of them.

# File lib/bio/pathway.rb, line 718
def initialize(node1, node2, edge)
  @node = [node1, node2]
  @edge = edge
end

Public Instance Methods

<=>(rel) click to toggle source

Used by the each method to compare with another Bio::Relation object. This method is only usable when the edge objects have the property of the module Comparable.

# File lib/bio/pathway.rb, line 773
def <=>(rel)
  unless self.edge.kind_of? Comparable
    raise "[Error] edges are not comparable"
  end
  if self.edge > rel.edge
    return 1
  elsif self.edge < rel.edge
    return -1
  elsif self.edge == rel.edge
    return 0
  end
end
===(rel) click to toggle source

Compare with another Bio::Relation object whether havind same edges and same nodes. The == method compares Bio::Relation object's id, however this case equality === method compares the internal property of the Bio::Relation object.

# File lib/bio/pathway.rb, line 747
def ===(rel)
  if self.edge == rel.edge
    if self.node[0] == rel.node[0] and self.node[1] == rel.node[1]
      return true
    elsif self.node[0] == rel.node[1] and self.node[1] == rel.node[0]
      return true
    else
      return false
    end
  else
    return false
  end
end
Also aliased as: eql?
eql?(rel)

Method eql? is an alias of the === method and is used with hash method to make uniq arry of the Bio::Relation objects.

a1 = Bio::Relation.new('a', 'b', 1)
a2 = Bio::Relation.new('b', 'a', 1)
a3 = Bio::Relation.new('b', 'c', 1)

p [ a1, a2, a3 ].uniq

Alias for: ===
from() click to toggle source

Returns one node.

# File lib/bio/pathway.rb, line 725
def from
  @node[0]
end
hash() click to toggle source

Used by eql? method

# File lib/bio/pathway.rb, line 739
def hash
  @node.sort.push(@edge).hash
end
relation() click to toggle source
# File lib/bio/pathway.rb, line 734
def relation
  @edge
end
to() click to toggle source

Returns another node.

# File lib/bio/pathway.rb, line 730
def to
  @node[1]
end