def main(): option_parser, opts, args = parse_command_line_parameters(**script_info) mapping_fp = opts.input_fp categories = opts.categories header_names = opts.categories_header_names output_fp = opts.output_fp if len(categories) != len(header_names): option_parser.error('This shouldnt be happening what are you doing?') data, headers, _ = parse_mapping_file(open(mapping_fp, 'U')) headers, data = apply_operation_on_mapping_file_columns(headers, data, categories, header_names) # for j in range(0,len(categories)): # headers.append(header_names[j]) # for k, line in enumerate(data): # temp = 0.0 # indices = map(lambda x: headers.index(x), categories[j].split(',')) # for index in indices: # temp = temp + float(line[index]) # data[k].append('%f' % temp) lines = format_mapping_file(headers, data) fd = open(output_fp, 'w') fd.writelines(lines) fd.close()
def test_apply_operation_on_mapping_file_columns(self): # test a sum new_headers, new_data = apply_operation_on_mapping_file_columns( self.headers, self.data, ['A,B', 'A,A', 'C,D'], ['first', 'second', 'third']) self.assertEquals(new_headers, ['SampleID', 'Treatment', 'Info', 'A', 'B', 'C', 'D', 'Description', 'first', 'second', 'third']) self.assertEquals(new_data, RESULTING_MAPPING_FILE)