rbbt-util 5.8.2 → 5.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/util/misc.rb +21 -0
- data/share/rbbt_commands/workflow/example +1 -1
- data/share/rbbt_commands/workflow/task +11 -3
- data/test/rbbt/util/test_misc.rb +44 -43
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f878977d61954ff0e75db2c46a479f60cdb9ac0
|
4
|
+
data.tar.gz: 0d525ca80ffcc1bb9ab128968406e399552fa4d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a35853cd5698117c360befd9dc876a36b2c590c3eaa171424700bdd1d28ba75106d28badfb0d76534dd975fe0fe50a43cc92794c3be5b44b66077e649296ab0c
|
7
|
+
data.tar.gz: d4522e6efe04efaa658e19bfee22cf15b41dce5a771e2e5be3137a518691b80dbd6aebf0a638696f6f1d632db6bffc97b4ad8e9266d5236d22bb62ed42a1d435
|
data/lib/rbbt/util/misc.rb
CHANGED
@@ -1479,6 +1479,17 @@ end
|
|
1479
1479
|
sout
|
1480
1480
|
end
|
1481
1481
|
|
1482
|
+
def self.append_zipped(current, new)
|
1483
|
+
current.each do |v|
|
1484
|
+
n = new.shift
|
1485
|
+
if Array === n
|
1486
|
+
v.concat new
|
1487
|
+
else
|
1488
|
+
v << n
|
1489
|
+
end
|
1490
|
+
end
|
1491
|
+
current
|
1492
|
+
end
|
1482
1493
|
|
1483
1494
|
def self.zip_fields(array)
|
1484
1495
|
return [] if array.empty? or (first = array.first).nil?
|
@@ -1574,6 +1585,16 @@ module IndiferentHash
|
|
1574
1585
|
hash.extend IndiferentHash
|
1575
1586
|
end
|
1576
1587
|
|
1588
|
+
def merge(other)
|
1589
|
+
new = self.dup
|
1590
|
+
IndiferentHash.setup(new)
|
1591
|
+
other.each do |k,value|
|
1592
|
+
new.delete k
|
1593
|
+
new[k] = value
|
1594
|
+
end
|
1595
|
+
new
|
1596
|
+
end
|
1597
|
+
|
1577
1598
|
def [](key)
|
1578
1599
|
res = super(key)
|
1579
1600
|
return res unless res.nil?
|
@@ -10,7 +10,7 @@ def run_task(workflow, task, name)
|
|
10
10
|
example_dir = workflow.libdir.examples[task][name].find
|
11
11
|
Log.debug "Using #{example_dir}"
|
12
12
|
|
13
|
-
ARGV.replace([workflow.to_s, task, '--load_inputs', example_dir, '--jobname', name,'--
|
13
|
+
ARGV.replace([workflow.to_s, task, '--load_inputs', example_dir, '--jobname', name,'--pf'] + $saved_args)
|
14
14
|
|
15
15
|
@pid = Process.fork{
|
16
16
|
load Rbbt.share.rbbt_commands.workflow.task.find
|
@@ -17,10 +17,10 @@ def load_inputs(dir, task)
|
|
17
17
|
inputs[input.to_sym] = file
|
18
18
|
else
|
19
19
|
Log.debug "Loading #{ input } from #{file}"
|
20
|
-
inputs[input.to_sym] = file.read
|
20
|
+
inputs[input.to_sym] = file.read.strip
|
21
21
|
end
|
22
22
|
end
|
23
|
-
inputs
|
23
|
+
IndiferentHash.setup(inputs)
|
24
24
|
end
|
25
25
|
|
26
26
|
def report_options(options)
|
@@ -136,6 +136,7 @@ options = SOPT.get <<EOF
|
|
136
136
|
-as--array_separator* Change the character that separates elements of Arrays, ',', '|', or '\\n' by default:
|
137
137
|
-jn--jobname* Job name to use. The name 'Default' is used by default:
|
138
138
|
-pn--printname Print the name of the job and exit without starting it:
|
139
|
+
-pf--printpath Print the path of the job result:
|
139
140
|
-cl--clean Clean the last step of the job so that it gets recomputed:
|
140
141
|
-rcl--recursive_clean Clean the last step and its dependencies to recompute the job completely:
|
141
142
|
--fork Run job asyncronously:
|
@@ -203,7 +204,7 @@ name = options.delete(:jobname) || "Default"
|
|
203
204
|
# get job args
|
204
205
|
sopt_option_string = SOPT_options(workflow, task)
|
205
206
|
if options[:load_inputs]
|
206
|
-
job_options = load_inputs(options[:load_inputs], task)
|
207
|
+
job_options = load_inputs(options[:load_inputs], task).merge(SOPT.get(sopt_option_string))
|
207
208
|
else
|
208
209
|
job_options = SOPT.get sopt_option_string
|
209
210
|
end
|
@@ -282,6 +283,13 @@ begin
|
|
282
283
|
else
|
283
284
|
Log.low "Job name: #{job.name}"
|
284
285
|
end
|
286
|
+
|
287
|
+
if options.delete(:printpath)
|
288
|
+
puts job.path
|
289
|
+
exit 0
|
290
|
+
else
|
291
|
+
Log.low "Job name: #{job.name}"
|
292
|
+
end
|
285
293
|
rescue ParameterException
|
286
294
|
SOPT.delete_inputs(workflow.rec_inputs(task.name))
|
287
295
|
usage(workflow, task, $!)
|
data/test/rbbt/util/test_misc.rb
CHANGED
@@ -6,12 +6,12 @@ require 'rbbt/entity'
|
|
6
6
|
|
7
7
|
class TestMisc < Test::Unit::TestCase
|
8
8
|
|
9
|
-
def
|
9
|
+
def test_parse_cmd_params
|
10
10
|
ddd Misc.parse_cmd_params("workflow task Translation translate -f 'Associated Gene Name' -l -")
|
11
11
|
end
|
12
12
|
|
13
13
|
|
14
|
-
def
|
14
|
+
def test_fixutf8
|
15
15
|
string = "abc\xffdef"
|
16
16
|
string = string.force_encoding("UTF-8") if string.respond_to? :force_encoding
|
17
17
|
assert(! string.valid_encoding?) if string.respond_to? :valid_encoding?
|
@@ -20,37 +20,37 @@ class TestMisc < Test::Unit::TestCase
|
|
20
20
|
assert( Misc.fixutf8(string).valid_encoding) if string.respond_to? :valid_encoding
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
23
|
+
def test_colors_for
|
24
24
|
colors, used = Misc.colors_for([1,2,2,1,2,1,2,2,3,3,2,3,2])
|
25
25
|
assert_equal Misc::COLOR_LIST[1], used[2]
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
28
|
+
def test_total_length
|
29
29
|
ranges = [(0..100), (50..150), (120..160)]
|
30
30
|
ranges = [(0..100), (50..150), (120..160), (51..70)]
|
31
31
|
assert_equal 161, Misc.total_length(ranges)
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
34
|
+
def test_id_filename?
|
35
35
|
TmpFile.with_file("") do |file|
|
36
36
|
assert Misc.is_filename?(file)
|
37
37
|
assert ! Misc.is_filename?("TEST STRING")
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
41
|
+
def test_merge_sorted_arrays
|
42
42
|
assert_equal [1,2,3,4], Misc.merge_sorted_arrays([1,3], [2,4])
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
45
|
+
def test_intersect_sorted_arrays
|
46
46
|
assert_equal [2,4], Misc.intersect_sorted_arrays([1,2,3,4], [2,4])
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
49
|
+
def test_sorted_array_matches
|
50
50
|
assert_equal [1,3], Misc.sorted_array_hits(%w(a b c d e), %w(b d))
|
51
51
|
end
|
52
52
|
|
53
|
-
def
|
53
|
+
def test_binary_include?
|
54
54
|
a = %w(a b c d e).sort
|
55
55
|
assert Misc.binary_include?(a, "a")
|
56
56
|
assert(!Misc.binary_include?(a, "z"))
|
@@ -59,24 +59,24 @@ class TestMisc < Test::Unit::TestCase
|
|
59
59
|
assert(Misc.binary_include?(a, "d"))
|
60
60
|
end
|
61
61
|
|
62
|
-
def
|
62
|
+
def test_process_to_hash
|
63
63
|
list = [1,2,3,4]
|
64
64
|
assert_equal 4, Misc.process_to_hash(list){|l| l.collect{|e| e * 2}}[2]
|
65
65
|
end
|
66
66
|
|
67
|
-
# def
|
67
|
+
# def test_pdf2text_example
|
68
68
|
# assert PDF2Text.pdf2text(datafile_test('example.pdf')).read =~ /An Example Paper/i
|
69
69
|
# end
|
70
70
|
#
|
71
|
-
# def
|
71
|
+
# def test_pdf2text_EPAR
|
72
72
|
# assert PDF2Text.pdf2text("http://www.ema.europa.eu/docs/en_GB/document_library/EPAR_-_Scientific_Discussion/human/000402/WC500033103.pdf").read =~ /Tamiflu/i
|
73
73
|
# end
|
74
74
|
#
|
75
|
-
# def
|
75
|
+
# def test_pdf2text_wrong
|
76
76
|
# assert_raise CMD::CMDError do PDF2Text.pdf2text("http://www.ema.europa.eu/docs/en_GB#").read end
|
77
77
|
# end
|
78
78
|
|
79
|
-
def
|
79
|
+
def test_string2hash
|
80
80
|
assert(Misc.string2hash("--user-agent=firefox").include? "--user-agent")
|
81
81
|
assert_equal(true, Misc.string2hash(":true")[:true])
|
82
82
|
assert_equal(true, Misc.string2hash("true")["true"])
|
@@ -87,7 +87,7 @@ class TestMisc < Test::Unit::TestCase
|
|
87
87
|
assert_equal(:j, Misc.string2hash("a=b#c=d#:h=:j")[:h])
|
88
88
|
end
|
89
89
|
|
90
|
-
def
|
90
|
+
def test_named_array
|
91
91
|
a = NamedArray.setup([1,2,3,4], %w(a b c d))
|
92
92
|
assert_equal(1, a['a'])
|
93
93
|
end
|
@@ -102,8 +102,8 @@ class TestMisc < Test::Unit::TestCase
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
# def
|
106
|
-
#
|
105
|
+
# def test_chunk
|
106
|
+
# test =<<-EOF
|
107
107
|
#This is an example file. Entries are separated by Entry
|
108
108
|
#-- Entry
|
109
109
|
#1
|
@@ -118,7 +118,7 @@ class TestMisc < Test::Unit::TestCase
|
|
118
118
|
# assert_equal "1\n2\n3", Misc.chunk(test, /^-- Entry/).first.strip
|
119
119
|
# end
|
120
120
|
|
121
|
-
def
|
121
|
+
def test_hash2string
|
122
122
|
hash = {}
|
123
123
|
assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
|
124
124
|
|
@@ -136,14 +136,14 @@ class TestMisc < Test::Unit::TestCase
|
|
136
136
|
|
137
137
|
end
|
138
138
|
|
139
|
-
def
|
139
|
+
def test_merge
|
140
140
|
a = [[1],[2]]
|
141
141
|
a = NamedArray.setup a, %w(1 2)
|
142
142
|
a.merge [3,4]
|
143
143
|
assert_equal [1,3], a[0]
|
144
144
|
end
|
145
145
|
|
146
|
-
def
|
146
|
+
def test_indiferent_hash
|
147
147
|
a = {:a => 1, "b" => 2}
|
148
148
|
a.extend IndiferentHash
|
149
149
|
|
@@ -153,7 +153,7 @@ class TestMisc < Test::Unit::TestCase
|
|
153
153
|
assert_equal 2, a[:b]
|
154
154
|
end
|
155
155
|
|
156
|
-
def
|
156
|
+
def test_lockfile
|
157
157
|
|
158
158
|
TmpFile.with_file do |tmpfile|
|
159
159
|
pids = []
|
@@ -177,7 +177,7 @@ class TestMisc < Test::Unit::TestCase
|
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
180
|
-
def
|
180
|
+
def test_positions2hash
|
181
181
|
inputs = Misc.positional2hash([:one, :two, :three], 1, :two => 2, :four => 4)
|
182
182
|
assert_equal 1, inputs[:one]
|
183
183
|
assert_equal 2, inputs[:two]
|
@@ -185,41 +185,42 @@ class TestMisc < Test::Unit::TestCase
|
|
185
185
|
assert_equal nil, inputs[:four]
|
186
186
|
end
|
187
187
|
|
188
|
-
def
|
188
|
+
def test_mean
|
189
189
|
assert_equal 2, Misc.mean([1,2,3])
|
190
190
|
assert_equal 3, Misc.mean([1,2,3,4,5])
|
191
191
|
end
|
192
192
|
|
193
|
-
def
|
194
|
-
|
193
|
+
def test_zip_fields
|
194
|
+
current = [[:a,1], [:b,2]]
|
195
|
+
assert_equal [[:a, :b],[1,2]], Misc.zip_fields(current)
|
196
|
+
assert_equal current, Misc.zip_fields(Misc.zip_fields(current))
|
195
197
|
end
|
196
198
|
|
197
|
-
def
|
198
|
-
|
199
|
-
|
200
|
-
|
199
|
+
def test_add_zipped
|
200
|
+
current = [[:a,1], [:b,2]]
|
201
|
+
new = %w(A B)
|
202
|
+
Misc.append_zipped current, new
|
203
|
+
assert_equal [[:a,1,"A"], [:b,2,"B"]], current
|
201
204
|
end
|
202
205
|
|
203
|
-
def
|
204
|
-
|
205
|
-
sequence = "TYTIDMKTTQNVNGLSML"
|
206
|
-
assert_equal "--------------------------------TYTIDMKTTQNVNGLSML-------------------------", Misc.fast_align(reference, sequence).last
|
206
|
+
def __test_sd
|
207
|
+
assert_equal Math.sqrt(2), Misc.sd([1,3])
|
207
208
|
end
|
208
209
|
|
209
|
-
def
|
210
|
+
def test_divide
|
210
211
|
assert_equal 2, Misc.divide(%w(1 2 3 4 5 6 7 8 9),2).length
|
211
212
|
end
|
212
213
|
|
213
|
-
def
|
214
|
+
def test_ordered_divide
|
214
215
|
assert_equal 5, Misc.ordered_divide(%w(1 2 3 4 5 6 7 8 9),2).length
|
215
216
|
end
|
216
217
|
|
217
|
-
def
|
218
|
+
def test_collapse_ranges
|
218
219
|
ranges = [(0..100), (50..150), (51..61),(200..250), (300..324),(320..350)]
|
219
220
|
assert_equal [(0..150),(200..250), (300..350)], Misc.collapse_ranges(ranges)
|
220
221
|
end
|
221
222
|
|
222
|
-
def
|
223
|
+
def test_humanize
|
223
224
|
str1 = "test_string"
|
224
225
|
str2 = "TEST_string"
|
225
226
|
str3 = "test"
|
@@ -231,22 +232,22 @@ class TestMisc < Test::Unit::TestCase
|
|
231
232
|
assert_equal "mutation_enrichment", Misc.snake_case("MutationEnrichment")
|
232
233
|
end
|
233
234
|
|
234
|
-
def
|
235
|
+
def test_snake_case
|
235
236
|
str1 = "ACRONIMTest"
|
236
237
|
str2 = "ACRONIM_test"
|
237
238
|
assert_equal "ACRONIM_test", Misc.snake_case(str1)
|
238
239
|
assert_equal "ACRONIM_test", Misc.snake_case(str2)
|
239
240
|
end
|
240
241
|
|
241
|
-
def
|
242
|
+
def test_correct_vcf_mutations
|
242
243
|
assert_equal [737407, ["-----", "-----G", "-----GTTAAT"]], Misc.correct_vcf_mutation(737406, "GTTAAT", "G,GG,GGTTAAT")
|
243
244
|
end
|
244
245
|
|
245
|
-
def
|
246
|
+
def test_fingerprint
|
246
247
|
assert_equal '{a=>1}', Misc.fingerprint({:a => 1})
|
247
248
|
end
|
248
249
|
|
249
|
-
def
|
250
|
+
def test_tarize
|
250
251
|
path = File.expand_path('/home/mvazquezg/git/rbbt-util/lib')
|
251
252
|
stream = Misc.tarize(path)
|
252
253
|
TmpFile.with_file do |res|
|
@@ -256,7 +257,7 @@ class TestMisc < Test::Unit::TestCase
|
|
256
257
|
end
|
257
258
|
end
|
258
259
|
|
259
|
-
def
|
260
|
+
def test_camel_case
|
260
261
|
assert_equal "DbSNP", Misc.camel_case("db_SNP")
|
261
262
|
assert_equal "D3Js", Misc.camel_case("D3Js")
|
262
263
|
assert_equal "Structure", Misc.camel_case("Structure")
|
@@ -264,7 +265,7 @@ class TestMisc < Test::Unit::TestCase
|
|
264
265
|
assert_equal "COSMIC", Misc.camel_case("COSMIC")
|
265
266
|
end
|
266
267
|
|
267
|
-
def
|
268
|
+
def test_pipe
|
268
269
|
t = 5
|
269
270
|
stream = Misc.open_pipe do |sin|
|
270
271
|
t.times do |i|
|
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.8.
|
4
|
+
version: 5.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|