summaryrefslogtreecommitdiff
path: root/nch/09_eval_grid.rb
blob: 41db55f926186b321e35f4e29e4bf24a548a14e3 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env ruby

require "./config.rb"

require "bundler"
Bundler.require

res = YAML.load("---
- :min_sim: 0.65
  :min_train: 0.0
  :cv: http://localhost:8087/validation/crossvalidation/73
  :r_square: 0.28572954365573644
  :unpredicted: '3'
  :features: all-pc-features
- :min_sim: 0.65
  :min_train: 0.0
  :cv: http://localhost:8087/validation/crossvalidation/74
  :r_square: 0.20115321576362188
  :unpredicted: '3'
  :features: new-pc-features
- :min_sim: 0.65
  :min_train: 0.0
  :cv: http://localhost:8087/validation/crossvalidation/76
  :r_square: 0.013357820165398548
  :unpredicted: '5'
  :features: ob-pc-features")

min_train = [nil,0.1,0.2] #,0.3,0.4,0.5]

all = nil
s = [ "feat\\train" ]
min_train.each do |m|
  s << (m==nil ? 0.0 : m).to_s
end
out = [s]

res.each do |r|
#  s = [ r[:min_sim].to_s ]
 s = [ r[:features].to_s ]
  stats = OpenTox::Crossvalidation.find(r[:cv]).statistics
  all = stats.metadata[RDF::OT.numInstances.to_s].to_i unless all
  min_train.each do |m|
    data = (m==nil ? stats.metadata : stats.filter_metadata(m))
    v =  sprintf("%.3f",data[RDF::OT.regressionStatistics.to_s][RDF::OT.rSquare.to_s])
    v << "("
    v << sprintf("%2d",(all - (data[RDF::OT.numInstances.to_s].to_i-data[RDF::OT.numUnpredicted.to_s].to_i)))
    v << ")"
    s << v
  end
  out << s
end


def print_2d_array(a, cs=15)
  report = []   
  report << a.enum_for(:each_with_index).map { |ia, i|
    ia.map{|e| "%#{cs}s" % e}.join(" | ") }
  puts report.join("\n")
end

print_2d_array out