/ @@prediction_models and @@predictions defined in POST request '/predict' / unpacks multi prediction array ; / prepare it for neighbors ; / align single prediction to endpoint ; / display preordered in table view ; .results{:style=>"display:none"} - count_m = 0 / tabs div ; #tabs %ul / each endpoint becomes a tab head ; - @prediction_models.each do |m| - count_m += 1 - m_title = m.title.split("_").last(2)[0] %li %a{:href => "#results_#{count_m}", :id => "link#{m_title}"} = m_title - count_rs = 0 / unpack to single arrays - @predictions.each do |pa| / pass model type for significant fragments view - @type = @model_type[count_rs] - count_rs += 1 #results{:id=>"#{count_rs}"} - pa.each do |p| / prepare dataset for neighbors table ; / delete first array which contains prediction ; / following arrays are the neighbor predictions ; - @model_uri = p.metadata[RDF::OT.hasSource][0] - p.data_entries.shift - p.compounds.shift / call the tablesorter plugin ; / presort by similarity ; :javascript $(document).ready(function(){ $("table##{count_rs}").tablesorter({ //debug: true, //widgets: ['zebra'], headers: {0: {sorter: false}, 3: {sorter: false}}, sortList: [[2,1]] }); }); - $logger.debug "neighbors compounds:\t#{p.data_entries[0]}\n" - if p.data_entries[0][2] != nil && p.data_entries[0].size != 3 %h2= "Neighbors: " %table{:id=>"#{count_rs}", :class=>"tablesorter", :cellspacing=>"1"} %thead %tr %th Compound %th %b Measured Activity / title must be empty for tooltip %a{:href=>"#", :title=>"", :id=>"measured_activity"} %img{:src=>"/images/info_white.png"} .tooltip{:style=>"font-weight: normal; font-size: 1em; text-align: left;"} %dt Measured Activity %dd Experimental result(s) from the training dataset. %th %b Similarity / title must be empty for tooltip %a{:href=>"#", :title=>"", :id=>"similarity"} %img{:src=>"/images/info_white.png"} .tooltip{:style=>"font-weight: normal; font-size: 1em; text-align: left;"} %dt Similarity %dd %code{:style=>"font-size:x-large;"} lazar calculates %em activity specific similarities based on the presence of statistically significant fragments. This procedure will %ul %li consider only those parts of a chemical structure that are relevant for a particular endpoint %li ignore inert parts of the structure %li lead to different similarities, depending on the toxic endpoint Similarities of 1 may be encountered even for structurally dissimilar compounds, because inert parts are ignored. %th Supporting information -#%tbody - count = 0 - p.compounds.each do |neighbor_compound| / prevent conversion of nil - c = p.data_entries[count][2] != nil ? p.data_entries[count][2] : '' - case c - when /(false|true|inactive|active)/i - c = c - else /- c = Array.new - c = p.data_entries[count][2].round(3) %tr %td.compound %a{:href => to("/prediction/#{CGI.escape(neighbor_compound.uri)}/details"), :id=>"link#{count_rs}#{count}", :target=>"details"} Names and synonymes > %img{:src=>"#{neighbor_compound.uri}/image", :alt=>"Compound image not available", :title=>"#{neighbor_compound.smiles}", :width=>"150px"} %td - if c.class == String = c - else = c %td = p.data_entries[count][3] != nil ? p.data_entries[count][3].round(3) : "Not enough similar compounds in training dataset." %td - if @type =~ /classification/i - if p.data_entries[count][3] != nil %a{:href => to("/prediction/#{CGI.escape(@model_uri)}/#{@type}/#{CGI.escape(neighbor_compound.uri)}/significant_fragments"), :id=>"link#{count_rs}#{count}sf", :target=>"details"} Significant fragments > - if @type =~ /regression/i - if p.data_entries[count][3] != nil %a{:href => to("/prediction/#{CGI.escape(@model_uri)}/#{@type}/#{CGI.escape(neighbor_compound.uri)}/significant_fragments"), :id=>"link#{count_rs}#{count}sf", :target=>"details"} Descriptors > :javascript $(function() { $("a#link#{count_rs}#{count}").on('click', function(e) { $('#iframe_details').bPopup(); }); }); $(function() { $("a#link#{count_rs}#{count}sf").on('click', function(e) { $('#iframe_details').bPopup(); }); }); - count += 1 -#- else %h3 Not enough similar compounds in training dataset %iframe{:id=>"iframe_details", :name=>"details", :height=>"95%", :width=>"95%", :style=>"display:none;border:0px"}