rbbt-util 5.19.12 → 5.19.13

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: 9d50592693c2e72df449b2bed576cfce4a6791d5
4
- data.tar.gz: 31f019642b140c119e08c2e4eb465b6775f4e89b
3
+ metadata.gz: 5f75831f4615a7e138d5b695bbea6517b889124a
4
+ data.tar.gz: ccdb744d5b4fcbdecd7123b2ef7be14d4a5ba554
5
5
  SHA512:
6
- metadata.gz: ad859664ea8715a701c3273bc536af07fb139b80c71e69be3a0bf55d53882c0fe821fbbe87da5369a2ad81deceb14fb8866d5ba6d58f377ed92557e5bdf30922
7
- data.tar.gz: 9ead4f2c55309687b45f0877a3700c06883bab045c1f7f0013d2656f0f6de53a830c111772b07176db49e2f4c3d9de3594e66c2f1d05a5f9405984a082f42df6
6
+ metadata.gz: 2763af1623f1a361342f9d6ef27612ad638899caee17e706f8488476f3d3d75bc38e01365d50ded9ab9e04565dae86cb79872921654615a550eacc890b9f8e98
7
+ data.tar.gz: 0cdc819b514319fe59d065d29220eac6f5179c287df8cbca1c9e8ce7d29d2068dc83f726a59794d7c33f69ecebdec660f16a8701cdda34eab285e93845997db0
@@ -6,31 +6,31 @@ require 'rbbt/persist/tsv/packed_index'
6
6
  begin
7
7
  require 'rbbt/persist/tsv/tokyocabinet'
8
8
  rescue Exception
9
- Log.warn "The tokyocabinet gem could not be loaded: persistence over TSV files will fail"
9
+ Log.warn "The tokyocabinet gem could not be loaded. Persistence using this engine will fail."
10
10
  end
11
11
 
12
12
  begin
13
13
  require 'rbbt/persist/tsv/lmdb'
14
14
  rescue Exception
15
- Log.debug "The lmdb gem could not be loaded. Persistance using this engine will fail."
15
+ Log.debug "The lmdb gem could not be loaded. Persistence using this engine will fail."
16
16
  end
17
17
 
18
18
  begin
19
19
  require 'rbbt/persist/tsv/leveldb'
20
20
  rescue Exception
21
- Log.debug "The LevelDB gem could not be loaded. Persistance using this engine will fail."
21
+ Log.debug "The LevelDB gem could not be loaded. Persistence using this engine will fail."
22
22
  end
23
23
 
24
24
  begin
25
25
  require 'rbbt/persist/tsv/cdb'
26
26
  rescue Exception
27
- Log.debug "The CDB gem could not be loaded. Persistance using this engine will fail."
27
+ Log.debug "The CDB gem could not be loaded. Persistence using this engine will fail."
28
28
  end
29
29
 
30
30
  begin
31
31
  require 'rbbt/persist/tsv/kyotocabinet'
32
32
  rescue Exception
33
- Log.debug "The kyotocabinet gem could not be loaded. Persistance using this engine will fail."
33
+ Log.debug "The kyotocabinet gem could not be loaded. Persistence using this engine will fail."
34
34
  end
35
35
 
36
36
  module Persist
data/lib/rbbt/util/cmd.rb CHANGED
@@ -3,78 +3,78 @@ require 'stringio'
3
3
 
4
4
  module CMD
5
5
 
