| 6 | 1 import unittest | 
|  | 2 import os | 
|  | 3 import time | 
|  | 4 from optparse import OptionParser | 
|  | 5 from SMART.Java.Python.ncList.test.MockFindOverlaps_randomExample import MockFindOverlaps_randomExample | 
|  | 6 from SMART.Java.Python.FindOverlapsOptim import FindOverlapsOptim | 
|  | 7 | 
|  | 8 if __name__ == '__main__': | 
|  | 9     description = "runRandomJobs: create random ref/query files (with size given), and run the jobs on cluster with help of runJobs.sh" | 
|  | 10 | 
|  | 11     parser = OptionParser(description = description) | 
|  | 12     parser.add_option("-i", "--inputRef", dest="inputRefGff3FileName", action="store", type="string", help="Reference input file [compulsory] [format: file in gff3 format]") | 
|  | 13     parser.add_option("-j", "--inputQuery", dest="inputQueryGff3FileName", action="store", type="string", help="Query input file [compulsory] [format: file in gff3 format]") | 
|  | 14     parser.add_option("-m", "--inputRefSize", dest="numberOfRefReads", action="store", type="int", help="The number of Reference") | 
|  | 15     parser.add_option("-n", "--inputQuerySize", dest="numberOfQReads", action="store", type="int", help="The number of Query") | 
|  | 16     parser.add_option("-o", "--output", dest="outputGff3FileName", action="store", type="string", help="output file [compulsory] [format: output file in gff3 format]") | 
|  | 17     (options, args) = parser.parse_args() | 
|  | 18 | 
|  | 19     outputDataName = 'timeResult.dat' | 
|  | 20     fTime = open(outputDataName, 'w') | 
|  | 21     fTime.write('NbRef\tNbQuery\tNbOverlap\ttime\n') | 
|  | 22     chromSize = 100000 | 
|  | 23     print 'ref size = %d,  query size = %d' %(options.numberOfRefReads, options.numberOfQReads) | 
|  | 24     iMFOR_ref = MockFindOverlaps_randomExample(options.inputRefGff3FileName, 'ref', options.numberOfRefReads, chromSize) | 
|  | 25     iMFOR_ref.write() | 
|  | 26     cmd_ref = 'sort -f -n -k4 -k5.4rn -o %s %s' % (options.inputRefGff3FileName, options.inputRefGff3FileName) | 
|  | 27     os.system(cmd_ref) | 
|  | 28     iMFOR_query = MockFindOverlaps_randomExample(options.inputQueryGff3FileName,'q', options.numberOfQReads, chromSize) | 
|  | 29     iMFOR_query.write() | 
|  | 30     cmd_query = 'sort -f -n -k4 -k5.4rn -o %s %s' % (options.inputQueryGff3FileName, options.inputQueryGff3FileName) | 
|  | 31     os.system(cmd_query) | 
|  | 32     iFOO = FindOverlaps_optim(options.inputRefGff3FileName, options.inputQueryGff3FileName) | 
|  | 33     iFOO.setOutputGff3FileName(options.outputGff3FileName) | 
|  | 34 | 
|  | 35     startTime_optim = time.time() | 
|  | 36     iFOO.run() | 
|  | 37     iFOO.close() | 
|  | 38     nbOverlap = iFOO.getNbOverlap() | 
|  | 39     endTime_optim = time.time() | 
|  | 40     cmd = 'sort -f -n -k4 -k5.4rn -k9.5 -t ";" -o %s %s' % (options.outputGff3FileName, options.outputGff3FileName) | 
|  | 41     os.system(cmd) | 
|  | 42     totalTime_optim = endTime_optim - startTime_optim | 
|  | 43     print 'we take %s second.' % (totalTime_optim) | 
|  | 44     fTime.write('%d\t%d\t%d\t%.2f\n'%(options.numberOfRefReads, options.numberOfQReads, nbOverlap, totalTime_optim)) | 
|  | 45     iFOO.deletIntermediateFiles() | 
|  | 46     fTime.close() |