summaryrefslogtreecommitdiff
path: root/lib/feature.rb
blob: c0729a78068bbc979dab3efa539e1fa8707d65e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
module OpenTox
  class Feature
    include OpenTox

    def self.find(uri, subjectid=nil)
      return nil unless uri   
      feature = Feature.new uri
      if (CONFIG[:yaml_hosts].include?(URI.parse(uri).host))
        feature.add_metadata YAML.load(RestClientWrapper.get(uri,{:accept => "application/x-yaml", :subjectid => subjectid}))
      else
        feature.add_metadata  Parser::Owl::Dataset.new(uri).load_metadata
      end
      feature
    end
    
    # provides domain (possible target values) of classification feature 
    # @return [Array] list with possible target values
    def domain
      if metadata[OT.acceptValue]
        raise "accept value found, remove hack and implement correctly"
      else
      if @uri=~/feature\/26221/ || @uri=~/feature\/221726/ 
        return ["mutagen" , "nonmutagen"]
      end
        return [true, false]
      end
    end
    
    # provides feature type, possible types are "regression" or "classification"
    # @return [String] feature type, unknown if OT.isA property is unknown/ not set
    def feature_type
      case metadata[OT.isA]
      when /NominalFeature/
        "classification"
      when /NumericFeature/
        "regression"
      else
        "unknown"
      end
    end    
    
  end
end