Mercurial > repos > fubar > brokenandnotdeletablebyowneroradmin
annotate rgDynamicScriptWrapper.py @ 2:d95513e50c92
Add README.txt for bitbucket
| author | ross lazarus ross.lazarus@gmail.com | 
|---|---|
| date | Thu, 31 May 2012 09:35:18 +1000 | 
| parents | 0133b97e477e | 
| children | 
| rev | line source | 
|---|---|
| 0 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 1 # rgDynamicScriptWrapper.py | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 2 # derived from | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 3 # rgBaseScriptWrapper.py | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 4 # to run some user supplied code | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 5 # extremely dangerous | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 6 # trusted users only - private site only | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 7 # a list in the xml is searched - only users in the list can run this tool. | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 8 # | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 9 # copyright ross lazarus (ross.lazarus@gmail.com) May 2012 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 10 # | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 11 # all rights reserved | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 12 # Licensed under the LGPL for your pleasure | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 13 # Derived from rgDGE.py in May 2012 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 14 # generalized to run required interpreter | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 15 # to make your own tools based on a given script and interpreter such as perl or python | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 16 # clone this and the corresponding xml wrapper | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 17 # replace the parameters/inputs/outputs and the configfile contents with your script | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 18 # Use the $foo syntax to place your parameter values inside the script to assign them - at run time, the script will be used as a template | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 19 # and returned as part of the output to the user - with the right values for all the parameters. | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 20 # Note that this assumes you want all the outputs arranged as a single Html file output | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 21 # after this generic script runner runs your script with the specified interpreter, | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 22 # it will collect all output files into the specified output_html, making thumbnails for all the pdfs it finds and making links for all the other files. | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 23 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 24 import sys | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 25 import shutil | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 26 import subprocess | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 27 import os | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 28 import time | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 29 import tempfile | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 30 import optparse | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 31 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 32 progname = os.path.split(sys.argv[0])[1] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 33 myversion = 'V000.1 May 2012' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 34 verbose = False | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 35 debug = False | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 36 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 37 # characters that are allowed but need to be escaped | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 38 # also a test sandboxing of any R system commands | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 39 # ultimately futile - we need to generate a new tool | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 40 # which will have no new security problems! | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 41 mapped_chars = { '>' :'__gt__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 42 '<' :'__lt__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 43 "'" :'__sq__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 44 '"' :'__dq__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 45 '{' :'__oc__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 46 '}' :'__cc__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 47 '@' : '__at__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 48 '\n' : '__cn__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 49 '\r' : '__cr__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 50 '\t' : '__tc__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 51 '#' : '__pd__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 52 '[' :'__ob__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 53 ']' :'__cb__', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 54 '\t' : 'Xt', | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 55 'systemCallsAreNotAllowed' : 'system' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 56 } | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 57 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 58 galhtmlprefix = """<?xml version="1.0" encoding="utf-8" ?> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 59 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 60 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 61 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 62 <meta name="generator" content="Galaxy %s tool output - see http://g2.trac.bx.psu.edu/" /> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 63 <title></title> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 64 <link rel="stylesheet" href="/static/style/base.css" type="text/css" /> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 65 </head> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 66 <body> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 67 <div class="document"> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 68 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 69 galhtmlattr = """<b><a href="http://rgenetics.org">Galaxy Rgenetics Base Script Wrapper based </a> tool output %s run at %s</b><br/>""" | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 70 galhtmlpostfix = """</div></body></html>\n""" | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 71 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 72 def timenow(): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 73 """return current time as a string | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 74 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 75 return time.strftime('%d/%m/%Y %H:%M:%S', time.localtime(time.time())) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 76 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 77 def restore_text(text): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 78 """Restores sanitized text""" | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 79 if not text: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 80 return text | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 81 for key, value in mapped_chars.items(): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 82 text = text.replace(value, key) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 83 return text | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 84 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 85 class ScriptRunner: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 86 """class is a wrapper for an arbitrary script | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 87 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 88 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 89 def __init__(self,opts=None): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 90 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 91 run the script | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 92 cheetah/galaxy will provide an escaped string so | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 93 __pd__ your script goes here | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 94 __cr____cn__ourargs __lt__- commandArgs(TRUE) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 95 __cr____cn__inf = ourargs[1] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 96 __cr____cn__outf = ourargs[2] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 97 __cr____cn__inp = read.table(inf,head=T,rownames=F,sep=__sq__Xt__sq__) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 98 __cr____cn__ write.table(inp,outf, quote=FALSE, sep=__dq__Xt__dq__,row.names=F) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 99 __cr____cn__sessionInfo() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 100 __cr____cn__ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 101 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 102 self.thumbformat = 'jpg' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 103 self.opts = opts | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 104 self.toolname = opts.tool_name.replace(' ','_') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 105 s = open(self.opts.script_path,'r').read() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 106 self.script = restore_text(s) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 107 if opts.output_dir: # may not want these complexities if a simple script | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 108 self.tlog = os.path.join(opts.output_dir,"%s_runner.log" % self.toolname) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 109 artifactpath = os.path.join(opts.output_dir,'%s_run.script' % self.toolname) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 110 artifact = open(artifactpath,'w') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 111 artifact.write(self.script) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 112 artifact.write('\n') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 113 artifact.close() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 114 self.cl = [] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 115 a = self.cl.append | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 116 a(opts.interpreter) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 117 a('-') # use stdin | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 118 a(opts.input_tab) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 119 a(opts.output_tab) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 120 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 121 def compressPDF(self,inpdf=None,thumbformat='png'): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 122 """need absolute path to pdf | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 123 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 124 assert os.path.isfile(inpdf), "## Input %s supplied to %s compressPDF not found" % (inpdf,self.myName) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 125 hf,hlog = tempfile.mkstemp(suffix="%s.log" % self.toolname) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 126 sto = open(hlog,'w') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 127 outpdf = '%s_compressed' % inpdf | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 128 cl = ["gs", "-sDEVICE=pdfwrite", "-dNOPAUSE", "-dBATCH", "-sOutputFile=%s" % outpdf,inpdf] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 129 x = subprocess.Popen(cl,stdout=sto,stderr=sto,cwd=self.opts.output_dir) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 130 retval1 = x.wait() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 131 if retval1 == 0: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 132 os.unlink(inpdf) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 133 shutil.move(outpdf,inpdf) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 134 outpng = '%s.%s' % (os.path.splitext(inpdf)[0],thumbformat) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 135 cl2 = ['convert', inpdf, outpng] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 136 x = subprocess.Popen(cl2,stdout=sto,stderr=sto,cwd=self.opts.output_dir) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 137 retval2 = x.wait() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 138 sto.close() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 139 retval = retval1 or retval2 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 140 return retval | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 141 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 142 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 143 def getfSize(self,fpath,outpath): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 144 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 145 format a nice file size string | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 146 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 147 size = '' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 148 fp = os.path.join(outpath,fpath) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 149 if os.path.isfile(fp): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 150 n = float(os.path.getsize(fp)) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 151 if n > 2**20: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 152 size = ' (%1.1f MB)' % (n/2**20) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 153 elif n > 2**10: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 154 size = ' (%1.1f KB)' % (n/2**10) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 155 elif n > 0: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 156 size = ' (%d B)' % (int(n)) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 157 return size | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 158 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 159 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 160 def run(self): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 161 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 162 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 163 if self.opts.output_dir: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 164 sto = open(self.tlog,'w') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 165 p = subprocess.Popen(' '.join(self.cl),shell=True,stdout=sto,stderr=sto,stdin=subprocess.PIPE,cwd=self.opts.output_dir) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 166 else: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 167 p = subprocess.Popen(' '.join(self.cl),shell=True,stdin=subprocess.PIPE) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 168 p.stdin.write(self.script) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 169 p.stdin.close() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 170 retval = p.wait() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 171 if self.opts.output_dir: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 172 sto.close() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 173 flist = os.listdir(self.opts.output_dir) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 174 flist = [x for x in flist if x <> 'Rplots.pdf'] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 175 flist.sort() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 176 html = [galhtmlprefix % progname,] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 177 html.append('<h2>Galaxy %s outputs run at %s</h2></br>Click on a thumbnail below to download the original PDF</br>\n' % (self.toolname,timenow())) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 178 fhtml = [] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 179 if len(flist) > 0: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 180 html.append('<table cellpadding="3" cellspacing="3">\n') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 181 for fname in flist: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 182 dname,e = os.path.splitext(fname) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 183 sfsize = self.getfSize(fname,self.opts.output_dir) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 184 if e.lower() == '.pdf' : # compress and make a thumbnail | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 185 thumb = '%s.%s' % (dname,self.thumbformat) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 186 pdff = os.path.join(self.opts.output_dir,fname) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 187 retval = self.compressPDF(inpdf=pdff,thumbformat=self.thumbformat) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 188 if retval == 0: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 189 s= '<tr><td><a href="%s"><img src="%s" title="Click to download a PDF of %s" hspace="10" width="600"></a></td></tr>\n' % (fname,thumb,fname) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 190 html.append(s) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 191 fhtml.append('<li><a href="%s">%s %s</a></li>' % (fname,fname,sfsize)) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 192 else: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 193 fhtml.append('<li><a href="%s">%s %s</a></li>' % (fname,fname,sfsize)) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 194 html.append('</table>\n') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 195 if len(fhtml) > 0: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 196 fhtml.insert(0,'<ul>') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 197 fhtml.append('</ul>') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 198 html += fhtml # add all non-pdf files to the end of the display | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 199 else: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 200 html.append('<h2>### Error - %s returned no files - please confirm that parameters are sane</h1>' % self.opts.interpreter) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 201 html.append('<h3>%s log follows below</h3><hr><pre>\n' % self.opts.interpreter) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 202 rlog = open(self.tlog,'r').readlines() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 203 html += rlog | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 204 html.append('%s CL = %s</br>\n' % (self.toolname,' '.join(sys.argv))) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 205 html.append('CL = %s</br>\n' % (' '.join(self.cl))) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 206 html.append('</pre>\n') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 207 html.append(galhtmlattr % (progname,timenow())) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 208 html.append(galhtmlpostfix) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 209 htmlf = file(self.opts.output_html,'w') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 210 htmlf.write('\n'.join(html)) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 211 htmlf.write('\n') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 212 htmlf.close() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 213 return retval | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 214 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 215 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 216 def main(): | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 217 u = """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 218 This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 219 <command interpreter="python">rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 220 </command> | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 221 """ | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 222 permitted_users = ['rlazarus@bakeridi.edu.au','akaspi@bakeridi.edu.au','mziemann@bakeridi.edu.edu'] | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 223 op = optparse.OptionParser() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 224 a = op.add_option | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 225 a('--script_path',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 226 a('--tool_name',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 227 a('--interpreter',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 228 a('--output_dir',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 229 a('--output_html',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 230 a('--input_tab',default='NONE') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 231 a('--output_tab',default='NONE') | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 232 a('--user_email',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 233 a('--bad_user',default=None) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 234 opts, args = op.parse_args() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 235 assert not opts.bad_user,'%s is NOT authorized to use this tool. Please ask your friendly admin' % opts.bad_user | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 236 assert opts.tool_name,'## Dynamic script wrapper expects a tool name - eg --tool_name=DESeq' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 237 assert opts.interpreter,'## Dynamic script wrapper expects an interpreter - eg --interpreter=Rscript' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 238 assert os.path.isfile(opts.script_path),'## Dynamic script wrapper expects a script path - eg --script_path=foo.R' | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 239 if opts.output_dir: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 240 try: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 241 os.makedirs(opts.output_dir) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 242 except: | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 243 pass | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 244 r = ScriptRunner(opts) | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 245 retcode = r.run() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 246 if retcode: | 
| 1 
0133b97e477e
Write to stderr to force job runner to realise that the tool failed - it ignores return codes :(
 ross lazarus ross.lazarus@gmail.com parents: 
0diff
changeset | 247 print >> sys.stderr,'Executing your script %s failed - return code was %d' % (opts.tool_name,retcode) | 
| 0 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 248 sys.exit(retcode) # indicate failure to job runner | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 249 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 250 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 251 if __name__ == "__main__": | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 252 main() | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 253 | 
| 
fda8032fe989
Initial checkin of dynamic script runner. Goal is to add code to generate a new toolshed entry once the script works correctly
 ross lazarus ross.lazarus@gmail.com parents: diff
changeset | 254 | 
