cmdtabs 0.1.0 → 0.1.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/Rakefile +9 -4
  4. data/TEST_file +1 -0
  5. data/bin/aggregate_column_data.rb +20 -25
  6. data/bin/column_filter.rb +87 -0
  7. data/bin/create_metric_table.rb +35 -47
  8. data/bin/desaggregate_column_data.rb +18 -17
  9. data/bin/excel_to_tabular.rb +57 -0
  10. data/bin/intersect_columns.rb +29 -28
  11. data/bin/merge_tabular.rb +21 -34
  12. data/bin/standard_name_replacer.rb +35 -23
  13. data/bin/table_linker.rb +56 -29
  14. data/bin/tag_table.rb +52 -0
  15. data/cmdtabs.gemspec +3 -1
  16. data/data_test_scripts/cluster_genes_dis_AGG_stdin_to_test +2 -0
  17. data/data_test_scripts/cluster_genes_dis_AGG_to_test +2 -0
  18. data/data_test_scripts/cluster_genes_dis_DESAGG_stdin_to_test +2 -0
  19. data/data_test_scripts/cluster_genes_dis_DESAGG_to_test +2 -0
  20. data/data_test_scripts/cluster_genes_from_excel.txt_to_test +2 -0
  21. data/data_test_scripts/column_matching_hard_to_test +3 -0
  22. data/data_test_scripts/column_matching_hard_various_keys_and_every_columns_header_to_test +3 -0
  23. data/data_test_scripts/column_matching_hard_various_keys_and_every_columns_to_test +2 -0
  24. data/data_test_scripts/column_matching_hard_various_keys_and_some_columns_to_test +10 -0
  25. data/data_test_scripts/column_matching_hard_various_keys_to_test +7 -0
  26. data/data_test_scripts/column_matching_soft_1_column_reverse_to_test +21 -0
  27. data/data_test_scripts/column_matching_soft_1_column_to_test +29 -0
  28. data/data_test_scripts/column_matching_soft_1_column_uniq_to_test +12 -0
  29. data/data_test_scripts/column_matching_soft_and_every_columns_to_test +22 -0
  30. data/data_test_scripts/column_matching_soft_and_some_columns_to_test +29 -0
  31. data/data_test_scripts/column_matching_soft_to_test +29 -0
  32. data/data_test_scripts/intersect_columns_count_to_test +3 -0
  33. data/data_test_scripts/intersect_columns_default_stdin_a_to_test +5 -0
  34. data/data_test_scripts/intersect_columns_default_stdin_b_to_test +5 -0
  35. data/data_test_scripts/intersect_columns_default_to_test +5 -0
  36. data/data_test_scripts/intersect_columns_full_to_test +5 -0
  37. data/data_test_scripts/linked_table_2_to_test +7 -0
  38. data/data_test_scripts/linked_table_matches_to_test +7 -0
  39. data/data_test_scripts/linked_table_to_test +12 -0
  40. data/data_test_scripts/merge_disease_cluster_gene_to_test +12 -0
  41. data/data_test_scripts/metric_table_to_test +3 -0
  42. data/data_test_scripts/replaced_name_to_test +12 -0
  43. data/data_test_scripts/replaced_name_untranstaled_to_test +7 -0
  44. data/data_test_scripts/tag_table_header_to_test +8 -0
  45. data/data_test_scripts/tag_table_to_test +8 -0
  46. data/lib/cmdtabs/cmdtabs_lib.rb +351 -0
  47. data/lib/cmdtabs/version.rb +1 -1
  48. data/lib/cmdtabs.rb +2 -0
  49. data/test_scripts.sh +88 -0
  50. metadata +59 -7
  51. data/bin/table_header.rb +0 -207
