Mercurial > repos > fubar > brokenandnotdeletablebyowneroradmin
comparison rgToolFactory.py @ 13:7725e4ab27e1
Adding tests - problem to find the script - needs a fixed string somewhere.
Updated readme
| author | ross lazarus ross.lazarus@gmail.com |
|---|---|
| date | Sun, 03 Jun 2012 22:25:46 +1000 |
| parents | d12728e33c3d |
| children | 8594478e8d2c |
comparison
equal
deleted
inserted
replaced
| 12:d12728e33c3d | 13:7725e4ab27e1 |
|---|---|
| 91 | 91 |
| 92 | 92 |
| 93 def makeXML(self): | 93 def makeXML(self): |
| 94 """ | 94 """ |
| 95 Create a Galaxy xml tool wrapper for the new script as a string to write out | 95 Create a Galaxy xml tool wrapper for the new script as a string to write out |
| 96 fixme - use templating or something less fugly than this | 96 fixme - use templating or something less fugly than this. |
| 97 Here's an example of what we produce | |
| 98 | |
| 99 <tool id="reverse" name="reverse" version="0.01"> | |
| 100 <description>a tabular file</description> | |
| 101 <command interpreter="python"> | |
| 102 reverse.py --script_path "$runMe" --interpreter "python" | |
| 103 --tool_name "reverse" --input_tab "$input1" --output_tab "$tab_file" | |
| 104 </command> | |
| 105 <inputs> | |
| 106 <param name="input1" type="data" format="tabular" label="Select a suitable input file from your history"/><param name="job_name" type="text" label="Supply a name for the outputs to remind you what they contain" value="reverse"/> | |
| 107 | |
| 108 </inputs> | |
| 109 <outputs> | |
| 110 <data format="tabular" name="tab_file" label="${job_name}"/> | |
| 111 | |
| 112 </outputs> | |
| 113 <help> | |
| 114 | |
| 115 **What it Does** | |
| 116 | |
| 117 Reverse the columns in a tabular file | |
| 118 | |
| 119 </help> | |
| 120 <configfiles> | |
| 121 <configfile name="runMe"> | |
| 122 | |
| 123 # reverse order of columns in a tabular file | |
| 124 import sys | |
| 125 inp = sys.argv[1] | |
| 126 outp = sys.argv[2] | |
| 127 i = open(inp,'r') | |
| 128 o = open(outp,'w') | |
| 129 for row in i: | |
| 130 rs = row.rstrip().split('\t') | |
| 131 rs.reverse() | |
| 132 o.write('\t'.join(rs)) | |
| 133 o.write('\n') | |
| 134 i.close() | |
| 135 o.close() | |
| 136 | |
| 137 | |
| 138 </configfile> | |
| 139 </configfiles> | |
| 140 </tool> | |
| 141 | |
| 97 """ | 142 """ |
| 98 newXML="""<tool id="%(toolid)s" name="%(toolname)s" version="0.01"> | 143 newXML="""<tool id="%(toolid)s" name="%(toolname)s" version="0.01"> |
| 99 %(tooldesc)s | 144 %(tooldesc)s |
| 100 %(command)s | 145 %(command)s |
| 101 <inputs> | 146 <inputs> |
| 110 <configfiles> | 155 <configfiles> |
| 111 <configfile name="runMe"> | 156 <configfile name="runMe"> |
| 112 %(script)s | 157 %(script)s |
| 113 </configfile> | 158 </configfile> |
| 114 </configfiles> | 159 </configfiles> |
| 160 %(tooltests)s | |
| 115 </tool>""" # needs a dict with toolname, toolid, interpreter, scriptname, command, inputs as a multi line string ready to write, outputs ditto, help ditto | 161 </tool>""" # needs a dict with toolname, toolid, interpreter, scriptname, command, inputs as a multi line string ready to write, outputs ditto, help ditto |
| 116 | 162 |
| 117 newCommand="""<command interpreter="python"> | 163 newCommand="""<command interpreter="python"> |
| 118 %(toolname)s.py --script_path "$runMe" --interpreter "%(interpreter)s" | 164 %(toolname)s.py --script_path "$runMe" --interpreter "%(interpreter)s" |
| 119 --tool_name "%(toolname)s" %(command_inputs)s %(command_outputs)s | 165 --tool_name "%(toolname)s" %(command_inputs)s %(command_outputs)s |
| 120 </command>""" # may NOT be an input or htmlout | 166 </command>""" # may NOT be an input or htmlout |
| 121 | 167 tooltests = """<tests><test> |
| 168 <param name="input1" value="%s" ftype="%s"/> | |
| 169 <param name="job_name" value="test1"/> | |
| 170 <param name="runMe" value="$runMe"/> | |
| 171 </test><tests>""" | |
| 122 xdict = {} | 172 xdict = {} |
| 123 xdict['script'] = self.script # configfile is least painful way to embed script to avoid external dependencies | 173 xdict['script'] = self.script # configfile is least painful way to embed script to avoid external dependencies |
| 124 if self.opts.help_text: | 174 if self.opts.help_text: |
| 125 xdict['help'] = open(self.opts.help_text,'r').read() | 175 xdict['help'] = open(self.opts.help_text,'r').read() |
| 126 else: | 176 else: |
