Mercurial > repos > george-weingart > micropita
diff micropita_prepare.py @ 0:2f4f6f08c8c4 draft
Uploaded
author | george-weingart |
---|---|
date | Tue, 13 May 2014 21:58:57 -0400 |
parents | |
children | b4cf8c75305b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/micropita_prepare.py Tue May 13 21:58:57 2014 -0400 @@ -0,0 +1,202 @@ +#!/usr/bin/env python + +""" +Author: George Weingart +Description: Prepare parameters to call micropita +""" + +##################################################################################### +#Copyright (C) <2012> +# +#Permission is hereby granted, free of charge, to any person obtaining a copy of +#this software and associated documentation files (the "Software"), to deal in the +#Software without restriction, including without limitation the rights to use, copy, +#modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +#and to permit persons to whom the Software is furnished to do so, subject to +#the following conditions: +# +#The above copyright notice and this permission notice shall be included in all copies +#or substantial portions of the Software. +# +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +#INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +#PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +#HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +#OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +#SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +##################################################################################### + +__author__ = "George Weingart" +__copyright__ = "Copyright 2012" +__credits__ = ["George Weingart"] +__license__ = "MIT" +__maintainer__ = "George Weingart" +__email__ = "george.weingart@gmail.com" +__status__ = "Development" + +import argparse +from cStringIO import StringIO +import sys,string,time +import os +from time import gmtime, strftime +from pprint import pprint +import subprocess +import blist +import shlex +import tempfile + +################################################################################## +# Modification by George Weingart 5/6/2014 # +# Using subprocess to invoke the calls to Micropita # +# and allocating the temporary file using trmpfile # +################################################################################## + + + + +################################################################################## +# Decode Parms # +################################################################################## +def read_params(x): + parser = argparse.ArgumentParser(description='Micropita Annotate Argparser') + parser.add_argument('--input', action="store",dest='inputname') + parser.add_argument('--output', action="store",dest='outputname') + parser.add_argument('-m', action="store",dest='MParameter') + parser.add_argument('-n', action="store",dest='NSamples') + parser.add_argument('--lastmeta', action="store",dest='lastmeta') + parser.add_argument('--stratify_value', action="store",dest='stratify_value') + + + try: + parser.add_argument('--feature_method', action="store",dest='feature_method') + except: + pass + try: + parser.add_argument('--targets', action="store",dest='targets') + except: + pass + try: + parser.add_argument('--label_value', action="store",dest='label_value') + except: + pass + return parser + + +################################################################################## +# Main Program # +################################################################################## +parser = read_params( sys.argv ) +results = parser.parse_args() +root_dir = os.environ.get('micropita_SCRIPT_PATH') + + +fname = results.inputname +input_file = open(fname,'rU') +input_lines = input_file.readlines() +input_file.close() +table_lines = [] +for x in input_lines: + first_column = x.split('\t')[0] + table_lines.append(first_column) + + + +FileTimeStamp = strftime("%Y%m%d%H%M%S", gmtime()) +LastMetaInt = 0 +if results.lastmeta and not results.lastmeta == "None": + LastMetaInt = int(results.lastmeta) - 1 + +StratifyValueInt = 0 +if results.stratify_value and not results.stratify_value == "None": + StratifyValueInt = int(results.stratify_value) - 2 + +LabelValueInt = 0 +if results.label_value and not results.label_value == "None": + LabelValueInt = int(results.label_value) - 1 + +stratify_string = "" +q = '"' +if not results.stratify_value == '1': + stratify_string = " --stratify " + q + table_lines[StratifyValueInt] + q + " " + +if results.MParameter == "features": + TBTargets = list() + TableTargets = results.targets.split(',') + for t in TableTargets: + tb_entry = int(t) + LastMetaInt + TBTargets.append(int(tb_entry)) + + + OutTargetsFile = tempfile.NamedTemporaryFile('w', delete=False ) + TempTargetsFileName = OutTargetsFile.name + indx = -1 + for c in table_lines: + indx+=1 + if indx in TBTargets: + OutputString = table_lines[indx] + "\n" + OutTargetsFile.write(OutputString) + OutTargetsFile.close() + os_command = "python " + \ + root_dir + \ + "/MicroPITA.py "+\ + "--lastmeta " + table_lines[LastMetaInt]+ " " +\ + "--feature_method " + results.feature_method + " " + \ + "--target " + TempTargetsFileName + " " +\ + "-m " + results.MParameter + " " + \ + "-n " + results.NSamples + " " +\ + stratify_string + " " +\ + results.inputname + " " +\ + results.outputname + #print os_command + os.system(os_command) + argsx = shlex.split(os_command) #Split the command + try: + subprocess.check_call(argsx , shell=False) + except: + print "The call to micropita failed=============" + sys.exit(0) + + + +if results.MParameter == "representative"\ +or results.MParameter == "diverse"\ +or results.MParameter == "extreme": + os_command = "python " + \ + root_dir + \ + "/MicroPITA.py "+\ + "--lastmeta " + table_lines[LastMetaInt]+ " " +\ + "-m " + results.MParameter + " " + \ + "-n " + results.NSamples + " " +\ + stratify_string + " " + \ + results.inputname + " " +\ + results.outputname + argsx = shlex.split(os_command) #Split the command + try: + ###os.system(os_command) + subprocess.check_call(argsx , shell=False) + except: + print "The call to micropita failed=============" + sys.exit(0) + + + + +if results.MParameter == "distinct"\ +or results.MParameter == "discriminant": + os_command = "python " + \ + root_dir + \ + "/MicroPITA.py "+\ + "--lastmeta " + table_lines[LastMetaInt]+ " " +\ + "--label " + table_lines[LastMetaInt]+ " " +\ + "-m " + results.MParameter + " " + \ + "-n " + results.NSamples + " " +\ + stratify_string + " " + \ + results.inputname + " " +\ + results.outputname + #print os_command + argsx = shlex.split(os_command) #Split the command + try: + subprocess.check_call(argsx , shell=False) + except: + print "The call to micropita failed=============" + sys.exit(0)