comparison list-ms-mode-values.py @ 5:fb9c0409d85c draft

planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit 608d9e59a0d2dcf85a037968ddb2c61137fb9bce
author prog
date Wed, 19 Apr 2017 10:00:05 -0400
parents
children
comparison
equal deleted inserted replaced
4:b34c14151f25 5:fb9c0409d85c
1 #!/usr/bin/env python
2 # vi: fdm=marker
3
4 import csv
5 import re
6 import argparse
7
8 # Get MS mode values {{{1
9 ################################################################
10
11 def get_ms_mode_value(file, col, preferred):
12
13 modes = []
14 cols = []
15 preferred = preferred.split(',')
16
17 with open(file if isinstance(file, str) else file.get_file_name(), 'r') as f:
18
19 # Read file header
20 reader = csv.reader(f, delimiter = "\t", quotechar='"')
21 header = reader.next()
22 try:
23 index = header.index(col)
24 for row in reader:
25 v = row[index]
26 if v not in modes:
27 modes.append(v)
28
29 # Find default value
30 default = 0
31 for p in preferred:
32 for i, m in enumerate(modes):
33 if m == p:
34 default = i
35 break
36 if default != 0:
37 break
38
39 # Build list of cols
40 for i, c in enumerate(modes):
41 cols.append( (c, c, i == default) )
42 except:
43 pass
44
45 return cols
46
47 # Main {{{1
48 ################################################################
49
50 if __name__ == '__main__':
51
52 # Parse command line arguments
53 parser = argparse.ArgumentParser(description='Script for getting column names in a csv file.')
54 parser.add_argument('-f', help = 'CSV File (separator must be TAB)', dest = 'file', required = True)
55 parser.add_argument('-c', help = 'MS mode column name.', dest = 'col', required = True)
56 parser.add_argument('-p', help = 'List (comma separated values) of preferred column names for default one.', dest = 'preferred', required = True)
57 args = parser.parse_args()
58 args_dict = vars(args)
59
60 print(get_ms_mode_value(**args_dict))