Mercurial > repos > yufei-luo > s_mart
comparison SMART/DiffExpAnal/countNumber_parallel_unSQL.py @ 18:94ab73e8a190
Uploaded
| author | m-zytnicki |
|---|---|
| date | Mon, 29 Apr 2013 03:20:15 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 17:b0e8584489e6 | 18:94ab73e8a190 |
|---|---|
| 1 #! /usr/bin/env python | |
| 2 | |
| 3 | |
| 4 import optparse, os, sys, tarfile, random | |
| 5 from optparse import OptionParser | |
| 6 from commons.core.launcher.Launcher import Launcher | |
| 7 from commons.core.sql.TableJobAdaptatorFactory import TableJobAdaptatorFactory | |
| 8 | |
| 9 def stop_err(msg): | |
| 10 sys.stderr.write('%s\n' % msg) | |
| 11 sys.exit() | |
| 12 | |
| 13 def toTar(tarFileName, outCountNames): | |
| 14 dir = os.path.dirname(tarFileName) | |
| 15 tfile = tarfile.open(tarFileName + ".tmp.tar", "w") | |
| 16 currentPath = os.getcwd() | |
| 17 os.chdir(dir) | |
| 18 for file in outCountNames: | |
| 19 relativeFileName = os.path.basename(file) | |
| 20 tfile.add(relativeFileName) | |
| 21 os.system("mv %s %s" % (tarFileName + ".tmp.tar", tarFileName)) | |
| 22 tfile.close() | |
| 23 os.chdir(currentPath) | |
| 24 | |
| 25 def _map(iLauncher, cmd, cmdStart, cmdFinish ): | |
| 26 lCmds = [] | |
| 27 lCmds.append(cmd) | |
| 28 lCmdStart = [] | |
| 29 lCmdStart.append(cmdStart) | |
| 30 lCmdFinish = [] | |
| 31 lCmdFinish.append(cmdFinish) | |
| 32 return(iLauncher.prepareCommands_withoutIndentation(lCmds, lCmdStart, lCmdFinish)) | |
| 33 | |
| 34 def _createCountNumberCommand(iLauncher, inputFile, outputFile): | |
| 35 lArgs = [] | |
| 36 lArgs.append("%s" % inputFile) | |
| 37 lArgs.append("%s" % outputFile) | |
| 38 return iLauncher.getSystemCommand("perl %s/SMART/DiffExpAnal/countNumber.pl " % os.environ["REPET_PATH"], lArgs) | |
| 39 | |
| 40 def __main__(): | |
| 41 #Parse Command Line | |
| 42 parser = optparse.OptionParser() | |
| 43 parser.add_option("-i", "--input", dest="inputFile", help="input txt file, a list of overlapping results files.") | |
| 44 parser.add_option("-o", "--output", dest="outputFile", help="Out txt file.") | |
| 45 parser.add_option("-t", "--tar", dest="outputTar", default=None, help="output all count results in a tar file.") | |
| 46 (options, args) = parser.parse_args() | |
| 47 | |
| 48 #Parse the input txt file and read a list of transcripts files. | |
| 49 file = open(options.inputFile, "r") | |
| 50 lines = file.readlines() | |
| 51 inputFileNames = [] | |
| 52 outCountNames = [] | |
| 53 outputName = options.outputFile | |
| 54 resDirName = os.path.dirname(outputName) + '/' | |
| 55 | |
| 56 #Write output txt file and define all output count file names | |
| 57 out = open(outputName, "w") | |
| 58 out.write("label\tfiles\tgroup\n") | |
| 59 for line in lines: | |
| 60 tab = line.split() | |
| 61 inputFileNames.append(tab[1]) | |
| 62 outCountName = resDirName + tab[0] + "_outCount_%s.csv" % random.randrange(0, 10000) | |
| 63 outCountNames.append(outCountName) | |
| 64 out.write(tab[0] + '\t' + outCountName + '\t' + tab[0][5] + '\n') | |
| 65 file.close() | |
| 66 out.close() | |
| 67 | |
| 68 #Launch on nodes | |
| 69 acronym = "countNumber" | |
| 70 jobdb = TableJobAdaptatorFactory.createJobInstance() | |
| 71 iLauncher = Launcher(jobdb, os.getcwd(), "", "", os.getcwd(), os.getcwd(), "jobs", "", acronym, acronym, False, True) | |
| 72 lCmdsTuples = [] | |
| 73 for i in range(len(inputFileNames)): #Construct the lines commands | |
| 74 inputFile = inputFileNames[i] | |
| 75 outputFile = outCountNames[i] | |
| 76 cmd2Launch = _createCountNumberCommand(iLauncher, inputFile, outputFile) | |
| 77 cmdStart = "" | |
| 78 cmdFinish = "" | |
| 79 lCmdsTuples.append(_map(iLauncher, cmd2Launch, cmdStart, cmdFinish)) | |
| 80 | |
| 81 | |
| 82 | |
| 83 iLauncher.runLauncherForMultipleJobs(acronym, lCmdsTuples, True) | |
| 84 | |
| 85 | |
| 86 | |
| 87 if options.outputTar != None: | |
| 88 toTar(options.outputTar, outCountNames) | |
| 89 | |
| 90 | |
| 91 if __name__=="__main__":__main__() |
