Mercurial > repos > fubar > biocdepgen_r_3_1_2
changeset 1:faafc60f3d6a draft default tip
Uploaded
author | fubar |
---|---|
date | Tue, 20 Jan 2015 19:29:17 -0500 |
parents | 6f8c0651345b |
children | |
files | r_bioc_depgen_4/r_bioc_depgen_4.py r_bioc_depgen_4/r_bioc_depgen_4.xml r_bioc_depgen_4/tool_dependencies.xml r_bioc_depgen_r_3_1_2/r_bioc_depgen_r_3_1_2.py r_bioc_depgen_r_3_1_2/r_bioc_depgen_r_3_1_2.xml r_bioc_depgen_r_3_1_2/test-data/r_bioc_depgen_r_3_1_2_test1_output.html r_bioc_depgen_r_3_1_2/test-data/r_bioc_depgen_r_3_1_2_test1_output.xls r_bioc_depgen_r_3_1_2/test-data/test1_out.log r_bioc_depgen_r_3_1_2/tool_dependencies.xml |
diffstat | 9 files changed, 2430 insertions(+), 1284 deletions(-) [+] |
line wrap: on
line diff
--- a/r_bioc_depgen_4/r_bioc_depgen_4.py Tue Jan 20 05:08:04 2015 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,968 +0,0 @@ -# r_bioc_depgen_4/r_bioc_depgen_4.py - a self annotated version of rgToolFactory2.py generated by running rgToolFactory2.py -# to make a new Galaxy tool called r_bioc_depgen_4 -# User ross.lazarus@gmail.com at 16/01/2015 13:03:33 -# rgToolFactoryMultIn.py -# see https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home -# -# copyright ross lazarus (ross stop lazarus at gmail stop com) May 2012 -# -# all rights reserved -# Licensed under the LGPL -# suggestions for improvement and bug fixes welcome at https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home -# -# January 2015 -# in the process of building a complex tool -# added ability to choose one of the current toolshed package_r or package_perl or package_python dependencies and source that package -# need to add that package to tool_dependencies -# -# sept 2014 added additional params from -# https://bitbucket.org/mvdbeek/dockertoolfactory/src/d4863bcf7b521532c7e8c61b6333840ba5393f73/DockerToolFactory.py?at=default -# passing them is complex -# and they are restricted to NOT contain commas or double quotes to ensure that they can be safely passed together on -# the toolfactory command line as a comma delimited double quoted string for parsing and passing to the script -# see examples on this tool form - -# august 2014 - -# Allows arbitrary number of input files -# NOTE positional parameters are now passed to script -# and output (may be "None") is *before* arbitrary number of inputs -# -# march 2014 -# had to remove dependencies because cross toolshed dependencies are not possible - can't pre-specify a toolshed url for graphicsmagick and ghostscript -# grrrrr - night before a demo -# added dependencies to a tool_dependencies.xml if html page generated so generated tool is properly portable -# -# added ghostscript and graphicsmagick as dependencies -# fixed a wierd problem where gs was trying to use the new_files_path from universe (database/tmp) as ./database/tmp -# errors ensued -# -# august 2013 -# found a problem with GS if $TMP or $TEMP missing - now inject /tmp and warn -# -# july 2013 -# added ability to combine images and individual log files into html output -# just make sure there's a log file foo.log and it will be output -# together with all images named like "foo_*.pdf -# otherwise old format for html -# -# January 2013 -# problem pointed out by Carlos Borroto -# added escaping for <>$ - thought I did that ages ago... -# -# August 11 2012 -# changed to use shell=False and cl as a sequence - -# This is a Galaxy tool factory for simple scripts in python, R or whatever ails ye. -# It also serves as the wrapper for the new tool. -# -# you paste and run your script -# Only works for simple scripts that read one input from the history. -# Optionally can write one new history dataset, -# and optionally collect any number of outputs into links on an autogenerated HTML page. - -# DO NOT install on a public or important site - please. - -# installed generated tools are fine if the script is safe. -# They just run normally and their user cannot do anything unusually insecure -# but please, practice safe toolshed. -# Read the fucking code before you install any tool -# especially this one - -# After you get the script working on some test data, you can -# optionally generate a toolshed compatible gzip file -# containing your script safely wrapped as an ordinary Galaxy script in your local toolshed for -# safe and largely automated installation in a production Galaxy. - -# If you opt for an HTML output, you get all the script outputs arranged -# as a single Html history item - all output files are linked, thumbnails for all the pdfs. -# Ugly but really inexpensive. -# -# Patches appreciated please. -# -# -# long route to June 2012 product -# Behold the awesome power of Galaxy and the toolshed with the tool factory to bind them -# derived from an integrated script model -# called rgBaseScriptWrapper.py -# Note to the unwary: -# This tool allows arbitrary scripting on your Galaxy as the Galaxy user -# There is nothing stopping a malicious user doing whatever they choose -# Extremely dangerous!! -# Totally insecure. So, trusted users only -# -# preferred model is a developer using their throw away workstation instance - ie a private site. -# no real risk. The universe_wsgi.ini admin_users string is checked - only admin users are permitted to run this tool. -# - -import sys -import shutil -import subprocess -import os -import time -import tempfile -import optparse -import tarfile -import re -import shutil -import math - -progname = os.path.split(sys.argv[0])[1] -myversion = 'V001.1 March 2014' -verbose = False -debug = False -toolFactoryURL = 'https://bitbucket.org/fubar/galaxytoolfactory' - -# if we do html we need these dependencies specified in a tool_dependencies.xml file and referred to in the generated -# tool xml - -def timenow(): - """return current time as a string - """ - return time.strftime('%d/%m/%Y %H:%M:%S', time.localtime(time.time())) - -html_escape_table = { - "&": "&", - ">": ">", - "<": "<", - "$": "\$" - } - -def html_escape(text): - """Produce entities within text.""" - return "".join(html_escape_table.get(c,c) for c in text) - - -def html_unescape(text): - """Revert entities within text.""" - t = text.replace('&','&').replace('>','>').replace('<','<').replace('\$','$') - return t - -def cmd_exists(cmd): - return subprocess.call("type " + cmd, shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0 - -def parse_citations(citations_text): - """ - """ - citations = [c for c in citations_text.split("**ENTRY**") if c.strip()] - citation_tuples = [] - for citation in citations: - if citation.startswith("doi"): - citation_tuples.append( ("doi", citation[len("doi"):].strip() ) ) - else: - citation_tuples.append( ("bibtex", citation[len("bibtex"):].strip() ) ) - return citation_tuples - -def shell_source(script): - """need a way to source a Galaxy tool interpreter env.sh so we can use that dependency - package - see http://pythonwise.blogspot.fr/2010/04/sourcing-shell-script.html - Sometime you want to emulate the action of "source" in bash, - settings some environment variables. Here is a way to do it. - Note that we have to finesse the automagic exports using nulls as newlines for env""" - pipe = subprocess.Popen("env -i ; . %s ; env -0" % script, stdout=subprocess.PIPE, shell=True) - output = pipe.communicate()[0] - outl = output.split('\0') - outl = [x for x in outl if len(x.split("=")) == 2] - newenv = dict((line.split("=", 1) for line in outl)) - os.environ.update(newenv) - -class ScriptRunner: - """class is a wrapper for an arbitrary script - note funky templating. this should all be done proper. - Problem is, this kludge developed quite naturally and seems to work ok with - little overhead... - - """ - - - def __init__(self,opts=None,treatbashSpecial=True): - """ - cleanup inputs, setup some outputs - - """ - - self.toolhtmldepinterpskel = """<?xml version="1.0"?> - <tool_dependency> - <package name="ghostscript" version="9.10"> - <repository name="package_ghostscript_9_10" owner="devteam" prior_installation_required="True" /> - </package> - <package name="graphicsmagick" version="1.3.18"> - <repository name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" /> - </package> - <package name="%(interpreter_name)s" version="%(interpreter_version)s"> - <repository name="%(interpreter_pack)s" owner="%(interpreter_owner)s" prior_installation_required="True" /> - </package> - - <readme> - %(readme)s - This file was autogenerated by the Galaxy Tool Factory 2 - </readme> - </tool_dependency> - """ - - self.toolhtmldepskel = """<?xml version="1.0"?> - <tool_dependency> - <package name="ghostscript" version="9.10"> - <repository name="package_ghostscript_9_10" owner="devteam" prior_installation_required="True" /> - </package> - <package name="graphicsmagick" version="1.3.18"> - <repository name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" /> - </package> - <readme> - %(readme)s - This file was autogenerated by the Galaxy Tool Factory 2 - </readme> - </tool_dependency> - """ - - self.emptytoolhtmldepskel = """<?xml version="1.0"?> - <tool_dependency> - <readme> - %(readme)s - This file was autogenerated by the Galaxy Tool Factory 2 - </readme> - </tool_dependency> - """ - - self.protorequirements = """<requirements> - <requirement type="package" version="9.10">ghostscript</requirement> - <requirement type="package" version="1.3.18">graphicsmagick</requirement> - </requirements>""" - - self.protorequirements_interpreter = """<requirements> - <requirement type="package" version="9.10">ghostscript</requirement> - <requirement type="package" version="1.3.18">graphicsmagick</requirement> - <requirement type="package" version="%(interpreter_version)s">%(interpreter_name)s</requirement> - </requirements>""" - - - self.newCommand=""" - %(toolname)s.py --script_path "$runMe" --interpreter "%(interpreter)s" - --tool_name "%(toolname)s" - %(command_inputs)s - %(command_outputs)s - """ - - self.tooltestsTabOnly = """ - <test> - %(test1Inputs)s - <param name="job_name" value="test1"/> - <param name="runMe" value="$runMe"/> - <output name="output1="%(test1Output)s" ftype="tabular"/> - %(additionalParams)s - </test> - """ - - self.tooltestsHTMLOnly = """ - <test> - %(test1Inputs)s - <param name="job_name" value="test1"/> - <param name="runMe" value="$runMe"/> - %(additionalParams)s - <output name="html_file" file="%(test1HTML)s" ftype="html" lines_diff="5"/> - </test> - """ - - self.tooltestsBoth = """ - <test> - %(test1Inputs)s - <param name="job_name" value="test1"/> - <param name="runMe" value="$runMe"/> - %(additionalParams)s - <output name="output1" file="%(test1Output)s" ftype="tabular" /> - <output name="html_file" file="%(test1HTML)s" ftype="html" lines_diff="10"/> - </test> - """ - - self.newXML="""<tool id="%(toolid)s" name="%(toolname)s" version="%(tool_version)s"> -%(tooldesc)s -%(requirements)s -<command interpreter="python"> -%(command)s -</command> -<inputs> -%(inputs)s -%(additionalInputs)s -</inputs> -<outputs> -%(outputs)s -</outputs> -<configfiles> -<configfile name="runMe"> -%(script)s -</configfile> -</configfiles> -<tests> -%(tooltests)s -</tests> -<help> - -%(help)s - -This tool was autogenerated from a user provided script using the Galaxy Tool Factory 2 -https://toolshed.g2.bx.psu.edu/view/fubar/tool_factory_2 -</help> -<citations> - %(citations)s - <citation type="doi">10.1093/bioinformatics/bts573</citation> -</citations> -</tool>""" - - self.useGM = cmd_exists('gm') - self.useIM = cmd_exists('convert') - self.useGS = cmd_exists('gs') - self.temp_warned = False # we want only one warning if $TMP not set - self.treatbashSpecial = treatbashSpecial - if opts.output_dir: # simplify for the tool tarball - os.chdir(opts.output_dir) - self.thumbformat = 'png' - self.opts = opts - self.toolname = re.sub('[^a-zA-Z0-9_]+', '', opts.tool_name) # a sanitizer now does this but.. - self.toolid = self.toolname - self.myname = sys.argv[0] # get our name because we write ourselves out as a tool later - self.pyfile = self.myname # crude but efficient - the cruft won't hurt much - self.xmlfile = '%s.xml' % self.toolname - rx = open(self.opts.script_path,'r').readlines() - rx = [x.rstrip() for x in rx] # remove pesky dos line endings if needed - self.script = '\n'.join(rx) - fhandle,self.sfile = tempfile.mkstemp(prefix=self.toolname,suffix=".%s" % (opts.interpreter)) - tscript = open(self.sfile,'w') # use self.sfile as script source for Popen - tscript.write(self.script) - tscript.close() - self.indentedScript = " %s" % '\n'.join([' %s' % html_escape(x) for x in rx]) # for restructured text in help - self.escapedScript = "%s" % '\n'.join([' %s' % html_escape(x) for x in rx]) - self.elog = os.path.join(self.opts.output_dir,"%s_error.log" % self.toolname) - if opts.output_dir: # may not want these complexities - self.tlog = os.path.join(self.opts.output_dir,"%s_runner.log" % self.toolname) - art = '%s.%s' % (self.toolname,opts.interpreter) - artpath = os.path.join(self.opts.output_dir,art) # need full path - artifact = open(artpath,'w') # use self.sfile as script source for Popen - artifact.write(self.script) - artifact.close() - self.cl = [] - self.html = [] - self.test1Inputs = [] # now a list - a = self.cl.append - a(opts.interpreter) - a(self.sfile) - # if multiple inputs - positional or need to distinguish them with cl params - if opts.input_tab: - tests = [] - for i,intab in enumerate(opts.input_tab): # if multiple, make tests - if intab.find(',') <> -1: - (gpath,uname) = intab.split(',') - else: - gpath = uname = intab - tests.append(os.path.basename(gpath)) - self.test1Inputs = '<param name="input_tab" value="%s" />' % (','.join(tests)) - else: - self.test1Inputs = '' - # we always pass path,name pairs in using python optparse append - # but the command line has to be different - self.infile_paths = '' - self.infile_names = '' - if self.opts.input_tab: - self.infile_paths = ','.join([x.split(',')[0].strip() for x in self.opts.input_tab]) - self.infile_names = ','.join([x.split(',')[1].strip() for x in self.opts.input_tab]) - if self.opts.interpreter == 'python': - # yes, this is how additional parameters are always passed in python - to the TF itself and to - # scripts to avoid having unknown parameter names (yes, they can be parsed but...) on the command line - if self.opts.input_tab: - a('--INPATHS "%s"' % (self.infile_paths)) - a('--INNAMES "%s"' % (self.infile_names)) - if self.opts.output_tab: - a('--OUTPATH "%s"' % self.opts.output_tab) - for p in opts.additional_parameters: - p = p.replace('"','') - psplit = p.split(',') - param = html_unescape(psplit[0]) - value = html_unescape(psplit[1]) - a('%s="%s"' % (param,value)) - if (self.opts.interpreter == 'Rscript'): - # pass params on command line - if self.opts.input_tab: - a('INPATHS="%s"' % self.infile_paths) - a('INNAMES="%s"' % self.infile_names) - if self.opts.output_tab: - a('OUTPATH="%s"' % self.opts.output_tab) - for p in opts.additional_parameters: - p = p.replace('"','') - psplit = p.split(',') - param = html_unescape(psplit[0]) - value = html_unescape(psplit[1]) - a('%s="%s"' % (param,value)) - if (self.opts.interpreter == 'perl'): - # pass params on command line - if self.opts.input_tab: - a('%s' % self.infile_paths) - a('%s' % self.infile_names) - if self.opts.output_tab: - a('%s' % self.opts.output_tab) - for p in opts.additional_parameters: - p = p.replace('"','') - psplit = p.split(',') - param = html_unescape(psplit[0]) - value = html_unescape(psplit[1]) - if (value.find(' ') <> -1): - a('%s="%s"' % (param,value)) - else: - a('%s=%s' % (param,value)) - if self.opts.interpreter == 'sh' or self.opts.interpreter == 'bash': - # more is better - now move all params into environment AND drop on to command line. - self.cl.insert(0,'env') - if self.opts.input_tab: - self.cl.insert(1,'INPATHS=%s' % (self.infile_paths)) - self.cl.insert(2,'INNAMES=%s' % (self.infile_names)) - if self.opts.output_tab: - self.cl.insert(3,'OUTPATH=%s' % (self.opts.output_tab)) - a('OUTPATH=%s' % (self.opts.output_tab)) - # sets those environment variables for the script - # additional params appear in CL - yes, it's confusing - for i,p in enumerate(opts.additional_parameters): - psplit = p.split(',') - param = html_unescape(psplit[0]) - value = html_unescape(psplit[1]) - if (value.find(' ') <> -1): - a('%s="%s"' % (param,value)) - self.cl.insert(4+i,'%s="%s"' % (param,value)) - else: - a('%s=%s' % (param,value)) - self.cl.insert(4+i,'%s=%s' % (param,value)) - self.interp_owner = None - self.interp_pack = None - self.interp_revision = None - self.interp_version = None - if opts.envshpath <> 'system': # need to parse out details for our tool_dependency - try: # fragile - depends on common naming convention as at jan 2015 = package_[interp]_v0_v1_v2... = version v0.v1.v2.. is in play - - packdetails = opts.envshpath.split(os.path.sep)[-4:-1] # eg ['fubar', 'package_r_3_1_1', '63cdb9b2234c'] - self.interpreter_owner = packdetails[0] - self.interpreter_pack = packdetails[1] - self.interpreter_name = packdetails[1].split('_')[1].upper() - self.interpreter_revision = packdetails[2] - self.interpreter_version = '.'.join(packdetails[1].split('_')[2:]) - except: - pass - self.outFormats = opts.output_format - self.inputFormats = opts.input_formats - self.test1Output = '%s_test1_output.xls' % self.toolname - self.test1HTML = '%s_test1_output.html' % self.toolname - - def makeXML(self): - """ - Create a Galaxy xml tool wrapper for the new script as a string to write out - fixme - use templating or something less fugly than this example of what we produce - - <tool id="reverse" name="reverse" version="0.01"> - <description>a tabular file</description> - <command interpreter="python"> - reverse.py --script_path "$runMe" --interpreter "python" - --tool_name "reverse" --input_tab "$input1" --output_tab "$output1" - </command> - <inputs> - <param name="input1" type="data" format="tabular" label="Select one or more input files from your history"/> - <param name="job_name" type="text" label="Supply a name for the outputs to remind you what they contain" value="reverse"/> - </inputs> - <outputs> - <data format="tabular" name="output1q" label="${job_name}"/> - - </outputs> - <help> - -**What it Does** - -Reverse the columns in a tabular file - - </help> - <configfiles> - <configfile name="runMe"> - -# reverse order of columns in a tabular file -import sys -inp = sys.argv[1] -outp = sys.argv[2] -i = open(inp,'r') -o = open(outp,'w') -for row in i: - rs = row.rstrip().split('\t') - rs.reverse() - o.write('\t'.join(rs)) - o.write('\n') -i.close() -o.close() - - - </configfile> - </configfiles> - </tool> - - """ - - # these templates need a dict with the right keys to match the parameters - outputs, help, code... - - xdict = {} - xdict['additionalParams'] = '' - xdict['additionalInputs'] = '' - if self.opts.additional_parameters: - if self.opts.edit_additional_parameters: # add to new tool form with default value set to original value - xdict['additionalInputs'] = '\n'.join(['<param name="%s" value="%s" label="%s" help="%s" type="%s"/>' % \ - (x.split(',')[0],html_escape(x.split(',')[1]),html_escape(x.split(',')[2]),html_escape(x.split(',')[3]), x.split(',')[4]) for x in self.opts.additional_parameters]) - xdict['additionalParams'] = '\n'.join(['<param name="%s" value="%s" />' % (x.split(',')[0],html_escape(x.split(',')[1])) for x in self.opts.additional_parameters]) - xdict['interpreter_owner'] = self.interpreter_owner - xdict['interpreter_version'] = self.interpreter_version - xdict['interpreter_pack'] = self.interpreter_pack - xdict['interpreter_name'] = self.interpreter_name - xdict['requirements'] = '' - if self.opts.include_dependencies == "yes": - if self.opts.envshpath <> 'system': - xdict['requirements'] = self.protorequirements_interpreter % xdict - else: - xdict['requirements'] = self.protorequirements - xdict['tool_version'] = self.opts.tool_version - xdict['test1HTML'] = self.test1HTML - xdict['test1Output'] = self.test1Output - xdict['test1Inputs'] = self.test1Inputs - if self.opts.make_HTML and self.opts.output_tab: - xdict['tooltests'] = self.tooltestsBoth % xdict - elif self.opts.make_HTML: - xdict['tooltests'] = self.tooltestsHTMLOnly % xdict - else: - xdict['tooltests'] = self.tooltestsTabOnly % xdict - xdict['script'] = self.escapedScript - # configfile is least painful way to embed script to avoid external dependencies - # but requires escaping of <, > and $ to avoid Mako parsing - if self.opts.help_text: - helptext = open(self.opts.help_text,'r').readlines() - helptext = [html_escape(x) for x in helptext] # must html escape here too - thanks to Marius van den Beek - xdict['help'] = ''.join([x for x in helptext]) - else: - xdict['help'] = 'Please ask the tool author (%s) for help as none was supplied at tool generation\n' % (self.opts.user_email) - coda = ['**Script**','Pressing execute will run the following code over your input file and generate some outputs in your history::'] - coda.append('\n') - coda.append(self.indentedScript) - coda.append('\n**Attribution**\nThis Galaxy tool was created by %s at %s\nusing the Galaxy Tool Factory.\n' % (self.opts.user_email,timenow())) - coda.append('See %s for details of that project' % (toolFactoryURL)) - coda.append('Please cite: Creating re-usable tools from scripts: The Galaxy Tool Factory. Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team. ') - coda.append('Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573\n') - xdict['help'] = '%s\n%s' % (xdict['help'],'\n'.join(coda)) - if self.opts.tool_desc: - xdict['tooldesc'] = '<description>%s</description>' % self.opts.tool_desc - else: - xdict['tooldesc'] = '' - xdict['command_outputs'] = '' - xdict['outputs'] = '' - if self.opts.input_tab: - cins = ['\n',] - cins.append('--input_formats %s' % self.opts.input_formats) - cins.append('#for intab in $input1:') - cins.append('--input_tab "${intab},${intab.name}"') - cins.append('#end for\n') - xdict['command_inputs'] = '\n'.join(cins) - xdict['inputs'] = '''<param name="input_tab" multiple="true" type="data" format="%s" label="Select one or more %s input files from your history" - help="Multiple inputs may be selected assuming the script can deal with them..."/> \n''' % (self.inputFormats,self.inputFormats) - else: - xdict['command_inputs'] = '' # assume no input - eg a random data generator - xdict['inputs'] = '' - if (len(self.opts.additional_parameters) > 0): - cins = ['\n',] - for params in self.opts.additional_parameters: - psplit = params.split(',') # name,value... - psplit[3] = html_escape(psplit[3]) - if self.opts.edit_additional_parameters: - psplit[1] = '$%s' % psplit[0] # replace with form value - else: - psplit[1] = html_escape(psplit[1]) # leave prespecified value - cins.append('--additional_parameters """%s"""' % ','.join(psplit)) - xdict['command_inputs'] = '%s\n%s' % (xdict['command_inputs'],'\n'.join(cins)) - xdict['inputs'] += '<param name="job_name" type="text" size="60" label="Supply a name for the outputs to remind you what they contain" value="%s"/> \n' % self.toolname - xdict['toolname'] = self.toolname - xdict['toolid'] = self.toolid - xdict['interpreter'] = self.opts.interpreter - xdict['scriptname'] = self.sfile - if self.opts.make_HTML: - xdict['command_outputs'] += ' --output_dir "$html_file.files_path" --output_html "$html_file" --make_HTML "yes"' - xdict['outputs'] += ' <data format="html" name="html_file" label="${job_name}.html"/>\n' - else: - xdict['command_outputs'] += ' --output_dir "./"' - if self.opts.output_tab: - xdict['command_outputs'] += ' --output_tab "$output1"' - xdict['outputs'] += ' <data format="%s" name="output1" label="${job_name}"/>\n' % self.outFormats - xdict['command'] = self.newCommand % xdict - if self.opts.citations: - citationstext = open(self.opts.citations,'r').read() - citation_tuples = parse_citations(citationstext) - citations_xml = "" - for citation_type, citation_content in citation_tuples: - citation_xml = """<citation type="%s">%s</citation>""" % (citation_type, html_escape(citation_content)) - citations_xml += citation_xml - xdict['citations'] = citations_xml - else: - xdict['citations'] = "" - xmls = self.newXML % xdict - xf = open(self.xmlfile,'w') - xf.write(xmls) - xf.write('\n') - xf.close() - # ready for the tarball - - - def makeTooltar(self): - """ - a tool is a gz tarball with eg - /toolname/tool.xml /toolname/tool.py /toolname/test-data/test1_in.foo ... - """ - retval = self.run() - if retval: - print >> sys.stderr,'## Run failed. Cannot build yet. Please fix and retry' - sys.exit(1) - tdir = self.toolname - os.mkdir(tdir) - self.makeXML() - if self.opts.help_text: - hlp = open(self.opts.help_text,'r').read() - else: - hlp = 'Please ask the tool author for help as none was supplied at tool generation\n' - readme_dict = {'readme':hlp,'interpreter':self.opts.interpreter,'interpreter_version':self.interpreter_version,'interpreter_name':self.interpreter_name, - 'interpreter_owner':self.interpreter_owner,'interpreter_pack':self.interpreter_pack} - if self.opts.include_dependencies == "yes": - if self.opts.envshpath == 'system': - tooldepcontent = self.toolhtmldepskel % readme_dict - else: - tooldepcontent = self.toolhtmldepinterpskel % readme_dict - else: - tooldepcontent = self.emptytoolhtmldepskel % readme_dictls -l - depf = open(os.path.join(tdir,'tool_dependencies.xml'),'w') - depf.write(tooldepcontent) - depf.write('\n') - depf.close() - if self.opts.input_tab: # no reproducible test otherwise? TODO: maybe.. - testdir = os.path.join(tdir,'test-data') - os.mkdir(testdir) # make tests directory - for i,intab in enumerate(self.opts.input_tab): - si = self.opts.input_tab[i] - if si.find(',') <> -1: - s = si.split(',')[0] - si = s - dest = os.path.join(testdir,os.path.basename(si)) - if si <> dest: - shutil.copyfile(si,dest) - if self.opts.output_tab: - shutil.copyfile(self.opts.output_tab,os.path.join(testdir,self.test1Output)) - if self.opts.make_HTML: - shutil.copyfile(self.opts.output_html,os.path.join(testdir,self.test1HTML)) - if self.opts.output_dir: - shutil.copyfile(self.tlog,os.path.join(testdir,'test1_out.log')) - outpif = '%s.py' % self.toolname # new name - outpiname = os.path.join(tdir,outpif) # path for the tool tarball - pyin = os.path.basename(self.pyfile) # our name - we rewrite ourselves (TM) - notes = ['# %s - a self annotated version of %s generated by running %s\n' % (outpiname,pyin,pyin),] - notes.append('# to make a new Galaxy tool called %s\n' % self.toolname) - notes.append('# User %s at %s\n' % (self.opts.user_email,timenow())) - pi = open(self.pyfile,'r').readlines() # our code becomes new tool wrapper (!) - first Galaxy worm - notes += pi - outpi = open(outpiname,'w') - outpi.write(''.join(notes)) - outpi.write('\n') - outpi.close() - stname = os.path.join(tdir,self.sfile) - if not os.path.exists(stname): - shutil.copyfile(self.sfile, stname) - xtname = os.path.join(tdir,self.xmlfile) - if not os.path.exists(xtname): - shutil.copyfile(self.xmlfile,xtname) - tarpath = "%s.tar.gz" % self.toolname - tar = tarfile.open(tarpath, "w:gz") - tar.add(tdir,arcname='%s' % self.toolname) - tar.close() - shutil.copyfile(tarpath,self.opts.new_tool) - shutil.rmtree(tdir) - ## TODO: replace with optional direct upload to local toolshed? - return retval - - - def compressPDF(self,inpdf=None,thumbformat='png'): - """need absolute path to pdf - note that GS gets confoozled if no $TMP or $TEMP - so we set it - """ - assert os.path.isfile(inpdf), "## Input %s supplied to %s compressPDF not found" % (inpdf,self.myName) - hlog = os.path.join(self.opts.output_dir,"compress_%s.txt" % os.path.basename(inpdf)) - sto = open(hlog,'a') - our_env = os.environ.copy() - our_tmp = our_env.get('TMP',None) - if not our_tmp: - our_tmp = our_env.get('TEMP',None) - if not (our_tmp and os.path.exists(our_tmp)): - newtmp = os.path.join(self.opts.output_dir,'tmp') - try: - os.mkdir(newtmp) - except: - sto.write('## WARNING - cannot make %s - it may exist or permissions need fixing\n' % newtmp) - our_env['TEMP'] = newtmp - if not self.temp_warned: - sto.write('## WARNING - no $TMP or $TEMP!!! Please fix - using %s temporarily\n' % newtmp) - self.temp_warned = True - outpdf = '%s_compressed' % inpdf - cl = ["gs", "-sDEVICE=pdfwrite", "-dNOPAUSE", "-dUseCIEColor", "-dBATCH","-dPDFSETTINGS=/printer", "-sOutputFile=%s" % outpdf,inpdf] - x = subprocess.Popen(cl,stdout=sto,stderr=sto,cwd=self.opts.output_dir,env=our_env) - retval1 = x.wait() - sto.close() - if retval1 == 0: - os.unlink(inpdf) - shutil.move(outpdf,inpdf) - os.unlink(hlog) - hlog = os.path.join(self.opts.output_dir,"thumbnail_%s.txt" % os.path.basename(inpdf)) - sto = open(hlog,'w') - outpng = '%s.%s' % (os.path.splitext(inpdf)[0],thumbformat) - if self.useGM: - cl2 = ['gm', 'convert', inpdf, outpng] - else: # assume imagemagick - cl2 = ['convert', inpdf, outpng] - x = subprocess.Popen(cl2,stdout=sto,stderr=sto,cwd=self.opts.output_dir,env=our_env) - retval2 = x.wait() - sto.close() - if retval2 == 0: - os.unlink(hlog) - retval = retval1 or retval2 - return retval - - - def getfSize(self,fpath,outpath): - """ - format a nice file size string - """ - size = '' - fp = os.path.join(outpath,fpath) - if os.path.isfile(fp): - size = '0 B' - n = float(os.path.getsize(fp)) - if n > 2**20: - size = '%1.1f MB' % (n/2**20) - elif n > 2**10: - size = '%1.1f KB' % (n/2**10) - elif n > 0: - size = '%d B' % (int(n)) - return size - - def makeHtml(self): - """ Create an HTML file content to list all the artifacts found in the output_dir - """ - - galhtmlprefix = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> - <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="generator" content="Galaxy %s tool output - see http://g2.trac.bx.psu.edu/" /> - <title></title> - <link rel="stylesheet" href="/static/style/base.css" type="text/css" /> - </head> - <body> - <div class="toolFormBody"> - """ - galhtmlattr = """<hr/><div class="infomessage">This tool (%s) was generated by the <a href="https://bitbucket.org/fubar/galaxytoolfactory/overview">Galaxy Tool Factory</a></div><br/>""" - galhtmlpostfix = """</div></body></html>\n""" - - flist = os.listdir(self.opts.output_dir) - flist = [x for x in flist if x <> 'Rplots.pdf'] - flist.sort() - html = [] - html.append(galhtmlprefix % progname) - html.append('<div class="infomessage">Galaxy Tool "%s" run at %s</div><br/>' % (self.toolname,timenow())) - fhtml = [] - if len(flist) > 0: - logfiles = [x for x in flist if x.lower().endswith('.log')] # log file names determine sections - logfiles.sort() - logfiles = [x for x in logfiles if os.path.abspath(x) <> os.path.abspath(self.tlog)] - logfiles.append(os.path.abspath(self.tlog)) # make it the last one - pdflist = [] - npdf = len([x for x in flist if os.path.splitext(x)[-1].lower() == '.pdf']) - for rownum,fname in enumerate(flist): - dname,e = os.path.splitext(fname) - sfsize = self.getfSize(fname,self.opts.output_dir) - if e.lower() == '.pdf' : # compress and make a thumbnail - thumb = '%s.%s' % (dname,self.thumbformat) - pdff = os.path.join(self.opts.output_dir,fname) - retval = self.compressPDF(inpdf=pdff,thumbformat=self.thumbformat) - if retval == 0: - pdflist.append((fname,thumb)) - else: - pdflist.append((fname,fname)) - if (rownum+1) % 2 == 0: - fhtml.append('<tr class="odd_row"><td><a href="%s">%s</a></td><td>%s</td></tr>' % (fname,fname,sfsize)) - else: - fhtml.append('<tr><td><a href="%s">%s</a></td><td>%s</td></tr>' % (fname,fname,sfsize)) - for logfname in logfiles: # expect at least tlog - if more - if os.path.abspath(logfname) == os.path.abspath(self.tlog): # handled later - sectionname = 'All tool run' - if (len(logfiles) > 1): - sectionname = 'Other' - ourpdfs = pdflist - else: - realname = os.path.basename(logfname) - sectionname = os.path.splitext(realname)[0].split('_')[0] # break in case _ added to log - ourpdfs = [x for x in pdflist if os.path.basename(x[0]).split('_')[0] == sectionname] - pdflist = [x for x in pdflist if os.path.basename(x[0]).split('_')[0] <> sectionname] # remove - nacross = 1 - npdf = len(ourpdfs) - - if npdf > 0: - nacross = math.sqrt(npdf) ## int(round(math.log(npdf,2))) - if int(nacross)**2 != npdf: - nacross += 1 - nacross = int(nacross) - width = min(400,int(1200/nacross)) - html.append('<div class="toolFormTitle">%s images and outputs</div>' % sectionname) - html.append('(Click on a thumbnail image to download the corresponding original PDF image)<br/>') - ntogo = nacross # counter for table row padding with empty cells - html.append('<div><table class="simple" cellpadding="2" cellspacing="2">\n<tr>') - for i,paths in enumerate(ourpdfs): - fname,thumb = paths - s= """<td><a href="%s"><img src="%s" title="Click to download a PDF of %s" hspace="5" width="%d" - alt="Image called %s"/></a></td>\n""" % (fname,thumb,fname,width,fname) - if ((i+1) % nacross == 0): - s += '</tr>\n' - ntogo = 0 - if i < (npdf - 1): # more to come - s += '<tr>' - ntogo = nacross - else: - ntogo -= 1 - html.append(s) - if html[-1].strip().endswith('</tr>'): - html.append('</table></div>\n') - else: - if ntogo > 0: # pad - html.append('<td> </td>'*ntogo) - html.append('</tr></table></div>\n') - logt = open(logfname,'r').readlines() - logtext = [x for x in logt if x.strip() > ''] - html.append('<div class="toolFormTitle">%s log output</div>' % sectionname) - if len(logtext) > 1: - html.append('\n<pre>\n') - html += logtext - html.append('\n</pre>\n') - else: - html.append('%s is empty<br/>' % logfname) - if len(fhtml) > 0: - fhtml.insert(0,'<div><table class="colored" cellpadding="3" cellspacing="3"><tr><th>Output File Name (click to view)</th><th>Size</th></tr>\n') - fhtml.append('</table></div><br/>') - html.append('<div class="toolFormTitle">All output files available for downloading</div>\n') - html += fhtml # add all non-pdf files to the end of the display - else: - html.append('<div class="warningmessagelarge">### Error - %s returned no files - please confirm that parameters are sane</div>' % self.opts.interpreter) - html.append(galhtmlpostfix) - htmlf = file(self.opts.output_html,'w') - htmlf.write('\n'.join(html)) - htmlf.write('\n') - htmlf.close() - self.html = html - - - - def run(self): - """ - scripts must be small enough not to fill the pipe! - """ - if self.opts.envshpath <> 'system': - shell_source(self.opts.envshpath) - if self.treatbashSpecial and self.opts.interpreter in ['bash','sh']: - retval = self.runBash() - else: - if self.opts.output_dir: - ste = open(self.elog,'w') - sto = open(self.tlog,'w') - sto.write('## Toolfactory generated command line = %s\n' % ' '.join(self.cl)) - sto.flush() - p = subprocess.Popen(self.cl,shell=False,stdout=sto,stderr=ste,cwd=self.opts.output_dir) - else: - p = subprocess.Popen(self.cl,shell=False) - retval = p.wait() - if self.opts.output_dir: - sto.close() - ste.close() - err = open(self.elog,'r').readlines() - if retval <> 0 and err: # problem - print >> sys.stderr,err - if self.opts.make_HTML: - self.makeHtml() - return retval - - def runBash(self): - """ - cannot use - for bash so use self.sfile - """ - if self.opts.output_dir: - s = '## Toolfactory generated command line = %s\n' % ' '.join(self.cl) - sto = open(self.tlog,'w') - sto.write(s) - sto.flush() - p = subprocess.Popen(self.cl,shell=False,stdout=sto,stderr=sto,cwd=self.opts.output_dir) - else: - p = subprocess.Popen(self.cl,shell=False) - retval = p.wait() - if self.opts.output_dir: - sto.close() - if self.opts.make_HTML: - self.makeHtml() - return retval - - -def main(): - u = """ - This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: - <command interpreter="python">rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" - </command> - """ - op = optparse.OptionParser() - a = op.add_option - a('--script_path',default=None) - a('--tool_name',default=None) - a('--interpreter',default=None) - a('--output_dir',default='./') - a('--output_html',default=None) - a('--input_tab',default=[], action="append") # these are "galaxypath,metadataname" pairs - a("--input_formats",default="tabular") - a('--output_tab',default=None) - a('--output_format',default='tabular') - a('--user_email',default='Unknown') - a('--bad_user',default=None) - a('--make_Tool',default=None) - a('--make_HTML',default=None) - a('--help_text',default=None) - a('--tool_desc',default=None) - a('--new_tool',default=None) - a('--tool_version',default=None) - a('--include_dependencies',default="yes") - a('--citations',default=None) - a('--additional_parameters', dest='additional_parameters', action='append', default=[]) - a('--edit_additional_parameters', action="store_true", default=False) - a('--envshpath',default="system") - opts, args = op.parse_args() - assert not opts.bad_user,'UNAUTHORISED: %s is NOT authorized to use this tool until Galaxy admin adds %s to admin_users in universe_wsgi.ini' % (opts.bad_user,opts.bad_user) - assert opts.tool_name,'## Tool Factory expects a tool name - eg --tool_name=DESeq' - assert opts.interpreter,'## Tool Factory wrapper expects an interpreter - eg --interpreter=Rscript' - assert os.path.isfile(opts.script_path),'## Tool Factory wrapper expects a script path - eg --script_path=foo.R' - if opts.output_dir: - try: - os.makedirs(opts.output_dir) - except: - pass - opts.input_tab = [x.replace('"','').replace("'",'') for x in opts.input_tab] - for i,x in enumerate(opts.additional_parameters): # remove quotes we need to deal with spaces in CL params - opts.additional_parameters[i] = opts.additional_parameters[i].replace('"','') - r = ScriptRunner(opts) - if opts.make_Tool: - retcode = r.makeTooltar() - else: - retcode = r.run() - os.unlink(r.sfile) - if retcode: - sys.exit(retcode) # indicate failure to job runner - - -if __name__ == "__main__": - main() - - -
--- a/r_bioc_depgen_4/r_bioc_depgen_4.xml Tue Jan 20 05:08:04 2015 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,294 +0,0 @@ -<tool id="r_bioc_depgen_4" name="r_bioc_depgen_4" version="0.01"> -<description>Generate dependencies for R/BioC packages</description> -<requirements> - <requirement type="package" version="9.10">ghostscript</requirement> - <requirement type="package" version="1.3.18">graphicsmagick</requirement> - <requirement type="package" version="3.1.2">R</requirement> - </requirements> -<command interpreter="python"> - - r_bioc_depgen_4.py --script_path "$runMe" --interpreter "Rscript" - --tool_name "r_bioc_depgen_4" - - - ---additional_parameters """tardir,$tardir,Save all dependency tarballs to this directory,I use a github repository for this which is specified in the xml_prefix parameter below,text""" ---additional_parameters """ourpackages,$ourpackages,SPACE (NOT comma!) separated list of package names - without versions!,Packages and dependencies for the chosen R will be found,text""" ---additional_parameters """xmlprefix,$xmlprefix,Prefix for generated tool_dependency.xml url to the permanent package archive repository,I use a github repository as the default shows - the tag will be closed with '?raw=true</package>',text""" - --output_dir "$html_file.files_path" --output_html "$html_file" --make_HTML "yes" --output_tab "$output1" - -</command> -<inputs> -<param name="job_name" type="text" size="60" label="Supply a name for the outputs to remind you what they contain" value="r_bioc_depgen_4"/> - -<param name="tardir" value="/tmp" label="Save all dependency tarballs to this directory" help="I use a github repository for this which is specified in the xml_prefix parameter below" type="text"/> -<param name="ourpackages" value="DESeq2" label="SPACE (NOT comma!) separated list of package names - without versions!" help="Packages and dependencies for the chosen R will be found" type="text"/> -<param name="xmlprefix" value="<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/" label="Prefix for generated tool_dependency.xml url to the permanent package archive repository" help="I use a github repository as the default shows - the tag will be closed with '?raw=true</package>'" type="text"/> -</inputs> -<outputs> - <data format="html" name="html_file" label="${job_name}.html"/> - <data format="tabular" name="output1" label="${job_name}"/> - -</outputs> -<configfiles> -<configfile name="runMe"> - ## Sample tool factory 2 script version if you - ## define the parameters needed (!) as form elements - ## will save ALL needed tarballs to destdir - ## for tool_dependency use - ### ross lazarus - ### bah! humbug! - ### dec 24 2014 - - packageExpand = function(packagelist,fl) { - res = NULL - for (i in c(1:length(packagelist))) { - s = packagelist[i] - ls = nchar(s) - spos = which(substr(fl,1,ls) == s,arr.ind=T) - lspos = length(spos) - if (lspos > 0) - { - fullname = fl[spos] - if (grepl('*.gz',fullname)) { - row = paste(ps,fullname,pe,sep='') - res = append(res,row) - } - } - } - return(res) - } - - getPackages = function(packs) - { - packages = unlist(tools::package_dependencies(packs, available.packages(), - which=c("Depends", "Imports"), recursive=TRUE)) - packages = union(packs, packages) - packages - } - - ### tool factory Rscript parser suggested by Forester - ### http://www.r-bloggers.com/including-arguments-in-r-cmd-batch-mode/ - ### additional parameters will appear in the ls() below - they are available - ### to your script - ### echo parameters to the output file - ourargs = commandArgs(TRUE) - if(length(ourargs)==0){ - print("No arguments supplied.") - }else{ - for(i in 1:length(ourargs)){ - eval(parse(text=ourargs[[i]])) - } - } - - unesc = function(x) { - #### needed to deal with galaxy escaping <> in passing the xml string we need - don't try this at home kids. - res = x - res = gsub('__lt__','<',res) - res = gsub('__gt__','>',res) - return(res) - } - - our_packages = strsplit(ourpackages," ")[[1]] - ### these show as attached non-base packages in sessionInfo after running the R code - ps=unesc(xmlprefix) - pe="?raw=true</package>" - - print(paste('tardir=',tardir,'xmlprefix=',xmlprefix,'ourpackages=',ourpackages,'OUTPATH=',OUTPATH)) - - - setRepositories(ind=1:2) - chooseBioCmirror(ind=7,graphics=F) # canberra - use eg 1 for FredHutch - chooseCRANmirror(ind=5,graphics=F) # Melbourne - use 96 for texas - - ifreq = function(pkg='DESeq2') { - if(require(package=pkg,character.only = T)){ - print(paste(pkg,"is loaded correctly")) - } else { - print(paste("trying to install",pkg)) - install.packages(pkg) - if(require(package=pkg,character.only = T)){ - print(paste(pkg,"installed and loaded correctly")) - } else { - stop(paste("Could not install",pkg)) - } - } - } - - ifreq(pkg="BiocInstaller") - ifreq(pkg="pkgDepTools") - ifreq(pkg="Biobase") - - print.noquote('Greetings! The R you have chosen is using the following repositories:') - print.noquote(biocinstallRepos()) - packages = getPackages(our_packages) - download.packages(pkgs=packages,destdir=tardir, type="source", repos=biocinstallRepos()) - flist = list.files(tardir) - allDeps = makeDepGraph(biocinstallRepos(), type="source", keep.builtin=F, dosize=F) - res = NULL - for (i in c(1:length(our_packages))) { - package = our_packages[i] - io = getInstallOrder(package, allDeps, needed.only=FALSE) - ares = packageExpand(packagelist=io\$packages,fl=flist) - res = append(res,ares) - } - ures = unique(res) - tout = "savedeps.xml" - write.table(ures,file=tout,quote=F,sep="\t",row.names=F,col.names=F) - write.table(ures,file=OUTPATH,quote=F,sep="\t",row.names=F,col.names=F) - print.noquote(res) - sessionInfo() - print.noquote(date()) -</configfile> -</configfiles> -<tests> - - <test> - - <param name="job_name" value="test1"/> - <param name="runMe" value="$runMe"/> - <param name="tardir" value="/tmp" /> -<param name="ourpackages" value="DESeq2" /> -<param name="xmlprefix" value="<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/" /> - <output name="output1" file="r_bioc_depgen_4_test1_output.xls" ftype="tabular" /> - <output name="html_file" file="r_bioc_depgen_4_test1_output.html" ftype="html" lines_diff="10"/> - </test> - -</tests> -<help> - - -**What it Does** - - -Generates some XML for R/BioC dependencies for the packages specified and using the default R - -**Script** -Pressing execute will run the following code over your input file and generate some outputs in your history:: - - - ## Sample tool factory 2 script version if you - ## define the parameters needed (!) as form elements - ## will save ALL needed tarballs to destdir - ## for tool_dependency use - ### ross lazarus - ### bah! humbug! - ### dec 24 2014 - - packageExpand = function(packagelist,fl) { - res = NULL - for (i in c(1:length(packagelist))) { - s = packagelist[i] - ls = nchar(s) - spos = which(substr(fl,1,ls) == s,arr.ind=T) - lspos = length(spos) - if (lspos > 0) - { - fullname = fl[spos] - if (grepl('*.gz',fullname)) { - row = paste(ps,fullname,pe,sep='') - res = append(res,row) - } - } - } - return(res) - } - - getPackages = function(packs) - { - packages = unlist(tools::package_dependencies(packs, available.packages(), - which=c("Depends", "Imports"), recursive=TRUE)) - packages = union(packs, packages) - packages - } - - ### tool factory Rscript parser suggested by Forester - ### http://www.r-bloggers.com/including-arguments-in-r-cmd-batch-mode/ - ### additional parameters will appear in the ls() below - they are available - ### to your script - ### echo parameters to the output file - ourargs = commandArgs(TRUE) - if(length(ourargs)==0){ - print("No arguments supplied.") - }else{ - for(i in 1:length(ourargs)){ - eval(parse(text=ourargs[[i]])) - } - } - - unesc = function(x) { - #### needed to deal with galaxy escaping <> in passing the xml string we need - don't try this at home kids. - res = x - res = gsub('__lt__','<',res) - res = gsub('__gt__','>',res) - return(res) - } - - our_packages = strsplit(ourpackages," ")[[1]] - ### these show as attached non-base packages in sessionInfo after running the R code - ps=unesc(xmlprefix) - pe="?raw=true</package>" - - print(paste('tardir=',tardir,'xmlprefix=',xmlprefix,'ourpackages=',ourpackages,'OUTPATH=',OUTPATH)) - - - setRepositories(ind=1:2) - chooseBioCmirror(ind=7,graphics=F) # canberra - use eg 1 for FredHutch - chooseCRANmirror(ind=5,graphics=F) # Melbourne - use 96 for texas - - ifreq = function(pkg='DESeq2') { - if(require(package=pkg,character.only = T)){ - print(paste(pkg,"is loaded correctly")) - } else { - print(paste("trying to install",pkg)) - install.packages(pkg) - if(require(package=pkg,character.only = T)){ - print(paste(pkg,"installed and loaded correctly")) - } else { - stop(paste("Could not install",pkg)) - } - } - } - - ifreq(pkg="BiocInstaller") - ifreq(pkg="pkgDepTools") - ifreq(pkg="Biobase") - - print.noquote('Greetings! The R you have chosen is using the following repositories:') - print.noquote(biocinstallRepos()) - packages = getPackages(our_packages) - download.packages(pkgs=packages,destdir=tardir, type="source", repos=biocinstallRepos()) - flist = list.files(tardir) - allDeps = makeDepGraph(biocinstallRepos(), type="source", keep.builtin=F, dosize=F) - res = NULL - for (i in c(1:length(our_packages))) { - package = our_packages[i] - io = getInstallOrder(package, allDeps, needed.only=FALSE) - ares = packageExpand(packagelist=io\$packages,fl=flist) - res = append(res,ares) - } - ures = unique(res) - tout = "savedeps.xml" - write.table(ures,file=tout,quote=F,sep="\t",row.names=F,col.names=F) - write.table(ures,file=OUTPATH,quote=F,sep="\t",row.names=F,col.names=F) - print.noquote(res) - sessionInfo() - print.noquote(date()) - -**Attribution** -This Galaxy tool was created by ross.lazarus@gmail.com at 16/01/2015 13:03:33 -using the Galaxy Tool Factory. - -See https://bitbucket.org/fubar/galaxytoolfactory for details of that project -Please cite: Creating re-usable tools from scripts: The Galaxy Tool Factory. Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team. -Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573 - - -This tool was autogenerated from a user provided script using the Galaxy Tool Factory 2 -https://toolshed.g2.bx.psu.edu/view/fubar/tool_factory_2 -</help> -<citations> - - <citation type="doi">10.1093/bioinformatics/bts573</citation> -</citations> -</tool>
--- a/r_bioc_depgen_4/tool_dependencies.xml Tue Jan 20 05:08:04 2015 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -<?xml version="1.0"?> -<tool_dependency> - <package name="ghostscript" version="9.10"> - <repository changeset_revision="9345d2740f0c" name="package_ghostscript_9_10" owner="devteam" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /> - </package> - <package name="graphicsmagick" version="1.3.18"> - <repository changeset_revision="bff3f66adff2" name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /> - </package> - <package name="R" version="3.1.2"> - <repository changeset_revision="f0626dac6765" name="package_r_3_1_2" owner="iuc" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /> - </package> - - <readme> - -**What it Does** - - -Generates some XML for R/BioC dependencies for the packages specified and using the default R - - This file was autogenerated by the Galaxy Tool Factory 2 - </readme> - </tool_dependency>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r_bioc_depgen_r_3_1_2/r_bioc_depgen_r_3_1_2.py Tue Jan 20 19:29:17 2015 -0500 @@ -0,0 +1,969 @@ +# r_bioc_depgen_r_3_1_2/r_bioc_depgen_r_3_1_2.py - a self annotated version of rgToolFactory2.py generated by running rgToolFactory2.py +# to make a new Galaxy tool called r_bioc_depgen_r_3_1_2 +# User ross.lazarus@gmail.com at 21/01/2015 11:25:22 +# rgToolFactoryMultIn.py +# see https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home +# +# copyright ross lazarus (ross stop lazarus at gmail stop com) May 2012 +# +# all rights reserved +# Licensed under the LGPL +# suggestions for improvement and bug fixes welcome at https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home +# +# January 2015 +# in the process of building a complex tool +# added ability to choose one of the current toolshed package_r or package_perl or package_python dependencies and source that package +# add that package to tool_dependencies +# Note that once the generated tool is loaded, it will have that package's env.sh loaded automagically so there is no +# --envshpath in the parameters for the generated tool and it uses the system one which will be first on the adjusted path. +# +# sept 2014 added additional params from +# https://bitbucket.org/mvdbeek/dockertoolfactory/src/d4863bcf7b521532c7e8c61b6333840ba5393f73/DockerToolFactory.py?at=default +# passing them is complex +# and they are restricted to NOT contain commas or double quotes to ensure that they can be safely passed together on +# the toolfactory command line as a comma delimited double quoted string for parsing and passing to the script +# see examples on this tool form + +# august 2014 + +# Allows arbitrary number of input files +# NOTE positional parameters are now passed to script +# and output (may be "None") is *before* arbitrary number of inputs +# +# march 2014 +# had to remove dependencies because cross toolshed dependencies are not possible - can't pre-specify a toolshed url for graphicsmagick and ghostscript +# grrrrr - night before a demo +# added dependencies to a tool_dependencies.xml if html page generated so generated tool is properly portable +# +# added ghostscript and graphicsmagick as dependencies +# fixed a wierd problem where gs was trying to use the new_files_path from universe (database/tmp) as ./database/tmp +# errors ensued +# +# august 2013 +# found a problem with GS if $TMP or $TEMP missing - now inject /tmp and warn +# +# july 2013 +# added ability to combine images and individual log files into html output +# just make sure there's a log file foo.log and it will be output +# together with all images named like "foo_*.pdf +# otherwise old format for html +# +# January 2013 +# problem pointed out by Carlos Borroto +# added escaping for <>$ - thought I did that ages ago... +# +# August 11 2012 +# changed to use shell=False and cl as a sequence + +# This is a Galaxy tool factory for simple scripts in python, R or whatever ails ye. +# It also serves as the wrapper for the new tool. +# +# you paste and run your script +# Only works for simple scripts that read one input from the history. +# Optionally can write one new history dataset, +# and optionally collect any number of outputs into links on an autogenerated HTML page. + +# DO NOT install on a public or important site - please. + +# installed generated tools are fine if the script is safe. +# They just run normally and their user cannot do anything unusually insecure +# but please, practice safe toolshed. +# Read the fucking code before you install any tool +# especially this one + +# After you get the script working on some test data, you can +# optionally generate a toolshed compatible gzip file +# containing your script safely wrapped as an ordinary Galaxy script in your local toolshed for +# safe and largely automated installation in a production Galaxy. + +# If you opt for an HTML output, you get all the script outputs arranged +# as a single Html history item - all output files are linked, thumbnails for all the pdfs. +# Ugly but really inexpensive. +# +# Patches appreciated please. +# +# +# long route to June 2012 product +# Behold the awesome power of Galaxy and the toolshed with the tool factory to bind them +# derived from an integrated script model +# called rgBaseScriptWrapper.py +# Note to the unwary: +# This tool allows arbitrary scripting on your Galaxy as the Galaxy user +# There is nothing stopping a malicious user doing whatever they choose +# Extremely dangerous!! +# Totally insecure. So, trusted users only +# +# preferred model is a developer using their throw away workstation instance - ie a private site. +# no real risk. The universe_wsgi.ini admin_users string is checked - only admin users are permitted to run this tool. +# + +import sys +import shutil +import subprocess +import os +import time +import tempfile +import optparse +import tarfile +import re +import shutil +import math + +progname = os.path.split(sys.argv[0])[1] +myversion = 'V001.1 March 2014' +verbose = False +debug = False +toolFactoryURL = 'https://bitbucket.org/fubar/galaxytoolfactory' + +# if we do html we need these dependencies specified in a tool_dependencies.xml file and referred to in the generated +# tool xml + +def timenow(): + """return current time as a string + """ + return time.strftime('%d/%m/%Y %H:%M:%S', time.localtime(time.time())) + +html_escape_table = { + "&": "&", + ">": ">", + "<": "<", + "$": "\$" + } + +def html_escape(text): + """Produce entities within text.""" + return "".join(html_escape_table.get(c,c) for c in text) + + +def html_unescape(text): + """Revert entities within text.""" + t = text.replace('&','&').replace('>','>').replace('<','<').replace('\$','$') + return t + +def cmd_exists(cmd): + return subprocess.call("type " + cmd, shell=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0 + +def parse_citations(citations_text): + """ + """ + citations = [c for c in citations_text.split("**ENTRY**") if c.strip()] + citation_tuples = [] + for citation in citations: + if citation.startswith("doi"): + citation_tuples.append( ("doi", citation[len("doi"):].strip() ) ) + else: + citation_tuples.append( ("bibtex", citation[len("bibtex"):].strip() ) ) + return citation_tuples + +def shell_source(script): + """need a way to source a Galaxy tool interpreter env.sh so we can use that dependency + package + see http://pythonwise.blogspot.fr/2010/04/sourcing-shell-script.html + Sometime you want to emulate the action of "source" in bash, + settings some environment variables. Here is a way to do it. + Note that we have to finesse the automagic exports using nulls as newlines for env""" + pipe = subprocess.Popen("env -i ; . %s ; env -0" % script, stdout=subprocess.PIPE, shell=True) + output = pipe.communicate()[0] + outl = output.split('\0') + outl = [x for x in outl if len(x.split("=")) == 2] + newenv = dict((line.split("=", 1) for line in outl)) + os.environ.update(newenv) + +class ScriptRunner: + """class is a wrapper for an arbitrary script + note funky templating. this should all be done proper. + Problem is, this kludge developed quite naturally and seems to work ok with + little overhead... + + """ + + + def __init__(self,opts=None,treatbashSpecial=True): + """ + cleanup inputs, setup some outputs + + """ + + self.toolhtmldepinterpskel = """<?xml version="1.0"?> + <tool_dependency> + <package name="ghostscript" version="9.10"> + <repository name="package_ghostscript_9_10" owner="devteam" prior_installation_required="True" /> + </package> + <package name="graphicsmagick" version="1.3.18"> + <repository name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" /> + </package> + <package name="%(interpreter_name)s" version="%(interpreter_version)s"> + <repository name="%(interpreter_pack)s" owner="%(interpreter_owner)s" prior_installation_required="True" /> + </package> + + <readme> + %(readme)s + This file was autogenerated by the Galaxy Tool Factory 2 + </readme> + </tool_dependency> + """ + + self.toolhtmldepskel = """<?xml version="1.0"?> + <tool_dependency> + <package name="ghostscript" version="9.10"> + <repository name="package_ghostscript_9_10" owner="devteam" prior_installation_required="True" /> + </package> + <package name="graphicsmagick" version="1.3.18"> + <repository name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" /> + </package> + <readme> + %(readme)s + This file was autogenerated by the Galaxy Tool Factory 2 + </readme> + </tool_dependency> + """ + + self.emptytoolhtmldepskel = """<?xml version="1.0"?> + <tool_dependency> + <readme> + %(readme)s + This file was autogenerated by the Galaxy Tool Factory 2 + </readme> + </tool_dependency> + """ + + self.protorequirements = """<requirements> + <requirement type="package" version="9.10">ghostscript</requirement> + <requirement type="package" version="1.3.18">graphicsmagick</requirement> + </requirements>""" + + self.protorequirements_interpreter = """<requirements> + <requirement type="package" version="9.10">ghostscript</requirement> + <requirement type="package" version="1.3.18">graphicsmagick</requirement> + <requirement type="package" version="%(interpreter_version)s">%(interpreter_name)s</requirement> + </requirements>""" + + + self.newCommand=""" + %(toolname)s.py --script_path "$runMe" --interpreter "%(interpreter)s" + --tool_name "%(toolname)s" + %(command_inputs)s + %(command_outputs)s + """ + + self.tooltestsTabOnly = """ + <test> + %(test1Inputs)s + <param name="job_name" value="test1"/> + <param name="runMe" value="$runMe"/> + <output name="output1="%(test1Output)s" ftype="tabular"/> + %(additionalParams)s + </test> + """ + + self.tooltestsHTMLOnly = """ + <test> + %(test1Inputs)s + <param name="job_name" value="test1"/> + <param name="runMe" value="$runMe"/> + %(additionalParams)s + <output name="html_file" file="%(test1HTML)s" ftype="html" lines_diff="5"/> + </test> + """ + + self.tooltestsBoth = """ + <test> + %(test1Inputs)s + <param name="job_name" value="test1"/> + <param name="runMe" value="$runMe"/> + %(additionalParams)s + <output name="output1" file="%(test1Output)s" ftype="tabular" /> + <output name="html_file" file="%(test1HTML)s" ftype="html" lines_diff="10"/> + </test> + """ + + self.newXML="""<tool id="%(toolid)s" name="%(toolname)s" version="%(tool_version)s"> +%(tooldesc)s +%(requirements)s +<command interpreter="python"> +%(command)s +</command> +<inputs> +%(inputs)s +%(additionalInputs)s +</inputs> +<outputs> +%(outputs)s +</outputs> +<configfiles> +<configfile name="runMe"> +%(script)s +</configfile> +</configfiles> +<tests> +%(tooltests)s +</tests> +<help> + +%(help)s + +This tool was autogenerated from a user provided script using the Galaxy Tool Factory 2 +https://toolshed.g2.bx.psu.edu/view/fubar/tool_factory_2 +</help> +<citations> + %(citations)s + <citation type="doi">10.1093/bioinformatics/bts573</citation> +</citations> +</tool>""" + + self.useGM = cmd_exists('gm') + self.useIM = cmd_exists('convert') + self.useGS = cmd_exists('gs') + self.temp_warned = False # we want only one warning if $TMP not set + self.treatbashSpecial = treatbashSpecial + if opts.output_dir: # simplify for the tool tarball + os.chdir(opts.output_dir) + self.thumbformat = 'png' + self.opts = opts + self.toolname = re.sub('[^a-zA-Z0-9_]+', '', opts.tool_name) # a sanitizer now does this but.. + self.toolid = self.toolname + self.myname = sys.argv[0] # get our name because we write ourselves out as a tool later + self.pyfile = self.myname # crude but efficient - the cruft won't hurt much + self.xmlfile = '%s.xml' % self.toolname + rx = open(self.opts.script_path,'r').readlines() + rx = [x.rstrip() for x in rx] # remove pesky dos line endings if needed + self.script = '\n'.join(rx) + fhandle,self.sfile = tempfile.mkstemp(prefix=self.toolname,suffix=".%s" % (opts.interpreter)) + tscript = open(self.sfile,'w') # use self.sfile as script source for Popen + tscript.write(self.script) + tscript.close() + self.indentedScript = " %s" % '\n'.join([' %s' % html_escape(x) for x in rx]) # for restructured text in help + self.escapedScript = "%s" % '\n'.join([' %s' % html_escape(x) for x in rx]) + self.elog = os.path.join(self.opts.output_dir,"%s_error.log" % self.toolname) + if opts.output_dir: # may not want these complexities + self.tlog = os.path.join(self.opts.output_dir,"%s_runner.log" % self.toolname) + art = '%s.%s' % (self.toolname,opts.interpreter) + artpath = os.path.join(self.opts.output_dir,art) # need full path + artifact = open(artpath,'w') # use self.sfile as script source for Popen + artifact.write(self.script) + artifact.close() + self.cl = [] + self.html = [] + self.test1Inputs = [] # now a list + a = self.cl.append + a(opts.interpreter) + a(self.sfile) + # if multiple inputs - positional or need to distinguish them with cl params + if opts.input_tab: + tests = [] + for i,intab in enumerate(opts.input_tab): # if multiple, make tests + if intab.find(',') <> -1: + (gpath,uname) = intab.split(',') + else: + gpath = uname = intab + tests.append(os.path.basename(gpath)) + self.test1Inputs = '<param name="input_tab" value="%s" />' % (','.join(tests)) + else: + self.test1Inputs = '' + # we always pass path,name pairs in using python optparse append + # but the command line has to be different + self.infile_paths = '' + self.infile_names = '' + if self.opts.input_tab: + self.infile_paths = ','.join([x.split(',')[0].strip() for x in self.opts.input_tab]) + self.infile_names = ','.join([x.split(',')[1].strip() for x in self.opts.input_tab]) + if self.opts.interpreter == 'python': + # yes, this is how additional parameters are always passed in python - to the TF itself and to + # scripts to avoid having unknown parameter names (yes, they can be parsed but...) on the command line + if self.opts.input_tab: + a('--INPATHS "%s"' % (self.infile_paths)) + a('--INNAMES "%s"' % (self.infile_names)) + if self.opts.output_tab: + a('--OUTPATH "%s"' % self.opts.output_tab) + for p in opts.additional_parameters: + p = p.replace('"','') + psplit = p.split(',') + param = html_unescape(psplit[0]) + value = html_unescape(psplit[1]) + a('%s="%s"' % (param,value)) + if (self.opts.interpreter == 'Rscript'): + # pass params on command line + if self.opts.input_tab: + a('INPATHS="%s"' % self.infile_paths) + a('INNAMES="%s"' % self.infile_names) + if self.opts.output_tab: + a('OUTPATH="%s"' % self.opts.output_tab) + for p in opts.additional_parameters: + p = p.replace('"','') + psplit = p.split(',') + param = html_unescape(psplit[0]) + value = html_unescape(psplit[1]) + a('%s="%s"' % (param,value)) + if (self.opts.interpreter == 'perl'): + # pass params on command line + if self.opts.input_tab: + a('%s' % self.infile_paths) + a('%s' % self.infile_names) + if self.opts.output_tab: + a('%s' % self.opts.output_tab) + for p in opts.additional_parameters: + p = p.replace('"','') + psplit = p.split(',') + param = html_unescape(psplit[0]) + value = html_unescape(psplit[1]) + if (value.find(' ') <> -1): + a('%s="%s"' % (param,value)) + else: + a('%s=%s' % (param,value)) + if self.opts.interpreter == 'sh' or self.opts.interpreter == 'bash': + # more is better - now move all params into environment AND drop on to command line. + self.cl.insert(0,'env') + if self.opts.input_tab: + self.cl.insert(1,'INPATHS=%s' % (self.infile_paths)) + self.cl.insert(2,'INNAMES=%s' % (self.infile_names)) + if self.opts.output_tab: + self.cl.insert(3,'OUTPATH=%s' % (self.opts.output_tab)) + a('OUTPATH=%s' % (self.opts.output_tab)) + # sets those environment variables for the script + # additional params appear in CL - yes, it's confusing + for i,p in enumerate(opts.additional_parameters): + psplit = p.split(',') + param = html_unescape(psplit[0]) + value = html_unescape(psplit[1]) + if (value.find(' ') <> -1): + a('%s="%s"' % (param,value)) + self.cl.insert(4+i,'%s="%s"' % (param,value)) + else: + a('%s=%s' % (param,value)) + self.cl.insert(4+i,'%s=%s' % (param,value)) + self.interp_owner = None + self.interp_pack = None + self.interp_revision = None + self.interp_version = None + if opts.envshpath <> 'system': # need to parse out details for our tool_dependency + try: # fragile - depends on common naming convention as at jan 2015 = package_[interp]_v0_v1_v2... = version v0.v1.v2.. is in play + + packdetails = opts.envshpath.split(os.path.sep)[-4:-1] # eg ['fubar', 'package_r_3_1_1', '63cdb9b2234c'] + self.interpreter_owner = packdetails[0] + self.interpreter_pack = packdetails[1] + self.interpreter_name = packdetails[1].split('_')[1].upper() + self.interpreter_revision = packdetails[2] + self.interpreter_version = '.'.join(packdetails[1].split('_')[2:]) + except: + pass + self.outFormats = opts.output_format + self.inputFormats = opts.input_formats + self.test1Output = '%s_test1_output.xls' % self.toolname + self.test1HTML = '%s_test1_output.html' % self.toolname + + def makeXML(self): + """ + Create a Galaxy xml tool wrapper for the new script as a string to write out + fixme - use templating or something less fugly than this example of what we produce + + <tool id="reverse" name="reverse" version="0.01"> + <description>a tabular file</description> + <command interpreter="python"> + reverse.py --script_path "$runMe" --interpreter "python" + --tool_name "reverse" --input_tab "$input1" --output_tab "$output1" + </command> + <inputs> + <param name="input1" type="data" format="tabular" label="Select one or more input files from your history"/> + <param name="job_name" type="text" label="Supply a name for the outputs to remind you what they contain" value="reverse"/> + </inputs> + <outputs> + <data format="tabular" name="output1q" label="${job_name}"/> + + </outputs> + <help> + +**What it Does** + +Reverse the columns in a tabular file + + </help> + <configfiles> + <configfile name="runMe"> + +# reverse order of columns in a tabular file +import sys +inp = sys.argv[1] +outp = sys.argv[2] +i = open(inp,'r') +o = open(outp,'w') +for row in i: + rs = row.rstrip().split('\t') + rs.reverse() + o.write('\t'.join(rs)) + o.write('\n') +i.close() +o.close() + + + </configfile> + </configfiles> + </tool> + + """ + + # these templates need a dict with the right keys to match the parameters - outputs, help, code... + + xdict = {} + xdict['additionalParams'] = '' + xdict['additionalInputs'] = '' + if self.opts.additional_parameters: + if self.opts.edit_additional_parameters: # add to new tool form with default value set to original value + xdict['additionalInputs'] = '\n'.join(['<param name="%s" value="%s" label="%s" help="%s" type="%s"/>' % \ + (x.split(',')[0],html_escape(x.split(',')[1]),html_escape(x.split(',')[2]),html_escape(x.split(',')[3]), x.split(',')[4]) for x in self.opts.additional_parameters]) + xdict['additionalParams'] = '\n'.join(['<param name="%s" value="%s" />' % (x.split(',')[0],html_escape(x.split(',')[1])) for x in self.opts.additional_parameters]) + xdict['interpreter_owner'] = self.interpreter_owner + xdict['interpreter_version'] = self.interpreter_version + xdict['interpreter_pack'] = self.interpreter_pack + xdict['interpreter_name'] = self.interpreter_name + xdict['requirements'] = '' + if self.opts.include_dependencies == "yes": + if self.opts.envshpath <> 'system': + xdict['requirements'] = self.protorequirements_interpreter % xdict + else: + xdict['requirements'] = self.protorequirements + xdict['tool_version'] = self.opts.tool_version + xdict['test1HTML'] = self.test1HTML + xdict['test1Output'] = self.test1Output + xdict['test1Inputs'] = self.test1Inputs + if self.opts.make_HTML and self.opts.output_tab: + xdict['tooltests'] = self.tooltestsBoth % xdict + elif self.opts.make_HTML: + xdict['tooltests'] = self.tooltestsHTMLOnly % xdict + else: + xdict['tooltests'] = self.tooltestsTabOnly % xdict + xdict['script'] = self.escapedScript + # configfile is least painful way to embed script to avoid external dependencies + # but requires escaping of <, > and $ to avoid Mako parsing + if self.opts.help_text: + helptext = open(self.opts.help_text,'r').readlines() + helptext = [html_escape(x) for x in helptext] # must html escape here too - thanks to Marius van den Beek + xdict['help'] = ''.join([x for x in helptext]) + else: + xdict['help'] = 'Please ask the tool author (%s) for help as none was supplied at tool generation\n' % (self.opts.user_email) + coda = ['**Script**','Pressing execute will run the following code over your input file and generate some outputs in your history::'] + coda.append('\n') + coda.append(self.indentedScript) + coda.append('\n**Attribution**\nThis Galaxy tool was created by %s at %s\nusing the Galaxy Tool Factory.\n' % (self.opts.user_email,timenow())) + coda.append('See %s for details of that project' % (toolFactoryURL)) + coda.append('Please cite: Creating re-usable tools from scripts: The Galaxy Tool Factory. Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team. ') + coda.append('Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573\n') + xdict['help'] = '%s\n%s' % (xdict['help'],'\n'.join(coda)) + if self.opts.tool_desc: + xdict['tooldesc'] = '<description>%s</description>' % self.opts.tool_desc + else: + xdict['tooldesc'] = '' + xdict['command_outputs'] = '' + xdict['outputs'] = '' + if self.opts.input_tab: + cins = ['\n',] + cins.append('--input_formats %s' % self.opts.input_formats) + cins.append('#for intab in $input1:') + cins.append('--input_tab "${intab},${intab.name}"') + cins.append('#end for\n') + xdict['command_inputs'] = '\n'.join(cins) + xdict['inputs'] = '''<param name="input_tab" multiple="true" type="data" format="%s" label="Select one or more %s input files from your history" + help="Multiple inputs may be selected assuming the script can deal with them..."/> \n''' % (self.inputFormats,self.inputFormats) + else: + xdict['command_inputs'] = '' # assume no input - eg a random data generator + xdict['inputs'] = '' + if (len(self.opts.additional_parameters) > 0): + cins = ['\n',] + for params in self.opts.additional_parameters: + psplit = params.split(',') # name,value... + psplit[3] = html_escape(psplit[3]) + if self.opts.edit_additional_parameters: + psplit[1] = '$%s' % psplit[0] # replace with form value + else: + psplit[1] = html_escape(psplit[1]) # leave prespecified value + cins.append('--additional_parameters """%s"""' % ','.join(psplit)) + xdict['command_inputs'] = '%s\n%s' % (xdict['command_inputs'],'\n'.join(cins)) + xdict['inputs'] += '<param name="job_name" type="text" size="60" label="Supply a name for the outputs to remind you what they contain" value="%s"/> \n' % self.toolname + xdict['toolname'] = self.toolname + xdict['toolid'] = self.toolid + xdict['interpreter'] = self.opts.interpreter + xdict['scriptname'] = self.sfile + if self.opts.make_HTML: + xdict['command_outputs'] += ' --output_dir "$html_file.files_path" --output_html "$html_file" --make_HTML "yes"' + xdict['outputs'] += ' <data format="html" name="html_file" label="${job_name}.html"/>\n' + else: + xdict['command_outputs'] += ' --output_dir "./"' + if self.opts.output_tab: + xdict['command_outputs'] += ' --output_tab "$output1"' + xdict['outputs'] += ' <data format="%s" name="output1" label="${job_name}"/>\n' % self.outFormats + xdict['command'] = self.newCommand % xdict + if self.opts.citations: + citationstext = open(self.opts.citations,'r').read() + citation_tuples = parse_citations(citationstext) + citations_xml = "" + for citation_type, citation_content in citation_tuples: + citation_xml = """<citation type="%s">%s</citation>""" % (citation_type, html_escape(citation_content)) + citations_xml += citation_xml + xdict['citations'] = citations_xml + else: + xdict['citations'] = "" + xmls = self.newXML % xdict + xf = open(self.xmlfile,'w') + xf.write(xmls) + xf.write('\n') + xf.close() + # ready for the tarball + + + def makeTooltar(self): + """ + a tool is a gz tarball with eg + /toolname/tool.xml /toolname/tool.py /toolname/test-data/test1_in.foo ... + """ + retval = self.run() + if retval: + print >> sys.stderr,'## Run failed. Cannot build yet. Please fix and retry' + sys.exit(1) + tdir = self.toolname + os.mkdir(tdir) + self.makeXML() + if self.opts.help_text: + hlp = open(self.opts.help_text,'r').read() + else: + hlp = 'Please ask the tool author for help as none was supplied at tool generation\n' + readme_dict = {'readme':hlp,'interpreter':self.opts.interpreter,'interpreter_version':self.interpreter_version,'interpreter_name':self.interpreter_name, + 'interpreter_owner':self.interpreter_owner,'interpreter_pack':self.interpreter_pack} + if self.opts.include_dependencies == "yes": + if self.opts.envshpath == 'system': + tooldepcontent = self.toolhtmldepskel % readme_dict + else: + tooldepcontent = self.toolhtmldepinterpskel % readme_dict + else: + tooldepcontent = self.emptytoolhtmldepskel % readme_dictls -l + depf = open(os.path.join(tdir,'tool_dependencies.xml'),'w') + depf.write(tooldepcontent) + depf.write('\n') + depf.close() + testdir = os.path.join(tdir,'test-data') + os.mkdir(testdir) # make tests directory + for i,intab in enumerate(self.opts.input_tab): + si = self.opts.input_tab[i] + if si.find(',') <> -1: + s = si.split(',')[0] + si = s + dest = os.path.join(testdir,os.path.basename(si)) + if si <> dest: + shutil.copyfile(si,dest) + if self.opts.output_tab: + shutil.copyfile(self.opts.output_tab,os.path.join(testdir,self.test1Output)) + if self.opts.make_HTML: + shutil.copyfile(self.opts.output_html,os.path.join(testdir,self.test1HTML)) + if self.opts.output_dir: + shutil.copyfile(self.tlog,os.path.join(testdir,'test1_out.log')) + outpif = '%s.py' % self.toolname # new name + outpiname = os.path.join(tdir,outpif) # path for the tool tarball + pyin = os.path.basename(self.pyfile) # our name - we rewrite ourselves (TM) + notes = ['# %s - a self annotated version of %s generated by running %s\n' % (outpiname,pyin,pyin),] + notes.append('# to make a new Galaxy tool called %s\n' % self.toolname) + notes.append('# User %s at %s\n' % (self.opts.user_email,timenow())) + pi = open(self.pyfile,'r').readlines() # our code becomes new tool wrapper (!) - first Galaxy worm + notes += pi + outpi = open(outpiname,'w') + outpi.write(''.join(notes)) + outpi.write('\n') + outpi.close() + stname = os.path.join(tdir,self.sfile) + if not os.path.exists(stname): + shutil.copyfile(self.sfile, stname) + xtname = os.path.join(tdir,self.xmlfile) + if not os.path.exists(xtname): + shutil.copyfile(self.xmlfile,xtname) + tarpath = "%s.tar.gz" % self.toolname + tar = tarfile.open(tarpath, "w:gz") + tar.add(tdir,arcname='%s' % self.toolname) + tar.close() + shutil.copyfile(tarpath,self.opts.new_tool) + shutil.rmtree(tdir) + ## TODO: replace with optional direct upload to local toolshed? + return retval + + + def compressPDF(self,inpdf=None,thumbformat='png'): + """need absolute path to pdf + note that GS gets confoozled if no $TMP or $TEMP + so we set it + """ + assert os.path.isfile(inpdf), "## Input %s supplied to %s compressPDF not found" % (inpdf,self.myName) + hlog = os.path.join(self.opts.output_dir,"compress_%s.txt" % os.path.basename(inpdf)) + sto = open(hlog,'a') + our_env = os.environ.copy() + our_tmp = our_env.get('TMP',None) + if not our_tmp: + our_tmp = our_env.get('TEMP',None) + if not (our_tmp and os.path.exists(our_tmp)): + newtmp = os.path.join(self.opts.output_dir,'tmp') + try: + os.mkdir(newtmp) + except: + sto.write('## WARNING - cannot make %s - it may exist or permissions need fixing\n' % newtmp) + our_env['TEMP'] = newtmp + if not self.temp_warned: + sto.write('## WARNING - no $TMP or $TEMP!!! Please fix - using %s temporarily\n' % newtmp) + self.temp_warned = True + outpdf = '%s_compressed' % inpdf + cl = ["gs", "-sDEVICE=pdfwrite", "-dNOPAUSE", "-dUseCIEColor", "-dBATCH","-dPDFSETTINGS=/printer", "-sOutputFile=%s" % outpdf,inpdf] + x = subprocess.Popen(cl,stdout=sto,stderr=sto,cwd=self.opts.output_dir,env=our_env) + retval1 = x.wait() + sto.close() + if retval1 == 0: + os.unlink(inpdf) + shutil.move(outpdf,inpdf) + os.unlink(hlog) + hlog = os.path.join(self.opts.output_dir,"thumbnail_%s.txt" % os.path.basename(inpdf)) + sto = open(hlog,'w') + outpng = '%s.%s' % (os.path.splitext(inpdf)[0],thumbformat) + if self.useGM: + cl2 = ['gm', 'convert', inpdf, outpng] + else: # assume imagemagick + cl2 = ['convert', inpdf, outpng] + x = subprocess.Popen(cl2,stdout=sto,stderr=sto,cwd=self.opts.output_dir,env=our_env) + retval2 = x.wait() + sto.close() + if retval2 == 0: + os.unlink(hlog) + retval = retval1 or retval2 + return retval + + + def getfSize(self,fpath,outpath): + """ + format a nice file size string + """ + size = '' + fp = os.path.join(outpath,fpath) + if os.path.isfile(fp): + size = '0 B' + n = float(os.path.getsize(fp)) + if n > 2**20: + size = '%1.1f MB' % (n/2**20) + elif n > 2**10: + size = '%1.1f KB' % (n/2**10) + elif n > 0: + size = '%d B' % (int(n)) + return size + + def makeHtml(self): + """ Create an HTML file content to list all the artifacts found in the output_dir + """ + + galhtmlprefix = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta name="generator" content="Galaxy %s tool output - see http://g2.trac.bx.psu.edu/" /> + <title></title> + <link rel="stylesheet" href="/static/style/base.css" type="text/css" /> + </head> + <body> + <div class="toolFormBody"> + """ + galhtmlattr = """<hr/><div class="infomessage">This tool (%s) was generated by the <a href="https://bitbucket.org/fubar/galaxytoolfactory/overview">Galaxy Tool Factory</a></div><br/>""" + galhtmlpostfix = """</div></body></html>\n""" + + flist = os.listdir(self.opts.output_dir) + flist = [x for x in flist if x <> 'Rplots.pdf'] + flist.sort() + html = [] + html.append(galhtmlprefix % progname) + html.append('<div class="infomessage">Galaxy Tool "%s" run at %s</div><br/>' % (self.toolname,timenow())) + fhtml = [] + if len(flist) > 0: + logfiles = [x for x in flist if x.lower().endswith('.log')] # log file names determine sections + logfiles.sort() + logfiles = [x for x in logfiles if os.path.abspath(x) <> os.path.abspath(self.tlog)] + logfiles.append(os.path.abspath(self.tlog)) # make it the last one + pdflist = [] + npdf = len([x for x in flist if os.path.splitext(x)[-1].lower() == '.pdf']) + for rownum,fname in enumerate(flist): + dname,e = os.path.splitext(fname) + sfsize = self.getfSize(fname,self.opts.output_dir) + if e.lower() == '.pdf' : # compress and make a thumbnail + thumb = '%s.%s' % (dname,self.thumbformat) + pdff = os.path.join(self.opts.output_dir,fname) + retval = self.compressPDF(inpdf=pdff,thumbformat=self.thumbformat) + if retval == 0: + pdflist.append((fname,thumb)) + else: + pdflist.append((fname,fname)) + if (rownum+1) % 2 == 0: + fhtml.append('<tr class="odd_row"><td><a href="%s">%s</a></td><td>%s</td></tr>' % (fname,fname,sfsize)) + else: + fhtml.append('<tr><td><a href="%s">%s</a></td><td>%s</td></tr>' % (fname,fname,sfsize)) + for logfname in logfiles: # expect at least tlog - if more + if os.path.abspath(logfname) == os.path.abspath(self.tlog): # handled later + sectionname = 'All tool run' + if (len(logfiles) > 1): + sectionname = 'Other' + ourpdfs = pdflist + else: + realname = os.path.basename(logfname) + sectionname = os.path.splitext(realname)[0].split('_')[0] # break in case _ added to log + ourpdfs = [x for x in pdflist if os.path.basename(x[0]).split('_')[0] == sectionname] + pdflist = [x for x in pdflist if os.path.basename(x[0]).split('_')[0] <> sectionname] # remove + nacross = 1 + npdf = len(ourpdfs) + + if npdf > 0: + nacross = math.sqrt(npdf) ## int(round(math.log(npdf,2))) + if int(nacross)**2 != npdf: + nacross += 1 + nacross = int(nacross) + width = min(400,int(1200/nacross)) + html.append('<div class="toolFormTitle">%s images and outputs</div>' % sectionname) + html.append('(Click on a thumbnail image to download the corresponding original PDF image)<br/>') + ntogo = nacross # counter for table row padding with empty cells + html.append('<div><table class="simple" cellpadding="2" cellspacing="2">\n<tr>') + for i,paths in enumerate(ourpdfs): + fname,thumb = paths + s= """<td><a href="%s"><img src="%s" title="Click to download a PDF of %s" hspace="5" width="%d" + alt="Image called %s"/></a></td>\n""" % (fname,thumb,fname,width,fname) + if ((i+1) % nacross == 0): + s += '</tr>\n' + ntogo = 0 + if i < (npdf - 1): # more to come + s += '<tr>' + ntogo = nacross + else: + ntogo -= 1 + html.append(s) + if html[-1].strip().endswith('</tr>'): + html.append('</table></div>\n') + else: + if ntogo > 0: # pad + html.append('<td> </td>'*ntogo) + html.append('</tr></table></div>\n') + logt = open(logfname,'r').readlines() + logtext = [x for x in logt if x.strip() > ''] + html.append('<div class="toolFormTitle">%s log output</div>' % sectionname) + if len(logtext) > 1: + html.append('\n<pre>\n') + html += logtext + html.append('\n</pre>\n') + else: + html.append('%s is empty<br/>' % logfname) + if len(fhtml) > 0: + fhtml.insert(0,'<div><table class="colored" cellpadding="3" cellspacing="3"><tr><th>Output File Name (click to view)</th><th>Size</th></tr>\n') + fhtml.append('</table></div><br/>') + html.append('<div class="toolFormTitle">All output files available for downloading</div>\n') + html += fhtml # add all non-pdf files to the end of the display + else: + html.append('<div class="warningmessagelarge">### Error - %s returned no files - please confirm that parameters are sane</div>' % self.opts.interpreter) + html.append(galhtmlpostfix) + htmlf = file(self.opts.output_html,'w') + htmlf.write('\n'.join(html)) + htmlf.write('\n') + htmlf.close() + self.html = html + + + + def run(self): + """ + scripts must be small enough not to fill the pipe! + """ + if self.opts.envshpath <> 'system': + shell_source(self.opts.envshpath) + if self.treatbashSpecial and self.opts.interpreter in ['bash','sh']: + retval = self.runBash() + else: + if self.opts.output_dir: + ste = open(self.elog,'w') + sto = open(self.tlog,'w') + sto.write('## Toolfactory generated command line = %s\n' % ' '.join(self.cl)) + sto.flush() + p = subprocess.Popen(self.cl,shell=False,stdout=sto,stderr=ste,cwd=self.opts.output_dir) + else: + p = subprocess.Popen(self.cl,shell=False) + retval = p.wait() + if self.opts.output_dir: + sto.close() + ste.close() + err = open(self.elog,'r').readlines() + if retval <> 0 and err: # problem + print >> sys.stderr,err + if self.opts.make_HTML: + self.makeHtml() + return retval + + def runBash(self): + """ + cannot use - for bash so use self.sfile + """ + if self.opts.output_dir: + s = '## Toolfactory generated command line = %s\n' % ' '.join(self.cl) + sto = open(self.tlog,'w') + sto.write(s) + sto.flush() + p = subprocess.Popen(self.cl,shell=False,stdout=sto,stderr=sto,cwd=self.opts.output_dir) + else: + p = subprocess.Popen(self.cl,shell=False) + retval = p.wait() + if self.opts.output_dir: + sto.close() + if self.opts.make_HTML: + self.makeHtml() + return retval + + +def main(): + u = """ + This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: + <command interpreter="python">rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" + </command> + """ + op = optparse.OptionParser() + a = op.add_option + a('--script_path',default=None) + a('--tool_name',default=None) + a('--interpreter',default=None) + a('--output_dir',default='./') + a('--output_html',default=None) + a('--input_tab',default=[], action="append") # these are "galaxypath,metadataname" pairs + a("--input_formats",default="tabular") + a('--output_tab',default=None) + a('--output_format',default='tabular') + a('--user_email',default='Unknown') + a('--bad_user',default=None) + a('--make_Tool',default=None) + a('--make_HTML',default=None) + a('--help_text',default=None) + a('--tool_desc',default=None) + a('--new_tool',default=None) + a('--tool_version',default=None) + a('--include_dependencies',default="yes") + a('--citations',default=None) + a('--additional_parameters', dest='additional_parameters', action='append', default=[]) + a('--edit_additional_parameters', action="store_true", default=False) + a('--envshpath',default="system") + opts, args = op.parse_args() + assert not opts.bad_user,'UNAUTHORISED: %s is NOT authorized to use this tool until Galaxy admin adds %s to admin_users in universe_wsgi.ini' % (opts.bad_user,opts.bad_user) + assert opts.tool_name,'## Tool Factory expects a tool name - eg --tool_name=DESeq' + assert opts.interpreter,'## Tool Factory wrapper expects an interpreter - eg --interpreter=Rscript' + assert os.path.isfile(opts.script_path),'## Tool Factory wrapper expects a script path - eg --script_path=foo.R' + if opts.output_dir: + try: + os.makedirs(opts.output_dir) + except: + pass + opts.input_tab = [x.replace('"','').replace("'",'') for x in opts.input_tab] + for i,x in enumerate(opts.additional_parameters): # remove quotes we need to deal with spaces in CL params + opts.additional_parameters[i] = opts.additional_parameters[i].replace('"','') + r = ScriptRunner(opts) + if opts.make_Tool: + retcode = r.makeTooltar() + else: + retcode = r.run() + os.unlink(r.sfile) + if retcode: + sys.exit(retcode) # indicate failure to job runner + + +if __name__ == "__main__": + main() + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r_bioc_depgen_r_3_1_2/r_bioc_depgen_r_3_1_2.xml Tue Jan 20 19:29:17 2015 -0500 @@ -0,0 +1,294 @@ +<tool id="r_bioc_depgen_r_3_1_2" name="r_bioc_depgen_r_3_1_2" version="0.01"> +<description>Generate dependencies for R/BioC packages</description> +<requirements> + <requirement type="package" version="9.10">ghostscript</requirement> + <requirement type="package" version="1.3.18">graphicsmagick</requirement> + <requirement type="package" version="3.1.2">R</requirement> + </requirements> +<command interpreter="python"> + + r_bioc_depgen_r_3_1_2.py --script_path "$runMe" --interpreter "Rscript" + --tool_name "r_bioc_depgen_r_3_1_2" + + + +--additional_parameters """tardir,$tardir,Save all dependency tarballs to this directory,I use a github repository for this which is specified in the xml_prefix parameter below,text""" +--additional_parameters """ourpackages,$ourpackages,SPACE (NOT comma!) separated list of package names - without versions!,Packages and dependencies for the chosen R will be found,text""" +--additional_parameters """xmlprefix,$xmlprefix,Prefix for generated tool_dependency.xml url to the permanent package archive repository,I use a github repository as the default shows - the tag will be closed with '?raw=true</package>',text""" + --output_dir "$html_file.files_path" --output_html "$html_file" --make_HTML "yes" --output_tab "$output1" + +</command> +<inputs> +<param name="job_name" type="text" size="60" label="Supply a name for the outputs to remind you what they contain" value="r_bioc_depgen_r_3_1_2"/> + +<param name="tardir" value="/tmp" label="Save all dependency tarballs to this directory" help="I use a github repository for this which is specified in the xml_prefix parameter below" type="text"/> +<param name="ourpackages" value="DESeq2" label="SPACE (NOT comma!) separated list of package names - without versions!" help="Packages and dependencies for the chosen R will be found" type="text"/> +<param name="xmlprefix" value="<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/" label="Prefix for generated tool_dependency.xml url to the permanent package archive repository" help="I use a github repository as the default shows - the tag will be closed with '?raw=true</package>'" type="text"/> +</inputs> +<outputs> + <data format="html" name="html_file" label="${job_name}.html"/> + <data format="tabular" name="output1" label="${job_name}"/> + +</outputs> +<configfiles> +<configfile name="runMe"> + ## Sample tool factory 2 script version if you + ## define the parameters needed (!) as form elements + ## will save ALL needed tarballs to destdir + ## for tool_dependency use + ### ross lazarus + ### bah! humbug! + ### dec 24 2014 + + packageExpand = function(packagelist,fl) { + res = NULL + for (i in c(1:length(packagelist))) { + s = packagelist[i] + ls = nchar(s) + spos = which(substr(fl,1,ls) == s,arr.ind=T) + lspos = length(spos) + if (lspos > 0) + { + fullname = fl[spos] + if (grepl('*.gz',fullname)) { + row = paste(ps,fullname,pe,sep='') + res = append(res,row) + } + } + } + return(res) + } + + getPackages = function(packs) + { + packages = unlist(tools::package_dependencies(packs, available.packages(), + which=c("Depends", "Imports"), recursive=TRUE)) + packages = union(packs, packages) + packages + } + + ### tool factory Rscript parser suggested by Forester + ### http://www.r-bloggers.com/including-arguments-in-r-cmd-batch-mode/ + ### additional parameters will appear in the ls() below - they are available + ### to your script + ### echo parameters to the output file + ourargs = commandArgs(TRUE) + if(length(ourargs)==0){ + print("No arguments supplied.") + }else{ + for(i in 1:length(ourargs)){ + eval(parse(text=ourargs[[i]])) + } + } + + unesc = function(x) { + #### needed to deal with galaxy escaping <> in passing the xml string we need - don't try this at home kids. + res = x + res = gsub('__lt__','<',res) + res = gsub('__gt__','>',res) + return(res) + } + + our_packages = strsplit(ourpackages," ")[[1]] + ### these show as attached non-base packages in sessionInfo after running the R code + ps=unesc(xmlprefix) + pe="?raw=true</package>" + + print(paste('tardir=',tardir,'xmlprefix=',xmlprefix,'ourpackages=',ourpackages,'OUTPATH=',OUTPATH)) + + + setRepositories(ind=1:2) + chooseBioCmirror(ind=7,graphics=F) # canberra - use eg 1 for FredHutch + chooseCRANmirror(ind=5,graphics=F) # Melbourne - use 96 for texas + + ifreq = function(pkg='DESeq2') { + if(require(package=pkg,character.only = T)){ + print(paste(pkg,"is loaded correctly")) + } else { + print(paste("trying to install",pkg)) + install.packages(pkg) + if(require(package=pkg,character.only = T)){ + print(paste(pkg,"installed and loaded correctly")) + } else { + stop(paste("Could not install",pkg)) + } + } + } + + ifreq(pkg="BiocInstaller") + ifreq(pkg="pkgDepTools") + ifreq(pkg="Biobase") + + print.noquote('Greetings! The R you have chosen is using the following repositories:') + print.noquote(biocinstallRepos()) + packages = getPackages(our_packages) + download.packages(pkgs=packages,destdir=tardir, type="source", repos=biocinstallRepos()) + flist = list.files(tardir) + allDeps = makeDepGraph(biocinstallRepos(), type="source", keep.builtin=F, dosize=F) + res = NULL + for (i in c(1:length(our_packages))) { + package = our_packages[i] + io = getInstallOrder(package, allDeps, needed.only=FALSE) + ares = packageExpand(packagelist=io\$packages,fl=flist) + res = append(res,ares) + } + ures = unique(res) + tout = "savedeps.xml" + write.table(ures,file=tout,quote=F,sep="\t",row.names=F,col.names=F) + write.table(ures,file=OUTPATH,quote=F,sep="\t",row.names=F,col.names=F) + print.noquote(res) + sessionInfo() + print.noquote(date()) +</configfile> +</configfiles> +<tests> + + <test> + + <param name="job_name" value="test1"/> + <param name="runMe" value="$runMe"/> + <param name="tardir" value="/tmp" /> +<param name="ourpackages" value="DESeq2" /> +<param name="xmlprefix" value="<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/" /> + <output name="output1" file="r_bioc_depgen_r_3_1_2_test1_output.xls" ftype="tabular" /> + <output name="html_file" file="r_bioc_depgen_r_3_1_2_test1_output.html" ftype="html" lines_diff="10"/> + </test> + +</tests> +<help> + + +**What it Does** + + +Generates some XML for R/BioC dependencies for the packages specified and using the default R + +**Script** +Pressing execute will run the following code over your input file and generate some outputs in your history:: + + + ## Sample tool factory 2 script version if you + ## define the parameters needed (!) as form elements + ## will save ALL needed tarballs to destdir + ## for tool_dependency use + ### ross lazarus + ### bah! humbug! + ### dec 24 2014 + + packageExpand = function(packagelist,fl) { + res = NULL + for (i in c(1:length(packagelist))) { + s = packagelist[i] + ls = nchar(s) + spos = which(substr(fl,1,ls) == s,arr.ind=T) + lspos = length(spos) + if (lspos > 0) + { + fullname = fl[spos] + if (grepl('*.gz',fullname)) { + row = paste(ps,fullname,pe,sep='') + res = append(res,row) + } + } + } + return(res) + } + + getPackages = function(packs) + { + packages = unlist(tools::package_dependencies(packs, available.packages(), + which=c("Depends", "Imports"), recursive=TRUE)) + packages = union(packs, packages) + packages + } + + ### tool factory Rscript parser suggested by Forester + ### http://www.r-bloggers.com/including-arguments-in-r-cmd-batch-mode/ + ### additional parameters will appear in the ls() below - they are available + ### to your script + ### echo parameters to the output file + ourargs = commandArgs(TRUE) + if(length(ourargs)==0){ + print("No arguments supplied.") + }else{ + for(i in 1:length(ourargs)){ + eval(parse(text=ourargs[[i]])) + } + } + + unesc = function(x) { + #### needed to deal with galaxy escaping <> in passing the xml string we need - don't try this at home kids. + res = x + res = gsub('__lt__','<',res) + res = gsub('__gt__','>',res) + return(res) + } + + our_packages = strsplit(ourpackages," ")[[1]] + ### these show as attached non-base packages in sessionInfo after running the R code + ps=unesc(xmlprefix) + pe="?raw=true</package>" + + print(paste('tardir=',tardir,'xmlprefix=',xmlprefix,'ourpackages=',ourpackages,'OUTPATH=',OUTPATH)) + + + setRepositories(ind=1:2) + chooseBioCmirror(ind=7,graphics=F) # canberra - use eg 1 for FredHutch + chooseCRANmirror(ind=5,graphics=F) # Melbourne - use 96 for texas + + ifreq = function(pkg='DESeq2') { + if(require(package=pkg,character.only = T)){ + print(paste(pkg,"is loaded correctly")) + } else { + print(paste("trying to install",pkg)) + install.packages(pkg) + if(require(package=pkg,character.only = T)){ + print(paste(pkg,"installed and loaded correctly")) + } else { + stop(paste("Could not install",pkg)) + } + } + } + + ifreq(pkg="BiocInstaller") + ifreq(pkg="pkgDepTools") + ifreq(pkg="Biobase") + + print.noquote('Greetings! The R you have chosen is using the following repositories:') + print.noquote(biocinstallRepos()) + packages = getPackages(our_packages) + download.packages(pkgs=packages,destdir=tardir, type="source", repos=biocinstallRepos()) + flist = list.files(tardir) + allDeps = makeDepGraph(biocinstallRepos(), type="source", keep.builtin=F, dosize=F) + res = NULL + for (i in c(1:length(our_packages))) { + package = our_packages[i] + io = getInstallOrder(package, allDeps, needed.only=FALSE) + ares = packageExpand(packagelist=io\$packages,fl=flist) + res = append(res,ares) + } + ures = unique(res) + tout = "savedeps.xml" + write.table(ures,file=tout,quote=F,sep="\t",row.names=F,col.names=F) + write.table(ures,file=OUTPATH,quote=F,sep="\t",row.names=F,col.names=F) + print.noquote(res) + sessionInfo() + print.noquote(date()) + +**Attribution** +This Galaxy tool was created by ross.lazarus@gmail.com at 21/01/2015 11:25:22 +using the Galaxy Tool Factory. + +See https://bitbucket.org/fubar/galaxytoolfactory for details of that project +Please cite: Creating re-usable tools from scripts: The Galaxy Tool Factory. Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team. +Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573 + + +This tool was autogenerated from a user provided script using the Galaxy Tool Factory 2 +https://toolshed.g2.bx.psu.edu/view/fubar/tool_factory_2 +</help> +<citations> + + <citation type="doi">10.1093/bioinformatics/bts573</citation> +</citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r_bioc_depgen_r_3_1_2/test-data/r_bioc_depgen_r_3_1_2_test1_output.html Tue Jan 20 19:29:17 2015 -0500 @@ -0,0 +1,962 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta name="generator" content="Galaxy rgToolFactory2.py tool output - see http://g2.trac.bx.psu.edu/" /> + <title></title> + <link rel="stylesheet" href="/static/style/base.css" type="text/css" /> + </head> + <body> + <div class="toolFormBody"> + +<div class="infomessage">Galaxy Tool "r_bioc_depgen_r_3_1_2" run at 21/01/2015 11:25:22</div><br/> +<div class="toolFormTitle">r log output</div> + +<pre> + +Loading required package: BiocInstaller + +Bioconductor version 3.0 (BiocInstaller 1.16.1), ?biocLite for help + +Loading required package: pkgDepTools + +Loading required package: methods + +Loading required package: graph + +Loading required package: RBGL + +Loading required package: Biobase + +Loading required package: BiocGenerics + +Loading required package: parallel + +Attaching package: 'BiocGenerics' + +The following objects are masked from 'package:parallel': + + clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, + + clusterExport, clusterMap, parApply, parCapply, parLapply, + + parLapplyLB, parRapply, parSapply, parSapplyLB + +The following object is masked from 'package:stats': + + xtabs + +The following objects are masked from 'package:base': + + Filter, Find, Map, Position, Reduce, anyDuplicated, append, + + as.data.frame, as.vector, cbind, colnames, do.call, duplicated, + + eval, evalq, get, intersect, is.unsorted, lapply, mapply, match, + + mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank, rbind, + + rep.int, rownames, sapply, setdiff, sort, table, tapply, union, + + unique, unlist, unsplit + +Welcome to Bioconductor + + Vignettes contain introductory material; view with + + 'browseVignettes()'. To cite Bioconductor, see + + 'citation("Biobase")', and for packages 'citation("pkgname")'. + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/DESeq2_1.6.3.tar.gz' + +Content type 'application/x-gzip' length 1194684 bytes (1.1 Mb) + +opened URL + +================================================== + +downloaded 1.1 Mb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/S4Vectors_0.4.0.tar.gz' + +Content type 'application/x-gzip' length 119231 bytes (116 Kb) + +opened URL + +================================================== + +downloaded 116 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/IRanges_2.0.1.tar.gz' + +Content type 'application/x-gzip' length 584602 bytes (570 Kb) + +opened URL + +================================================== + +downloaded 570 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/GenomicRanges_1.18.4.tar.gz' + +Content type 'application/x-gzip' length 672061 bytes (656 Kb) + +opened URL + +================================================== + +downloaded 656 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/Rcpp_0.11.3.tar.gz' + +Content type 'application/x-gzip' length 2169583 bytes (2.1 Mb) + +opened URL + +================================================== + +downloaded 2.1 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/RcppArmadillo_0.4.600.0.tar.gz' + +Content type 'application/x-gzip' length 938280 bytes (916 Kb) + +opened URL + +================================================== + +downloaded 916 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/BiocGenerics_0.12.1.tar.gz' + +Content type 'application/x-gzip' length 33444 bytes (32 Kb) + +opened URL + +================================================== + +downloaded 32 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/Biobase_2.26.0.tar.gz' + +Content type 'application/x-gzip' length 1674714 bytes (1.6 Mb) + +opened URL + +================================================== + +downloaded 1.6 Mb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/BiocParallel_1.0.0.tar.gz' + +Content type 'application/x-gzip' length 384426 bytes (375 Kb) + +opened URL + +================================================== + +downloaded 375 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/genefilter_1.48.1.tar.gz' + +Content type 'application/x-gzip' length 1150612 bytes (1.1 Mb) + +opened URL + +================================================== + +downloaded 1.1 Mb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'methods' at the repositories + +trying URL 'http://cran.at.r-project.org/src/contrib/locfit_1.5-9.1.tar.gz' + +Content type 'application/x-gzip' length 196560 bytes (191 Kb) + +opened URL + +================================================== + +downloaded 191 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/geneplotter_1.44.0.tar.gz' + +Content type 'application/x-gzip' length 1396205 bytes (1.3 Mb) + +opened URL + +================================================== + +downloaded 1.3 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/ggplot2_1.0.0.tar.gz' + +Content type 'application/x-gzip' length 2351447 bytes (2.2 Mb) + +opened URL + +================================================== + +downloaded 2.2 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/Hmisc_3.14-6.tar.gz' + +Content type 'application/x-gzip' length 611348 bytes (597 Kb) + +opened URL + +================================================== + +downloaded 597 Kb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'utils' at the repositories + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'graphics' at the repositories + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'stats' at the repositories + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'parallel' at the repositories + +trying URL 'http://cran.at.r-project.org/src/contrib/foreach_1.4.2.tar.gz' + +Content type 'application/x-gzip' length 359739 bytes (351 Kb) + +opened URL + +================================================== + +downloaded 351 Kb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'tools' at the repositories + +trying URL 'http://cran.at.r-project.org/src/contrib/BatchJobs_1.5.tar.gz' + +Content type 'application/x-gzip' length 106072 bytes (103 Kb) + +opened URL + +================================================== + +downloaded 103 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/BBmisc_1.8.tar.gz' + +Content type 'application/x-gzip' length 78509 bytes (76 Kb) + +opened URL + +================================================== + +downloaded 76 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/GenomeInfoDb_1.2.4.tar.gz' + +Content type 'application/x-gzip' length 265778 bytes (259 Kb) + +opened URL + +================================================== + +downloaded 259 Kb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/XVector_0.6.0.tar.gz' + +Content type 'application/x-gzip' length 53582 bytes (52 Kb) + +opened URL + +================================================== + +downloaded 52 Kb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'grid' at the repositories + +trying URL 'http://cran.at.r-project.org/src/contrib/lattice_0.20-29.tar.gz' + +Content type 'application/x-gzip' length 347091 bytes (338 Kb) + +opened URL + +================================================== + +downloaded 338 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/survival_2.37-7.tar.gz' + +Content type 'application/x-gzip' length 4132583 bytes (3.9 Mb) + +opened URL + +================================================== + +downloaded 3.9 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/Formula_1.2-0.tar.gz' + +Content type 'application/x-gzip' length 149177 bytes (145 Kb) + +opened URL + +================================================== + +downloaded 145 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/latticeExtra_0.6-26.tar.gz' + +Content type 'application/x-gzip' length 1295154 bytes (1.2 Mb) + +opened URL + +================================================== + +downloaded 1.2 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/cluster_1.15.3.tar.gz' + +Content type 'application/x-gzip' length 275276 bytes (268 Kb) + +opened URL + +================================================== + +downloaded 268 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/rpart_4.1-8.tar.gz' + +Content type 'application/x-gzip' length 818733 bytes (799 Kb) + +opened URL + +================================================== + +downloaded 799 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/nnet_7.3-8.tar.gz' + +Content type 'application/x-gzip' length 28424 bytes (27 Kb) + +opened URL + +================================================== + +downloaded 27 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/acepack_1.3-3.3.tar.gz' + +Content type 'application/x-gzip' length 33590 bytes (32 Kb) + +opened URL + +================================================== + +downloaded 32 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/foreign_0.8-62.tar.gz' + +Content type 'application/x-gzip' length 332874 bytes (325 Kb) + +opened URL + +================================================== + +downloaded 325 Kb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'stats4' at the repositories + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/AnnotationDbi_1.28.1.tar.gz' + +Content type 'application/x-gzip' length 4254796 bytes (4.1 Mb) + +opened URL + +================================================== + +downloaded 4.1 Mb + +trying URL 'http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc/src/contrib/annotate_1.44.0.tar.gz' + +Content type 'application/x-gzip' length 1862187 bytes (1.8 Mb) + +opened URL + +================================================== + +downloaded 1.8 Mb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'grDevices' at the repositories + +trying URL 'http://cran.at.r-project.org/src/contrib/RColorBrewer_1.1-2.tar.gz' + +Content type 'application/x-gzip' length 11532 bytes (11 Kb) + +opened URL + +================================================== + +downloaded 11 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/plyr_1.8.1.tar.gz' + +Content type 'application/x-gzip' length 393233 bytes (384 Kb) + +opened URL + +================================================== + +downloaded 384 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/digest_0.6.8.tar.gz' + +Content type 'application/x-gzip' length 97985 bytes (95 Kb) + +opened URL + +================================================== + +downloaded 95 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/gtable_0.1.2.tar.gz' + +Content type 'application/x-gzip' length 19667 bytes (19 Kb) + +opened URL + +================================================== + +downloaded 19 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/reshape2_1.4.1.tar.gz' + +Content type 'application/x-gzip' length 34693 bytes (33 Kb) + +opened URL + +================================================== + +downloaded 33 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/scales_0.2.4.tar.gz' + +Content type 'application/x-gzip' length 40093 bytes (39 Kb) + +opened URL + +================================================== + +downloaded 39 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/proto_0.3-10.tar.gz' + +Content type 'application/x-gzip' length 530758 bytes (518 Kb) + +opened URL + +================================================== + +downloaded 518 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/MASS_7.3-37.tar.gz' + +Content type 'application/x-gzip' length 486900 bytes (475 Kb) + +opened URL + +================================================== + +downloaded 475 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/DBI_0.3.1.tar.gz' + +Content type 'application/x-gzip' length 30106 bytes (29 Kb) + +opened URL + +================================================== + +downloaded 29 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/RSQLite_1.0.0.tar.gz' + +Content type 'application/x-gzip' length 1745731 bytes (1.7 Mb) + +opened URL + +================================================== + +downloaded 1.7 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/checkmate_1.5.1.tar.gz' + +Content type 'application/x-gzip' length 49993 bytes (48 Kb) + +opened URL + +================================================== + +downloaded 48 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/brew_1.0-6.tar.gz' + +Content type 'application/x-gzip' length 83315 bytes (81 Kb) + +opened URL + +================================================== + +downloaded 81 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/fail_1.2.tar.gz' + +Content type 'application/x-gzip' length 10599 bytes (10 Kb) + +opened URL + +================================================== + +downloaded 10 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/sendmailR_1.2-1.tar.gz' + +Content type 'application/x-gzip' length 7367 bytes + +opened URL + +================================================== + +downloaded 7367 bytes + +trying URL 'http://cran.at.r-project.org/src/contrib/stringr_0.6.2.tar.gz' + +Content type 'application/x-gzip' length 20636 bytes (20 Kb) + +opened URL + +================================================== + +downloaded 20 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/XML_3.98-1.1.tar.gz' + +Content type 'application/x-gzip' length 1582216 bytes (1.5 Mb) + +opened URL + +================================================== + +downloaded 1.5 Mb + +trying URL 'http://cran.at.r-project.org/src/contrib/xtable_1.7-4.tar.gz' + +Content type 'application/x-gzip' length 350204 bytes (341 Kb) + +opened URL + +================================================== + +downloaded 341 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/codetools_0.2-10.tar.gz' + +Content type 'application/x-gzip' length 12863 bytes (12 Kb) + +opened URL + +================================================== + +downloaded 12 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/iterators_1.0.7.tar.gz' + +Content type 'application/x-gzip' length 289453 bytes (282 Kb) + +opened URL + +================================================== + +downloaded 282 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/dichromat_2.0-0.tar.gz' + +Content type 'application/x-gzip' length 84320 bytes (82 Kb) + +opened URL + +================================================== + +downloaded 82 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/munsell_0.4.2.tar.gz' + +Content type 'application/x-gzip' length 91026 bytes (88 Kb) + +opened URL + +================================================== + +downloaded 88 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/labeling_0.3.tar.gz' + +Content type 'application/x-gzip' length 10722 bytes (10 Kb) + +opened URL + +================================================== + +downloaded 10 Kb + +Warning in download.packages(pkgs = packages, destdir = tardir, type = "source", : + + no package 'splines' at the repositories + +trying URL 'http://cran.at.r-project.org/src/contrib/colorspace_1.2-4.tar.gz' + +Content type 'application/x-gzip' length 242791 bytes (237 Kb) + +opened URL + +================================================== + +downloaded 237 Kb + +trying URL 'http://cran.at.r-project.org/src/contrib/base64enc_0.1-2.tar.gz' + +Content type 'application/x-gzip' length 6407 bytes + +opened URL + +================================================== + +downloaded 6407 bytes + +Warning messages: + +1: In .local(from, to, graph) : + + edges replaced: 'MafDb.ALL.wgs.phase1.release.v3.20101123|VariantFiltering', 'NA|RSQLite', 'NA|Biobase', 'NA|AnnotationDbi', 'NA|IRanges', 'NA|Biostrings', 'NA|Rsamtools', 'NA|GenomicRanges', 'NA|VariantAnnotation' + +2: In .local(from, to, graph) : + + edges replaced: 'MafDb.ESP6500SI.V2.SSA137.dbSNP138|VariantFiltering', 'NA|RSQLite', 'NA|Biobase', 'NA|AnnotationDbi', 'NA|IRanges', 'NA|Biostrings', 'NA|GenomicRanges', 'NA|VariantAnnotation' + +3: In .local(from, to, graph) : + + edges replaced: 'phastCons100way.UCSC.hg19|VariantFiltering', 'NA|IRanges', 'NA|GenomicRanges', 'NA|BSgenome' + +4: In .local(from, to, graph) : edges replaced: 'SNPRelate|gdsfmt' + +5: In .local(from, to, graph) : edges replaced: 'RCurl|bitops' + +Warning messages: + +1: In if (grepl("*.gz", fullname)) { : + + the condition has length > 1 and only the first element will be used + +2: In if (grepl("*.gz", fullname)) { : + + the condition has length > 1 and only the first element will be used + + +</pre> + +<div class="toolFormTitle">Other log output</div> + +<pre> + +## Toolfactory generated command line = Rscript /mnt/galaxy/tmp/143.1.all.q/r_bioc_depgen_r_3_1_2gRKYSn.Rscript OUTPATH="/mnt/galaxy/tmp/job_working_directory/000/225/galaxy_dataset_508.dat" tardir="/tmp" ourpackages="DESeq2" xmlprefix="<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/" + +[1] "tardir= /tmp xmlprefix= <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/ ourpackages= DESeq2 OUTPATH= /mnt/galaxy/tmp/job_working_directory/000/225/galaxy_dataset_508.dat" + +[1] "BiocInstaller is loaded correctly" + +[1] "pkgDepTools is loaded correctly" + +[1] "Biobase is loaded correctly" + +[1] Greetings! The R you have chosen is using the following repositories: + + BioCsoft + + http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc + + BioCann + +http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/data/annotation + + BioCexp + +http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/data/experiment + + BioCextra + + http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/extra + + CRAN + + http://cran.at.r-project.org + + [,1] [,2] + + [1,] "DESeq2" "/tmp/DESeq2_1.6.3.tar.gz" + + [2,] "S4Vectors" "/tmp/S4Vectors_0.4.0.tar.gz" + + [3,] "IRanges" "/tmp/IRanges_2.0.1.tar.gz" + + [4,] "GenomicRanges" "/tmp/GenomicRanges_1.18.4.tar.gz" + + [5,] "Rcpp" "/tmp/Rcpp_0.11.3.tar.gz" + + [6,] "RcppArmadillo" "/tmp/RcppArmadillo_0.4.600.0.tar.gz" + + [7,] "BiocGenerics" "/tmp/BiocGenerics_0.12.1.tar.gz" + + [8,] "Biobase" "/tmp/Biobase_2.26.0.tar.gz" + + [9,] "BiocParallel" "/tmp/BiocParallel_1.0.0.tar.gz" + +[10,] "genefilter" "/tmp/genefilter_1.48.1.tar.gz" + +[11,] "locfit" "/tmp/locfit_1.5-9.1.tar.gz" + +[12,] "geneplotter" "/tmp/geneplotter_1.44.0.tar.gz" + +[13,] "ggplot2" "/tmp/ggplot2_1.0.0.tar.gz" + +[14,] "Hmisc" "/tmp/Hmisc_3.14-6.tar.gz" + +[15,] "foreach" "/tmp/foreach_1.4.2.tar.gz" + +[16,] "BatchJobs" "/tmp/BatchJobs_1.5.tar.gz" + +[17,] "BBmisc" "/tmp/BBmisc_1.8.tar.gz" + +[18,] "GenomeInfoDb" "/tmp/GenomeInfoDb_1.2.4.tar.gz" + +[19,] "XVector" "/tmp/XVector_0.6.0.tar.gz" + +[20,] "lattice" "/tmp/lattice_0.20-29.tar.gz" + +[21,] "survival" "/tmp/survival_2.37-7.tar.gz" + +[22,] "Formula" "/tmp/Formula_1.2-0.tar.gz" + +[23,] "latticeExtra" "/tmp/latticeExtra_0.6-26.tar.gz" + +[24,] "cluster" "/tmp/cluster_1.15.3.tar.gz" + +[25,] "rpart" "/tmp/rpart_4.1-8.tar.gz" + +[26,] "nnet" "/tmp/nnet_7.3-8.tar.gz" + +[27,] "acepack" "/tmp/acepack_1.3-3.3.tar.gz" + +[28,] "foreign" "/tmp/foreign_0.8-62.tar.gz" + +[29,] "AnnotationDbi" "/tmp/AnnotationDbi_1.28.1.tar.gz" + +[30,] "annotate" "/tmp/annotate_1.44.0.tar.gz" + +[31,] "RColorBrewer" "/tmp/RColorBrewer_1.1-2.tar.gz" + +[32,] "plyr" "/tmp/plyr_1.8.1.tar.gz" + +[33,] "digest" "/tmp/digest_0.6.8.tar.gz" + +[34,] "gtable" "/tmp/gtable_0.1.2.tar.gz" + +[35,] "reshape2" "/tmp/reshape2_1.4.1.tar.gz" + +[36,] "scales" "/tmp/scales_0.2.4.tar.gz" + +[37,] "proto" "/tmp/proto_0.3-10.tar.gz" + +[38,] "MASS" "/tmp/MASS_7.3-37.tar.gz" + +[39,] "DBI" "/tmp/DBI_0.3.1.tar.gz" + +[40,] "RSQLite" "/tmp/RSQLite_1.0.0.tar.gz" + +[41,] "checkmate" "/tmp/checkmate_1.5.1.tar.gz" + +[42,] "brew" "/tmp/brew_1.0-6.tar.gz" + +[43,] "fail" "/tmp/fail_1.2.tar.gz" + +[44,] "sendmailR" "/tmp/sendmailR_1.2-1.tar.gz" + +[45,] "stringr" "/tmp/stringr_0.6.2.tar.gz" + +[46,] "XML" "/tmp/XML_3.98-1.1.tar.gz" + +[47,] "xtable" "/tmp/xtable_1.7-4.tar.gz" + +[48,] "codetools" "/tmp/codetools_0.2-10.tar.gz" + +[49,] "iterators" "/tmp/iterators_1.0.7.tar.gz" + +[50,] "dichromat" "/tmp/dichromat_2.0-0.tar.gz" + +[51,] "munsell" "/tmp/munsell_0.4.2.tar.gz" + +[52,] "labeling" "/tmp/labeling_0.3.tar.gz" + +[53,] "colorspace" "/tmp/colorspace_1.2-4.tar.gz" + +[54,] "base64enc" "/tmp/base64enc_0.1-2.tar.gz" + + [1] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BiocGenerics_0.12.1.tar.gz?raw=true</package> + + [2] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/S4Vectors_0.4.0.tar.gz?raw=true</package> + + [3] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/IRanges_2.0.1.tar.gz?raw=true</package> + + [4] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/GenomeInfoDb_1.2.4.tar.gz?raw=true</package> + + [5] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/XVector_0.6.0.tar.gz?raw=true</package> + + [6] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/GenomicRanges_1.18.4.tar.gz?raw=true</package> + + [7] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RcppArmadillo_0.4.600.0.tar.gz?raw=true</package> + + [8] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Rcpp_0.11.3.tar.gz?raw=true</package> + + [9] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RcppArmadillo_0.4.600.0.tar.gz?raw=true</package> + +[10] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Biobase_2.26.0.tar.gz?raw=true</package> + +[11] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/iterators_1.0.7.tar.gz?raw=true</package> + +[12] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/foreach_1.4.2.tar.gz?raw=true</package> + +[13] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/checkmate_1.5.1.tar.gz?raw=true</package> + +[14] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BBmisc_1.8.tar.gz?raw=true</package> + +[15] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/brew_1.0-6.tar.gz?raw=true</package> + +[16] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/DBI_0.3.1.tar.gz?raw=true</package> + +[17] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/digest_0.6.8.tar.gz?raw=true</package> + +[18] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/fail_1.2.tar.gz?raw=true</package> + +[19] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RSQLite_1.0.0.tar.gz?raw=true</package> + +[20] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/base64enc_0.1-2.tar.gz?raw=true</package> + +[21] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/sendmailR_1.2-1.tar.gz?raw=true</package> + +[22] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/stringr_0.6.2.tar.gz?raw=true</package> + +[23] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BatchJobs_1.5.tar.gz?raw=true</package> + +[24] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BiocParallel_1.0.0.tar.gz?raw=true</package> + +[25] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/AnnotationDbi_1.28.1.tar.gz?raw=true</package> + +[26] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/XML_3.98-1.1.tar.gz?raw=true</package> + +[27] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/xtable_1.7-4.tar.gz?raw=true</package> + +[28] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/annotate_1.44.0.tar.gz?raw=true</package> + +[29] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/genefilter_1.48.1.tar.gz?raw=true</package> + +[30] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/locfit_1.5-9.1.tar.gz?raw=true</package> + +[31] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RColorBrewer_1.1-2.tar.gz?raw=true</package> + +[32] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/geneplotter_1.44.0.tar.gz?raw=true</package> + +[33] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/plyr_1.8.1.tar.gz?raw=true</package> + +[34] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/gtable_0.1.2.tar.gz?raw=true</package> + +[35] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/reshape2_1.4.1.tar.gz?raw=true</package> + +[36] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/dichromat_2.0-0.tar.gz?raw=true</package> + +[37] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/colorspace_1.2-4.tar.gz?raw=true</package> + +[38] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/munsell_0.4.2.tar.gz?raw=true</package> + +[39] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/labeling_0.3.tar.gz?raw=true</package> + +[40] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/scales_0.2.4.tar.gz?raw=true</package> + +[41] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/proto_0.3-10.tar.gz?raw=true</package> + +[42] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/ggplot2_1.0.0.tar.gz?raw=true</package> + +[43] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Formula_1.1-2.tar.gz?raw=true</package> + +[44] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Formula_1.2-0.tar.gz?raw=true</package> + +[45] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/latticeExtra_0.6-26.tar.gz?raw=true</package> + +[46] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/acepack_1.3-3.3.tar.gz?raw=true</package> + +[47] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Hmisc_3.14-6.tar.gz?raw=true</package> + +[48] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/DESeq2_1.6.3.tar.gz?raw=true</package> + +R version 3.1.2 (2014-10-31) + +Platform: x86_64-unknown-linux-gnu (64-bit) + +locale: + +[1] C + +attached base packages: + +[1] parallel methods stats graphics grDevices utils datasets + +[8] base + +other attached packages: + +[1] Biobase_2.26.0 BiocGenerics_0.12.1 pkgDepTools_1.32.0 + +[4] RBGL_1.42.0 graph_1.44.1 BiocInstaller_1.16.1 + +loaded via a namespace (and not attached): + +[1] stats4_3.1.2 tools_3.1.2 + +[1] Wed Jan 21 11:25:22 2015 + + +</pre> + +<div class="toolFormTitle">All output files available for downloading</div> + +<div><table class="colored" cellpadding="3" cellspacing="3"><tr><th>Output File Name (click to view)</th><th>Size</th></tr> + +<tr><td><a href="r_bioc_depgen_r_3_1_2.Rscript">r_bioc_depgen_r_3_1_2.Rscript</a></td><td>3.1 KB</td></tr> +<tr class="odd_row"><td><a href="r_bioc_depgen_r_3_1_2_error.log">r_bioc_depgen_r_3_1_2_error.log</a></td><td>15.5 KB</td></tr> +<tr><td><a href="r_bioc_depgen_r_3_1_2_runner.log">r_bioc_depgen_r_3_1_2_runner.log</a></td><td>11.9 KB</td></tr> +<tr class="odd_row"><td><a href="savedeps.xml">savedeps.xml</a></td><td>6.0 KB</td></tr> +</table></div><br/> +</div></body></html> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r_bioc_depgen_r_3_1_2/test-data/r_bioc_depgen_r_3_1_2_test1_output.xls Tue Jan 20 19:29:17 2015 -0500 @@ -0,0 +1,47 @@ +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BiocGenerics_0.12.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/S4Vectors_0.4.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/IRanges_2.0.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/GenomeInfoDb_1.2.4.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/XVector_0.6.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/GenomicRanges_1.18.4.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RcppArmadillo_0.4.600.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Rcpp_0.11.3.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Biobase_2.26.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/iterators_1.0.7.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/foreach_1.4.2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/checkmate_1.5.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BBmisc_1.8.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/brew_1.0-6.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/DBI_0.3.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/digest_0.6.8.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/fail_1.2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RSQLite_1.0.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/base64enc_0.1-2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/sendmailR_1.2-1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/stringr_0.6.2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BatchJobs_1.5.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BiocParallel_1.0.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/AnnotationDbi_1.28.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/XML_3.98-1.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/xtable_1.7-4.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/annotate_1.44.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/genefilter_1.48.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/locfit_1.5-9.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RColorBrewer_1.1-2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/geneplotter_1.44.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/plyr_1.8.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/gtable_0.1.2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/reshape2_1.4.1.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/dichromat_2.0-0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/colorspace_1.2-4.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/munsell_0.4.2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/labeling_0.3.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/scales_0.2.4.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/proto_0.3-10.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/ggplot2_1.0.0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Formula_1.1-2.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Formula_1.2-0.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/latticeExtra_0.6-26.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/acepack_1.3-3.3.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Hmisc_3.14-6.tar.gz?raw=true</package> +<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/DESeq2_1.6.3.tar.gz?raw=true</package>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r_bioc_depgen_r_3_1_2/test-data/test1_out.log Tue Jan 20 19:29:17 2015 -0500 @@ -0,0 +1,136 @@ +## Toolfactory generated command line = Rscript /mnt/galaxy/tmp/143.1.all.q/r_bioc_depgen_r_3_1_2gRKYSn.Rscript OUTPATH="/mnt/galaxy/tmp/job_working_directory/000/225/galaxy_dataset_508.dat" tardir="/tmp" ourpackages="DESeq2" xmlprefix="<package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/" +[1] "tardir= /tmp xmlprefix= <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/ ourpackages= DESeq2 OUTPATH= /mnt/galaxy/tmp/job_working_directory/000/225/galaxy_dataset_508.dat" +[1] "BiocInstaller is loaded correctly" +[1] "pkgDepTools is loaded correctly" +[1] "Biobase is loaded correctly" +[1] Greetings! The R you have chosen is using the following repositories: + BioCsoft + http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/bioc + BioCann +http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/data/annotation + BioCexp +http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/data/experiment + BioCextra + http://mirror.aarnet.edu.au/pub/bioconductor//packages/3.0/extra + CRAN + http://cran.at.r-project.org + [,1] [,2] + [1,] "DESeq2" "/tmp/DESeq2_1.6.3.tar.gz" + [2,] "S4Vectors" "/tmp/S4Vectors_0.4.0.tar.gz" + [3,] "IRanges" "/tmp/IRanges_2.0.1.tar.gz" + [4,] "GenomicRanges" "/tmp/GenomicRanges_1.18.4.tar.gz" + [5,] "Rcpp" "/tmp/Rcpp_0.11.3.tar.gz" + [6,] "RcppArmadillo" "/tmp/RcppArmadillo_0.4.600.0.tar.gz" + [7,] "BiocGenerics" "/tmp/BiocGenerics_0.12.1.tar.gz" + [8,] "Biobase" "/tmp/Biobase_2.26.0.tar.gz" + [9,] "BiocParallel" "/tmp/BiocParallel_1.0.0.tar.gz" +[10,] "genefilter" "/tmp/genefilter_1.48.1.tar.gz" +[11,] "locfit" "/tmp/locfit_1.5-9.1.tar.gz" +[12,] "geneplotter" "/tmp/geneplotter_1.44.0.tar.gz" +[13,] "ggplot2" "/tmp/ggplot2_1.0.0.tar.gz" +[14,] "Hmisc" "/tmp/Hmisc_3.14-6.tar.gz" +[15,] "foreach" "/tmp/foreach_1.4.2.tar.gz" +[16,] "BatchJobs" "/tmp/BatchJobs_1.5.tar.gz" +[17,] "BBmisc" "/tmp/BBmisc_1.8.tar.gz" +[18,] "GenomeInfoDb" "/tmp/GenomeInfoDb_1.2.4.tar.gz" +[19,] "XVector" "/tmp/XVector_0.6.0.tar.gz" +[20,] "lattice" "/tmp/lattice_0.20-29.tar.gz" +[21,] "survival" "/tmp/survival_2.37-7.tar.gz" +[22,] "Formula" "/tmp/Formula_1.2-0.tar.gz" +[23,] "latticeExtra" "/tmp/latticeExtra_0.6-26.tar.gz" +[24,] "cluster" "/tmp/cluster_1.15.3.tar.gz" +[25,] "rpart" "/tmp/rpart_4.1-8.tar.gz" +[26,] "nnet" "/tmp/nnet_7.3-8.tar.gz" +[27,] "acepack" "/tmp/acepack_1.3-3.3.tar.gz" +[28,] "foreign" "/tmp/foreign_0.8-62.tar.gz" +[29,] "AnnotationDbi" "/tmp/AnnotationDbi_1.28.1.tar.gz" +[30,] "annotate" "/tmp/annotate_1.44.0.tar.gz" +[31,] "RColorBrewer" "/tmp/RColorBrewer_1.1-2.tar.gz" +[32,] "plyr" "/tmp/plyr_1.8.1.tar.gz" +[33,] "digest" "/tmp/digest_0.6.8.tar.gz" +[34,] "gtable" "/tmp/gtable_0.1.2.tar.gz" +[35,] "reshape2" "/tmp/reshape2_1.4.1.tar.gz" +[36,] "scales" "/tmp/scales_0.2.4.tar.gz" +[37,] "proto" "/tmp/proto_0.3-10.tar.gz" +[38,] "MASS" "/tmp/MASS_7.3-37.tar.gz" +[39,] "DBI" "/tmp/DBI_0.3.1.tar.gz" +[40,] "RSQLite" "/tmp/RSQLite_1.0.0.tar.gz" +[41,] "checkmate" "/tmp/checkmate_1.5.1.tar.gz" +[42,] "brew" "/tmp/brew_1.0-6.tar.gz" +[43,] "fail" "/tmp/fail_1.2.tar.gz" +[44,] "sendmailR" "/tmp/sendmailR_1.2-1.tar.gz" +[45,] "stringr" "/tmp/stringr_0.6.2.tar.gz" +[46,] "XML" "/tmp/XML_3.98-1.1.tar.gz" +[47,] "xtable" "/tmp/xtable_1.7-4.tar.gz" +[48,] "codetools" "/tmp/codetools_0.2-10.tar.gz" +[49,] "iterators" "/tmp/iterators_1.0.7.tar.gz" +[50,] "dichromat" "/tmp/dichromat_2.0-0.tar.gz" +[51,] "munsell" "/tmp/munsell_0.4.2.tar.gz" +[52,] "labeling" "/tmp/labeling_0.3.tar.gz" +[53,] "colorspace" "/tmp/colorspace_1.2-4.tar.gz" +[54,] "base64enc" "/tmp/base64enc_0.1-2.tar.gz" + [1] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BiocGenerics_0.12.1.tar.gz?raw=true</package> + [2] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/S4Vectors_0.4.0.tar.gz?raw=true</package> + [3] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/IRanges_2.0.1.tar.gz?raw=true</package> + [4] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/GenomeInfoDb_1.2.4.tar.gz?raw=true</package> + [5] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/XVector_0.6.0.tar.gz?raw=true</package> + [6] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/GenomicRanges_1.18.4.tar.gz?raw=true</package> + [7] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RcppArmadillo_0.4.600.0.tar.gz?raw=true</package> + [8] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Rcpp_0.11.3.tar.gz?raw=true</package> + [9] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RcppArmadillo_0.4.600.0.tar.gz?raw=true</package> +[10] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Biobase_2.26.0.tar.gz?raw=true</package> +[11] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/iterators_1.0.7.tar.gz?raw=true</package> +[12] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/foreach_1.4.2.tar.gz?raw=true</package> +[13] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/checkmate_1.5.1.tar.gz?raw=true</package> +[14] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BBmisc_1.8.tar.gz?raw=true</package> +[15] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/brew_1.0-6.tar.gz?raw=true</package> +[16] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/DBI_0.3.1.tar.gz?raw=true</package> +[17] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/digest_0.6.8.tar.gz?raw=true</package> +[18] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/fail_1.2.tar.gz?raw=true</package> +[19] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RSQLite_1.0.0.tar.gz?raw=true</package> +[20] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/base64enc_0.1-2.tar.gz?raw=true</package> +[21] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/sendmailR_1.2-1.tar.gz?raw=true</package> +[22] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/stringr_0.6.2.tar.gz?raw=true</package> +[23] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BatchJobs_1.5.tar.gz?raw=true</package> +[24] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/BiocParallel_1.0.0.tar.gz?raw=true</package> +[25] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/AnnotationDbi_1.28.1.tar.gz?raw=true</package> +[26] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/XML_3.98-1.1.tar.gz?raw=true</package> +[27] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/xtable_1.7-4.tar.gz?raw=true</package> +[28] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/annotate_1.44.0.tar.gz?raw=true</package> +[29] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/genefilter_1.48.1.tar.gz?raw=true</package> +[30] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/locfit_1.5-9.1.tar.gz?raw=true</package> +[31] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/RColorBrewer_1.1-2.tar.gz?raw=true</package> +[32] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/geneplotter_1.44.0.tar.gz?raw=true</package> +[33] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/plyr_1.8.1.tar.gz?raw=true</package> +[34] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/gtable_0.1.2.tar.gz?raw=true</package> +[35] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/reshape2_1.4.1.tar.gz?raw=true</package> +[36] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/dichromat_2.0-0.tar.gz?raw=true</package> +[37] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/colorspace_1.2-4.tar.gz?raw=true</package> +[38] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/munsell_0.4.2.tar.gz?raw=true</package> +[39] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/labeling_0.3.tar.gz?raw=true</package> +[40] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/scales_0.2.4.tar.gz?raw=true</package> +[41] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/proto_0.3-10.tar.gz?raw=true</package> +[42] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/ggplot2_1.0.0.tar.gz?raw=true</package> +[43] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Formula_1.1-2.tar.gz?raw=true</package> +[44] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Formula_1.2-0.tar.gz?raw=true</package> +[45] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/latticeExtra_0.6-26.tar.gz?raw=true</package> +[46] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/acepack_1.3-3.3.tar.gz?raw=true</package> +[47] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/Hmisc_3.14-6.tar.gz?raw=true</package> +[48] <package>https://github.com/fubar2/galaxy_tool_source/blob/master/RELEASE_2_14/diffcount/DESeq2_1.6.3.tar.gz?raw=true</package> +R version 3.1.2 (2014-10-31) +Platform: x86_64-unknown-linux-gnu (64-bit) + +locale: +[1] C + +attached base packages: +[1] parallel methods stats graphics grDevices utils datasets +[8] base + +other attached packages: +[1] Biobase_2.26.0 BiocGenerics_0.12.1 pkgDepTools_1.32.0 +[4] RBGL_1.42.0 graph_1.44.1 BiocInstaller_1.16.1 + +loaded via a namespace (and not attached): +[1] stats4_3.1.2 tools_3.1.2 +[1] Wed Jan 21 11:25:22 2015
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/r_bioc_depgen_r_3_1_2/tool_dependencies.xml Tue Jan 20 19:29:17 2015 -0500 @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<tool_dependency> + <package name="ghostscript" version="9.10"> + <repository changeset_revision="9345d2740f0c" name="package_ghostscript_9_10" owner="devteam" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /> + </package> + <package name="graphicsmagick" version="1.3.18"> + <repository changeset_revision="bff3f66adff2" name="package_graphicsmagick_1_3" owner="iuc" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /> + </package> + <package name="R" version="3.1.2"> + <repository changeset_revision="f0626dac6765" name="package_r_3_1_2" owner="iuc" prior_installation_required="True" toolshed="https://testtoolshed.g2.bx.psu.edu" /> + </package> + + <readme> + +**What it Does** + + +Generates some XML for R/BioC dependencies for the packages specified and using the default R + + This file was autogenerated by the Galaxy Tool Factory 2 + </readme> + </tool_dependency>