Mercurial > repos > prog > lcmsmatching
diff list-chrom-cols.py @ 1:253d531a0193 draft
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit 36c9d8099c20a1ae848f1337c16564335dd8fb2b
author | prog |
---|---|
date | Sat, 03 Sep 2016 17:02:01 -0400 |
parents | |
children | 20d69a062da3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/list-chrom-cols.py Sat Sep 03 17:02:01 2016 -0400 @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +import argparse +import subprocess +import re +import urllib2 +import json +import csv + +def get_chrom_cols(dbtype, dburl, dbtoken = None, dbfields = None): + + cols = [] + + if dbtype == 'peakforest': + url = dburl + ( '' if dburl[-1] == '/' else '/' ) + 'metadata/lc/list-code-columns' + if dbtoken is not None: + url += '?token=' + dbtoken + result = urllib2.urlopen(url).read() + v = json.JSONDecoder().decode(result) + i = 0 + for colid, coldesc in v.iteritems(): + cols.append( (coldesc['name'], colid, i == 0) ) + ++i + + elif dbtype == 'inhouse': + # Get field for chromatographic column name + col_field = 'col' + if dbfields is not None: + fields = dict(u.split("=") for u in dbfields.split(",")) + if 'col' in fields: + col_field = fields['col'] + + # Get all column names from file + with open(dburl.get_file_name(), 'rb') as dbfile: + reader = csv.reader(dbfile, delimiter = "\t", quotechar='"') + header = reader.next() + i = header.index(col_field) + allcols = [] + for row in reader: + col = row[i] + if col not in allcols: + allcols.append(col) + for i, c in enumerate(allcols): + cols.append( (c, c, i == 0) ) + + return cols + +######## +# MAIN # +######## + +if __name__ == '__main__': + + # Parse command line arguments + parser = argparse.ArgumentParser(description='Script for getting chromatographic columns of an RMSDB database for Galaxy tool lcmsmatching.') + parser.add_argument('-d', help = 'Database type', dest = 'dbtype', required = True) + parser.add_argument('-u', help = 'Database URL', dest = 'dburl', required = True) + parser.add_argument('-t', help = 'Database token', dest = 'dbtoken', required = False) + parser.add_argument('-f', help = 'Database fields', dest = 'dbfields', required = False) + args = parser.parse_args() + args_dict = vars(args) + + print(get_chrom_cols(**args_dict))