rbbt-rest 1.8.62 → 1.8.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6d91a32b4426c4b8be4988e10eca7540db94676
4
- data.tar.gz: 888c9c6f5dd89be6ce380c42a3a007775671cf56
3
+ metadata.gz: 575bc1891fa7c9dcc1334107cd7523c6583254be
4
+ data.tar.gz: 6b6c79f02c11e216ce8d5ee6ec0242b25ac21529
5
5
  SHA512:
6
- metadata.gz: 4bbfa4d37fdd5079a03d5f58f989bbf9681c273c3823b51c7e84aee9e4cb820bb43de36f614bff0cf0e86021d303348ab6097e123d079b98486cc3b7eb3d7a7c
7
- data.tar.gz: ec91cee052738256cf508596a813e0d076ce25bd3b2f21d0138cc37ba2a6c9e067ea5de8633dcc370e76ed0e309237ddaebd275d5cb2d8fed352b327cf1e473f
6
+ metadata.gz: bae019d9ac143210c65952a3d3ca74d7c64d9326a19618c530cd7599743dd6b50a7f125ed736e8c85c2383eba09a742a98fe4f8e7f5ca16fa6bfbc33d58176c5
7
+ data.tar.gz: 3e5b7aecef6c228e73525868c3cbc7b0284b9ea159f598b831d0bc80217f8b0c513346135785c41cd7112d09d16d3746e1003ec91eebaa08d7dc81fa3f22e2d9
@@ -1,9 +1,11 @@
1
1
 
2
2
  module Sinatra
3
3
  module RbbtToolHelper
4
- def tool(toolname, options = {})
4
+ def tool(toolname, options = {}, &block)
5
5
  options[:id] ||= toolname.to_s + "_#{rand(10000)}"
6
6
 
7
+ options[:block] = block if block_given?
8
+
7
9
  template_file = locate_template("tools/#{toolname}")
8
10
  Log.debug "Loading tool #{toolname} from: #{template_file}"
9
11
  content = Tilt::HamlTemplate.new(template_file, :filename => template_file).render(self, options)
@@ -37,6 +37,10 @@ module Sinatra
37
37
  add_workflow_resource(workflow, add_resource == :priority) if add_resource
38
38
  workflow.documentation
39
39
 
40
+ if ENV["RBBT_WORKFLOW_EXPORT_ALL"] == "true"
41
+ workflow.export *workflow.tasks.keys
42
+ end
43
+
40
44
 
41
45
  self.instance_eval workflow.libdir.lib['sinatra.rb'].read, workflow.libdir.lib['sinatra.rb'].find if workflow.respond_to?(:libdir) and File.exists? workflow.libdir.lib['sinatra.rb']
42
46
 
@@ -201,7 +205,7 @@ module Sinatra
201
205
 
202
206
  case format
203
207
  when :html
204
- workflow_render('job_info', workflow, task, :info => job.info)
208
+ workflow_render('job_info', workflow, task, :job => job, :info => job.info)
205
209
  when :json
206
210
  content_type "application/json"
207
211
  info_json = {}
@@ -65,7 +65,7 @@ module WorkflowRESTHelpers
65
65
 
66
66
  task_inputs = {}
67
67
  inputs.each do |input|
68
- stream = input_options.include?(input) and input_options[input][:stream]
68
+ stream = input_options.include?(input) && input_options[input][:stream]
69
69
  value = prepare_input(params, input, input_types[input], stream)
70
70
  task_inputs[input] = value
71
71
  end
@@ -112,7 +112,8 @@ module WorkflowRESTHelpers
112
112
  end
113
113
 
114
114
  def show_result(job, workflow, task, params = nil)
115
- return show_result_html nil, workflow, task, job.name, job if @fragment
115
+ #return show_result_html nil, workflow, task, job.name, job if @fragment
116
+ return show_result_html nil, workflow, task, job.name, job, params if @fragment
116
117
 
117
118
  case format.to_sym
118
119
  when :html
@@ -28,7 +28,10 @@ module WorkflowRESTHelpers
28
28
  server_key = $app_name
29
29
  html_dir = job.file('.html')
30
30
  FileUtils.mkdir_p html_dir.find unless File.exists? html_dir.find
31
- cache_file = html_dir[server_key]
31
+ other_params = params.dup
32
+ other_params.delete_if{|k,v| k[0] == "_"}
33
+ other_params.delete :result
34
+ cache_file = html_dir[server_key + "_" << Misc.obj2digest(other_params)]
32
35
  cache_type = false if params[:cache] == FalseClass
33
36
  render(template_file, locals, layout_file, [task,workflow,job.name] * "-", :cache_type => cache_type, :cache_file => cache_file)
34
37
  else
@@ -4,18 +4,27 @@
4
4
 
5
5
  - if info[:dependencies] and info[:dependencies].any?
6
6
  %h3 Dependencies
7
- %ul
7
+ = partial_render('partials/dependencies', :job => job)
8
+ -#%ul
8
9
 
9
10
  - task_exports = workflow.synchronous_exports + workflow.asynchronous_exports
10
11
  - task_exports = task_exports.collect{|t| t.to_s}
