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.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/Rakefile +9 -4
- data/TEST_file +1 -0
- data/bin/aggregate_column_data.rb +20 -25
- data/bin/column_filter.rb +87 -0
- data/bin/create_metric_table.rb +35 -47
- data/bin/desaggregate_column_data.rb +18 -17
- data/bin/excel_to_tabular.rb +57 -0
- data/bin/intersect_columns.rb +29 -28
- data/bin/merge_tabular.rb +21 -34
- data/bin/standard_name_replacer.rb +35 -23
- data/bin/table_linker.rb +56 -29
- data/bin/tag_table.rb +52 -0
- data/cmdtabs.gemspec +3 -1
- data/data_test_scripts/cluster_genes_dis_AGG_stdin_to_test +2 -0
- data/data_test_scripts/cluster_genes_dis_AGG_to_test +2 -0
- data/data_test_scripts/cluster_genes_dis_DESAGG_stdin_to_test +2 -0
- data/data_test_scripts/cluster_genes_dis_DESAGG_to_test +2 -0
- data/data_test_scripts/cluster_genes_from_excel.txt_to_test +2 -0
- data/data_test_scripts/column_matching_hard_to_test +3 -0
- data/data_test_scripts/column_matching_hard_various_keys_and_every_columns_header_to_test +3 -0
- data/data_test_scripts/column_matching_hard_various_keys_and_every_columns_to_test +2 -0
- data/data_test_scripts/column_matching_hard_various_keys_and_some_columns_to_test +10 -0
- data/data_test_scripts/column_matching_hard_various_keys_to_test +7 -0
- data/data_test_scripts/column_matching_soft_1_column_reverse_to_test +21 -0
- data/data_test_scripts/column_matching_soft_1_column_to_test +29 -0
- data/data_test_scripts/column_matching_soft_1_column_uniq_to_test +12 -0
- data/data_test_scripts/column_matching_soft_and_every_columns_to_test +22 -0
- data/data_test_scripts/column_matching_soft_and_some_columns_to_test +29 -0
- data/data_test_scripts/column_matching_soft_to_test +29 -0
- data/data_test_scripts/intersect_columns_count_to_test +3 -0
- data/data_test_scripts/intersect_columns_default_stdin_a_to_test +5 -0
- data/data_test_scripts/intersect_columns_default_stdin_b_to_test +5 -0
- data/data_test_scripts/intersect_columns_default_to_test +5 -0
- data/data_test_scripts/intersect_columns_full_to_test +5 -0
- data/data_test_scripts/linked_table_2_to_test +7 -0
- data/data_test_scripts/linked_table_matches_to_test +7 -0
- data/data_test_scripts/linked_table_to_test +12 -0
- data/data_test_scripts/merge_disease_cluster_gene_to_test +12 -0
- data/data_test_scripts/metric_table_to_test +3 -0
- data/data_test_scripts/replaced_name_to_test +12 -0
- data/data_test_scripts/replaced_name_untranstaled_to_test +7 -0
- data/data_test_scripts/tag_table_header_to_test +8 -0
- data/data_test_scripts/tag_table_to_test +8 -0
- data/lib/cmdtabs/cmdtabs_lib.rb +351 -0
- data/lib/cmdtabs/version.rb +1 -1
- data/lib/cmdtabs.rb +2 -0
- data/test_scripts.sh +88 -0
- metadata +59 -7
- 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
|
data/lib/cmdtabs/version.rb
CHANGED
data/lib/cmdtabs.rb
CHANGED
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.
|
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:
|
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.
|
120
|
+
rubygems_version: 3.3.7
|
70
121
|
signing_key:
|
71
122
|
specification_version: 4
|
72
|
-
summary:
|
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: []
|