blob: 2752fcc44ebdcad351ad9ac84874eb0c0a36f53d (
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
require "lib/prediction_data.rb"
require "lib/predictions.rb"
module Lib
class OTPredictions < Predictions
def initialize(data, compounds=nil)
raise unless data.is_a?(Hash)
super(data)
@compounds = compounds
end
def identifier(instance_index)
compound(instance_index)
end
def compound(instance_index)
@compounds[instance_index]
end
def compute_stats()
res = {}
case feature_type
when "classification"
(Validation::VAL_CLASS_PROPS).each{ |s| res[s] = send(s)}
when "regression"
(Validation::VAL_REGR_PROPS).each{ |s| res[s] = send(s) }
end
return res
end
def to_array()
OTPredictions.to_array( [self] )
end
def self.to_array( predictions, add_pic=false, format=false, validation_uris=nil )
confidence_available = false
predictions.each do |p|
confidence_available |= p.confidence_values_available?
end
res = []
conf_column = nil
count = 0
predictions.each do |p|
v_uris = validation_uris[count] if validation_uris
count += 1
(0..p.num_instances-1).each do |i|
a = []
#PENDING!
begin
#a.push( "http://ambit.uni-plovdiv.bg:8080/ambit2/depict/cdk?search="+
# URI.encode(OpenTox::Compound.new(:uri=>p.identifier(i)).smiles) ) if add_pic
a << p.identifier(i)+"?media=image/png"
rescue => ex
raise ex
#a.push("Could not add pic: "+ex.message)
#a.push(p.identifier(i))
end
a << (format ? p.actual_value(i).to_nice_s : p.actual_value(i))
a << (format ? p.predicted_value(i).to_nice_s : p.predicted_value(i))
if p.feature_type=="classification"
if (p.predicted_value(i)!=nil and p.actual_value(i)!=nil)
if p.classification_miss?(i)
a << (format ? ICON_ERROR : 1)
else
a << (format ? ICON_OK : 0)
end
else
a << nil
end
end
if confidence_available
conf_column = a.size if conf_column==nil
a << p.confidence_value(i)
end
if validation_uris
a << v_uris[i]
end
a << p.identifier(i)
res << a
end
end
if conf_column!=nil
LOGGER.debug "sort via confidence: "+res.collect{|n| n[conf_column]}.inspect
res = res.sort_by{ |n| n[conf_column] || 0 }.reverse
if format
res.each do |a|
a[conf_column] = a[conf_column].to_nice_s
end
end
end
header = []
header << "Compound" if add_pic
header << "Actual value"
header << "Predicted value"
header << "Classification" if predictions[0].feature_type=="classification"
header << "Confidence value" if predictions[0].confidence_values_available?
header << "Validation URI" if validation_uris
header << "Compound URI"
res.insert(0, header)
return res
end
end
end
|