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))