@@ -0,0 +1,351 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ def load_input_data(input_path, sep="\t", limit=0)
5
+ if input_path == '-'
6
+ input_data = STDIN
7
+ else
8
+ input_data = File.readlines(input_path)
9
+ end
10
+ input_data_arr = input_data.map {|line| line = line.chomp.split(sep, limit)}
11
+ return input_data_arr
12
+ end
13
+
14
+ def load_several_files(all_files, sep = "\t", limit=0)
15
+ loaded_files = {}
16
+ all_files.each do |file|
17
+ if FileTest.directory?(file)
18
+ STDERR.puts "#{file} is not a valid file"
19
+ next
20
+ end
21
+ loaded_files[file] = load_input_data(file, sep, limit)
22
+ end
23
+ return loaded_files
24
+ end
25
+
26
+ def index_array(array, col_from=0, col_to=1)
27
+ indexed_array = {}
28
+ array.each do |elements|
29
+ indexed_array[elements[col_from]] = elements[col_to]
30
+ end
31
+ return indexed_array
32
+ end
33
+
34
+ def write_output_data(output_data, output_path=nil, sep="\t")
35
+ if !output_path.nil?
36
+ File.open(output_path, 'w') do |out_file|
37
+ output_data.each do |line|
38
+ out_file.puts(line.join(sep))
39
+ end
40
+ end
41
+ else
42
+ output_data.each do |line|
43
+ STDOUT.puts line.join(sep)
44
+ end
45
+ end
46
+ end
47
+
48
+ # aggregate_column_data.rb
49
+ def aggregate_column(input_table, col_index, col_agg, sep)
50
+ aggregated_data = {}
51
+ aggregated_data_arr = []
52
+ input_table.each do |fields|
53
+ key = fields[col_index]
54
+ val = fields[col_agg]
55
+ query = aggregated_data[key]
56
+ if query.nil?
57
+ aggregated_data[key] = [val]
58
+ else
59
+ query << val
60
+ end
61
+ end
62
+ aggregated_data.each do |k, value|
63
+ aggregated_data_arr << [k, value.join(sep)]
64
+ end
65
+ return aggregated_data_arr
66
+ end
67
+
68
+
69
+ # desaggregate_column_data.rb
70
+ def desaggregate_column(input_table, col_index, sep)
71
+ desaggregated_data = []
72
+
73
+ input_table.each do |fields|
74
+ aggregated_fields = fields[col_index]
75
+ aggregated_fields.split(sep).each do |field|
76
+ record = fields.clone
77
+ record[col_index] = field
78
+ desaggregated_data << record
79
+ end
80
+ end
81
+
82
+ return desaggregated_data
83
+ end
84
+
85
+
86
+ # create_metric_table.rb
87
+ def index_metrics(input_data, attributes)
88
+ n_attrib = attributes.length
89
+ indexed_metrics = {}
90
+ metric_names = []
91
+ input_data.each do |entry|
92
+ sample_id = entry.shift
93
+ sample_attributes = entry[0..n_attrib - 1]
94
+ metric_name, metric = entry[n_attrib..n_attrib + 1]
95
+ metric_names << metric_name if !metric_names.include?(metric_name)
96
+ query = indexed_metrics[sample_id]
97
+ if query.nil?
98
+ indexed_metrics[sample_id] = {metric_name => metric}
99
+ attributes.each_with_index do |attrib, i|
100
+ indexed_metrics[sample_id][attrib] = sample_attributes[i]
101
+ end
102
+ else
103
+ query[metric_name] = metric
104
+ end
105
+ end
106
+ return metric_names, indexed_metrics
107
+ end
108
+
109
+ def create_table(indexed_metrics, samples_tag, attributes, metric_names)
110
+ allTags = attributes + metric_names
111
+ table_output = []
112
+ corrupted_records = []
113
+ indexed_metrics.each do |sample_name, sample_data|
114
+ record = [sample_name]
115
+ allTags.each do |tag|
116
+ record << sample_data[tag]
117
+ end
118
+ if record.count(nil) > 0
119
+ warn("Record #{sample_name} is corrupted:\n#{record.inspect}")
120
+ corrupted_records << record
121
+ else
122
+ table_output << record
123
+ end
124
+ end
125
+ allTags.unshift(samples_tag)
126
+ table_output.unshift(allTags) # Add header
127
+ corrupted_records.unshift(allTags) # Add header
128
+ return table_output, corrupted_records
129
+ end
130
+
131
+
132
+ #intersect_columns.rb
133
+ def load_records(input_file, cols, full)
134
+ records = {}
135
+ full_row_of_records = {}
136
+ input_file.each do |fields|
137
+ field = cols.map { |c| fields[c]}
138
+ records[field] = true
139
+ full_row_of_records[field] = fields if full
140
+ end
141
+ return records.keys, full_row_of_records
142
+ end
143
+
144
+
145
+ # merge_tabular.rb
146
+ def load_files(files_path)
147
+ files = {}
148
+ files_path.each do |file_name|
149
+ file = []
150
+ input_table = load_input_data(file_name)
151
+ input_table.each do |fields|
152
+ fields.map{|field|
153
+ if field == ""
154
+ '-'
155
+ else
156
+ field
157
+ end
158
+ }
159
+ next if fields.count('-') == fields.length #skip blank records
160
+ file << fields
161
+ end
162
+ files[file_name] = file
163
+ end
164
+ return files
165
+ end
166
+
167
+
168
+ def merge_files(files)
169
+ parent_table = {}
170
+ table_length = 0
171
+ files.each do |file_names, file|
172
+ local_length = 0
173
+ file.each do |fields|
174
+
175
+ id = fields.shift
176
+ local_length = fields.length
177
+ if !parent_table.has_key?(id)
178
+ parent_table[id] = Array.new(table_length,'-')
179
+ elsif parent_table[id].length < table_length
180
+ parent_table[id].concat(Array.new(table_length-parent_table[id].length,'-'))
181
+ end
182
+ parent_table[id].concat(fields)
183
+
184
+ end
185
+ table_length += local_length
186
+ end
187
+ parent_table_arr = []
188
+ parent_table.each do |id, fields|
189
+ diference = table_length - fields.length
190
+ fields.concat(Array.new(diference,'-')) if diference > 0
191
+ fields.unshift(id)
192
+ parent_table_arr << fields
193
+ end
194
+ return parent_table_arr
195
+ end
196
+
197
+
198
+ # standard_name_replacer.rb
199
+ def name_replaces(tabular_input, sep, cols_to_replace, translation_index, remove_untranslated=false)
200
+ translated_fields = []
201
+ untranslated_fields = []
202
+ tabular_input.each do |fields|
203
+ cols_to_replace.each do |col|
204
+ replaced_field = translation_index[fields[col]]
205
+ if !replaced_field.nil?
206
+ fields[col] = replaced_field
207
+ translated_fields << fields
208
+ elsif !remove_untranslated
209
+ translated_fields << fields
210
+ else
211
+ untranslated_fields << fields
212
+ end
213
+ end
214
+ end
215
+ return translated_fields, untranslated_fields
216
+ end
217
+
218
+
219
+ # column_filter
220
+ def merge_and_filter_tables(input_files, options)
221
+ header = []
222
+ filtered_table = []
223
+ options[:cols_to_show] = (0..input_files.first[0].length - 1).to_a if options[:cols_to_show].nil?
224
+ input_files.each do |filename, file|
225
+ if options[:header]
226
+ if header.empty?
227
+ header = file.shift
228
+ else
229
+ file.shift
230
+ end
231
+ end
232
+ filtered_table.concat(filter_columns(file, options))
233
+ end
234
+ filtered_table.uniq! if options[:uniq]
235
+ if !header.empty?
236
+ header = shift_by_array_indexes(header, options[:cols_to_show])
237
+ filtered_table.unshift(header)
238
+ end
239
+ return filtered_table
240
+ end
241
+
242
+ def parse_column_indices(sep, col_string)
243
+ cols = col_string.split(sep).map{|col| col.to_i- 1}
244
+ return cols
245
+ end
246
+
247
+ def build_pattern(col_filter, keywords)
248
+ pattern = {}
249
+ if !col_filter.nil? && !keywords.nil?
250
+ keys_per_col = keywords.split('%')
251
+ abort('Number of keywords not equal to number of filtering columns') if keys_per_col.length != col_filter.length
252
+ col_filter.each_with_index do |col, i|
253
+ pattern[col] = keys_per_col[i].split('&')
254
+ end
255
+ end
256
+ return pattern
257
+ end
258
+
259
+ def expanded_match(string, pattern, match_mode)
260
+ is_match = false
261
+ is_match = true if string.include?(pattern) && match_mode == 'i'
262
+ is_match = true if string == pattern && match_mode == 'c'
263
+ return is_match
264
+ end
265
+
266
+ def filter(line, all_patterns, search_mode, match_mode, reverse = false)
267
+ filter = false
268
+ all_patterns.each do |col, patterns|
269
+ is_match = false
270
+ patterns.each do |pattern|
271
+ is_match = expanded_match(line[col], pattern, match_mode)
272
+ break if is_match
273
+ end
274
+ if is_match && search_mode == 's'
275
+ filter = false
276
+ break
277
+ elsif !is_match && search_mode == 'c'
278
+ filter = true
279
+ break
280
+ elsif !is_match
281
+ filter = true
282
+ end
283
+ end
284
+ if reverse
285
+ filter = !filter
286
+ end
287
+ return filter
288
+ end
289
+
290
+ def filter_columns(input_table, options)
291
+ pattern = build_pattern(options[:col_filter], options[:keywords])
292
+ filtered_table = []
293
+ input_table.each do |line|
294
+ if pattern.nil? || !filter(line, pattern, options[:search_mode], options[:match_mode], options[:reverse])
295
+ filtered_table << shift_by_array_indexes(line, options[:cols_to_show])
296
+ end
297
+ end
298
+ return filtered_table
299
+ end
300
+
301
+ def shift_by_array_indexes(arr_sub, indexes)
302
+ subsetted_arr = indexes.map{ |idx| arr_sub[idx]}
303
+ return subsetted_arr
304
+ end
305
+
306
+ # table_linker.rb
307
+ def link_table(indexed_linker, tabular_file, drop_line, sep)
308
+ linked_table = []
309
+ tabular_file.each do |fields|
310
+ id = fields.first
311
+ info_id = indexed_linker[id]
312
+ if !info_id.nil?
313
+ linked_table << fields.push(info_id)
314
+ else
315
+ linked_table << fields if !drop_line
316
+ end
317
+ end
318
+ return linked_table
319
+ end
320
+
321
+ # tag_table.rb
322
+ def load_and_parse_tags(tags, sep)
323
+ parsed_tags = []
324
+ tags.each do |tag|
325
+ if File.exist?(tag)
326
+ parsed_tags << load_input_data(tag, sep)
327
+ break
328
+ else
329
+ parsed_tags << tag.split(sep)
330
+ end
331
+ end
332
+ return parsed_tags.flatten
333
+ end
334
+
335
+ def tag_file(input_file, tags, header)
336
+ taged_file = []
337
+ input_file.each_with_index do |fields, n_row|
338
+ next if n_row == 0 && header
339
+ taged_file << tags.dup.concat(fields)
340
+ end
341
+ return taged_file
342
+ end
343
+
344
+
345
+ def extract_columns(table, columns2extract)
346
+ storage = []
347
+ table.each do |row|
348
+ storage << shift_by_array_indexes(row, columns2extract)
349
+ end
350
+ return storage
351
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cmdtabs
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/cmdtabs.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "cmdtabs/version"
4
+ require_relative "cmdtabs/cmdtabs_lib"
5
+
4
6
 
