summaryrefslogtreecommitdiff
path: root/views/batch.haml
blob: 0e7efc744edd6de0064b5065f4530158c5f4fa51 (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
%div.well
  %a.btn.btn-warning{:href => to('/predict')}
    %span.glyphicon.glyphicon-menu-left{:aria=>{:hidden=>"true"}}
    New Prediction
  %a.btn.btn-success{:id => "downbutton", :href=>"#{to("/predict/#{@tmppath}/#{@filename}")}", :title=>"download"}
    %span.glyphicon.glyphicon-download-alt
    Download CSV

  / show file name
  %topline
    %div.row
      %div.col-md-4
        %h3 Batch Prediction Results:
      %div.col-md-8
        %h3= @filename
  
  / displays all prediction result in one table
  %div.table-responsive
    %table.table.table-bordered{:id=>"batch", :style=>"background-color:white;"}
      %tbody
        - if @warnings
          - @warnings.each do |warning|
            %tr
              %td
                %b Warning
              %td
                = warning.sub(/\b(tmp\/)\b/,"")
        - @view.each do |compound, array|
          %tr
            %td{:style=>"vertical-align:top;"}
              %p= compound.svg
              %p= compound.smiles
            - array.each do |model,prediction|
              %td{:style=>"vertical-align:top;white-space:nowrap;"}
                - model.model.class.to_s.match("Classification") ? type = "Classification" : type = "Regression"
                - unit = model.unit
                
                %b{:class => "title"}
                  = "#{model.endpoint.gsub('_', ' ')} (#{model.species})"
                    
                / check for prediction
                - if prediction[:value]
                  %p
                  / show model type (classification|regression)
                  %b Type:
                  = type
                  %p 
                  / check for database hit
                  - if prediction[:info] =~ /\b(identical)\b/i
                    
                    / show message about dbhit and measurements
                    %p
                      %b Compound is part of the training dataset
                      %p
                      %b Measured activity:
                      %br
                      - if prediction[:measurements].is_a?(Array)
                        = (type == "Regression") ? prediction[:measurements].collect{|value| "#{value.delog10.signif(3)} (#{unit})</br>#{compound.mmol_to_mg(value.delog10).signif(3)} #{unit =~ /mmol\/L/ ? "(mg/L)" : "(mg/kg_bw/day)"}"}.join("</br>") : prediction[:measurements].join(", ")
                      - else
                        = (type == "Regression") ? "#{prediction[:measurements].delog10.signif(3)} (#{unit})</br>#{compound.mmol_to_mg(prediction[:measurements].delog10).signif(3)} #{(unit =~ /\b(mmol\/L)\b/) ? "(mg/L)" : "(mg/kg_bw/day)"}" : prediction[:measurements]
                    
                    
                  / show prediction
                  %p
                    %b Prediction:
                    %br
                    = (type == "Regression") ? "#{prediction[:value].delog10.signif(3)} (#{unit})</br>#{compound.mmol_to_mg(prediction[:value].delog10).signif(3)} #{(unit =~ /\b(mmol\/L)\b/) ? "(mg/L)" : "(mg/kg_bw/day)"}" : prediction[:value]
                    
                    / show prediction interval or probability
                    %p
                    - if type == "Regression"
                      %b 95% Prediction interval:
                      - interval = (prediction[:prediction_interval].nil? ? nil : prediction[:prediction_interval])
                      %br
                      = interval.nil? ? "" : "#{interval[1].delog10.signif(3)} - #{interval[0].delog10.signif(3)} (#{unit})"
                      %br
                      = "#{compound.mmol_to_mg(interval[1].delog10).signif(3)} - #{compound.mmol_to_mg(interval[0].delog10).signif(3)} #{(unit =~ /\b(mmol\/L)\b/) ? "(mg/L)" : "(mg/kg_bw/day)"}" if !prediction[:prediction_interval].nil?
                    - else
                      %b Probability:
                      - unless prediction[:probabilities].nil?
                        - probabilities = ""
                        - prediction[:probabilities].each{|k,v| probabilities += "#{k}: #{v.signif(3)}<br>"}
                        %br
                        = probabilities
                  / show warnings
                  %p
                  - if !prediction[:info].blank?
                    %b Info:
                    %br
                    %p=prediction[:info].sub(/\'.*\'/,"").sub(/,/, ",<br>")
                  - if !prediction[:warnings].blank?
                    %b Warnings:
                    - prediction[:warnings].uniq.each do |warning|
                      %br
                      %p=warning.sub(/substances/, "substances<br>").sub(/prediction\:/, "prediction\:<br>")
                        
                  / no prediction  
                - else
                  %br
                  - if !prediction[:info].blank?
                    %b Info:
                    %br
                    %p=prediction[:info].sub(/\'.*\'/,"").sub(/,/, ",<br>")
                  - if !prediction[:warnings].blank?
                    %b Warnings:
                    - prediction[:warnings].uniq.each do |warning|
                      %br
                      %p=warning.sub(/substances/, "substances<br>").sub(/prediction\:/, "prediction\:<br>")
            %tr