lazar-gui 1.3.1 → 1.4.0.pre.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/FAQ.md +9 -6
  4. data/Gemfile +2 -2
  5. data/README.md +19 -8
  6. data/VERSION +1 -1
  7. data/api/api.json +1000 -0
  8. data/application.rb +269 -206
  9. data/config.ru +7 -2
  10. data/docker/Dockerfile +73 -0
  11. data/docker/start.sh +12 -0
  12. data/docker/swagger.html +107 -0
  13. data/helper.rb +46 -1
  14. data/lazar-gui.gemspec +6 -6
  15. data/lib/api.rb +29 -0
  16. data/lib/compound.rb +68 -0
  17. data/lib/dataset.rb +33 -0
  18. data/lib/endpoint.rb +23 -0
  19. data/lib/feature.rb +29 -0
  20. data/lib/model.rb +152 -0
  21. data/lib/report.rb +29 -0
  22. data/lib/substance.rb +34 -0
  23. data/lib/swagger.rb +3 -0
  24. data/lib/validation.rb +67 -0
  25. data/public/fonts/FontAwesome.otf +0 -0
  26. data/public/fonts/fontawesome-webfont.eot +0 -0
  27. data/public/fonts/fontawesome-webfont.svg +2671 -0
  28. data/public/fonts/fontawesome-webfont.ttf +0 -0
  29. data/public/fonts/fontawesome-webfont.woff +0 -0
  30. data/public/fonts/fontawesome-webfont.woff2 +0 -0
  31. data/public/images/orn-logo.jpg +0 -0
  32. data/public/javascripts/bootstrap.js +3944 -0
  33. data/public/javascripts/google_analytics_lazar.js +2 -2
  34. data/public/javascripts/jquery.min.js +2 -0
  35. data/public/javascripts/lazar-gui.js +313 -0
  36. data/public/javascripts/pagination.min.js +11 -0
  37. data/public/javascripts/popper.min.js +5 -0
  38. data/public/stylesheets/bootstrap.min.css +7 -0
  39. data/public/stylesheets/bootstrap.min.css.map +1 -0
  40. data/public/stylesheets/font-awesome.min.css +4 -0
  41. data/public/stylesheets/pagination.css +1 -0
  42. data/qmrf_report.rb +64 -14
  43. data/task.rb +68 -0
  44. data/unicorn.rb +0 -1
  45. data/views/batch.haml +48 -107
  46. data/views/details.haml +10 -2
  47. data/views/error.haml +4 -5
  48. data/views/faq.haml +6 -2
  49. data/views/help.haml +68 -0
  50. data/views/info.haml +3 -2
  51. data/views/layout.haml +68 -78
  52. data/views/model_details.haml +179 -144
  53. data/views/neighbors.haml +98 -80
  54. data/views/predict.haml +43 -178
  55. data/views/prediction.haml +109 -102
  56. data/views/style.scss +44 -37
  57. data/views/upload.haml +28 -0
  58. metadata +51 -105
  59. data/public/css/bootstrap-theme.min.css +0 -5
  60. data/public/css/bootstrap.min.css +0 -5
  61. data/public/css/bootstrap.vertical-tabs.min.css +0 -1
  62. data/public/css/images/black-asc.gif +0 -0
  63. data/public/css/images/black-desc.gif +0 -0
  64. data/public/css/images/black-unsorted.gif +0 -0
  65. data/public/css/images/bootstrap-black-unsorted.png +0 -0
  66. data/public/css/images/bootstrap-white-unsorted.png +0 -0
  67. data/public/css/images/dragtable-handle.png +0 -0
  68. data/public/css/images/dragtable-handle.svg +0 -7
  69. data/public/css/images/dropbox-asc-hovered.png +0 -0
  70. data/public/css/images/dropbox-asc.png +0 -0
  71. data/public/css/images/dropbox-desc-hovered.png +0 -0
  72. data/public/css/images/dropbox-desc.png +0 -0
  73. data/public/css/images/first.png +0 -0
  74. data/public/css/images/green-asc.gif +0 -0
  75. data/public/css/images/green-desc.gif +0 -0
  76. data/public/css/images/green-header.gif +0 -0
  77. data/public/css/images/green-unsorted.gif +0 -0
  78. data/public/css/images/ice-asc.gif +0 -0
  79. data/public/css/images/ice-desc.gif +0 -0
  80. data/public/css/images/ice-unsorted.gif +0 -0
  81. data/public/css/images/last.png +0 -0
  82. data/public/css/images/loading.gif +0 -0
  83. data/public/css/images/metro-black-asc.png +0 -0
  84. data/public/css/images/metro-black-desc.png +0 -0
  85. data/public/css/images/metro-loading.gif +0 -0
  86. data/public/css/images/metro-unsorted.png +0 -0
  87. data/public/css/images/metro-white-asc.png +0 -0
  88. data/public/css/images/metro-white-desc.png +0 -0
  89. data/public/css/images/next.png +0 -0
  90. data/public/css/images/prev.png +0 -0
  91. data/public/css/images/white-asc.gif +0 -0
  92. data/public/css/images/white-desc.gif +0 -0
  93. data/public/css/images/white-unsorted.gif +0 -0
  94. data/public/css/jquery-ui.css +0 -1225
  95. data/public/css/jquery-ui.theme.min.css +0 -5
  96. data/public/css/theme.bootstrap.css +0 -158
  97. data/public/css/theme.bootstrap.min.css +0 -1
  98. data/public/css/theme.default.min.css +0 -1
  99. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  100. data/public/fonts/glyphicons-halflings-regular.svg +0 -288
  101. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  102. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  103. data/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
  104. data/public/images/Email.png +0 -0
  105. data/public/images/Facebook.png +0 -0
  106. data/public/images/Google+.png +0 -0
  107. data/public/images/LinkedIn.png +0 -0
  108. data/public/images/OpenToxEuro2013_small.png +0 -0
  109. data/public/images/Twitter.png +0 -0
  110. data/public/images/arrow_down_float.png +0 -0
  111. data/public/images/arrow_left_float.png +0 -0
  112. data/public/images/arrow_right_float.png +0 -0
  113. data/public/images/arrow_up_float.png +0 -0
  114. data/public/images/asc.gif +0 -0
  115. data/public/images/bg.gif +0 -0
  116. data/public/images/desc.gif +0 -0
  117. data/public/images/gray_jean.png +0 -0
  118. data/public/images/info_white.png +0 -0
  119. data/public/javascripts/bootstrap.min.js +0 -7
  120. data/public/javascripts/jquery-1.11.2.min.js +0 -4
  121. data/public/javascripts/jquery-1.8.3.min.js +0 -2
  122. data/public/javascripts/jquery-ui-1.10.3.custom.min.js +0 -6
  123. data/public/javascripts/jquery.bpopup.min.js +0 -7
  124. data/public/javascripts/jquery.tablesorter.min.js +0 -2
  125. data/public/javascripts/jquery.tablesorter.widgets.js +0 -2678
  126. data/public/javascripts/jquery.tools.min.js +0 -5
  127. data/public/rect.png +0 -0
  128. data/test/lazarweb.rb +0 -193
  129. data/test/setup.rb +0 -7
  130. data/views/significant_fragments.haml +0 -66
