rbbt-util 5.17.27 → 5.17.28

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 78fa13d3cd0db949d94f7845fd42b2edaef2bc2c
4
- data.tar.gz: 9dae7037fe6214447e7bd555a5e67745a6ba435a
3
+ metadata.gz: b62b4d3d3b46cfcf8e631a471daf1cc574843cc8
4
+ data.tar.gz: 5b284a5ef7ade80f035ece5978a3cd31c5ea1d03
5
5
  SHA512:
6
- metadata.gz: b98cecbf95b68f779d23b83127031bb799acfbedcca745c1a0458a2925cac4e5da3ee79bc5c78a949886d9b79bb07f2d04e8876cffb059b78567053ee185ad81
7
- data.tar.gz: 493e6552a59d2b035e4c4efc426a75ca436f5d0d2cba1ebfe26d700ef2639c50792e4288507ce8c751b317d0d1c8a91dc47838be305f505edad7358ce0c142bc
6
+ metadata.gz: a85420b0c5ad7ac41d5f6cd46add0d49bd1841658849acba2e06c5f4f57a3f854a93916789afbaa4794137ee4855a63e88cdf4a430cb8e5df5fcda868d8f2e39
7
+ data.tar.gz: f36d892b81611a5e2fffc95c50ca5fb0cb6121aca61552a74d60e9c20ede3daf1d1bb1422b8f00b8c84414773e41b534ef71747e5ddcd2391ea0a2f6d729d23f
@@ -140,6 +140,11 @@ module Association
140
140
 
141
141
  def self.database(file, options = {})
142
142
  database = case file
143
+ when Step
144
+ file.clean if file.error? or file.aborted? or file.dirty?
145
+ file.run(true) unless file.done? or file.started?
146
+ file.join unless file.done?
147
+ open_stream(TSV.get_stream(file), options.dup)
143
148
  when TSV
144
149
  file = file.to_double unless file.type == :double
145
150
  reorder_tsv(file, options.dup)
@@ -18,7 +18,7 @@ module TSV
18
18
 
19
19
  def self.paste_streams(streams, options = {})
20
20
  options = Misc.add_defaults options, :sep => "\t", :sort => true
21
- sort, sep, preamble, same_fields = Misc.process_options options, :sort, :sep, :preamble, :same_fields
21
+ sort, sep, preamble, header, same_fields, fix_flat = Misc.process_options options, :sort, :sep, :preamble, :header, :same_fields, :fix_flat
22
22
 
23
23
  out = Misc.open_pipe do |sin|
24
24
 
@@ -63,7 +63,11 @@ module TSV
63
63
  input_options << parser.options
64
64
  preambles << parser.preamble if preamble and not parser.preamble.empty?
65
65
 
66
- parser.stream
66
+ if fix_flat and parser.type == :flat
67
+ TSV.stream_flat2double(parser.stream).stream
68
+ else
69
+ parser.stream
70
+ end
67
71
  end
68
72
 
69
73
  key_field = key_fields.compact.first
@@ -74,6 +78,7 @@ module TSV
74
78
  end
75
79
  options = options.merge(input_options.first)
76
80
  options[:type] = :list if options[:type] == :single
81
+ options[:type] = :double if fix_flat
77
82
 
78
83
  preamble_txt = case preamble
79
84
  when TrueClass
@@ -88,7 +93,7 @@ module TSV
88
93
  nil
89
94
  end
90
95
 
91
- header = TSV.header_lines(key_field, fields, options.merge(:preamble => preamble_txt))
96
+ header ||= TSV.header_lines(key_field, fields, options.merge(:preamble => preamble_txt))
92
97
  sin.puts header
93
98
 
94
99
  empty_pos = empty.collect{|stream| streams.index stream }
@@ -210,6 +215,7 @@ module TSV
210
215
  dumper = TSV::Dumper.new dumper_options
211
216
  dumper.init
212
217
  TSV.traverse parser, :into => dumper do |key,values|
218
+ key = key.first if Array === key
213
219
  [key, [values]]
214
220
  end
215
221
  dumper
@@ -3,20 +3,16 @@ module Misc
3
3
  if use
4
4
  Log.medium "Activating lockfile ids"
5
5
  Lockfile.dont_use_lock_id = false
6
- #Lockfile.refresh = 20
7
- #Lockfile.max_age = 60
8
- #Lockfile.suspend = 2
6
+ Lockfile.refresh = 2
7
+ Lockfile.max_age = 30
8
+ Lockfile.suspend = 4
9
9
  else
10
10
  Log.medium "De-activating lockfile ids"
11
11
  Lockfile.dont_use_lock_id = true
12
- #Lockfile.refresh = 5
13
- #Lockfile.max_age = 60 * 10
14
- #Lockfile.suspend = 5
12
+ Lockfile.refresh = 4
13
+ Lockfile.max_age = 60
14
+ Lockfile.suspend = 8
15
15
  end
16
-
17
- Lockfile.refresh = 10
18
- Lockfile.max_age = 60
19
- Lockfile.suspend = 2
20
16
  end
