rbbt-util 5.6.17 → 5.7.0

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: 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