rbbt-util 5.6.1 → 5.6.2

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: 3656ab04698a077becda559ac837570042688fa8
4
- data.tar.gz: f54aa65f719933df04767b54e896c74adb805e34
3
+ metadata.gz: 7529a3f61ee17378eae98591577b9a39f9a64fd8
4
+ data.tar.gz: 21485c3f12ae2823f13e7a7f098d242dac15c0c1
5
5
  SHA512:
6
- metadata.gz: 929e4be6771df3db4f8507a9af317cb9bd841107d4170ec2ff198f1e1ed2aca0762e5b32851b1653336afdae49dc2729b0143fd65938cedd11660db2a5d687fc
7
- data.tar.gz: 63ce2e0a7e12c9e6c6204a5d79764e9691ff781ae68e27586b135c524710ce557ce89a958aff4b7c101aa3cfd67897fdcb0ec415b5b09f315dad8a27ce437199
6
+ metadata.gz: 73f9e121eb79a0c91b92dd5474f04508771230d8451178cf348d6fb3f920d89518491106c7a051f95bd28d94bb59884aa20491b3d8dd1839786603eecb2efc41
7
+ data.tar.gz: 39c04b2dff5c9fd798c2cb45cb432395d627b60f1ff2bf9483e5602035ab8e36ccd5847e75b03eec3c0cd4b61ee0a2c4c5bdb804d2776f031708babee6303289
@@ -199,7 +199,9 @@ module Path
199
199
  end
200
200
 
201
201
  def yaml
202
- YAML.load self.open
202
+ self.open do |f|
203
+ YAML.load f
204
+ end
203
205
  end
204
206
 
205
207
  def pipe_to(cmd, options = {})
@@ -547,5 +547,28 @@ Example:
547
547
  ENTRY_KEYS.each{|entry| new.delete entry}
548
548
  new
549
549
  end
550
+
551
+ def unzip(field = 0)
552
+ new = {}
553
+ field_pos = self.identify_field field
554
+
555
+ self.through do |key,values|
556
+ field_values = values.delete_at field_pos
557
+ zipped = values.zip_fields
558
+ field_values.zip(zipped) do |value, *rest|
559
+ new[[key,value]*":"] = Misc.zip_fields(rest)
560
+ end
561
+ end
562
+
563
+ self.annotate new
564
+ new.type = :list
565
+
566
+ new.key_field = [self.key_field, self.fields[field_pos]] * ":"
567
+ new_fields = self.fields.dup
568
+ new_fields.delete_at field_pos
569
+ new.fields = new_fields
570
+
571
+ new
572
+ end
550
573
  end
551
574
 
@@ -25,7 +25,7 @@ module TSV
25
25
 
26
26
  if line and line =~ /^#{@header_hash}: (.*)/
27
27
  options = Misc.string2hash $1
28
- line = stream.gets
28
+ line = Misc.fixutf8 stream.gets
29
29
  end
30
30
 
31
31
  # Determine separator
@@ -34,14 +34,17 @@ module TSV
34
34
 
35
35
  # Process fields line
36
36
 
37
- while line and Misc.fixutf8(line) =~ /^#{@header_hash}/
37
+ while line and Misc.fixutf8(line) =~ /^#{@header_hash}/
38
38
  line.chomp!
39
39
  @fields = line.split(@sep)
40
40
  @key_field = @fields.shift
41
41
  @key_field = @key_field[(0 + header_hash.length)..-1] # Remove initial hash character
42
- line = stream.gets
42
+
43
+ line = @header_hash != "" ? Misc.fixutf8(stream.gets) : nil
43
44
  end
44
45
 
46
+ line ||= stream.gets
47
+
45
48
  @first_line = line
46
49
 
47
50
  options
@@ -21,7 +21,7 @@ module FileCache
21
21
  filename.match(/(.+)\.(.+)/)
22
22
 
23
23
  base = filename.sub(/\..+/,'')
24
- dirs = base.scan(/./).values_at(0,1,2,3,4).compact.reverse
24
+ dirs = base.scan(/./).reverse.values_at(0,1,2,3,4).compact
25
25
 
26
26
  File.join(File.join(CACHEDIR, *dirs), filename)
27
27
  end
@@ -75,13 +75,6 @@ module FileCache
75
75
  filename = pattern ? pattern.sub("{ID}", id.to_s) : id.to_s
76
76
  path = FileCache.path(filename)
77
77
  Open.write(path, content)
78
- result_files[id] = content
79
- end
80
-
81
- missing.each do |id|
82
- filename = pattern ? pattern.sub("{ID}", id.to_s) : id.to_s
83
- result = yield id
84
- File.open{|f| f.write(path = FileCache.path(filename)) }
85
78
  result_files[id] = path
86
79
  end
87
80
 
@@ -29,7 +29,7 @@ module Misc
29
29
  def self.correct_icgc_mutation(pos, ref, mut_str)
30
30
  mut = mut_str
31
31
  mut = '-' * (mut_str.length - 1) if mut =~/^-[ACGT]/
32
- mut = "+" << mut if ref == '-'
32
+ mut = "+" << mut if ref == '-'
33
33
  [pos, [mut]]
34
34
  end
35
35
 
@@ -216,9 +216,13 @@ module Open
216
216
  save_content_in_repo(*dir_sub_path)
217
217
  else
218
218
  File.open(file, mode) do |f|
219
- f.flock(File::LOCK_EX)
220
- f.write content
221
- f.flock(File::LOCK_UN)
219
+ begin
220
+ f.flock(File::LOCK_EX)
221
+ f.write content
222
+ f.flock(File::LOCK_UN)
223
+ ensure
224
+ f.close unless f.closed?
225
+ end
222
226
  end
