rbbt-util 5.6.17 → 5.7.0

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: 9cd5bcdf21e90d1e62413b0c5f05c2fe92cd43cc
4
- data.tar.gz: 0e5f75492b51edf63e76b32624d4a4dc39092a6e
3
+ metadata.gz: 2d4025fea0b4bfd41f869ae4282cd268ebe5f876
4
+ data.tar.gz: 194ead2946a9a3c215a9136bc2b0c615bf73488a
5
5
  SHA512:
6
- metadata.gz: e2b471f1a98ae3ddfe81fd90675cc05a8d1cbbd24da1ce2d08955f476038681f87bebfd979d9798241c0cee531e28c1c18e4faa868a9d7f7c24dfc2831742bdf
7
- data.tar.gz: 4db6e2a91bc5c1cf7370feba6494ffef580f80b4b0d67d7c27be5b8f83a2a9f429e73244001541a40252ca9c7a218eaae8c75a46e76352b20e0deb5f565d145f
6
+ metadata.gz: 0df26701e5d7e3842a9ddd939c385b7c16884f81eee2fde670d6c7b1c0fe7cc371d05acaa65967eda8716fe7301c5e83e79a8b189e07341597b23052d648c060
7
+ data.tar.gz: afcd1c9b2c88cb5858278ae50401a5140d729aa2007629f99adff8d3239f3d28d2df4c4791362a450d1892d273bef352941ab14578a6031fc7e43a9f8404a3fd
@@ -7,25 +7,25 @@ end
7
7
  begin
8
8
  require 'rbbt/persist/tsv/lmdb'
9
9
  rescue Exception
10
- Log.warn "The lmdb gem could not be loaded. Persistance using this engine will fail."
10
+ Log.debug "The lmdb gem could not be loaded. Persistance using this engine will fail."
11
11
  end
12
12
 
13
13
  begin
14
14
  require 'rbbt/persist/tsv/leveldb'
15
15
  rescue Exception
16
- Log.warn "The LevelDB gem could not be loaded. Persistance using this engine will fail."
16
+ Log.debug "The LevelDB gem could not be loaded. Persistance using this engine will fail."
17
17
  end
18
18
 
19
19
  begin
20
20
  require 'rbbt/persist/tsv/cdb'
21
21
  rescue Exception
22
- Log.warn "The CDB gem could not be loaded. Persistance using this engine will fail."
22
+ Log.debug "The CDB gem could not be loaded. Persistance using this engine will fail."
23
23
  end
24
24
 
25
25
  begin
26
26
  require 'rbbt/persist/tsv/kyotocabinet'
27
27
  rescue Exception
28
- Log.warn "The kyotocabinet gem could not be loaded. Persistance using this engine will fail."
28
+ Log.debug "The kyotocabinet gem could not be loaded. Persistance using this engine will fail."
29
29
  end
30
30
 
31
31
  module Persist
@@ -108,16 +108,21 @@ module Path
108
108
  else
109
109
  where = where.to_sym
110
110
  raise "Did not recognize the 'where' tag: #{where}. Options: #{paths.keys}" unless paths.include? where
111
- libdir = where == :lib ? Path.caller_lib_dir(caller_lib) : ""
112
- libdir ||= ""
111
+
112
+ if where == :lib
113
+ libdir = Path.caller_lib_dir(caller_lib) || "NOLIBDIR"
114
+ else
115
+ libdir = "NOLIBDIR"
116
+ end
113
117
  pwd = FileUtils.pwd
114
- self.annotate paths[where].
118
+ path = paths[where].
115
119
  sub('{PKGDIR}', pkgdir).
116
120
  sub('{PWD}', pwd).
117
121
  sub('{TOPLEVEL}', toplevel).
118
122
  sub('{SUBPATH}', subpath).
119
123
  sub('{PATH}', self).
120
124
  sub('{LIBDIR}', libdir) #, @pkgdir, @resource, @search_paths
125
+ self.annotate path
121
126
  end
122
127
  end
123
128
 
@@ -8,12 +8,13 @@ module Path
8
8
  l =~ /progress-monitor\.rb/
9
9
  }.first.sub(/\.rb[^\w].*/,'.rb') if file.nil?
10
10
 