5
7
  module Cmdtabs
6
8
  class Error < StandardError; end
data/test_scripts.sh ADDED
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env bash
2
+
3
+ source ~soft_bio_267/initializes/init_ruby
4
+ export PATH=`pwd`/bin:$PATH
5
+ test_data=test/data_tests/
6
+ out=output_test_scripts
7
+ data_to_test=data_test_scripts
8
+ mkdir $out
9
+
10
+ #aggregate_column_data --------------------------------------------------------------------------
11
+ aggregate_column_data.rb -i $test_data/cluster_genes_dis_desagg -x 1 -s "," -a 2 1> $out/cluster_genes_dis_AGG
12
+ cat $test_data/cluster_genes_dis_desagg | aggregate_column_data.rb -i '-' -x 1 -s "," -a 2 1> $out/cluster_genes_dis_AGG_stdin
13
+
14
+ #desaggregate_column_data --------------------------------------------------------------------------
15
+ desaggregate_column_data.rb -i $test_data/cluster_genes_dis_agg -x 1 1> $out/cluster_genes_dis_DESAGG
16
+ cat $test_data/cluster_genes_dis_agg| aggregate_column_data.rb -i '-' -x 2 -s "," -a 1 1> $out/cluster_genes_dis_DESAGG_stdin
17
+
18
+ #create_metric_table --------------------------------------------------------------------------
19
+ create_metric_table.rb $test_data/all_metrics sample $out/metric_table -c TEST_file
20
+
21
+ #merge_tabular --------------------------------------------------------------------------
22
+ merge_tabular.rb $test_data/disease_gene $test_data/disease_cluster_uniq > $out/merge_disease_cluster_gene
23
+
24
+ #tag_table --------------------------------------------------------------------------
25
+ tag_table.rb -i $test_data/cluster_stats -t $test_data/tracker 1> $out/tag_table
26
+ tag_table.rb -i $test_data/cluster_stats_header -H -t $test_data/tracker 1> $out/tag_table_header
27
+
28
+ # intersect_columns.rb --------------------------------------------------------------------------
29
+ ##default values
30
+ intersect_columns.rb -a $test_data/disease_cluster -b $test_data/disease_gene -A 1 -B 1 1> $out/intersect_columns_default
31
+ ##STDIN a
32
+ cat $test_data/disease_cluster | intersect_columns.rb -a'-' -b $test_data/disease_gene -A 1 -B 1 1> $out/intersect_columns_default_stdin_a
33
+ ##STDIN b
34
+ cat $test_data/disease_gene | intersect_columns.rb -a $test_data/disease_cluster -b '-' -A 1 -B 1 1> $out/intersect_columns_default_stdin_b
35
+ ##STDIN a y b
36
+ #cat $test_data/disease_cluster, $test_data/disease_gene | intersect_columns.rb $test_data/disease_gene -a'-' -b '-' -A 1 -B 1 > $out/intersect_columns_default_stdin_a_b
37
+ ##count = true
38
+ intersect_columns.rb -a $test_data/disease_cluster -b $test_data/disease_gene -A 1 -B 1 -c 1> $out/intersect_columns_count
39
+ ##keep = 'ab'
40
+ #intersect_columns.rb -a $test_data/disease_cluster -b $test_data/disease_gene -A 1 -B 1 -k 'ab' > $out/intersect_columns_ab
41
+ ##full = true
42
+ intersect_columns.rb -a $test_data/disease_cluster -b $test_data/disease_gene -A 1 -B 1 --full 1> $out/intersect_columns_full
43
+
44
+ #table_linker --------------------------------------------------------------------------
45
+ #test standard
46
+ table_linker.rb -i $test_data/disease_cluster -l $test_data/disease_gene -o $out/linked_table
47
+ #test reverse
48
+ table_linker.rb -i $test_data/disease_gene -l $test_data/disease_cluster -o $out/linked_table_2
49
+ #test remove mismatches
50
+ table_linker.rb -i $test_data/disease_cluster -l $test_data/disease_gene -o $out/linked_table_matches --drop
51
+
52
+
53
+ #standard_name_replacer --------------------------------------------------------------------------
54
+ standard_name_replacer.rb -i $test_data/disease_cluster -I $test_data/disease_gene -o $out/replaced_name -c 1 -f 1 -t 2
55
+ #test keep untranslated
56
+ standard_name_replacer.rb -i $test_data/disease_cluster -I $test_data/disease_gene -o $out/replaced_name_untranstaled -c 1 -f 1 -t 2 -u
57
+
58
+ #excel_to_tabular.rb --------------------------------------------------------------------------
59
+ excel_to_tabular.rb -i $test_data/cluster_genes.xlsx -c 2,3,4 -s 1 -o $out/cluster_genes_from_excel.txt
60
+
61
+ #column_filter.rb --------------------------------------------------------------------------
62
+ #test column matching hard
63
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1 -k "MONDO:0008995" -s "c" -m "c" > $out/column_matching_hard
64
+ #test column matching soft
65
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1 -k "MONDO" -s "c" -m "i" > $out/column_matching_soft
66
+ #test column matching hard various keys
67
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1 -k "MONDO:0008995&MONDO:0017999" -s "c" -m "c" > $out/column_matching_hard_various_keys
68
+ #test column matching hard various keys and every columns
69
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1,2 -k "MONDO:0008995&MONDO:0017999%53_ref" -s "c" -m "c" > $out/column_matching_hard_various_keys_and_every_columns
70
+ #test column matching hard various keys and every columns to test header
71
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1,2 -k "MONDO:0008995&MONDO:0017999%53_ref" -s "c" -m "c" -H > $out/column_matching_hard_various_keys_and_every_columns_header
72
+ #test column matching hard various keys and some columns
73
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1,2 -k "MONDO:0008995&MONDO:0017999%53_ref" -s "s" -m "c" > $out/column_matching_hard_various_keys_and_some_columns
74
+ #test column matching soft and some columns
75
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1,2 -k "MONDO%ref" -s "s" -m "i" > $out/column_matching_soft_and_some_columns
76
+ #test column matching soft and every columns
77
+ column_filter.rb -t "$test_data/disease*" -c 1,2 -f 1,2 -k "MONDO%ref" -s "c" -m "i" > $out/column_matching_soft_and_every_columns
78
+ #test column matching soft 1 column
79
+ column_filter.rb -t "$test_data/disease*" -c 1 -f 1 -k "MONDO" -s "c" -m "i" > $out/column_matching_soft_1_column
80
+ #test column matching soft 1 column uniq
81
+ column_filter.rb -t "$test_data/disease*" -c 1 -f 1 -k "MONDO" -s "c" -m "i" -u > $out/column_matching_soft_1_column_uniq
82
+ #test column matching soft 1 column reverse
83
+ column_filter.rb -t "$test_data/disease*" -c 1 -f 1 -k "17" -s "c" -m "i" -r > $out/column_matching_soft_1_column_reverse
84
+
85
+ for file_to_test in `ls $out`; do
86
+ echo $file_to_test
87
+ diff $out/$file_to_test $data_to_test/$file_to_test"_to_test"
88
+ done
metadata CHANGED
@@ -1,27 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmdtabs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - seoanezonjic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-03 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2025-09-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: xsv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: 'Toolset to merge, colapse tables rename field contents, etc '
14
28
  email:
