rbbt-util 5.6.13 → 5.6.14

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: b656db59e4d0eca0665f2f66988894887643c65a
4
- data.tar.gz: ad90d4cf34155c405e418306f9376716c514db4e
3
+ metadata.gz: 4e0c8c6ded43303be8e60d1b3f296c01a7eb71d9
4
+ data.tar.gz: 16641eeaa05112c42e6d4cbf19225a241f838910
5
5
  SHA512:
6
- metadata.gz: bd6c1cf896bcbd16e00f35064b764789a0d35e6e5ef3db98d93bbe86ab55a1de92a5a72fe2c5559cfeba9cd06c645d20ec5f1a62cd4dca482a3f8f2aa9ff8678
7
- data.tar.gz: 2909d49e91db24d697b445256475b6066bf807018394eb1560f1161fd8fd1966483db16f7c222bde72cfc54b90869a1bdf794e662bd4dd73f29ecafd3516d793
6
+ metadata.gz: 8cbac69ebc91242fb6a0343a082a7e90d4bb1746b93b2af1b750e71a14745f77256351f539223da2ffc3918a1270410c8bdd4d5efaa590e83fbcbff60fe19742
7
+ data.tar.gz: de45c205481873a3d514e160275fa22a6182d2862796d09c1cb6e54009645ee29dc8d132dc739282fb09adc45bfb0f6ce089047f61089876db5d57b34e9565ba
data/bin/rbbt CHANGED
@@ -33,13 +33,19 @@ Known locations are: #{([$rbbt_command_dir] + $rbbt_command_dir.find_all) * ", "
33
33
  You can place your own commads at #{$rbbt_command_dir.find(:user)}.
34
34
  EOF
35
35
 
36
- def commands(prev)
36
+ def prev_dir(prev)
37
37
  rbbt_command_dir = $rbbt_command_dir
38
38
 
39
39
  prev.each do |previous_command|
40
40
  rbbt_command_dir = rbbt_command_dir[previous_command]
41
41
  end
42
42
 
43
+ rbbt_command_dir
44
+ end
45
+
46
+ def commands(prev)
47
+ rbbt_command_dir = prev_dir(prev)
48
+
43
49
  command_file_dirs = rbbt_command_dir.find_all
44
50
  command_files = command_file_dirs.collect{|d| d.glob('*') }.flatten
45
51
  command_files.collect{|p| File.basename(p) }.uniq.reject{|p| p =~ /\.desc$/}.sort
@@ -59,8 +65,14 @@ def rbbt_usage(prev = nil)
59
65
  puts
60
66
  puts Log.color :magenta, "Subcommands:"
61
67
  puts
68
+ prev_dir = prev_dir(prev)
62
69
  commands(prev).each do |command|
63
- puts " " << command
70
+ directory = File.directory? prev_dir[command].find
71
+ if directory
72
+ puts " " << Log.color(:blue, command)
73
+ else
74
+ puts " " << command
75
+ end
64
76
  end
65
77
  end
66
78
  puts
@@ -917,15 +917,32 @@ end
917
917
  html
918
918
  end
919
919
 
920
+ #def self.path_relative_to(basedir, path)
921
+ # path = File.expand_path(path) unless path[0] == "/"
922
+ # basedir = File.expand_path(basedir) unless basedir[0] == "/"
923
+
924
+ # basedir << "/" unless basedir[-1] == "/"
925
+ # case
926
+ # when path == basedir
927
+ # "."
928
+ # #when path =~ /#{Regexp.quote basedir}\/(.*)/
929
+ # when path.index(basedir) == 0
930
+ # return path[basedir.length..-1]
931
+ # else
932
+ # return nil
933
+ # end
934
+ #end
935
+
920
936
  def self.path_relative_to(basedir, path)
921
- path = File.expand_path(path)
922
- basedir = File.expand_path(basedir)
937
+ path = File.expand_path(path) unless path[0] == "/"
938
+ basedir = File.expand_path(basedir) unless basedir[0] == "/"
923
939
 
924
- case
925
- when path == basedir
926
- "."
927
- when path =~ /#{Regexp.quote basedir}\/(.*)/
928
- return $1
940
+ if path.index(basedir) == 0
941
+ if basedir[-1] == "/"
942
+ return path[basedir.length..-1]
943
+ else
944
+ return path[basedir.length+1..-1]
945
+ end
929
946
  else
