summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2011-05-24 15:11:12 +0200
committerAndreas Maunz <andreas@maunz.de>2011-05-24 15:11:12 +0200
commitd0006c50909a7f134df4e246f747831e3a5547ed (patch)
treebc938ec8eb6f671ef85fcb19fc63d3037aa55e57
parent580ac1b909cdeb68a5b0b721611dc78fe7c75d95 (diff)
Fixing regression detection
-rw-r--r--lib/parser.rb66
1 files changed, 51 insertions, 15 deletions
diff --git a/lib/parser.rb b/lib/parser.rb
index 7bdee95..5f847c3 100644
--- a/lib/parser.rb
+++ b/lib/parser.rb
@@ -277,7 +277,16 @@ module OpenTox
def load_spreadsheet(book)
book.default_sheet = 0
add_features book.row(1)
- 2.upto(book.last_row) { |i| add_values book.row(i) }
+
+ # AM: fix mixed read in
+ regression_features=false
+ 2.upto(book.last_row) { |i|
+ row = book.row(i)
+ regression_features = detect_regression_features row
+ break if regression_features==true
+ }
+
+ 2.upto(book.last_row) { |i| add_values book.row(i),regression_features }
warnings
@dataset
end
@@ -289,11 +298,21 @@ module OpenTox
row = 0
input = csv.split("\n")
add_features split_row(input.shift)
- input.each { |row| add_values split_row(row) }
+
+
+ # AM: fix mixed read in
+ regression_features=false
+ input.each { |row|
+ row = split_row(row)
+ regression_features = detect_regression_features row
+ break if regression_features==true
+ }
+ input.each { |row| add_values split_row(row),regression_features }
warnings
@dataset
end
+
private
def warnings
@@ -335,7 +354,20 @@ module OpenTox
end
end
- def add_values(row)
+ def detect_regression_features row
+ row.shift
+ regression_features=false
+ row.each_index do |i|
+ value = row[i]
+ type = feature_type(value)
+ if type == OT.NumericFeature
+ regression_features=true
+ end
+ end
+ regression_features
+ end
+
+ def add_values(row, regression_features=false)
smiles = row.shift
compound = Compound.from_smiles(smiles)
@@ -353,19 +385,23 @@ module OpenTox
@feature_types[feature] << type
- case type
- when OT.NominalFeature
- case value.to_s
- when TRUE_REGEXP
- val = true
- when FALSE_REGEXP
- val = false
- end
- when OT.NumericFeature
+ if (regression_features)
val = value.to_f
- when OT.StringFeature
- val = value.to_s
- @activity_errors << smiles+", "+row.join(", ")
+ else
+ case type
+ when OT.NominalFeature
+ case value.to_s
+ when TRUE_REGEXP
+ val = true
+ when FALSE_REGEXP
+ val = false
+ end
+ when OT.NumericFeature
+ val = value.to_f
+ when OT.StringFeature
+ val = value.to_s
+ @activity_errors << smiles+", "+row.join(", ")
+ end
end
if val!=nil
@dataset.add(compound.uri, feature, val)