diff mzmatch_wrapper.py @ 0:201a15633354 draft default tip

Initial commit.
author galaxyp
date Fri, 10 May 2013 17:28:02 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mzmatch_wrapper.py	Fri May 10 17:28:02 2013 -0400
@@ -0,0 +1,63 @@
+from os.path import dirname, join, abspath
+import sys
+from optparse import OptionParser
+from ConfigParser import SafeConfigParser
+import subprocess
+
+DEBUG = False
+
+
+def main():
+    (options, args) = _parse_args()
+    for executable, config_path in zip(options.executables, options.configs):
+        command_handler = COMMAND_HANDLERS.get(executable, _run_mzmatch)
+        command_handler(executable, config_path)
+
+
+def _run_shell(executable, config_path):
+    command = open(config_path, "r").read().strip()
+    if DEBUG:
+        print "Running shell command %s" % command
+    _exec(command)
+
+
+def _run_mzmatch(executable, config_path):
+    command_prefix = "java -cp %s" % _jar_path()
+    java_class = "mzmatch.ipeak.%s" % executable
+    args = open(config_path, "r").read().strip()
+    _exec("%s %s %s" % (command_prefix, java_class, args))
+
+
+def _jar_path():
+    py_path = __file__
+    jar_path = join(dirname(py_path), "mzmatch_2.0.jar")
+    return jar_path
+
+COMMAND_HANDLERS = {
+    "__SHELL__": _run_shell,
+}
+
+
+def _exec(command):
+    proc = subprocess.Popen(args=command, shell=True)
+    return_code = proc.wait()
+    if return_code != 0:
+        print "Error executing command [%s], return code is %d" % (command, return_code)
+        sys.exit(return_code)
+
+
+def _parse_args():
+    parser = OptionParser()
+    parser.add_option("-e", "--executable", dest="executables", default=[], action="append")
+    parser.add_option("-c", "--config", dest="configs", default=[], action="append")
+    return parser.parse_args()
+
+
+def _load_options(config_path):
+    config_parser = SafeConfigParser()
+    config_parser.optionxform = str
+    config_parser.read(config_path)
+    return config_parser
+
+if __name__ == "__main__":
+    main()