Sha256: 04320dc0fe59626ac2f444b2b27ede3aeab02d6002c4d86eaf9223f9538455f5

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

require 'rbbt-util'
require 'rbbt/util/data_module'


module Organism
  class OrganismNotProcessedError < StandardError; end

  def self.datadir(org)
    File.join(Rbbt.datadir, 'organisms', org)
  end 

  def self.normalize(org, list, field = nil, others = nil, options = {})
    return [] if list.nil? or list.empty?
    options = Misc.add_defaults options, :persistence => true, :case_insensitive => true, :double => false
    double = Misc.process_options options, :double
    
    if Array === list
      if double
        index.values_at *list
      else
        index.values_at(*list).collect{|e| Misc.first e}
      end
    else
      if double
        index[list]
      else
        index[list].first
      end
    end
  end

  def self.guess_id(org, values)
    identifiers = TSV.new(Organism.identifiers(org), :persistence => true)
    field_matches = identifiers.field_matches(values)
    field_matches.sort_by{|field, matches| matches.uniq.length}.last
  end

  def self.organisms
    Dir.glob(File.join(PKGData.sharedir_for_file(__FILE__), 'install/Organism/*/Rakefile')).collect{|f| File.basename(File.dirname(f))}
  end

  def self.name(organism)
    Open.read(Organism.scientific_name(organism)).strip
  end

  def self.organism(name)
    organisms.select{|organism|
      organism == name or Organism.name(organism) =~ /#{ name }/i
    }.first
  end
  
  extend DataModule
  
  Hsa = with_key('Hsa')
  Sce = with_key('Sce')
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rbbt-sources-0.2.2 lib/rbbt/sources/organism.rb