rbbt-util 5.6.1 → 5.6.2

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