class ScbiGo::GeneOntology
Attributes
base_terms[RW]
gos[RW]
header[RW]
Public Class Methods
new(filename='lib/data/go.obo.gz')
click to toggle source
load a new gene ontology fiel in obo format, in gz or un-gzipped format
# File lib/scbi_go/gene_ontology.rb, line 9 def initialize(filename='lib/data/go.obo.gz') if !File.exists?(filename) raise "File does not exists: #{filename}" end #t1=Time.now @filename=filename begin my_obo_file=Zlib::GzipReader.open(filename) rescue Zlib::GzipFile::Error # not in gzip file my_obo_file=File.open(@filename) # open as normal file end #@cache_filename='/dev/shm/'+File.basename(@filename)+'.dump' @base_terms=[] @gos={} @header=nil # if File.exists?(@cache_filename) # puts "using cache: #{@cache_filename}" # o=Marshal.load(File.new(@cache_filename)) # @base_terms=o.base_terms # @gos=o.gos # @header=o.header # else # Parse Obo data file with external lib obo = Obo::Parser.new(filename) go_list = obo.elements(my_obo_file).to_a obo=nil #first element is header @header = ScbiGo::Header.new(go_list.shift) # other elements are go terms go_list.each do |go_term| add_go_term(go_term) end add_children_relations go_list=nil #save cache file # Marshal.dump(self, File.new(@cache_filename,'w')) # end #puts "Load time #{Time.now-t1} seg" end
Public Instance Methods
add_go_term(go_term)
click to toggle source
add new term
# File lib/scbi_go/gene_ontology.rb, line 67 def add_go_term(go_term) if go_term.name =='Term' && go_term['is_obsolete'].nil? new_term=ScbiGo::GoTerm.new(go_term, self) @gos[go_term['id']] = new_term if new_term.base_term? @base_terms<<new_term end end end
find_go(go_id)
click to toggle source
find a go_term by it name
# File lib/scbi_go/gene_ontology.rb, line 62 def find_go(go_id) @gos[go_id] end
go_list_to_terms(go_list)
click to toggle source
convert a list of go names to terms, ignore not found gos
# File lib/scbi_go/gene_ontology.rb, line 78 def go_list_to_terms(go_list) res=[] go_list.each do |s| if s.is_a?(GoTerm) res << s else res << find_go(s) end end return res.compact end
Private Instance Methods
add_children_relations()
click to toggle source
add children links to parents once Go file is loaded
# File lib/scbi_go/gene_ontology.rb, line 95 def add_children_relations @gos.each do |go_id, go| go.is_a.each do |parent| parent.add_child(go) end end end