11
- - info[:dependencies].each do |task,name,path|
12
- - if Open.remote? path
13
- - url = path.split("?").first
14
- - else
15
- - url = "/" + [workflow.to_s, task.to_s, name.to_s] * "/"
12
+ -# info[:dependencies].each do |task,name,path|
13
+ - dep = Step.new path
14
+ - d_workflow = dep.workflow || "Unknown Workflow"
15
+ - wf = workflow if d_workflow.nil? || d_workflow.to_s == workflow.to_s
16
+ - if wf.nil? and d_workflow
17
+ - wf ||= begin
18
+ - Kernel.const_get d_workflow
19
+ - rescue
20
+
16
21
  %li
17
- (#{workflow}##{task})
18
- - if task_exports.include? task.to_s
22
+ (#{d_workflow}##{task})
23
+ - if Open.remote? path
24
+ - url = path.split("?").first
25
+ %a(href=url) #{ name }
26
+ - elsif wf and wf.task_exports.include? task
27
+ - url = "/" + [d_workflow.to_s, task.to_s, name.to_s] * "/"
19
28
  %a(href=url) #{ name }
20
29
  - else
21
30
  = name
@@ -0,0 +1,39 @@
1
+
2
+ %ul.dependencies
3
+ - job.dependencies.each do |dep|
4
+ - dep_workflow = dep.workflow
5
+ - dep_workflow ||= dep.task.workflow if dep.task
6
+ - dep_workflow ||= File.basename(File.dirname(File.dirname(dep.path)))
7
+ - str = [dep_workflow, dep.task_name, dep.name].compact * " - "
8
+ - if dep.file(':progress').exists?
9
+ - status = dep.status + " - " + dep.file(:progress).yaml[:last_percent] + "%"
10
+ - else
11
+ - status = dep.status
12
+ - name = dep.name
13
+ %li
14
+ %span.workflow= dep_workflow
15
+ %span.task= dep.task_name
16
+ %span.name
17
+ - if String === dep_workflow
18
+ - wf ||= begin
19
+ - Kernel.const_get dep_workflow
20
+ - rescue
21
+ - elsif Module === dep_workflow
22
+ - wf = dep_workflow
23
+
24
+ - if Open.remote? dep.path
25
+ - url = path.split("?").first
26
+ %a(href=url) #{ name }
27
+
28
+ - elsif wf and wf.task_exports.include? dep.task_name.to_sym
29
+ - url = "/" + [dep_workflow.to_s, dep.task_name.to_s, dep.name.to_s] * "/"
30
+ %a(href=url) #{ name }
31
+
32
+ - else
33
+ = name
34
+
35
+
36
+ %span.status(class="#{dep.status}") [#{status}]
37
+
38
+ - if dep.dependencies.any?
39
+ = partial_render('partials/dependencies', :job => dep)
@@ -266,12 +266,12 @@ function get_sign_gradient(values, color1, color0, color2){
266
266
  forArray(values, function(value){
267
267
  if (typeof value == 'string') value = parseFloat(value)
268
268
  if (typeof value == 'number'){
269
- if (value > 0){
269
+ if (value >= 0){
270
270
  var a = value/max
271
- colors.push(color0.blend(color1, a).toString())
271
+ colors.push(color0.blend(color2, a).toString())
272
272
  }else{
273
273
  var a = value/min
274
- colors.push(color0.blend(color2, a).toString())
274
+ colors.push(color0.blend(color1, a).toString())
275
275
  }
276
276
  }else{
277
277
  colors.push(undefined)
@@ -15,6 +15,7 @@ rbbt.plots.aes.map_aesthetic = function(aes, mapper, map_obj){
15
15
  aes = map_obj[aes]
16
16
  }
17
17
  }
18
+ aes.push(0)
18
19
  return get_gradient(aes, '#EABD5D', '#40324F')
19
20
  case 'sign-gradient':
20
21
  if (map_obj){
@@ -72,6 +73,29 @@ rbbt.plots.aes.get_properties = function(list, rules, type, namespace){
72
73
 
73
74
  if (rule.entity_type && rule.entity_type != type && rule.entity_type != list.format) return
74
75
 
76
+ if (rule.map){
77
+ var deferred = m.deferred()
78
+ var entry = rule.map
79
+ var obj = rule.mapper_obj
80
+ if (undefined === name) name = entry
81
+
82
+ var keys = info[entry]
83
+ if (undefined === value && entry == 'type') keys = type
84
+ if (undefined === value && entry == 'code') keys = list.codes
85
+
86
+ var value = keys.map(function(k){ return obj[k]})
87
+ deferred.resolve(value)
88
+ promise = deferred.promise
89
+ if (extract){
90
+ promise = promise.then(function(res){
91
+ if (typeof res == 'object')
92
+ return res.map(function(elem){ return extract.call(null, elem)})
93
+ else
94
+ return extract.call(null, res)
95
+ })
96
+ }
97
+ }
98
+
75
99
  if (rule.info){
76
100
  var property = rule.property
77
101
  var deferred = m.deferred()
@@ -262,6 +286,7 @@ rbbt.plots.aes.set_aes = function(list, aes_rules, type){
262
286
  if (undefined === property && name == 'code') property = list.codes.slice()
263
287
  if (undefined === property) return
264
288
 
289
+ console.log([property, mapper, mapper_obj])
265
290
  var aes_values = rbbt.plots.aes.map_aesthetic(property, mapper, mapper_obj)
266
291
 
267
292
  if (undefined === list.aes[aes]){
@@ -0,0 +1,12 @@
1
+ - filename = 'R-png_' << rand(10000).to_s unless defined? filename and filename
2
+ - text = filename unless defined? text and text
3
+
4
+ - width = 500 unless defined? width and width
5
+ - height = 500 unless defined? height and height
6
+ - plot = block.call unless (defined? plot and plot) or not defined? block
7
+
8
+ - filename += '.png' unless filename =~ /\.png$/i
9
+ = resource filename, text, :image do |filename|
10
+ - CSBC.ic50.tsv.transpose.R "png.file = '#{filename}';\n" + plot
11
+
12
+
@@ -6,7 +6,8 @@
6
6
 
7
7
  - extra = "" unless defined? extra
8
8
 
9
- - url = @step.instance_variable_get(:@url_path)
9
+ - url = @fullpath
10
+
10
11
  %svg(id=id)
11
12
 
12
13
  :ruby
@@ -2,14 +2,29 @@
2
2
  - id ||= title || ("scatter-" << (1000 * rand).to_i.to_s)
3
3
  - title ||= "Scatter Plot"
4
4
 
5
- - size ||= "size"
6
- - x ||= "x"
7
- - y ||= "y"
5
+ - if data.fields.length == 1
6
+ - y ||= data.fields.first
7
+ - x_values = Hash[*data.keys.zip((0..data.length-1).to_a).flatten]
8
+ - size_values = Hash[*data.keys.zip([1] * data.length).flatten]
9
+
10
+ - if data.fields.length == 2
11
+ - x ||= data.fields.first
12
+ - y ||= data.fields.last
13
+ - size_values = Hash[*data.keys.zip([1] * data.length).flatten]
14
+
15
+ - if data.fields.length == 3
16
+ - x ||= data.fields.first
17
+ - y ||= data.fields[1]
18
+ - size ||= data.fields.last
19
+ - size_values = Hash[*data.keys.zip([1] * data.length).flatten]
8
20
 
9
21
  - data_values = []
10
22
  - data.through do |key,values|
11
23
  - label = key.respond_to?(:name)? key.name || key : key
12
- - data_values << {:label => label, :x => values[x], :y => values[y], :size => values[size]}
24
+ - y_value = (defined?(y) and y) ? values[y] : y_values[y].to_f
25
+ - x_value = (defined?(x) and x) ? values[x] : x_values[key].to_f
26
+ - size_value = (defined?(size) and size) ? values[size] : size_values[key].to_f
27
+ - data_values << {:label => label, :x => x_value, :y => y_value, :size => size_value}
13
28
 
14
29
  - plot_data = [{:key => "Group", :values => data_values}]
15
30
 
@@ -3,9 +3,23 @@
3
3
  :sass
4
4
  span.progress_time
5
5
  color: grey
6
- .wait.ui.segment
7
- overflow: auto
8
- text-overflow: ellipsis
6
+ .dependencies
7
+ .wait.ui.segment
8
+ overflow: auto
9
+ text-overflow: ellipsis
10
+ .status
11
+ color: grey
12
+ .status.done
13
+ color: green
14
+ .status.error
15
+ color: red
16
+ .status.dependencies
17
+ color: orange
18
+ .workflow
19
+ font-weight: bold
20
+ .task
21
+ font-style: italic
22
+
9
23
  .wait.ui.segment.info.message
10
24
  %h3.ui.header Waiting on #{format_name File.basename(job.name)}
11
25
 
@@ -58,4 +72,9 @@
58
72
  - next if line.nil? or line.strip.empty?
59
73
  %li= line
60
74
 
61
-
75
+ - if job.dependencies.any?
76
+
77
+ .ui.segment
78
+ %h3.ui.header Dependencies
79
+ .content
80
+ = partial_render('partials/dependencies', :job => job)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.62
4
+ version: 1.8.63
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-05 00:00:00.000000000 Z
11
+ date: 2017-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -255,6 +255,7 @@ files:
255
255
  - share/views/main.haml
256
256
  - share/views/monitor/jobs.haml
257
257
  - share/views/monitor/locks.haml
258
+ - share/views/partials/dependencies.haml
258
259
  - share/views/partials/form.haml
259
260
  - share/views/partials/table.haml
260
261
  - share/views/partials/table/column.haml
@@ -1825,6 +1826,7 @@ files:
1825
1826
  - share/views/public/plugins/underscore/js/underscore.js
1826
1827
  - share/views/public/robots.txt
1827
1828
  - share/views/tasks.haml
1829
+ - share/views/tools/Rpng.haml
1828
1830
  - share/views/tools/nvd3.haml
1829
1831
  - share/views/tools/nvd3/chart.haml
1830
1832
  - share/views/tools/nvd3/histogram.haml