6
- module SmartIO
7
- attr_accessor :pid, :cmd, :post, :in, :out, :err, :log
8
- def self.tie(io, pid = nil, cmd = "", post = nil, sin = nil, out = nil, err = nil, log = true)
9
- io.extend SmartIO
10
- io.pid = pid
11
- io.cmd = cmd
12
- io.in = sin
13
- io.out = out
14
- io.err = err
15
- io.post = post
16
- io.log = log
17
-
18
- io.class.send(:alias_method, :original_close, :close)
19
- io.class.send(:alias_method, :original_read, :read)
20
- io
21
- end
22
-
23
- def wait_and_status
24
- if @pid
25
- begin
26
- Process.waitpid(@pid)
27
- rescue
28
- end
29
-
30
- Log.debug{"Process #{ cmd } succeded" if $? and $?.success? and log}
31
-
32
- if $? and not $?.success?
33
- Log.debug{"Raising exception" if log}
34
- exception = ProcessFailed.new "Command [#{@pid}] '#{@cmd}' failed with error status #{$?.exitstatus}"
35
- begin
36
- original_close
37
- ensure
38
- raise exception
39
- end
40
- end
41
- end
42
- end
43
-
44
- def close
45
- self.original_read unless self.closed? or self.eof?
46
-
47
- wait_and_status
48
-
49
- @post.call if @post
50
-
51
- original_close unless self.closed?
52
- end
53
-
54
- def force_close
55
- if @pid
56
- Log.debug{"Forcing close by killing '#{@pid}'" if log}
57
- begin
58
- Process.kill("KILL", @pid)
59
- Process.waitpid(@pid)
60
- rescue
61
- Log.low{"Exception in forcing close of command [#{ @pid }, #{cmd}]: #{$!.message}"}
62
- end
63
- end
64
-
65
- @post.call if @post
66
-
67
- original_close unless self.closed?
68
- end
69
-
70
- def read(*args)
71
- data = original_read(*args) unless self.closed? #or self.eof?
72
-
73
- self.close if not self.closed? and self.eof?
74
-
75
- data #|| ""
76
- end
77
- end
6
+ #module SmartIO
7
+ # attr_accessor :pid, :cmd, :post, :in, :out, :err, :log
8
+ # def self.tie(io, pid = nil, cmd = "", post = nil, sin = nil, out = nil, err = nil, log = true)
9
+ # io.extend SmartIO
10
+ # io.pid = pid
11
+ # io.cmd = cmd
12
+ # io.in = sin
13
+ # io.out = out
14
+ # io.err = err
15
+ # io.post = post
16
+ # io.log = log
17
+
18
+ # io.class.send(:alias_method, :original_close, :close)
19
+ # io.class.send(:alias_method, :original_read, :read)
20
+ # io
21
+ # end
22
+
23
+ # def wait_and_status
24
+ # if @pid
25
+ # begin
26
+ # Process.waitpid(@pid)
27
+ # rescue
28
+ # end
29
+
30
+ # Log.debug{"Process #{ cmd } succeded" if $? and $?.success? and log}
31
+
32
+ # if $? and not $?.success?
33
+ # Log.debug{"Raising exception" if log}
34
+ # exception = ProcessFailed.new "Command [#{@pid}] '#{@cmd}' failed with error status #{$?.exitstatus}"
35
+ # begin
36
+ # original_close
37
+ # ensure
38
+ # raise exception
39
+ # end
40
+ # end
41
+ # end
42
+ # end
43
+
44
+ # def close
45
+ # self.original_read unless self.closed? or self.eof?
46
+
47
+ # wait_and_status
48
+
49
+ # @post.call if @post
50
+
51
+ # original_close unless self.closed?
52
+ # end
53
+
54
+ # def force_close
55
+ # if @pid
56
+ # Log.debug{"Forcing close by killing '#{@pid}'" if log}
57
+ # begin
58
+ # Process.kill("KILL", @pid)
59
+ # Process.waitpid(@pid)
60
+ # rescue
61
+ # Log.low{"Exception in forcing close of command [#{ @pid }, #{cmd}]: #{$!.message}"}
62
+ # end
63
+ # end
64
+
65
+ # @post.call if @post
66
+
67
+ # original_close unless self.closed?
68
+ # end
69
+
70
+ # def read(*args)
71
+ # data = original_read(*args) unless self.closed? #or self.eof?
72
+
73
+ # self.close if not self.closed? and self.eof?
74
+
75
+ # data #|| ""
76
+ # end
77
+ #end
78
78
 
79
79
 
80
80
  def self.process_cmd_options(options = {})
@@ -105,6 +105,7 @@ module CMD
105
105
  post = options.delete(:post)
106
106
  log = options.delete(:log)
107
107
  no_fail = options.delete(:no_fail)
108
+ no_wait = options.delete(:no_wait)
108
109
  dont_close_in = options.delete(:dont_close_in)
109
110
 
110
111
  log = true if log.nil?
@@ -132,15 +133,9 @@ module CMD
132
133
 
133
134
  io = in_content
134
135
  while IO === io
135
- if SmartIO === io
136
- io.original_close unless io.closed?
137
- io.out.close unless io.out.nil? or io.out.closed?
138
- io.err.close unless io.err.nil? or io.err.closed?
139
- io = io.in
140
- else
141
- io.close unless io.closed?
142
- io = nil
143
- end
136
+ io.join if io.respond_to?(:join) and not io.joined?
137
+ io.close if io.respond_to?(:close) and not io.closed?
138
+ io = nil
144
139
  end
145
140
 
146
141
  STDIN.reopen sin.first
@@ -206,7 +201,7 @@ module CMD
206
201
  end
207
202
 
208
203
  #SmartIO.tie sout, pid, cmd, post, in_content, sin, serr
209
- ConcurrentStream.setup sout, :pids => [pid], :autojoin => true, :no_fail => no_fail
204
+ ConcurrentStream.setup sout, :pids => [pid], :autojoin => true, :no_fail => no_fail unless no_wait
210
205
 
211
206
  sout
212
207
  else
@@ -1,9 +1,23 @@
1
+
1
2
  require 'rbbt/persist'
2
3
  require 'set'
3
4
 
4
5
  module Bgzf
5
6
  attr_accessor :data_offset, :compressed_stream, :block_cache_size
6
7
 
8
+ def self.bgzip_cmd
9
+ @@bgzip_cmd ||= begin
10
+ path = `bash -c "type -p bgzips"`.strip
11
+ if path.empty?
12
+ Rbbt.claim Rbbt.software.opt.htslib, :install, Rbbt.share.install.software.HTSLIB
13
+ Rbbt.software.opt.htslib.produce
14
+ Rbbt.software.opt.htslib.bin.bgzip.find
15
+ else
16
+ path
17
+ end
18
+ end
19
+ end
20
+
7
21
  def self.setup(compressed_stream)
8
22
  require 'bio-bgzf'
9
23
  reader = Bio::BGZF::Reader.new(compressed_stream)
@@ -294,7 +294,7 @@ module Open
294
294
 
295
295
  def self.gunzip(stream)
296
296
  #Zlib::GzipReader.new(stream)
297
- CMD.cmd('zcat', :in => stream, :pipe => true)
297
+ CMD.cmd('zcat', :in => stream, :pipe => true, :no_fail => true, :no_wait => true)
298
298
  end
299
299
 
300
300
  def self.unzip(stream)
@@ -44,7 +44,7 @@ module Task
44
44
  puts
45
45
 
46
46
  if selects.any?
47
- puts Log.color(:magenta, "Input options: ") << Log.color(:blue, result_type.to_s) << "\n"
47
+ puts Log.color(:magenta, "Input select options")
48
48
  puts
49
49
  selects.each do |input,options|
50
50
  puts Log.color(:blue, input.to_s + ": ") << Misc.format_paragraph(options.collect{|o| o.to_s} * ", ") << "\n"
@@ -35,13 +35,15 @@ raise ParameterException, "Not a valid directory" unless File.directory? directo
35
35
  directory = Path.setup directory.dup
36
36
  keep = options[:keep]
37
37
 
38
+ require 'rbbt/util/misc/bgzf'
39
+
38
40
  Log.info Log.color(:magenta, "Processing chromosomes")
39
41
  chromosome_files = directory.glob('**/chromosome_*')
40
42
  TSV.traverse chromosome_files, :type => :array, :bar => "Processing chromosomes" do |chr_file|
41
43
  next if chr_file =~ /.bgz$/
42
44
  compressed_file = chr_file + '.bgz'
43
45
  Log.info "Compressing #{ chr_file } into #{ compressed_file }"
44
- CMD.cmd("bgzip '#{ chr_file }' -c > #{ compressed_file }")
46
+ CMD.cmd("#{Bgzf.bgzip_cmd} '#{ chr_file }' -c > #{ compressed_file }")
45
47
  begin
46
48
  Open.read(compressed_file)
47
49
  if keep
@@ -2,7 +2,7 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_he
2
2
  require 'rbbt/util/misc/bgzf'
3
3
 
4
4
  class TestBgzf < Test::Unit::TestCase
5
- def _test_Bgzf
5
+ def test_Bgzf
6
6
  content = "1234567890" * 1000000
7
7
  TmpFile.with_file(content) do |file|
8
8
  compressed = file + '.gz'
@@ -35,5 +35,10 @@ class TestBgzf < Test::Unit::TestCase
35
35
  end
36
36
  end
37
37
  end
38
+
39
+ def test_bgzip
40
+ assert File.exists?(Bgzf.bgzip_cmd)
41
+ assert 'bgzip', File.basename(Bgzf.bgzip_cmd)
42
+ end
38
43
  end
39
44
 
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.19.12
4
+ version: 5.19.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-27 00:00:00.000000000 Z
11
+ date: 2016-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake