Mercurial > repos > prog > lcmsmatching
comparison list-ms-mode-values.py @ 6:b8f70d8216b3 draft
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit b3a4e34cf9356447ae3507cc6fe2ff6a1f24afbc-dirty
| author | prog |
|---|---|
| date | Mon, 27 Mar 2017 06:27:29 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 5:18254e8d1b72 | 6:b8f70d8216b3 |
|---|---|
| 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)) |