930
947
  return nil
931
948
  end
@@ -7,14 +7,14 @@ module SOPT
7
7
  current = [chars.shift]
8
8
  short = current * ""
9
9
 
10
- if shortcuts.include? short and long.index "-" or long.index "_"
10
+ if (shortcuts.include?(short) and not shortcuts[short] == long) and long.index "-" or long.index "_"
11
11
  parts = long.split(/[_-]/)
12
12
  acc = parts.collect{|s| s[0] } * ""
13
13
  return acc unless shortcuts.include? acc
14
14
  end
15
15
 
16
- while shortcuts.include? short
17
- while shortcuts[short].index current * ""
16
+ while shortcuts.include?(short) and not shortcuts[short] == long
17
+ while (long.length - current.length > 2) and shortcuts[short].index current * ""
18
18
  next_letter = chars.shift
19
19
  return nil if next_letter.nil?
20
20
  current << next_letter
data/lib/rbbt/workflow.rb CHANGED
@@ -259,8 +259,8 @@ module Workflow
259
259
  end
260
260
 
261
261
  def jobs(taskname, query = nil)
262
- task_dir = File.join(workdir.find, taskname.to_s)
263
- pattern = File.join(task_dir, '**/*')
262
+ task_dir = File.join(File.expand_path(workdir.find), taskname.to_s)
263
+ pattern = File.join(File.expand_path(task_dir), '**/*')
264
264
  job_info_files = Dir.glob(Step.info_file(pattern)).collect{|f| Misc.path_relative_to task_dir, f }
265
265
  job_info_files = job_info_files.select{|f| f.index(query) == 0 } if query