15
29
  - seoanezonjic@hotmail.com
16
30
  executables:
17
31
  - aggregate_column_data.rb
32
+ - column_filter.rb
18
33
  - create_metric_table.rb
19
34
  - desaggregate_column_data.rb
35
+ - excel_to_tabular.rb
20
36
  - intersect_columns.rb
21
37
  - merge_tabular.rb
22
38
  - standard_name_replacer.rb
23
- - table_header.rb
24
39
  - table_linker.rb
40
+ - tag_table.rb
25
41
  extensions: []
26
42
  extra_rdoc_files: []
27
43
  files:
@@ -34,17 +50,52 @@ files:
34
50
  - LICENSE.txt
35
51
  - README.md
36
52
  - Rakefile
53
+ - TEST_file
37
54
  - bin/aggregate_column_data.rb
55
+ - bin/column_filter.rb
38
56
  - bin/create_metric_table.rb
39
57
  - bin/desaggregate_column_data.rb
58
+ - bin/excel_to_tabular.rb
40
59
  - bin/intersect_columns.rb
41
60
  - bin/merge_tabular.rb
42
61
  - bin/standard_name_replacer.rb
43
- - bin/table_header.rb
44
62
  - bin/table_linker.rb
63
+ - bin/tag_table.rb
45
64
  - cmdtabs.gemspec
