From 79bcc6575eb30c4fddcc77ffdc183f79d2d1cc0d Mon Sep 17 00:00:00 2001 From: gebele Date: Thu, 22 Sep 2016 10:29:10 +0000 Subject: added Ag --- application.rb | 52 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) (limited to 'application.rb') diff --git a/application.rb b/application.rb index 98e502f..3ffc080 100644 --- a/application.rb +++ b/application.rb @@ -18,11 +18,13 @@ get '/predict/?' do prediction_models = OpenTox::Model::NanoPrediction.all prediction_models.each{|m| m.model[:feature_selection_algorithm_parameters]["category"] == "P-CHEM" ? @prediction_models[0] = m : @prediction_models[1] = m} @prediction_models.each_with_index{|m,idx| idx == 0 ? m[:pc_model] = true : m[:pcp_model] = true} - example = OpenTox::Nanoparticle.all.select{|n| n.core["name"] == "Au"}.sample - @example_pcp = example - example = OpenTox::Nanoparticle.all.select{|n| n.core["name"] == "Au"}.sample - example.physchem_descriptors.delete_if{|k,v| feature = OpenTox::Feature.find_by(:id => k); feature.category != "P-CHEM"} - @example_pc = example + nanoparticles = OpenTox::Nanoparticle.all.select{|n| n.core["name"] == "Au" || n.core["name"] == "Ag"} + example = nanoparticles.collect{|n| n if n.physchem_descriptors.size > 16}.compact + pcp = example.sample + @example_pcp = pcp + pc = example.sample + pc.physchem_descriptors.delete_if{|k,v| feature = OpenTox::Feature.find_by(:id => k); feature.category != "P-CHEM"} + @example_pc = pc haml :predict end @@ -35,32 +37,38 @@ end post '/predict/?' do prediction_model = OpenTox::Model::NanoPrediction.find(params[:prediction_model]) size = params[:size].to_i + @type = params[:type] + + example_core = eval(params[:example_core]) + example_coating = eval(params[:example_coating]) example_pc = eval(params[:example_pc]) - pc_descriptors = {} - (1..size).each{|i| pc_descriptors["#{params["input_key_#{i}"]}"] = [params["input_value_#{i}"].to_f]} - if example_pc == pc_descriptors + + in_core = eval(params[:in_core]) + in_core["name"] = params[:input_core] + input_core = in_core + + in_coating = eval(params[:in_coating]) + in_coating[0]["name"] = params[:input_coating] + input_coating = in_coating + + input_pc = {} + (1..size).each{|i| input_pc["#{params["input_key_#{i}"]}"] = [params["input_value_#{i}"].to_f]} + if input_pc == example_pc && input_core == example_core && input_coating == example_coating # unchanged input = database hit nanoparticle = OpenTox::Nanoparticle.find_by(:id => params[:example_id]) - nanoparticle.physchem_descriptors = pc_descriptors + nanoparticle.physchem_descriptors = input_pc + @match = true,@nanoparticle = nanoparticle,@name = nanoparticle.name else # changed input = create nanoparticle to predict nanoparticle = OpenTox::Nanoparticle.new - nanoparticle.core = eval(params[:core]) - nanoparticle.coating = eval(params[:coating]) - nanoparticle.physchem_descriptors = pc_descriptors + nanoparticle.core = input_core + nanoparticle.coating = input_coating + nanoparticle.physchem_descriptors = input_pc + @match = false end # output - @input = pc_descriptors + @input = input_pc @prediction = prediction_model.model.predict_substance nanoparticle - @match = true,@nanoparticle = nanoparticle,@name = nanoparticle.name if @prediction[:warning] =~ /identical/ - #@prediction[:neighbors].each do |n| - #puts n - #puts nano = OpenTox::Nanoparticle.find(n["_id"]) - #puts nano.name - #puts n["similarity"] - #puts n["measurements"] - #puts nano.physchem_descriptors.delete_if{|k,v| feature = OpenTox::Feature.find_by(:id => k); feature.category != "P-CHEM"}.size - #end haml :prediction end -- cgit v1.2.3