rbbt-util 5.44.1 → 6.0.4

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.
Files changed (175) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/bin/rbbt +67 -90
  4. data/bin/rbbt_exec.rb +2 -2
  5. data/etc/app.d/base.rb +2 -2
  6. data/etc/app.d/semaphores.rb +3 -3
  7. data/lib/rbbt/annotations/annotated_array.rb +207 -207
  8. data/lib/rbbt/annotations/refactor.rb +27 -0
  9. data/lib/rbbt/annotations/util.rb +282 -282
  10. data/lib/rbbt/annotations.rb +343 -320
  11. data/lib/rbbt/association/database.rb +200 -225
  12. data/lib/rbbt/association/index.rb +294 -291
  13. data/lib/rbbt/association/item.rb +227 -227
  14. data/lib/rbbt/association/open.rb +35 -34
  15. data/lib/rbbt/association/util.rb +0 -169
  16. data/lib/rbbt/association.rb +2 -4
  17. data/lib/rbbt/entity/identifiers.rb +119 -118
  18. data/lib/rbbt/entity/refactor.rb +12 -0
  19. data/lib/rbbt/entity.rb +319 -315
  20. data/lib/rbbt/hpc/batch.rb +72 -53
  21. data/lib/rbbt/hpc/lsf.rb +2 -2
  22. data/lib/rbbt/hpc/orchestrate/batches.rb +2 -2
  23. data/lib/rbbt/hpc/orchestrate/chains.rb +25 -5
  24. data/lib/rbbt/hpc/orchestrate/rules.rb +2 -2
  25. data/lib/rbbt/hpc/orchestrate.rb +19 -13
  26. data/lib/rbbt/hpc/slurm.rb +18 -18
  27. data/lib/rbbt/knowledge_base/entity.rb +13 -5
  28. data/lib/rbbt/knowledge_base/query.rb +2 -2
  29. data/lib/rbbt/knowledge_base/registry.rb +32 -31
  30. data/lib/rbbt/knowledge_base/traverse.rb +1 -1
  31. data/lib/rbbt/knowledge_base.rb +1 -1
  32. data/lib/rbbt/monitor.rb +36 -25
  33. data/lib/rbbt/persist/refactor.rb +166 -0
  34. data/lib/rbbt/persist/tsv/tokyocabinet.rb +105 -105
  35. data/lib/rbbt/persist/tsv.rb +187 -185
  36. data/lib/rbbt/persist.rb +556 -551
  37. data/lib/rbbt/refactor.rb +20 -0
  38. data/lib/rbbt/resource/path/refactor.rb +178 -0
  39. data/lib/rbbt/resource/path.rb +317 -497
  40. data/lib/rbbt/resource/util.rb +0 -48
  41. data/lib/rbbt/resource.rb +3 -390
  42. data/lib/rbbt/tsv/accessor.rb +2 -838
  43. data/lib/rbbt/tsv/attach.rb +303 -299
  44. data/lib/rbbt/tsv/change_id.rb +244 -245
  45. data/lib/rbbt/tsv/csv.rb +87 -85
  46. data/lib/rbbt/tsv/dumper.rb +2 -100
  47. data/lib/rbbt/tsv/excel.rb +26 -24
  48. data/lib/rbbt/tsv/field_index.rb +4 -1
  49. data/lib/rbbt/tsv/filter.rb +3 -2
  50. data/lib/rbbt/tsv/index.rb +2 -284
  51. data/lib/rbbt/tsv/manipulate.rb +750 -747
  52. data/lib/rbbt/tsv/marshal.rb +3 -3
  53. data/lib/rbbt/tsv/matrix.rb +2 -2
  54. data/lib/rbbt/tsv/parallel/through.rb +2 -1
  55. data/lib/rbbt/tsv/parallel/traverse.rb +783 -781
  56. data/lib/rbbt/tsv/parser.rb +678 -678
  57. data/lib/rbbt/tsv/refactor.rb +195 -0
  58. data/lib/rbbt/tsv/stream.rb +253 -251
  59. data/lib/rbbt/tsv/util.rb +420 -420
  60. data/lib/rbbt/tsv.rb +210 -208
  61. data/lib/rbbt/util/R/eval.rb +4 -4
  62. data/lib/rbbt/util/R/plot.rb +62 -166
  63. data/lib/rbbt/util/R.rb +21 -18
  64. data/lib/rbbt/util/cmd.rb +2 -318
  65. data/lib/rbbt/util/color.rb +269 -269
  66. data/lib/rbbt/util/colorize.rb +89 -89
  67. data/lib/rbbt/util/concurrency/processes/refactor.rb +22 -0
  68. data/lib/rbbt/util/concurrency/processes/worker.rb +2 -2
  69. data/lib/rbbt/util/concurrency/processes.rb +389 -386
  70. data/lib/rbbt/util/config.rb +169 -167
  71. data/lib/rbbt/util/filecache.rb +1 -1
  72. data/lib/rbbt/util/iruby.rb +20 -0
  73. data/lib/rbbt/util/log/progress/report.rb +241 -241
  74. data/lib/rbbt/util/log/progress/util.rb +99 -99
  75. data/lib/rbbt/util/log/progress.rb +102 -102
  76. data/lib/rbbt/util/log/refactor.rb +49 -0
  77. data/lib/rbbt/util/log.rb +486 -532
  78. data/lib/rbbt/util/migrate.rb +2 -2
  79. data/lib/rbbt/util/misc/concurrent_stream.rb +248 -246
  80. data/lib/rbbt/util/misc/development.rb +12 -11
  81. data/lib/rbbt/util/misc/exceptions.rb +117 -112
  82. data/lib/rbbt/util/misc/format.rb +2 -230
  83. data/lib/rbbt/util/misc/indiferent_hash.rb +2 -107
  84. data/lib/rbbt/util/misc/inspect.rb +2 -476
  85. data/lib/rbbt/util/misc/lock.rb +109 -106
  86. data/lib/rbbt/util/misc/omics.rb +9 -1
  87. data/lib/rbbt/util/misc/pipes.rb +765 -793
  88. data/lib/rbbt/util/misc/refactor.rb +20 -0
  89. data/lib/rbbt/util/misc/ssw.rb +27 -17
  90. data/lib/rbbt/util/misc/system.rb +92 -105
  91. data/lib/rbbt/util/misc.rb +39 -20
  92. data/lib/rbbt/util/named_array/refactor.rb +4 -0
  93. data/lib/rbbt/util/named_array.rb +3 -220
  94. data/lib/rbbt/util/open/refactor.rb +7 -0
  95. data/lib/rbbt/util/open.rb +3 -857
  96. data/lib/rbbt/util/procpath.rb +6 -6
  97. data/lib/rbbt/util/python/paths.rb +27 -0
  98. data/lib/rbbt/util/python/run.rb +115 -0
  99. data/lib/rbbt/util/python/script.rb +110 -0
  100. data/lib/rbbt/util/python/util.rb +3 -3
  101. data/lib/rbbt/util/python.rb +22 -81
  102. data/lib/rbbt/util/semaphore.rb +152 -148
  103. data/lib/rbbt/util/simpleopt.rb +9 -8
  104. data/lib/rbbt/util/ssh/refactor.rb +19 -0
  105. data/lib/rbbt/util/ssh.rb +122 -118
  106. data/lib/rbbt/util/tar.rb +117 -115
  107. data/lib/rbbt/util/tmpfile.rb +69 -67
  108. data/lib/rbbt/util/version.rb +2 -0
  109. data/lib/rbbt/workflow/refactor/entity.rb +11 -0
  110. data/lib/rbbt/workflow/refactor/export.rb +66 -0
  111. data/lib/rbbt/workflow/refactor/inputs.rb +24 -0
  112. data/lib/rbbt/workflow/refactor/recursive.rb +64 -0
  113. data/lib/rbbt/workflow/refactor/task_info.rb +66 -0
  114. data/lib/rbbt/workflow/refactor.rb +150 -0
  115. data/lib/rbbt/workflow/remote_workflow/driver/rest.rb +1 -2
  116. data/lib/rbbt/workflow/remote_workflow/driver/ssh.rb +55 -32
  117. data/lib/rbbt/workflow/remote_workflow/remote_step/rest.rb +3 -1
  118. data/lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb +14 -5
  119. data/lib/rbbt/workflow/remote_workflow/remote_step.rb +19 -7
  120. data/lib/rbbt/workflow/remote_workflow.rb +6 -1
  121. data/lib/rbbt/workflow/step/run.rb +766 -766
  122. data/lib/rbbt/workflow/step/save_load_inputs.rb +254 -254
  123. data/lib/rbbt/workflow/step.rb +2 -362
  124. data/lib/rbbt/workflow/task.rb +118 -118
  125. data/lib/rbbt/workflow/usage.rb +289 -287
  126. data/lib/rbbt/workflow/util/archive.rb +6 -5
  127. data/lib/rbbt/workflow/util/data.rb +1 -1
  128. data/lib/rbbt/workflow/util/orchestrator.rb +249 -246
  129. data/lib/rbbt/workflow/util/trace.rb +79 -44
  130. data/lib/rbbt/workflow.rb +4 -882
  131. data/lib/rbbt-util.rb +21 -13
  132. data/lib/rbbt.rb +16 -3
  133. data/python/rbbt/__init__.py +96 -4
  134. data/python/rbbt/workflow/remote.py +104 -0
  135. data/python/rbbt/workflow.py +64 -0
  136. data/python/test.py +10 -0
  137. data/share/Rlib/plot.R +37 -37
  138. data/share/Rlib/svg.R +22 -5
  139. data/share/install/software/lib/install_helpers +1 -1
  140. data/share/rbbt_commands/hpc/list +2 -3
  141. data/share/rbbt_commands/hpc/orchestrate +4 -4
  142. data/share/rbbt_commands/hpc/tail +2 -0
  143. data/share/rbbt_commands/hpc/task +10 -7
  144. data/share/rbbt_commands/lsf/list +2 -3
  145. data/share/rbbt_commands/lsf/orchestrate +4 -4
  146. data/share/rbbt_commands/lsf/tail +2 -0
  147. data/share/rbbt_commands/lsf/task +10 -7
  148. data/share/rbbt_commands/migrate +1 -1
  149. data/share/rbbt_commands/pbs/list +2 -3
  150. data/share/rbbt_commands/pbs/orchestrate +4 -4
  151. data/share/rbbt_commands/pbs/tail +2 -0
  152. data/share/rbbt_commands/pbs/task +10 -7
  153. data/share/rbbt_commands/resource/produce +8 -1
  154. data/share/rbbt_commands/slurm/list +2 -3
  155. data/share/rbbt_commands/slurm/orchestrate +4 -4
  156. data/share/rbbt_commands/slurm/tail +2 -0
  157. data/share/rbbt_commands/slurm/task +10 -7
  158. data/share/rbbt_commands/system/clean +5 -5
  159. data/share/rbbt_commands/system/status +5 -5
  160. data/share/rbbt_commands/tsv/get +2 -3
  161. data/share/rbbt_commands/tsv/info +10 -13
  162. data/share/rbbt_commands/tsv/keys +18 -14
  163. data/share/rbbt_commands/tsv/slice +2 -2
  164. data/share/rbbt_commands/tsv/transpose +6 -2
  165. data/share/rbbt_commands/workflow/info +20 -24
  166. data/share/rbbt_commands/workflow/list +1 -1
  167. data/share/rbbt_commands/workflow/prov +20 -13
  168. data/share/rbbt_commands/workflow/retry +43 -0
  169. data/share/rbbt_commands/workflow/server +12 -2
  170. data/share/rbbt_commands/workflow/task +80 -73
  171. data/share/rbbt_commands/workflow/write_info +26 -9
  172. data/share/software/opt/ssw/ssw.c +861 -0
  173. data/share/software/opt/ssw/ssw.h +130 -0
  174. data/share/workflow_config.ru +3 -3
  175. metadata +45 -6