266
266
  job_info_files.collect{|f|
@@ -2,14 +2,50 @@
2
2
 
3
3
  require 'rbbt-util'
4
4
  require 'rbbt/util/simpleopt'
5
+ require 'rbbt/sources/organism'
5
6
 
7
+ options = SOPT.get("-f--file* File to process:-f--field* Field to change:-t--target* Target format:-i--identifiers* Identifier file to use")
6
8
 
7
- file = ARGV.shift
8
- identifiers = ARGV.shift
9
- format = ARGV.shift
9
+ raise ParameterException, "No file given" unless file = options[:file]
10
+ raise ParameterException, "No field given" unless field = options[:field]
11
+ raise ParameterException, "No target given" unless target = options[:target]
10
12
 
13
+ identifiers = options[:identifiers] || Organism.identifiers("Hsa").find
11
14
 
12
- tsv = TSV.open(file).attach identifiers, :fields => [format]
15
+ begin
16
+ index = TSV.index(identifiers, :persist => true, :target => target, :merge => true)
17
+ rescue
18
+ raise ParameterException, "Could not build index for '#{target}': #{ identifiers }"
19
+ end
13
20
 
14
- puts tsv.reorder(format, tsv.fields - [format])
21
+ tsv = TSV.open file
15
22
 
23
+ tsv.process field do |value|
24
+ if Array === value
25
+ index.values_at *value
26
+ else
27
+ index[value]
28
+ end
29
+ end
30
+
31
+ tsv.fields = tsv.fields.collect{|f| f == field ? target : f}
32
+
33
+ puts tsv
34
+
35
+ exit
36
+
37
+ #stream = Open.open file
38
+ #header = TSV.parse_header stream
39
+ #field_pos = header.all_fields.index field
40
+ #raise ParameterException, "Unknown field: #{ field }" unless field_pos
41
+ #
42
+ #out = STDOUT
43
+ #out.puts TSV.header_lines :fields => header.fields, :key_field =
44
+ #while line = stream.gets do
45
+ # if line =~ /^#/
46
+ # out.puts line
47
+ # next
48
+ # else
49
+ # end
50
+ #end
51
+ #
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rbbt/workflow'
4
+
5
+ dir = ARGV.shift || '.'
6
+
7
+ all_files = Dir.glob(File.join(dir, '*'))
8
+ info_files = Dir.glob(File.join(dir, Step.info_file('*')))
9
+ file_dirs = Dir.glob(File.join(dir, Step.files_dir('*')))
10
+
11
+ jobs = (all_files - info_files - file_dirs)
12
+
13
+ jobs.reject!{|j| j =~ /\.lock/ }
14
+
15
+ puts jobs * "\n"
@@ -84,7 +84,7 @@ def fix_options(workflow, task, job_options)
84
84
  value.to_f
85
85
  when :integer
86
86
  value.to_i
87
- when :string, :text
87
+ when :text
88
88
  case
89
89
  when value == '-'
90
90
  STDIN.read
@@ -6,12 +6,12 @@ require 'rbbt/entity'
6
6
 
7
7
  class TestMisc < Test::Unit::TestCase
8
8
 
9
- def test_parse_cmd_params
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 test_fixutf8
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 test_colors_for
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 test_total_length
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 test_id_filename?
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 test_merge_sorted_arrays
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 test_intersect_sorted_arrays
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 test_sorted_array_matches
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 test_binary_include?
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 test_process_to_hash
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 test_pdf2text_example
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 test_pdf2text_EPAR
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 test_pdf2text_wrong
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 test_string2hash
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,17 +87,23 @@ 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 test_named_array
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
94
94
 
95
- # def test_path_relative_to
96
- # assert_equal "test/foo", Misc.path_relative_to('test/test/foo', 'test')
97
- # end
95
+ def test_path_relative_to
96
+ assert_equal "test/foo", Misc.path_relative_to('/test', '/test/test/foo')
97
+
98
+ Misc.profile do
99
+ Misc.benchmark(45_000) do
100
+ Misc.path_relative_to('/test', '/test/test/foo')
101
+ end
102
+ end
103
+ end
98
104
 
99
- # def test_chunk
100
- # test =<<-EOF
105
+ # def _test_chunk
106
+ # _test =<<-EOF
101
107
  #This is an example file. Entries are separated by Entry
102
108
  #-- Entry
103
109
  #1
@@ -112,7 +118,7 @@ class TestMisc < Test::Unit::TestCase
112
118
  # assert_equal "1\n2\n3", Misc.chunk(test, /^-- Entry/).first.strip
113
119
  # end
114
120
 
115
- def test_hash2string
121
+ def _test_hash2string
116
122
  hash = {}
117
123
  assert_equal hash, Misc.string2hash(Misc.hash2string(hash))
118
124
 
@@ -130,14 +136,14 @@ class TestMisc < Test::Unit::TestCase
130
136
 
131
137
  end
132
138
 
133
- def test_merge
139
+ def _test_merge
134
140
  a = [[1],[2]]
135
141
  a = NamedArray.setup a, %w(1 2)
136
142
  a.merge [3,4]
137
143
  assert_equal [1,3], a[0]
138
144
  end
139
145
 
140
- def test_indiferent_hash
146
+ def _test_indiferent_hash
141
147
  a = {:a => 1, "b" => 2}
142
148
  a.extend IndiferentHash
143
149
 
@@ -147,7 +153,7 @@ class TestMisc < Test::Unit::TestCase
147
153
  assert_equal 2, a[:b]
148
154
  end
149
155
 
150
- def test_lockfile
156
+ def _test_lockfile
151
157
 
152
158
  TmpFile.with_file do |tmpfile|
153
159
  pids = []
@@ -171,7 +177,7 @@ class TestMisc < Test::Unit::TestCase
171
177
  end
172
178
  end
173
179
 
174
- def test_positions2hash
180
+ def _test_positions2hash
175
181
  inputs = Misc.positional2hash([:one, :two, :three], 1, :two => 2, :four => 4)
176
182
  assert_equal 1, inputs[:one]
177
183
  assert_equal 2, inputs[:two]
@@ -179,7 +185,7 @@ class TestMisc < Test::Unit::TestCase
179
185
  assert_equal nil, inputs[:four]
180
186
  end
181
187
 
182
- def test_mean
188
+ def _test_mean
183
189
  assert_equal 2, Misc.mean([1,2,3])
184
190
  assert_equal 3, Misc.mean([1,2,3,4,5])
185
191
  end
@@ -188,32 +194,32 @@ class TestMisc < Test::Unit::TestCase
188
194
  assert_equal Math.sqrt(2), Misc.sd([1,3])
189
195
  end
190
196
 
191
- def test_align_small
197
+ def _test_align_small
192
198
  reference = "AABCDEBD"
193
199
  sequence = "ABCD"
194
200
  assert_equal '-ABCD---', Misc.fast_align(reference, sequence).last
195
201
  end
196
202
 
197
- def test_align_real
203
+ def _test_align_real
198
204
  reference = "SGNECNKAIDGNKDTFWHTFYGANGDPKPPPHTYTIDMKTTQNVNGLSMLPRQDGNQNGWIGRHEVYLSSDGTNW"
199
205
  sequence = "TYTIDMKTTQNVNGLSML"
200
206
  assert_equal "--------------------------------TYTIDMKTTQNVNGLSML-------------------------", Misc.fast_align(reference, sequence).last
201
207
  end
202
208
 
203
- def test_divide
209
+ def _test_divide
204
210
  assert_equal 2, Misc.divide(%w(1 2 3 4 5 6 7 8 9),2).length
205
211
  end
206
212
 
207
- def test_ordered_divide
213
+ def _test_ordered_divide
208
214
  assert_equal 5, Misc.ordered_divide(%w(1 2 3 4 5 6 7 8 9),2).length
209
215
  end
210
216
 
211
- def test_collapse_ranges
217
+ def _test_collapse_ranges
212
218
  ranges = [(0..100), (50..150), (51..61),(200..250), (300..324),(320..350)]
213
219
  assert_equal [(0..150),(200..250), (300..350)], Misc.collapse_ranges(ranges)
214
220
  end
215
221
 
216
- def test_humanize
222
+ def _test_humanize
217
223
  str1 = "test_string"
218
224
  str2 = "TEST_string"
219
225
  str3 = "test"
@@ -225,22 +231,22 @@ class TestMisc < Test::Unit::TestCase
225
231
  assert_equal "mutation_enrichment", Misc.snake_case("MutationEnrichment")
226
232
  end
227
233
 
228
- def test_snake_case
234
+ def _test_snake_case
229
235
  str1 = "ACRONIMTest"
230
236
  str2 = "ACRONIM_test"
231
237
  assert_equal "ACRONIM_test", Misc.snake_case(str1)
232
238
  assert_equal "ACRONIM_test", Misc.snake_case(str2)
233
239
  end
234
240
 
235
- def test_correct_vcf_mutations
241
+ def _test_correct_vcf_mutations
236
242
  assert_equal [737407, ["-----", "-----G", "-----GTTAAT"]], Misc.correct_vcf_mutation(737406, "GTTAAT", "G,GG,GGTTAAT")
237
243
  end
238
244
 
239
- def test_fingerprint
245
+ def _test_fingerprint
240
246
  assert_equal '{a=>1}', Misc.fingerprint({:a => 1})
241
247
  end
242
248
 
243
- def test_tarize
249
+ def _test_tarize
244
250
  path = File.expand_path('/home/mvazquezg/git/rbbt-util/lib')
245
251
  stream = Misc.tarize(path)
246
252
  TmpFile.with_file do |res|
@@ -250,7 +256,7 @@ class TestMisc < Test::Unit::TestCase
250
256
  end
251
257
  end
252
258
 
253
- def test_camel_case
259
+ def _test_camel_case
254
260
  assert_equal "DbSNP", Misc.camel_case("db_SNP")
255
261
  assert_equal "D3Js", Misc.camel_case("D3Js")
256
262
  assert_equal "Structure", Misc.camel_case("Structure")
@@ -258,7 +264,7 @@ class TestMisc < Test::Unit::TestCase
258
264
  assert_equal "COSMIC", Misc.camel_case("COSMIC")
259
265
  end
260
266
 
261
- def test_pipe
267
+ def _test_pipe
262
268
  t = 5
263
269
  stream = Misc.open_pipe do |sin|
264
270
  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.6.13
4
+ version: 5.6.14
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-02-27 00:00:00.000000000 Z
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -228,6 +228,7 @@ files:
228
228
  - share/rbbt_commands/workflow/cmd
229
229
  - share/rbbt_commands/workflow/example
230
230
  - share/rbbt_commands/workflow/install
231
+ - share/rbbt_commands/workflow/jobs
231
232
  - share/rbbt_commands/workflow/list
232
233
  - share/rbbt_commands/workflow/monitor
233
234
  - share/rbbt_commands/workflow/provenance