data/task.rb ADDED
@@ -0,0 +1,68 @@
1
+ DEFAULT_TASK_MAX_DURATION = 36000
2
+
3
+ module OpenTox
4
+
5
+ class Task
6
+
7
+ include OpenTox
8
+ include Mongoid::Document
9
+ include Mongoid::Timestamps
10
+ store_in collection: "tasks"
11
+ field :pid, type: Integer
12
+ field :percent, type: Float, default: 0
13
+ field :predictions, type: Hash, default:{}
14
+ field :csv, type: String
15
+ field :dataset_id, type: BSON::ObjectId
16
+ field :model_id, type: BSON::ObjectId
17
+ field :subTasks, type: Array, default:[]
18
+
19
+ attr_accessor :pid, :percent, :predictions, :csv, :dataset_id, :model_id, :subTasks
20
+
21
+ def pid
22
+ self[:pid]
23
+ end
24
+
25
+ def percent
26
+ self[:percent]
27
+ end
28
+
29
+ def predictions
30
+ self[:predictions]
31
+ end
32
+
33
+ def csv
34
+ self[:csv]
35
+ end
36
+
37
+ def dataset_id
38
+ self[:dataset_id]
39
+ end
40
+
41
+ def model_id
42
+ self[:model_id]
43
+ end
44
+
45
+ def subTasks
46
+ self[:subTasks]
47
+ end
48
+
49
+ def update_percent(percent)
50
+ self[:percent] = percent
51
+ save
52
+ end
53
+
54
+ def self.run
55
+ task = Task.new #uri
56
+ pid = fork do
57
+ yield
58
+ end
59
+ Process.detach(pid)
60
+ task[:pid] = pid
61
+ task.save
62
+ task
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+
data/unicorn.rb CHANGED
@@ -1,2 +1 @@
1
- worker_processes 4
2
1
  timeout 6000