@@ -0,0 +1,195 @@
1
+ require_relative 'stream'
2
+ require 'scout/tsv'
3
+ require 'scout/open'
4
+ require_relative '../refactor'
5
+ module TSV
6
+ annotation :monitor
7
+ class << self
8
+
9
+ alias original_open open
10
+
11
+ def open(source, type = nil, options = nil)
12
+ type, options = nil, type if options.nil? and (Hash === type or (String === type and type.include? "~"))
13
+ options = TSV.str2options(options) if String === options and options.include? "~"
14
+ options ||= {}
15
+ options[:type] ||= type unless type.nil?
16
+ if zipped = options.delete(:zipped)
17
+ options[:one2one] = zipped
18
+ end
19
+ options.delete(:keep_empty)
20
+ original_open(source, options)
21
+ end
22
+ end
23
+
24
+
25
+ alias original_unzip unzip
26
+ def unzip(field = 0, merge = false, sep = ":", delete = true, **kwargs)
27
+ kwargs[:merge] ||= merge
28
+ kwargs[:sep] ||= sep
29
+ kwargs[:delete] ||= delete
30
+ original_unzip(field, **kwargs)
31
+ end
32
+
33
+ alias original_reorder reorder
34
+ def reorder(key_field = nil, fields = nil, merge: true, one2one: true, zipped: nil, **kwargs)
35
+ kwargs[:one2one] = zipped if one2one.nil?
36
+ kwargs.delete :persist
37
+ kwargs.delete :persist_data
38
+ original_reorder(key_field, fields, **kwargs)
39
+ end
40
+
41
+ def swap_id(field = 0, merge = false, sep = ":", delete = true, **kwargs)
42
+ kwargs[:merge] ||= merge
43
+ kwargs[:sep] ||= sep
44
+ kwargs[:delete] ||= delete
45
+ change_id(field, **kwargs)
46
+ end
47
+
48
+ def swap_id(field, format, options = {}, &block)
49
+ raise "Block support not implemented" if block_given?
50
+ change_id(field, format, **options)
51
+ end
52
+
53
+ class << self
54
+ alias original_range_index range_index
55
+ alias original_pos_index pos_index
56
+ def range_index(*args, filters: nil, **kwargs)
57
+ if filters
58
+ raise "Not implemented" if filters.length > 1
59
+ method, value = filters.first
60
+ method.sub!("field:", '')
61
+ kwargs[:select] = {method => value}
62
+ end
63
+ original_range_index(*args, **kwargs)
64
+ end
65
+
66
+ def pos_index(*args, filters: nil, **kwargs)
67
+ if filters
68
+ raise "Not implemented" if filters.length > 1
69
+ method, value = filters.first
70
+ method.sub!("field:", '')
71
+ kwargs[:select] = {method => value}
72
+ end
73
+ original_pos_index(*args, **kwargs)
74
+ end
75
+
76
+ #alias original_setup setup
77
+
78
+ #def setup(*args, **kwargs, &block)
79
+ # if args.length == 2 && String === args.last
80
+ # str_setup(args.last, args.first)
81
+ # else
82
+ # original_setup(*args, **kwargs, &block)
83
+ # end
84
+ #end
85
+ end
86
+
87
+ def self.header_lines(key_field, fields, entry_hash = nil)
88
+ entry_hash = entry_hash || {}
89
+ entry_hash = entry_hash.merge(:key_field => key_field, :fields => fields)
90
+ TSV::Dumper.header entry_hash
91
+ end
92
+ end
93
+
94
+ Rbbt.relay_module_method TSV, :get_stream, Open, :get_stream
95
+ Rbbt.relay_module_method TSV::Parser, :traverse, TSV, :parse
96
+ Rbbt.relay_module_method TSV, :zip_fields, NamedArray, :zip_fields
97
+
98
+ module TSV
99
+ alias original_dumper_stream dumper_stream
100
+ def dumper_stream(keys = nil, no_options = false, unmerge = false)
101
+ if Hash === keys
102
+ original_dumper_stream(keys)
103
+ else
104
+ original_dumper_stream(:keys => keys, unmerge: unmerge, preamble: no_options)
105
+ end
106
+ end
107
+
108
+ alias original_to_s to_s
109
+ def to_s(keys = nil, no_options = false, unmerge = false)
110
+ if FalseClass === keys or TrueClass === keys or Hash === keys
111
+ no_options = keys
112
+ keys = nil
113
+ end
114
+
115
+ if keys == :sort
116
+ with_unnamed do
117
+ keys = self.keys.sort
118
+ end
119
+ end
120
+
121
+
122
+ options = {:keys => keys, unmerge: unmerge}
123
+ case no_options
124
+ when TrueClass, FalseClass
125
+ options[:preamble] = !no_options
126
+ when Hash
127
+ options.merge!(no_options)
128
+
129
+ end
130
+ io = original_dumper_stream(options.merge(stream: StringIO.new))
131
+ io.rewind
132
+ io.read
133
+ end
134
+
135
+ alias tsv_sort sort
136
+
137
+ def attach_same_key(tsv, fields = nil)
138
+ fields = [fields] unless fields.nil? || Array === fields
139
+ if fields
140
+ self.attach tsv, :fields => fields
141
+ else
142
+ self.attach tsv
143
+ end
144
+ end
145
+
146
+ def attach_index(tsv, index = nil)
147
+ self.attach tsv, index: index
148
+ end
149
+
150
+ def self.merge_row_fields(input, output, options = {})
151
+ Open.write(output, Open.collapse_stream(input, **options))
152
+ end
153
+
154
+ def self.merge_different_fields(stream1, stream2, output, options = {})
155
+ Open.write(output, Open.collapse_stream(TSV.paste_streams([stream1, stream2], **options), compact: true))
156
+ #Open.write(output, TSV.paste_streams([stream1, stream2], **options))
157
+ end
158
+
159
+ def merge_different_fields(other, options = {})
160
+ TmpFile.with_file do |output|
161
+ TSV.merge_different_fields(self, other, output, options)
162
+ options.delete :sort
163
+ tsv = TSV.open output, options
164
+ tsv.key_field = self.key_field unless self.key_field.nil?
165
+ tsv.fields = self.fields + other.fields unless self.fields.nil? or other.fields.nil?
166
+ tsv
167
+ end
168
+ end
169
+
170
+ def attach_source_key(other, key)
171
+ attach other, other_key: key
172
+ end
173
+
174
+ def with_monitor(use_monitor = true)
175
+ monitor_state = monitor
176
+ monitor = use_monitor
177
+ begin
178
+ yield
179
+ ensure
180
+ monitor = monitor_state
181
+ end
182
+ end
183
+
184
+ class << self
185
+ alias attach_orig attach
186
+ def attach(*args, **kwargs)
187
+ if kwargs.include?(:zipped)
188
+ zipped = kwargs.delete(:zipped)
189
+ kwargs[:one2one] = zipped unless kwargs.include?(:one2one)
190
+ end
191
+ attach_orig(*args, **kwargs)
192
+ end
193
+ end
194
+ end
195
+