223
227
  end
224
228
  end
@@ -359,21 +363,18 @@ module Open
359
363
  end
360
364
 
361
365
  def self.read(file, options = {}, &block)
362
- f = open(file, options)
363
-
364
- if block_given?
365
- res = []
366
- while not f.eof?
367
- l = f.gets
368
- l = Misc.fixutf8(l)
369
- res << yield(l)
366
+ open(file, options) do |f|
367
+ if block_given?
368
+ res = []
369
+ while not f.eof?
370
+ l = f.gets
371
+ l = Misc.fixutf8(l)
372
+ res << yield(l)
373
+ end
374
+ res
375
+ else
376
+ Misc.fixutf8(f.read)
370
377
  end
371
- f.close
372
- res
373
- else
374
- text = Misc.fixutf8(f.read)
375
- f.close unless f.closed?
376
- text
377
378
  end
378
379
  end
379
380
 
@@ -7,6 +7,8 @@ options = SOPT.get("-tch--tokyocabinet:-tcb--tokyocabinet_bd")
7
7
 
8
8
  file = ARGV.shift
9
9
 
10
+ file = STDIN if file == '-'
11
+
10
12
  case
11
13
  when options[:tokyocabinet]
12
14
  tsv = Persist.open_tokyocabinet(file, false)
@@ -18,6 +20,7 @@ else
18
20
  header = TSV.parse_header(Open.open(file))
19
21
 
20
22
  puts "File: #{ file }"
23
+ puts "Type: #{header.type}"
21
24
  puts "Key: #{header.key_field}"
22
25
  puts "Fields: "
23
26
  header.fields.each_with_index do |f,i|
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rbbt-util'
4
+ require 'rbbt/util/simpleopt'
5
+
6
+ options = SOPT.get("-tch--tokyocabinet:-tcb--tokyocabinet_bd")
7
+
8
+ file = ARGV.shift
9
+
10
+ file = STDIN if file == '-'
11
+
12
+ case
13
+ when options[:tokyocabinet]
14
+ tsv = Persist.open_tokyocabinet(file, false)
15
+ when options[:tokyocabinet_bd]
16
+ tsv = Persist.open_tokyocabinet(file, false, nil, TokyoCabinet::BDB)
17
+ else
18
+ if String === file
19
+ file = file.dup
20
+ Path.setup(File.expand_path(file))
21
+ end
22
+ tsv = TSV.open(file)
23
+ end
24
+
25
+ puts tsv.unzip.to_s
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rbbt-util'
4
+ require 'rbbt/util/simpleopt'
5
+
6
+ options = SOPT.get("-tch--tokyocabinet:-tcb--tokyocabinet_bd")
7
+
8
+ file = ARGV.shift
9
+
10
+ file = STDIN if file == '-'
11
+
12
+ case
13
+ when options[:tokyocabinet]
14
+ tsv = Persist.open_tokyocabinet(file, false)
15
+ when options[:tokyocabinet_bd]
16
+ tsv = Persist.open_tokyocabinet(file, false, nil, TokyoCabinet::BDB)
17
+ else
18
+ if String === file
19
+ file = file.dup
20
+ Path.setup(File.expand_path(file))
21
+ end
22
+ tsv = TSV.open(file)
23
+ end
24
+
25
+ tsv.each{|k,v| puts (Array === v ? v.flatten*"\t" : v.to_s ) }
@@ -112,10 +112,11 @@ options = SOPT.get <<EOF
112
112
  -cl--clean Clean the last step of the job so that it gets recomputed:
113
113
  -rcl--recursive_clean Clean the last step and its dependencies to recompute the job completely:
114
114
  -jn--jobname* Job name to use. The name 'Default' is used by default:
115
- -pn--printname Print the name of the job and exit without starting it:
116
- -jf--job_file* Output one of the job produced files:
117
115
  -wd--workdir* Change the working directory of the workflow:
118
116
  -O--output* Save job result into file:
117
+ -pn--printname Print the name of the job and exit without starting it:
118
+ -jf--job_file* Output one of the job produced files:
119
+ --info Show the job info:
119
120
  --provenance Report the jobs provenance:
120
121
  --fork Run job asyncronously:
121
122
  EOF
@@ -193,8 +194,14 @@ if recursive_clean
193
194
  job = workflow.job(task.name, name, job_options)
194
195
  end
195
196
 
197
+ require 'pp'
198
+
196
199
  # run
197
200
  begin
201
+ if options[:info]
202
+ pp job.info
203
+ exit 0
204
+ end
198
205
  if do_exec
199
206
  res = job.exec
200
207
  case
@@ -225,7 +232,6 @@ begin
225
232
 
226
233
 
227
234
  if options.delete(:provenance)
228
- require 'pp'
229
235
  pp job.provenance
230
236
  exit 0
231
237
  end
@@ -1,6 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
2
  require 'rbbt/util/open'
3
3
  require 'rbbt/util/tmpfile'
4
+ require 'rbbt/persist'
4
5
  require 'test/unit'
5
6
  require 'iconv'
6
7
 
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.1
4
+ version: 5.6.2
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-13 00:00:00.000000000 Z
11
+ date: 2014-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -231,6 +231,8 @@ files:
231
231
  - share/rbbt_commands/tsv/get
232
232
  - share/rbbt_commands/tsv/info
233
233
  - share/rbbt_commands/tsv/json
234
+ - share/rbbt_commands/tsv/unzip
235
+ - share/rbbt_commands/tsv/values
234
236
  - share/rbbt_commands/workflow/cmd
235
237
  - share/rbbt_commands/workflow/install
236
238
  - share/rbbt_commands/workflow/monitor