data/views/batch.haml CHANGED
@@ -1,109 +1,50 @@
1
- %div.well
2
- %a.btn.btn-warning{:href => to('/predict')}
3
- %span.glyphicon.glyphicon-menu-left{:aria=>{:hidden=>"true"}}
1
+ :javascript
2
+ // kill task pid if page is reloaded, `false` makes the request synchronous
3
+ window.addEventListener('unload', ktpid, false);
4
+ function ktpid() {
5
+ var client = new XMLHttpRequest();
6
+ client.open("GET", '//#{$host_with_port}/prediction/task?ktpid=#{@pid}', false);
7
+ client.setRequestHeader("Content-Type", "application/json");
8
+ client.send(null);
9
+ };
10
+ %div.card
11
+ %a.btn.btn-outline-info{:href => "//#{$host_with_port}/predict?tpid=#{@pid}"}
12
+ %span.fa.fa-caret-left{:aria=>{:hidden=>"true"}}
4
13
  New Prediction
5
- %a.btn.btn-success{:id => "downbutton", :href=>"#{to("/predict/#{@tmppath}/#{@filename}")}", :title=>"download"}
6
- %span.glyphicon.glyphicon-download-alt
7
- Download CSV
14
+ %div.card.bg-light
15
+ %div.card-body
16
+ %h3.card-title="Batch prediction results for: #{@filename}"
17
+
18
+ // prepare variable values for javascript
19
+ // increase timer interval for large datasets
20
+ - timer = 10000#((@compounds_size/1000) == 0 ? 1000 : ((@compounds_size/1000)*1000))
21
+ // process batch predictions
22
+ - @models.each_with_index do |model,idx|
23
+ - m = Model::Validation.find model
24
+ - task = @tasks[idx].id
25
+ #result.card.bg-light{:id=>idx}
26
+ %div.card-body
27
+ %div.row
28
+ %div.col-6
29
+ %h5.card-title="#{m.endpoint} (#{m.species})"
30
+ #pager{:id=>idx}
31
+ %div.col-6
32
+ %a.btn.btn-outline-info.btn-sm.disabled{:id => "detailsbutton_#{idx}", :data=>{:toggle=>"collapse"}, :href=>"javascript:void(0)", :onclick=>"pagePredictions('//#{$host_with_port}/prediction/task/?predictions=#{task}','#{model}','#{idx}','#{@compounds_size}')"}
33
+ %span.fa.fa-caret-right
34
+ Details
35
+ %a.btn.btn-outline-info.btn-sm.disabled{:id => "downbutton_#{idx}", :href=>"//#{$host_with_port}/predict/batch/download?tid=#{task}", :title=>"download"}
36
+ %span.fa.fa-download
37
+ CSV
38
+ %p{:id=>"est_#{idx}"}
39
+ waiting ...
40
+ %img.h2{:src=>"/images/wait30trans.gif", :id=>"circle_#{idx}", :class=>"circle", :alt=>"wait", :style=>"display:none;"}
41
+ :javascript
42
+ $(document).ready(function() {
43
+ taskProgress('#{idx}','#{timer}','//#{$host_with_port}/prediction/task/?turi=#{task}');
44
+ });
45
+ #data-container.card.d-none.table-responsive{:id=>idx}
46
+ :javascript
47
+ %div.modal.fade{:id=>"details", :tabindex=>"-1", :role=>"dialog"}
48
+ %div.modal-dialog.modal-lg{:role=>"document"}
49
+ %div.modal-content
8
50
 
9
- / show file name
10
- %topline
11
- %div.row
12
- %div.col-md-4
13
- %h3 Batch Prediction Results:
14
- %div.col-md-8
15
- %h3= @filename
16
-
17
- / displays all prediction result in one table
18
- %div.table-responsive
19
- %table.table.table-bordered{:id=>"batch", :style=>"background-color:white;"}
20
- %tbody
21
- - if @warnings
22
- - @warnings.each do |warning|
23
- %tr
24
- %td
25
- %b Warning
26
- %td
27
- = warning.sub(/\b(tmp\/)\b/,"")
28
- - @view.each do |compound, array|
29
- %tr
30
- %td{:style=>"vertical-align:top;"}
31
- %p= compound.svg
32
- %p= compound.smiles
33
- - array.each do |model,prediction|
34
- %td{:style=>"vertical-align:top;white-space:nowrap;"}
35
- - model.model.class.to_s.match("Classification") ? type = "Classification" : type = "Regression"
36
- - unit = model.unit
37
-
38
- %b{:class => "title"}
39
- = "#{model.endpoint.gsub('_', ' ')} (#{model.species})"
40
-
41
- / check for prediction
42
- - if prediction[:value]
43
- %p
44
- / show model type (classification|regression)
45
- %b Type:
46
- = type
47
- %p
48
- / check for database hit
49
- - if prediction[:info] =~ /\b(identical)\b/i
50
-
51
- / show message about dbhit and measurements
52
- %p
53
- %b Compound is part of the training dataset
54
- %p
55
- %b Measured activity:
56
- %br
57
- - if prediction[:measurements].is_a?(Array)
58
- = (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(", ")
59
- - else
60
- = (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]
61
-
62
-
63
- / show prediction
64
- %p
65
- %b Prediction:
66
- %br
67
- = (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]
68
-
69
- / show prediction interval or probability
70
- %p
71
- - if type == "Regression"
72
- %b 95% Prediction interval:
73
- - interval = (prediction[:prediction_interval].nil? ? nil : prediction[:prediction_interval])
74
- %br
75
- = interval.nil? ? "" : "#{interval[1].delog10.signif(3)} - #{interval[0].delog10.signif(3)} (#{unit})"
76
- %br
77
- = "#{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?
78
- - else
79
- %b Probability:
80
- - unless prediction[:probabilities].nil?
81
- - probabilities = ""
82
- - prediction[:probabilities].each{|k,v| probabilities += "#{k}: #{v.signif(3)}<br>"}
83
- %br
84
- = probabilities
85
- / show warnings
86
- %p
87
- - if !prediction[:info].blank?
88
- %b Info:
89
- %br
90
- %p=prediction[:info].sub(/\'.*\'/,"").sub(/,/, ",<br>")
91
- - if !prediction[:warnings].blank?
92
- %b Warnings:
93
- - prediction[:warnings].uniq.each do |warning|
94
- %br
95
- %p=warning.sub(/substances/, "substances<br>").sub(/prediction\:/, "prediction\:<br>")
96
-
97
- / no prediction
98
- - else
99
- %br
100
- - if !prediction[:info].blank?
101
- %b Info:
102
- %br
103
- %p=prediction[:info].sub(/\'.*\'/,"").sub(/,/, ",<br>")
104
- - if !prediction[:warnings].blank?
105
- %b Warnings:
106
- - prediction[:warnings].uniq.each do |warning|
107
- %br
108
- %p=warning.sub(/substances/, "substances<br>").sub(/prediction\:/, "prediction\:<br>")
109
- %tr
data/views/details.haml CHANGED
@@ -6,7 +6,7 @@
6
6
  %button.close{ :type=>" button", data: { dismiss:"modal"}} &times;
7
7
  %h3
8
8
  Names and synonyms:
9
- %p= @compound.svg
9
+ %p= embedded_svg(@compound.svg, :title=>"x")
10
10
  %p
11
11
  %b="SMILES:"
12
12
  %p= @smiles
@@ -14,6 +14,11 @@
14
14
  %b="InChI:"
15
15
  %p= @inchi
16
16
  %br
17
+ - cid = @compound.cid
18
+ - if cid
19
+ %b="CID:"
20
+ %p= cid
21
+ %br
17
22
  %b="Names:"
18
23
  %p{:style=>"padding-left:0.5em;"}
19
24
  - if @names !~ /^no names/i
@@ -23,6 +28,9 @@
23
28
  %hr
24
29
  %p{:style=>"padding-left:0.5em;"}
25
30
  / pubchem link
26
- %a.btn.btn-primary{:href=>"http://aop.in-silico.ch/", :title=>"Link opens in new window.", :alt=>"pubchem read across", :rel=>"external"} PubChem read across
31
+ - if cid
32
+ %a.btn.btn-primary{:href=>"http://aop.in-silico.ch/cid/#{cid}", :title=>"Link opens in new window.", :alt=>"pubchem read across", :rel=>"external"} PubChem read across
33
+ - else
34
+ %a.btn.btn-primary{:href=>"http://aop.in-silico.ch/", :title=>"Link opens in new window.", :alt=>"pubchem read across", :rel=>"external"} PubChem read across
27
35
  %i (experimental)
28
36
  %br
data/views/error.haml CHANGED
@@ -1,7 +1,6 @@
1
- %div.well
2
- %a.btn.btn-warning{:href => to('/predict')}
3
- %i.glyphicon.glyphicon-menu-left
1
+ %div.card
2
+ %a.btn.btn-warning{:href => "//#{$host_with_port}/predict"}
3
+ %i.fa.fa-caret-left
4
4
  Back
5
- %hr
6
- %div.well{:style=>"width:100%;margin-bottom:2em;"}
5
+ %div.card-body
7
6
  = @error
data/views/faq.haml CHANGED
@@ -1,2 +1,6 @@
1
- %div.well.faq
2
- = @faq
1
+ %div.card
2
+ %a.btn.btn-warning{:href => "//#{$host_with_port}/predict"}
3
+ %i.fa.fa-caret-left
4
+ Back
5
+ %div.card-body
6
+ = @faq
data/views/help.haml ADDED
@@ -0,0 +1,68 @@
1
+ %div.card.bg-light
2
+ %div.card-body
3
+ %h3 How to use batch prediction
4
+
5
+ %p
6
+ You have two options to format your comma or tab sperated spreadsheet for batch predictions:
7
+
8
+ %br
9
+ %p
10
+ %div.row
11
+ %div.col-md-6
12
+ %strong Option 1:
13
+ %br
14
+ A spreadsheet with a single column and a header. The header should specify the input format (SMILES or InChI are accepted).
15
+ %div.col-md-6
16
+ %table.help
17
+ %tr.row
18
+ %th.col-md-12
19
+ SMILES
20
+ %tr.row
21
+ %td.col-md-12
22
+ C1ccccc1NN
23
+ %tr.row
24
+ %td.col-md-12
25
+ Cc1ccc(cc1\N=C=O)/N=C=O
26
+ %tr.row
27
+ %td.col-md-12
28
+ OC(=O)c1ccc(cc1)C(=O)O
29
+ %tr.row
30
+ %td.col-md-12
31
+ ="..."
32
+ %br
33
+ %p
34
+ %div.row
35
+ %div.col-md-6
36
+ %strong Option 2:
37
+ %br
38
+ A spreadsheet with two columns and a header. The first column may contain an arbitrary ID,
39
+ the second column the compound structure (as SMILES or InChI).
40
+ The header consists of "ID" followed by the input format (SMILES or InChI).
41
+ %div.col-md-6
42
+ %table.help
43
+ %tr.row
44
+ %th.col-md-4
45
+ ID
46
+ %th.col-md-8
47
+ SMILES
48
+ %tr.row
49
+ %td.col-md-4
50
+ 2735
51
+ %td.col-md-8
52
+ C1ccccc1NN
53
+ %tr.row
54
+ %td.col-md-4
55
+ A2
56
+ %td.col-md-8
57
+ O=C(OCCCC)C1=CC=CC=C1C(OCCCC)=O
58
+ %tr.row
59
+ %td.col-md-4
60
+ 82 B-6 304663
61
+ %td.col-md-8
62
+ CC(C)(C)C1=CC2(C=C(C1=O)C(C)(C)C)CCC(=O)O2
63
+ %tr.row
64
+ %td.col-md-4
65
+ ="..."
66
+ %td.col-md-8
67
+ ="..."
68
+ %br
data/views/info.haml CHANGED
@@ -1,2 +1,3 @@
1
- %div.info
2
- We are rebuilding the models. It will take a while, please be patient and reload the page in some time.
1
+ %div.card.border-warning.mb-3
2
+ %div.card-body
3
+ We are rebuilding our models. It will take a while, please be patient and reload the page later.
data/views/layout.haml CHANGED
@@ -6,77 +6,55 @@
6
6
  %meta{'name'=>"viewport", :content=>"width=device-width, initial-scale=1"}
7
7
  %title lazar Toxicity Predictions
8
8
  %link{:rel=>'icon', :type=>'image/x-icon', :href=>'/images/favicon.ico'}
9
- %link{:rel=>'stylesheet', :href=>"#{'/css/bootstrap.min.css'}"}
10
- %link{:rel=>'stylesheet', :href=>"#{'/css/theme.default.min.css'}"}
11
- %link{:rel=>'stylesheet', :href=>"#{'/css/theme.bootstrap.min.css'}"}
12
- %link{ :href=>"/style.css", :rel=>"stylesheet"}
13
- %link{ :href=>"/stylesheets/jquery-ui.css", :rel=>"stylesheet"}
14
- %script{:src=>"/javascripts/jquery-1.11.2.min.js"}
15
- %script{:src=>"/javascripts/bootstrap.min.js"}
16
- %script{:src=>"/javascripts/jquery.tablesorter.min.js"}
17
- %script{:src=>"/javascripts/jquery.tablesorter.widgets.js"}
9
+ %link{:href=>"/stylesheets/bootstrap.min.css", :rel=>"stylesheet"}
10
+ %link{:href=>"/stylesheets/font-awesome.min.css", :rel=>"stylesheet"}
11
+ %link{:href=>"/stylesheets/pagination.css", :rel=>"stylesheet"}
12
+ %link{:href=>"/style.css", :rel=>"stylesheet"}
13
+ %script{ :src=>"/javascripts/jquery.min.js"}
14
+ %script{ :src=>"/javascripts/popper.min.js"}
18
15
  %script{:src=>"/javascripts/lazar-gui.js"}
19
- %script{:src=>"/javascripts/google_analytics_lazar.js"}
16
+ %script{ :src=>"/javascripts/bootstrap.js"}
17
+ %script{:src=>"/javascripts/pagination.min.js"}
20
18
  %body
21
19
  %noscript
22
20
  %div{ :style=>"width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif"}
23
21
  Your web browser must have JavaScript enabled in order for this application to display correctly.
24
- %header.page-header
25
- %div.row
26
- %div.col-md-3
27
- %a{:href=> to("/predict")}
28
- %img.media-object{:src=>"/images/IST_logo_s.png", :alt=>"logo", :width=>"150px", :heigth=>"150px"}
29
- %div.col-md-6
30
- %h1.media-heading
31
- lazar toxicity predictions
32
- %div.col-md-3
33
- %h1.media-heading
34
- %small
35
- %a.btn{:href=>"https://nano-lazar.in-silico.ch", :rel=>"external"}
36
- nano-lazar
37
- %span.glyphicon.glyphicon-new-window
38
-
22
+ %header.container-fluid.page-header
23
+ %div.row.align-items-center
24
+ %div.col-3
25
+ %a.card-link{:href=> "https://in-silico.ch/", :rel=>"external"}
26
+ %img{:src=>"/images/IST_logo_s.png", :alt=>"logo", :width=>"120px"}
27
+ %div.col-7
28
+ %h1 lazar toxicity predictions
29
+ %div.col-2
30
+ %h5
31
+ %a.text-right{:href=>"https://nano-lazar.in-silico.ch", :rel=>"external"}
32
+ nano-lazar
33
+ %span.fa.fa-xs.fa-external-link
39
34
  %div.container-fluid
40
35
  %topline.alert
41
- %div.row
42
- %div.col-md-10
43
- Problems, bugs, ideas for improvements ? Please report at our
44
- %a{:href => 'https://github.com/opentox/lazar-gui/issues', :rel => "external"} issue tracker
45
- , check out the
46
- %a{:href=> to("/faq"), :rel => "external"} FAQ
47
- page or send us an email.
48
- %a{ :href=>"mailto:info@in-silico.ch?subject=[lazar v#{@version}]", :target=>"_top"}
49
- %img.share{:src=>"/images/Email.png"}
50
- [version: #{@version}]
51
- %div.col-md-2{:style=>"text-align:right;"}
52
- %a{:href=>"https://twitter.com/intent/tweet?source=http%3A%2F%2Flazar.in-silico.ch&text=http%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Tweet"}
53
- %img.share{:src=>"/images/Twitter.png"}
54
- %a{:href=>"https://plus.google.com/share?url=http%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Share on Google+"}
55
- %img.share{:src=>"/images/Google+.png"}
56
- %a{:href=>"http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Flazar.in-silico.ch&title=&summary=&source=http%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Share on LinkedIn"}
57
- %img.share{:src=>"/images/LinkedIn.png"}
58
- %a{:href=>"https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Flazar.in-silico.ch&title=&summary=&source=http%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Share on Facebook"}
59
- %img.share{:src=>"/images/Facebook.png"}
60
- %div.row
61
- %div.col-md-12
62
- Please cite
63
- %a{ :href=>"https://doi.org/10.3389/fphar.2013.00038", :rel=>"external"}
64
- %img{ :src=>"https://zenodo.org/badge/DOI/10.3389/zenodo.10.3389.svg", :alt=>"DOI"}
65
- in scientific publications.
66
-
67
- :javascript
68
- $(document).ready(function(){
69
- $("#back-top").hide();
70
- $(".blind").error(function(){
71
- $(this).attr('src', '/images/blind.png');
72
- });
73
- });
74
- $(document).ready(function(){
75
- $('[data-toggle="popover"]').popover();
76
- $('.modal').on('hidden.bs.modal', function () {
77
- $(this).removeData('bs.modal');
78
- });
79
- });
36
+ %p
37
+ Problems, bugs, ideas for improvements ? Please report at our
38
+ %a{:href => 'https://github.com/opentox/lazar-gui/issues', :rel => "external"} issue tracker
39
+ , check out the
40
+ %a{:href=> "//#{$host_with_port}/predict/faq"} FAQ
41
+ page or send us an email.
42
+ %a{ :href=>"mailto:info@in-silico.ch?subject=[lazar v#{@version}]", :target=>"_top"}
43
+ %span.fa.fa-envelope
44
+ [version: #{@version}]
45
+ %p
46
+ A graphical overview of the service API can be found
47
+ %a{:href => "//#{$host_with_port}/api", :rel => "external"} here.
48
+ Please cite
49
+ %a{ :href=>"https://doi.org/10.3389/fphar.2013.00038", :rel=>"external"}
50
+ %img{ :src=>"https://zenodo.org/badge/DOI/10.3389/zenodo.10.3389.svg", :alt=>"DOI"}
51
+ in scientific publications.
52
+ %a{:href=>"https://twitter.com/intent/tweet?source=http%3A%2F%2Flazar.in-silico.ch&text=https%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Tweet"}
53
+ %span.fa.fa-twitter-square
54
+ %a{:href=>"http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Flazar.in-silico.ch&title=&summary=&source=https%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Share on LinkedIn"}
55
+ %span.fa.fa-linkedin-square
56
+ %a{:href=>"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Flazar.in-silico.ch&title=&summary=&source=https%3A%2F%2Flazar.in-silico.ch", :rel=>"external", :title=>"Share on Facebook"}
57
+ %span.fa.fa-facebook-square
80
58
 
81
59
  = yield
82
60
 
@@ -88,24 +66,24 @@
88
66
  &copy;
89
67
  %a{:href => 'http://www.in-silico.ch', :rel => "external"} <i style="font-family: serife">in silico</i> toxicology gmbh 2004 - #{Time.now.year.to_s}
90
68
  |
91
- %a{:href => to("/license"), :rel => "external"} GPL3 License
92
- %supporters
93
- %div.panel.panel-default
69
+ %a{:href => "//#{$host_with_port}/predict/license", :rel => "external"} GPL3 License
70
+ %supporters.row
71
+ %div.card-body.text-center
72
+ %div.card-title
94
73
  Financial support by
95
- %div.panel-body
96
- %a{:href=>"http://www.bfr.bund.de/de/start.html", :rel=>"external"}
97
- %img{:src=>"/images/bfr_logo.gif"}
98
- %a{:href=>"http://www.opentox.org/", :rel=>"external"}
99
- %img{:src=>"/images/ot_logo.png"}
100
- %a{:href=>"https://enanomapper.net/", :rel=>"external"}
101
- %img{:src=>"/images/enm_logo.png"}
102
- %a{:href=>"https://www.researchgate.net/institution/Nestle_SA/department/Nestle_Research_Center", :rel=>"external"}
103
- %img{:src=>"/images/nestec.jpg"}
104
-
74
+ %div.card-text
75
+ %a{:href=>"https://www.bfr.bund.de/de/start.html", :rel=>"external"}
76
+ %img{:src=>"/images/bfr_logo.gif"}
77
+ %a{:href=>"https://www.opentox.org/", :rel=>"external"}
78
+ %img{:src=>"/images/ot_logo.png"}
79
+ %a{:href=>"https://enanomapper.net/", :rel=>"external"}
80
+ %img{:src=>"/images/enm_logo.png"}
81
+ %a{:href=>"https://www.researchgate.net/institution/Nestle_SA/department/Nestle_Research_Center", :rel=>"external"}
82
+ %img{:src=>"/images/nestec.jpg"}
105
83
 
106
84
  #back-top{:style => "z-index:100;position:fixed;bottom:1%;right:1%;"}
107
85
  %a{:href => "", :style=>"text:decoration:none;color:#ccc;"}
108
- %span.glyphicon.glyphicon-circle-arrow-up{:style => "font-size:3em;color:black;"}
86
+ %span.fa.fa-caret-up{:style => "font-size:3em;color:black;"}
109
87
  :javascript
110
88
  $("#back-top").hide();
111
89
  $(function () {
@@ -124,3 +102,15 @@
124
102
  return false;
125
103
  });
126
104
  });
105
+ $(document).ready(function(){
106
+ $("#back-top").hide();
107
+ $(".blind").on('error', function(){
108
+ $(this).attr('src', '/images/blind.png');
109
+ });
110
+ });
111
+ $(document).ready(function(){
112
+ //$('[data-toggle="popover"]').popover();
113
+ $('.modal').on('hidden.bs.modal', function () {
114
+ $(this).removeData('bs.modal');
115
+ });
116
+ });