11
- file = File.expand_path file
12
11
  return Path.setup(file) if File.exists? File.join(file, relative_to)
13
12
 
14
13
  while file != '/'
15
14
  dir = File.dirname file
15
+
16
16
  return Path.setup(dir) if File.exists? File.join(dir, relative_to)
17
+
17
18
  file = File.dirname file
18
19
  end
19
20
 
data/lib/rbbt/tsv.rb CHANGED
@@ -14,6 +14,7 @@ require 'rbbt/tsv/index'
14
14
  require 'rbbt/tsv/attach'
15
15
  require 'rbbt/tsv/filter'
16
16
  require 'rbbt/tsv/field_index'
17
+ require 'rbbt/tsv/parallel'
17
18
 
18
19
  module TSV
19
20
  class << self
@@ -123,7 +124,7 @@ module TSV
123
124
 
124
125
  line = parser.rescue_first_line
125
126
 
126
- if TokyoCabinet::HDB === data and parser.straight and
127
+ if defined? TokyoCabinet and TokyoCabinet::HDB === data and parser.straight and
127
128
  data.close
128
129
  begin
129
130
  bin = 'tchmgr'
@@ -172,29 +172,28 @@ module TSV
172
172
  next if value.nil?
173
173
 
174
174
  keys, value = traverser.process(key, value)
175
+
176
+ next if keys.nil?
175
177
 
176
178
  keys = [keys].compact unless Array === keys
177
179
 
178
180
  # Annotated with Entity and NamedArray
179
- if not @unnamed
180
- if not traverser.new_field_names.nil?
181
- case type
182
- when :double, :list
183
- if value.frozen?
184
- Log.warn "Value frozen: #{ value }"
185
- end
186
- if value.nil?
187
- nil
188
- else
189
- NamedArray.setup value, traverser.new_field_names, key, entity_options, entity_templates
190
- end
191
- when :flat, :single
192
- prepare_entity(value, traverser.new_field_names.first, entity_options)
193
- end
181
+ if not @unnamed and not traverser.new_field_names.nil?
182
+
183
+ case type
184
+ when :double, :list
185
+ Log.warn "Value frozen: #{ value }" if value.frozen?
186
+
187
+ value.nil? ?
188
+ nil :
189
+ NamedArray.setup(value, traverser.new_field_names, key, entity_options, entity_templates)
190
+
191
+ when :flat, :single
192
+ prepare_entity(value, traverser.new_field_names.first, entity_options)
194
193
  end
194
+
195
195
  end
196
196
 
197
- next if keys.nil?
198
197
 
199
198
  if zipped
200
199
 
@@ -214,6 +213,7 @@ module TSV
214
213
  end
215
214
 
216
215
  else
216
+
217
217
  keys.each do |key|
218
218
  if not @unnamed
219
219
  k = Misc.prepare_entity(k, traverser.new_key_field_name, entity_options)
@@ -221,6 +221,7 @@ module TSV
221
221
  value.key = key if NamedArray === value
222
222
  yield key, value
223
223
  end
224
+
224
225
  end
225
226
  end
226
227
 
@@ -239,6 +240,7 @@ module TSV
239
240
  data = {}
240
241
  end
241
242
 
243
+ new_key_field_name, new_field_names = nil, nil
242
244
  with_unnamed do
243
245
  if zipped or (type != :double and type != :flat)
244
246
  new_key_field_name, new_field_names = through new_key_field, new_fields, uniq, zipped do |key, value|
@@ -268,23 +270,23 @@ module TSV
268
270
  end
269
271
  end
270
272
  end
273
+ end
271
274
 
272
- if real_data and real_data.respond_to? :persistence_path
273
- real_data.serializer = type if real_data.respond_to? :serializer
274
- real_data.merge!(data)
275
- data = real_data
276
- end
275
+ if real_data and real_data.respond_to? :persistence_path
276
+ real_data.serializer = type if real_data.respond_to? :serializer
277
+ real_data.merge!(data)
278
+ data = real_data
279
+ end
277
280
 
278
- data.extend TSV unless TSV === data
279
- self.annotate(data)
281
+ data.extend TSV unless TSV === data
282
+ self.annotate(data)
280
283
 