21
17
 
22
18
  self.use_lock_id = ENV["RBBT_NO_LOCKFILE_ID"] != "true"
@@ -462,4 +462,23 @@ module Misc
462
462
  out
463
463
  end
464
464
 
465
+ def self.intercalate_streams(streams)
466
+ Misc.open_pipe do |sin|
467
+ continue = true
468
+ while continue
469
+ line1 = streams.first.gets unless streams.first.eof?
470
+ line2 = streams.last.gets unless streams.first.eof?
471
+ continue = false if line1.nil? and line2.nil?
472
+ sin.puts line1.strip if line1
473
+ sin.puts line2.strip if line2
474
+ line1 = nil
475
+ line2 = nil
476
+ end
477
+ streams.each do |stream|
478
+ stream.join if stream.respond_to? :join
479
+ stream.close if stream.respond_to? :close and not stream.closed?
480
+ end
481
+ end
482
+ end
483
+
465
484
  end
@@ -80,7 +80,8 @@ module Workflow
80
80
  :inputs => consume_inputs,
81
81
  :description => consume_description,
82
82
  :input_types => consume_input_types,
83
- :result_type => (Array === type ? type.to_sym : type),
83
+ :result_type => (String === type ? type.to_sym : type),
84
+ :result_description => consume_result_description,
84
85
  :input_defaults => consume_input_defaults,
85
86
  :input_descriptions => consume_input_descriptions,
86
87
  :extension => consume_extension,
@@ -94,8 +94,8 @@ class Step
94
94
  self
95
95
  end
96
96
 
97
- def prepare_result(value, description = nil, info = {})
98
- case
97
+ def prepare_result(value, description = nil, entity_info = nil)
98
+ res = case
99
99
  when IO === value
100
100
  begin
101
101
  res = case @task.result_type
@@ -127,13 +127,44 @@ class Step
127
127
  value
128
128
  when Annotated === value
129
129
  annotations = value.annotations
130
- info.each do |k,v|
130
+ entity_info ||= begin
131
+ entity_info = info.dup
132
+ entity_info.merge! info[:inputs] if info[:inputs]
133
+ entity_info
134
+ end
135
+ entity_info.each do |k,v|
131
136
  value.send("#{h}=", v) if annotations.include? k
132
137
  end
138
+
133
139
  value
134
140
  else
135
- Entity.formats[description].setup(value, info.merge(:format => description))
141
+ entity_info ||= begin
142
+ entity_info = info.dup
143
+ entity_info.merge! info[:inputs] if info[:inputs]
144
+ entity_info
145
+ end
146
+ Entity.formats[description].setup(value, entity_info.merge(:format => description))
136
147
  end
148
+
149
+ if Annotated === res
150
+ dep_hash = nil
151
+ res.annotations.each do |a|
152
+ a = a.to_s
153
+ varname = "@" + a
154
+ next unless res.instance_variable_get(varname).nil?
155
+
156
+ dep_hash ||= begin
157
+ h = {}
158
+ rec_dependencies.each{|dep| h[dep.task.name.to_s] ||= dep }
159
+ h
160
+ end
161
+ dep = dep_hash[a]
162
+ next if dep.nil?
163
+ res.send(a.to_s+"=", dep.load)
164
+ end
165
+ end
166
+
167
+ res
137
168
  end
138
169
 
139
170
 
@@ -152,10 +183,20 @@ class Step
152
183
 
153
184
 
154
185
  def load
155
- return prepare_result @result, @task.result_description if @result and not @path == @result
156
- join if not done?
157
- return Persist.load_file(@path, @task.result_type) if @path.exists?
158
- exec
186
+ res = if @result and not @path == @result
187
+ res = @result
188
+ else
189
+ join if not done?
190
+ @path.exists? ? Persist.load_file(@path, @task.result_type) : exec
191
+ end
192
+
193
+ if @task.result_description
194
+ entity_info = info.dup
195
+ entity_info.merge! info[:inputs] if info[:inputs]
196
+ res = prepare_result res, @task.result_description, entity_info
197
+ end
198
+
199
+ res
159
200
  end
160
201
 
161
202
  def self.clean(path)
@@ -204,14 +204,18 @@ class TestStep < Test::Unit::TestCase
204
204
  end
205
205
  end
206
206
  Step.wait_for_jobs(jobs)
207
- #jobs.each do |job|
208
- # while not job.done?
209
- # sleep 1
210
- # end
211
- #end
212
207
  ensure
213
208
  RbbtSemaphore.delete_semaphore(semaphore)
214
209
  end
215
210
  end
216
211
  end
212
+
213
+ def __test_load_return_description
214
+ require 'rbbt/workflow'
215
+ Workflow.require_workflow "Study"
216
+ study = Study.setup("LICA-FR")
217
+ job = study.recurrent_mutations(:job)
218
+ iii job.load.organism
219
+ iii study.recurrent_mutations.organism
220
+ end
217
221
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.17.27
4
+ version: 5.17.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-21 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake