rbbt-util 5.17.73 → 5.17.74
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 +4 -4
- data/share/rbbt_commands/system/optimize +82 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 60cd54c17004ef80456c9a69b1c2f5f9b8c5f175
|
|
4
|
+
data.tar.gz: d7e91f9c4beeda66383edb73e5c1db647d30af59
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 69c7cbb4d618f5830df5bf91e8927712884bb83ca7f95e0179522e9c0a49e694d85de0efc6c28ed40d3faecc9f3dbc6932944bd703fdfa67faa9fb08894b6061
|
|
7
|
+
data.tar.gz: 27a0fdd194de5180300fe37d0b888130c23a91132ebef7c84ddd6d62954575a7f173cab3f46a984b4bd0cdbc5392ee8bf668642f9678a057870f4165af23433c
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rbbt-util'
|
|
4
|
+
require 'rbbt/util/simpleopt'
|
|
5
|
+
|
|
6
|
+
$0 = "rbbt #{$previous_commands*""} #{ File.basename(__FILE__) }" if $previous_commands
|
|
7
|
+
|
|
8
|
+
options = SOPT.setup <<EOF
|
|
9
|
+
|
|
10
|
+
Optimize the files in a directory.
|
|
11
|
+
|
|
12
|
+
$ rbbt system optimize [options] <directory>
|
|
13
|
+
|
|
14
|
+
Compresses the chromosome files with BGZ and optimizes TokyoCabinet databases. Some files
|
|
15
|
+
do not compress correctly with BGZ and are left un-compressed.
|
|
16
|
+
|
|
17
|
+
-h--help Print this help
|
|
18
|
+
-k--keep Keep original files
|
|
19
|
+
|
|
20
|
+
EOF
|
|
21
|
+
if options[:help]
|
|
22
|
+
if defined? rbbt_usage
|
|
23
|
+
rbbt_usage
|
|
24
|
+
else
|
|
25
|
+
puts SOPT.usage
|
|
26
|
+
end
|
|
27
|
+
exit 0
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
directory = ARGV.shift
|
|
31
|
+
raise ParameterException, "No directory given" if directory.nil?
|
|
32
|
+
|
|
33
|
+
raise ParameterException, "Not a valid directory" unless File.directory? directory
|
|
34
|
+
|
|
35
|
+
directory = Path.setup directory.dup
|
|
36
|
+
keep = options[:keep]
|
|
37
|
+
|
|
38
|
+
Log.info Log.color(:magenta, "Processing chromosomes")
|
|
39
|
+
chromosome_files = directory.glob('**/chromosome_*')
|
|
40
|
+
TSV.traverse chromosome_files, :type => :array, :bar => "Processing chromosomes" do |chr_file|
|
|
41
|
+
next if chr_file =~ /.bgz$/
|
|
42
|
+
compressed_file = chr_file + '.bgz'
|
|
43
|
+
Log.info "Compressing #{ chr_file } into #{ compressed_file }"
|
|
44
|
+
CMD.cmd("bgzip '#{ chr_file }' -c > #{ compressed_file }")
|
|
45
|
+
begin
|
|
46
|
+
Open.read(compressed_file)
|
|
47
|
+
if keep
|
|
48
|
+
Log.info "File #{ chr_file } was correctly compressed. Keeping original"
|
|
49
|
+
else
|
|
50
|
+
Log.info "File #{ chr_file } was correctly compressed. Removing original"
|
|
51
|
+
FileUtils.rm chr_file
|
|
52
|
+
end
|
|
53
|
+
rescue
|
|
54
|
+
Log.warn "File #{ chr_file } was not correctly compressed. Removing compressed version and leaving original"
|
|
55
|
+
FileUtils.rm compressed_file
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
Log.info Log.color(:magenta, "Processing Tokyo Cabinet files")
|
|
60
|
+
|
|
61
|
+
all_files = directory.glob('**/*')
|
|
62
|
+
TSV.traverse all_files, :type => :array, :bar => "Processing Tokyo Cabinet files" do |file|
|
|
63
|
+
cmd = 'file "' << file << '"'
|
|
64
|
+
file_type = CMD.cmd(cmd).read.strip.partition(/:\s+/).last
|
|
65
|
+
next unless file_type =~ /Tokyo/
|
|
66
|
+
type = file_type.split(", ")[1]
|
|
67
|
+
case type
|
|
68
|
+
when "Hash"
|
|
69
|
+
cmd = 'tchmgr optimize "' << file << '"'
|
|
70
|
+
when "B+ tree"
|
|
71
|
+
cmd = 'tcbmgr optimize "' << file << '"'
|
|
72
|
+
else
|
|
73
|
+
next
|
|
74
|
+
end
|
|
75
|
+
size = File.size(file)
|
|
76
|
+
cmd << ' -td -tl' if size > 2_000_000_000 or file_type =~ /deflate/
|
|
77
|
+
Log.info "Optimizing #{type} database #{file}"
|
|
78
|
+
io = CMD.cmd(cmd)
|
|
79
|
+
while line = io.gets
|
|
80
|
+
Log.debug line
|
|
81
|
+
end
|
|
82
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbbt-util
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.17.
|
|
4
|
+
version: 5.17.74
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miguel Vazquez
|
|
@@ -308,6 +308,7 @@ files:
|
|
|
308
308
|
- share/rbbt_commands/study/task
|
|
309
309
|
- share/rbbt_commands/system/clean
|
|
310
310
|
- share/rbbt_commands/system/deleted_files
|
|
311
|
+
- share/rbbt_commands/system/optimize
|
|
311
312
|
- share/rbbt_commands/system/purge
|
|
312
313
|
- share/rbbt_commands/system/report
|
|
313
314
|
- share/rbbt_commands/system/status
|