281
- data.key_field = new_key_field_name
282
- data.fields = new_field_names
283
- data.fields.each do |field|
284
- data.entity_templates[field] = entity_templates[field] if entity_templates.include? field
285
- end
286
- data.type = zipped ? :list : type
284
+ data.key_field = new_key_field_name
285
+ data.fields = new_field_names
286
+ data.fields.each do |field|
287
+ data.entity_templates[field] = entity_templates[field] if entity_templates.include? field
287
288
  end
289
+ data.type = zipped ? :list : type
288
290
  end
289
291
  end
290
292
 
@@ -0,0 +1,47 @@
1
+ module TSV
2
+
3
+ def pthrough(num_threads = 100, new_key_field = nil, new_fields = nil, uniq = false, zipped = false)
4
+ q = Queue.new
5
+ mutex = Mutex.new
6
+
7
+ threads = []
8
+
9
+ done = false
10
+ num_threads.times do |i|
11
+ threads << Thread.new(Thread.current) do |current|
12
+ begin
13
+ loop do
14
+ p = q.pop
15
+ p << mutex
16
+ yield *p
17
+ next if q.length == 0 and done
18
+ end
19
+ rescue Exception
20
+ current.raise $!
21
+ end
22
+ end
23
+ end
24
+
25
+ max = 10_000_000
26
+ res = through(new_key_field, new_fields, uniq, zipped) do |*p|
27
+ if q.length >= max
28
+ Thread.pass
29
+ q << p
30
+ end
31
+ q << p
32
+ end
33
+
34
+ done == true
35
+
36
+ Thread.pass while q.length > 0
37
+
38
+
39
+ threads.each{|t| t.kill }
40
+
41
+ res
42
+ end
43
+
44
+ def _pthrough(num_threads = 1, new_key_field = nil, new_fields = nil, uniq = false, zipped = false, &block)
45
+ through(new_key_field, new_fields, uniq, zipped, &block)
46
+ end
47
+ end
@@ -15,7 +15,7 @@ module SOPT
15
15
  end
16
16
 
17
17
  while shortcuts.include?(short) and not shortcuts[short] == long
18
- while (long.length - current.length > 2) and shortcuts[short].index current * ""
18
+ while shortcuts[short].index current * ""
19
19
  next_letter = chars.shift
20
20
  return nil if next_letter.nil?
21
21
  current << next_letter
@@ -23,6 +23,8 @@ module SOPT
23
23
  short = current * ""
24
24
  end
25
25
 
26
+ return nil if shortcuts.include? short
27
+
26
28
  short
27
29
  end
28
30
 
data/lib/rbbt/workflow.rb CHANGED
@@ -28,7 +28,10 @@ module Workflow
28
28
  def self.load_workflow_file(filename)
29
29
  begin
30
30
  $LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(filename)), 'lib'))
31
- require File.expand_path(filename)
31
+
32
+ filename = File.expand_path(filename)
33
+
34
+ require filename
32
35
  Log.debug{"Workflow loaded from: #{ filename }"}
33
36
  return true
34
37
  rescue Exception
@@ -80,7 +83,6 @@ module Workflow
80
83
  end
81
84
 
82
85
  def self.require_workflow(wf_name)
83
-
84
86
  # Already loaded
85
87
  begin
86
88
  workflow = Misc.string2const wf_name
@@ -97,9 +97,9 @@ class Step
97
97
  def log(status, message = nil, do_log = true)
98
98
 
99
99
  if message
100
- Log.low "[#{ status }] #{ message }: #{path}"
100
+ Log.medium "[#{ status }] #{ message }: #{path}"
101
101
  else
102
- Log.low "[#{ status }]: #{path}"
102
+ Log.medium "[#{ status }]: #{path}"
103
103
  end if do_log
104
104
 
105
105
  self.status = status
@@ -0,0 +1,20 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/tsv'
3
+ require 'rbbt/tsv/parallel'
4
+
5
+ class TestTSVParallel < Test::Unit::TestCase
6
+
7
+ def test_pthrough
8
+ require 'rbbt/sources/organism'
9
+ tsv = Organism.identifiers("Hsa").tsv :unnamed => true
10
+
11
+ h = {}
12
+ tsv.monitor = true
13
+ tsv.pthrough do |k,v|
14
+ h[k] = v.first
15
+ end
16
+
17
+ assert h.size > 0
18
+ end
19
+
20
+ end
metadata CHANGED
@@ -1,99 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.6.17
4
+ version: 5.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-02 00:00:00.000000000 Z
11
+ date: 2014-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
15
  requirement: !ruby/object:Gem::Requirement
21
16
  requirements:
22
- - - '>='
17
+ - - ">="
23
18
  - !ruby/object:Gem::Version
24
19
  version: '0'
25
- prerelease: false
26
20
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: progress-monitor
21
+ prerelease: false
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
- - - '>='
24
+ - - ">="
32
25
  - !ruby/object:Gem::Version
33
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: progress-monitor
34
29
  requirement: !ruby/object:Gem::Requirement
35
30
  requirements:
36
- - - '>='
31
+ - - ">="
37
32
  - !ruby/object:Gem::Version
38
33
  version: '0'
39
- prerelease: false
40
34
  type: :runtime
41
- - !ruby/object:Gem::Dependency
42
- name: lockfile
35
+ prerelease: false
43
36
  version_requirements: !ruby/object:Gem::Requirement
44
37
  requirements:
45
- - - '>='
38
+ - - ">="
46
39
  - !ruby/object:Gem::Version
47
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: lockfile
48
43
  requirement: !ruby/object:Gem::Requirement
49
44
  requirements:
50
- - - '>='
45
+ - - ">="
51
46
  - !ruby/object:Gem::Version
52
47
  version: '0'
53
- prerelease: false
54
48
  type: :runtime
55
- - !ruby/object:Gem::Dependency
56
- name: spreadsheet
49
+ prerelease: false
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
- - - '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: spreadsheet
62
57
  requirement: !ruby/object:Gem::Requirement
63
58
  requirements:
64
- - - '>='
59
+ - - ">="
65
60
  - !ruby/object:Gem::Version
66
61
  version: '0'
67
- prerelease: false
68
62
  type: :runtime
69
- - !ruby/object:Gem::Dependency
70
- name: highline
63
+ prerelease: false
71
64
  version_requirements: !ruby/object:Gem::Requirement
72
65
  requirements:
73
- - - '>='
66
+ - - ">="
74
67
  - !ruby/object:Gem::Version
75
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: highline
76
71
  requirement: !ruby/object:Gem::Requirement
77
72
  requirements:
78
- - - '>='
73
+ - - ">="
79
74
  - !ruby/object:Gem::Version
80
75
  version: '0'
81
- prerelease: false
82
76
  type: :runtime
83
- - !ruby/object:Gem::Dependency
84
- name: term-ansicolor
77
+ prerelease: false
85
78
  version_requirements: !ruby/object:Gem::Requirement
86
79
  requirements:
87
- - - '>='
80
+ - - ">="
88
81
  - !ruby/object:Gem::Version
89
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: term-ansicolor
90
85
  requirement: !ruby/object:Gem::Requirement
91
86
  requirements:
92
- - - '>='
87
+ - - ">="
93
88
  - !ruby/object:Gem::Version
94
89
  version: '0'
95
- prerelease: false
96
90
  type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
97
  description: Utilities for handling tsv files, caches, etc
98
98
  email: miguel.vazquez@cnio.es
99
99
  executables:
@@ -152,6 +152,7 @@ files:
152
152
  - lib/rbbt/tsv/filter.rb
153
153
  - lib/rbbt/tsv/index.rb
154
154
  - lib/rbbt/tsv/manipulate.rb
155
+ - lib/rbbt/tsv/parallel.rb
155
156
  - lib/rbbt/tsv/parser.rb
156
157
  - lib/rbbt/tsv/serializers.rb
157
158
  - lib/rbbt/tsv/util.rb
@@ -250,6 +251,7 @@ files:
250
251
  - test/rbbt/tsv/test_filter.rb
251
252
  - test/rbbt/tsv/test_index.rb
252
253
  - test/rbbt/tsv/test_manipulate.rb
254
+ - test/rbbt/tsv/test_parallel.rb
253
255
  - test/rbbt/tsv/test_util.rb
254
256
  - test/rbbt/util/simpleopt/test_get.rb
255
257
  - test/rbbt/util/simpleopt/test_parse.rb
