summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2015-07-18 17:19:44 +0200
committerChristoph Helma <helma@in-silico.ch>2015-07-18 17:19:44 +0200
commit686328edef0d15de0b8be06b2c3198e01810bc70 (patch)
treecc90637c539a4ce0903176567eec6c58ab7f8d2b
parent4427ba258e0bfdac2056960bf84f13477e13e87a (diff)
initial bbrc parsing fix. speedup ~65 times
-rw-r--r--lib/bbrc.rb53
1 files changed, 31 insertions, 22 deletions
diff --git a/lib/bbrc.rb b/lib/bbrc.rb
index 740a763..f7d29f9 100644
--- a/lib/bbrc.rb
+++ b/lib/bbrc.rb
@@ -34,8 +34,8 @@ module OpenTox
@bbrc.SetRegression(true) # AM: DO NOT MOVE DOWN! Must happen before the other Set... operations!
else
bad_request_error "No accept values for "\
- "dataset '#{@fminer.training_dataset.uri}' and "\
- "feature '#{@fminer.prediction_feature.uri}'" unless
+ "dataset '#{@fminer.training_dataset.id}' and "\
+ "feature '#{@fminer.prediction_feature.id}'" unless
@fminer.prediction_feature.accept_values
value_map=@fminer.prediction_feature.value_map
end
@@ -67,8 +67,8 @@ module OpenTox
#task.progress 10
step_width = 80 / @bbrc.GetNoRootNodes().to_f
- features_smarts = Set.new
- features = Array.new
+ features = []
+ data_entries = [[]]
puts "Setup: #{Time.now-time}"
time = Time.now
@@ -108,39 +108,43 @@ module OpenTox
end
ft = Time.now
- unless features_smarts.include? smarts
- features_smarts << smarts
- feature = OpenTox::Feature.find_or_create_by({
- "title" => smarts.dup,
- "numeric" => true,
- "substructure" => true,
- "smarts" => smarts.dup,
- "pValue" => p_value.to_f.abs.round(5),
- "effect" => effect
- })
- features << feature
- end
+ feature = OpenTox::Feature.find_or_create_by({
+ "title" => smarts.dup,
+ "numeric" => true,
+ "substructure" => true,
+ "smarts" => smarts.dup,
+ "pValue" => p_value.to_f.abs.round(5),
+ "effect" => effect
+ })
+ features << feature
+ features.uniq!
ftime += Time.now - ft
id_arrs.each { |id_count_hash|
id=id_count_hash.keys[0].to_i
count=id_count_hash.values[0].to_i
- fminer_results[@fminer.compounds[id]] || fminer_results[@fminer.compounds[id]] = {}
+ compound_idx = params[:dataset].compounds.index @fminer.compounds[id]
+ feature_idx = features.index feature
+ data_entries[compound_idx] ||= []
if params[:nr_hits] == "true"
- fminer_results[@fminer.compounds[id]][feature] = count
+ data_entries[compound_idx][feature_idx] = count
else
- fminer_results[@fminer.compounds[id]][feature] = 1
+ data_entries[compound_idx][feature_idx] = 1
end
}
end # end of
end # feature parsing
+ #p features
+ p data_entries
+ #p params[:dataset].compounds
+ #p @fminer.compounds
puts "Fminer: #{Time.now-time} (find/create Features: #{ftime})"
time = Time.now
- puts JSON.pretty_generate(fminer_results)
-
+ #puts JSON.pretty_generate(fminer_results)
+=begin
fminer_compounds = @fminer.training_dataset.compounds
prediction_feature_idx = @fminer.training_dataset.features.index @fminer.prediction_feature
prediction_feature_all_acts = fminer_compounds.each_with_index.collect { |c,idx|
@@ -157,19 +161,24 @@ module OpenTox
#row = row + [ prediction_feature_all_acts[idx] ]
#end
features.each { |f|
- v = fminer_results[c][f.uri] if fminer_results[c]
+ v = fminer_results[c][f] if fminer_results[c]
unless fminer_noact_compounds.include? c
v = 0 if v.nil?
end
feature_dataset.add_data_entry c, f, v.to_i
}
}
+=end
+ feature_dataset.compounds = params[:dataset].compounds
+ feature_dataset.features = features
+ feature_dataset.data_entries = data_entries
puts "Prepare save: #{Time.now-time}"
time = Time.now
feature_dataset.save
puts "Save: #{Time.now-time}"
+ p feature_dataset
feature_dataset