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()
예제 #2
0
 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)