@@ -274,39 +276,33 @@ homepage: http://github.com/mikisvaz/rbbt-util
274
276
  licenses:
275
277
  - MIT
276
278
  metadata: {}
277
- post_install_message:
279
+ post_install_message:
278
280
  rdoc_options: []
279
281
  require_paths:
280
282
  - lib
281
283
  required_ruby_version: !ruby/object:Gem::Requirement
282
284
  requirements:
283
- - - '>='
285
+ - - ">="
284
286
  - !ruby/object:Gem::Version
285
287
  version: '0'
286
288
  required_rubygems_version: !ruby/object:Gem::Requirement
287
289
  requirements:
288
- - - '>='
290
+ - - ">="
289
291
  - !ruby/object:Gem::Version
290
292
  version: '0'
291
293
  requirements: []
292
- rubyforge_project:
293
- rubygems_version: 2.2.2
294
- signing_key:
294
+ rubyforge_project:
295
+ rubygems_version: 2.2.1
296
+ signing_key:
295
297
  specification_version: 4
296
298
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
297
299
  test_files:
298
- - test/test_helper.rb
299
300
  - test/rbbt/test_workflow.rb
300
- - test/rbbt/test_association.rb
301
- - test/rbbt/test_resource.rb
302
- - test/rbbt/test_entity.rb
303
- - test/rbbt/test_knowledge_base.rb
304
- - test/rbbt/test_tsv.rb
305
- - test/rbbt/test_persist.rb
306
- - test/rbbt/test_annotations.rb
307
- - test/rbbt/test_fix_width_table.rb
308
301
  - test/rbbt/resource/test_path.rb
309
302
  - test/rbbt/util/test_cmd.rb
303
+ - test/rbbt/util/simpleopt/test_setup.rb
304
+ - test/rbbt/util/simpleopt/test_get.rb
305
+ - test/rbbt/util/simpleopt/test_parse.rb
310
306
  - test/rbbt/util/test_chain_methods.rb
311
307
  - test/rbbt/util/test_simpleDSL.rb
312
308
  - test/rbbt/util/test_log.rb
@@ -319,13 +315,17 @@ test_files:
319
315
  - test/rbbt/util/test_semaphore.rb
320
316
  - test/rbbt/util/test_misc.rb
321
317
  - test/rbbt/util/test_tmpfile.rb
322
- - test/rbbt/util/simpleopt/test_setup.rb
323
- - test/rbbt/util/simpleopt/test_get.rb
324
- - test/rbbt/util/simpleopt/test_parse.rb
318
+ - test/rbbt/test_association.rb
319
+ - test/rbbt/test_resource.rb
320
+ - test/rbbt/test_entity.rb
321
+ - test/rbbt/test_knowledge_base.rb
325
322
  - test/rbbt/association/test_index.rb
326
323
  - test/rbbt/association/test_item.rb
324
+ - test/rbbt/test_tsv.rb
327
325
  - test/rbbt/workflow/test_task.rb
328
326
  - test/rbbt/workflow/test_step.rb
327
+ - test/rbbt/test_persist.rb
328
+ - test/rbbt/test_annotations.rb
329
329
  - test/rbbt/persist/test_tsv.rb
330
330
  - test/rbbt/persist/tsv/test_lmdb.rb
331
331
  - test/rbbt/persist/tsv/test_kyotocabinet.rb
@@ -333,6 +333,7 @@ test_files:
333
333
  - test/rbbt/persist/tsv/test_tokyocabinet.rb
334
334
  - test/rbbt/persist/tsv/test_leveldb.rb
335
335
  - test/rbbt/tsv/test_field_index.rb
336
+ - test/rbbt/tsv/test_parallel.rb
336
337
  - test/rbbt/tsv/test_index.rb
337
338
  - test/rbbt/tsv/test_change_id.rb
338
339
  - test/rbbt/tsv/test_util.rb
@@ -340,3 +341,5 @@ test_files:
340
341
  - test/rbbt/tsv/test_filter.rb
341
342
  - test/rbbt/tsv/test_attach.rb
342
343
  - test/rbbt/tsv/test_manipulate.rb
344
+ - test/rbbt/test_fix_width_table.rb
345
+ - test/test_helper.rb