65
+ - data_test_scripts/cluster_genes_dis_AGG_stdin_to_test
66
+ - data_test_scripts/cluster_genes_dis_AGG_to_test
67
+ - data_test_scripts/cluster_genes_dis_DESAGG_stdin_to_test
68
+ - data_test_scripts/cluster_genes_dis_DESAGG_to_test
69
+ - data_test_scripts/cluster_genes_from_excel.txt_to_test
70
+ - data_test_scripts/column_matching_hard_to_test
71
+ - data_test_scripts/column_matching_hard_various_keys_and_every_columns_header_to_test
72
+ - data_test_scripts/column_matching_hard_various_keys_and_every_columns_to_test
73
+ - data_test_scripts/column_matching_hard_various_keys_and_some_columns_to_test
74
+ - data_test_scripts/column_matching_hard_various_keys_to_test
75
+ - data_test_scripts/column_matching_soft_1_column_reverse_to_test
76
+ - data_test_scripts/column_matching_soft_1_column_to_test
77
+ - data_test_scripts/column_matching_soft_1_column_uniq_to_test
78
+ - data_test_scripts/column_matching_soft_and_every_columns_to_test
79
+ - data_test_scripts/column_matching_soft_and_some_columns_to_test
80
+ - data_test_scripts/column_matching_soft_to_test
81
+ - data_test_scripts/intersect_columns_count_to_test
82
+ - data_test_scripts/intersect_columns_default_stdin_a_to_test
83
+ - data_test_scripts/intersect_columns_default_stdin_b_to_test
84
+ - data_test_scripts/intersect_columns_default_to_test
85
+ - data_test_scripts/intersect_columns_full_to_test
86
+ - data_test_scripts/linked_table_2_to_test
87
+ - data_test_scripts/linked_table_matches_to_test
88
+ - data_test_scripts/linked_table_to_test
89
+ - data_test_scripts/merge_disease_cluster_gene_to_test
90
+ - data_test_scripts/metric_table_to_test
91
+ - data_test_scripts/replaced_name_to_test
92
+ - data_test_scripts/replaced_name_untranstaled_to_test
93
+ - data_test_scripts/tag_table_header_to_test
94
+ - data_test_scripts/tag_table_to_test
46
95
  - lib/cmdtabs.rb
96
+ - lib/cmdtabs/cmdtabs_lib.rb
47
97
  - lib/cmdtabs/version.rb
98
+ - test_scripts.sh
48
99
  homepage: https://github.com/seoanezonjic/cmdtabs
49
100
  licenses:
50
101
  - MIT
@@ -66,8 +117,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
117
  - !ruby/object:Gem::Version
67
118
  version: '0'
68
119
  requirements: []
69
- rubygems_version: 3.2.15
120
+ rubygems_version: 3.3.7
70
121
  signing_key:
71
122
  specification_version: 4
72
- summary: Gem to manipulate text tables in cmd
123
+ summary: 'DEPRECATED PROJECT. MIGRATED TO PYTHON: https://github.com/seoanezonjic/py_cmdtabs
124
+ Gem to manipulate text tables in cmd'
73
125
  test_files: []