class GeneOntology
Constants
- EXPECTED_HEADER_FIELDS
- Header
subsetdefs is an array, other is a hash for any key/value pairs not already defined here
- VERSION
Attributes
header[RW]
id_to_term[RW]
Public Class Methods
from_file(filename)
click to toggle source
# File lib/gene_ontology.rb, line 23 def from_file(filename) new.from_file(filename) end
link!(terms)
click to toggle source
turns is_a links from strings to actual GeneOntology
objects returns id_to_term
# File lib/gene_ontology.rb, line 55 def self.link!(terms) id_to_term = {} terms.each {|term| id_to_term[term.id] = term } terms.each do |term| term.is_a.map! {|id| id_to_term[id] } end id_to_term end
Public Instance Methods
from_file(filename)
click to toggle source
returns self
# File lib/gene_ontology.rb, line 29 def from_file(filename) File.open(filename) do |io| @header = parse_header(io) @id_to_term = parse_terms(io) end self end
parse_header(io)
click to toggle source
returns a header object
# File lib/gene_ontology.rb, line 38 def parse_header(io) header = Header.new while md=io.gets.match(/^([\w\-]+): (.*)/) key, val = md[1].to_sym, md[2] if key == :subsetdef header.subsetdefs.push(val) elsif !header.respond_to?(key) header.other[key] = val else header[key] = val end end header end
parse_terms(io, opts={})
click to toggle source
returns id_to_term
is_a points to an array of actual objects
# File lib/gene_ontology.rb, line 66 def parse_terms(io, opts={}) opts = {:link => true}.merge(opts) terms = [] in_term = false while line = io.gets if (md=line.match(/^(\w+): (.+)/)) && (in_term) key, val = md[1].to_sym, md[2].split(' ! ').first if Term::PLURAL.include?(key) terms.last.send(key) << val else terms.last.send("#{key}=", val) end elsif line !~ /\w/ in_term = false elsif line =~ /\[Term\]/ terms << Term.new in_term = true end end id_to_term = self.class.link!(terms) id_to_term.values.each {|term| term.find_level } id_to_term end