changeset 67:035f1902741a

Uploaded
author bgruening
date Wed, 30 Oct 2013 10:04:31 -0400
parents 0f06bf18433c
children 4e6610110298
files MassComb.jar README.txt Xtandem.txt masscomb_dbsearch_converter.xml masscomb_dbsearch_mascot.xml masscomb_dbsearch_xtandem.xml masscomb_fasta_validator.xml masscomb_visual_mspicture.xml static/images/xtandem_results_viewer.png tool_dependencies.xml
diffstat 10 files changed, 884 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
Binary file MassComb.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.txt	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,187 @@
+Suite of tools that enable combining popular external mass spectrometry 
+data processing tools (like X!Tandem and ProteoWizard's MsPicture) 
+into your own Galaxy workflows.
+
+
+TODO - add license info, including info on X!Tandem and ProteoWizard 
+
+
+
+
+
+X!TANDEM LICENSE AND README ===========================================
+
+
+ X! tandem protein sequence modeler
+
+  What is it?
+  -----------
+  X! tandem open source software that can model tandem
+  mass spectra with protein sequences. This software
+  has a very simple, unsophistocated application programming
+  interface (API): it simply takes an XML file of instructions
+  on its command line, and output the results into an XML file,
+  which has been specified in the input XML file. 
+  
+  The Latest Version
+  ------------------
+
+  Details of the latest version can be found on the X! tandem
+  project page under http://www.thegpm.org. 
+  This version is the first release the CYCLONE edition (version 2012.10.01.1).
+
+
+  Documentation
+  -------------
+
+  This version of X! tandem is a full release, only including source
+  level documentation. As more releases occur, better documentation
+  will be included.
+
+  Installation
+  ------------
+
+  (IN this case installation is automatically done by Galaxy's Toolshed).
+
+  Licensing
+  ---------
+
+	The Artistic License for all X! software, binaries and documentation
+
+	Preamble
+	The intent of this document is to state the conditions under which a
+	Package may be copied, such that the Copyright Holder maintains some 
+	semblance of artistic control over the development of the package, 
+	while giving the users of the package the right to use and distribute 
+	the Package in a more-or-less customary fashion, plus the right to 
+	make reasonable modifications. 
+
+	Definitions
+	"Package" refers to the collection of files distributed by the Copyright 
+	  Holder, and derivatives of that collection of files created through 
+	  textual modification. 
+
+	"Standard Version" refers to such a Package if it has not been modified, 
+	  or has been modified in accordance with the wishes of the Copyright 
+	  Holder as specified below. 
+
+	"Copyright Holder" is whoever is named in the copyright or copyrights 
+	  for the package. 
+
+	"You" is you, if you're thinking about copying or distributing this Package. 
+
+	"Reasonable copying fee" is whatever you can justify on the basis of 
+	  media cost, duplication charges, time of people involved, and so on. 
+	  (You will not be required to justify it to the Copyright Holder, but 
+	  only to the computing community at large as a market that must bear 
+	  the fee.) 
+
+	"Freely Available" means that no fee is charged for the item itself, 
+	  though there may be fees involved in handling the item. It also means 
+	  that recipients of the item may redistribute it under the same
+	  conditions they received it. 
+
+	1. You may make and give away verbatim copies of the source form of the 
+	Standard Version of this Package without restriction, provided that 
+	you duplicate all of the original copyright notices and associated 
+	disclaimers. 
+
+	2. You may apply bug fixes, portability fixes and other modifications 
+	derived from the Public Domain or from the Copyright Holder. A 
+	Package modified in such a way shall still be considered the Standard 
+	Version. 
+
+	3. You may otherwise modify your copy of this Package in any way, provided 
+	that you insert a prominent notice in each changed file stating how and 
+	when you changed that file, and provided that you do at least ONE of the 
+	following: 
+
+	  a. place your modifications in the Public Domain or otherwise make them 
+		 Freely Available, such as by posting said modifications to Usenet 
+		 or an equivalent medium, or placing the modifications on a major 
+		 archive site such as uunet.uu.net, or by allowing the Copyright Holder 
+		 to include your modifications in the Standard Version of the Package. 
+	  b. use the modified Package only within your corporation or organization. 
+	  c. rename any non-standard executables so the names do not conflict 
+		 with standard executables, which must also be provided, and provide 
+		 a separate manual page for each non-standard executable that clearly 
+		 documents how it differs from the Standard Version. 
+	  d. make other distribution arrangements with the Copyright Holder. 
+
+	4. You may distribute the programs of this Package in object code or 
+	executable form, provided that you do at least ONE of the following: 
+
+	  a. distribute a Standard Version of the executables and library files, 
+		 together with instructions (in the manual page or equivalent) on 
+		 where to get the Standard Version. 
+	  b. accompany the distribution with the machine-readable source of the 
+		 Package with your modifications. 
+	  c. give non-standard executables non-standard names, and clearly 
+		 document the differences in manual pages (or equivalent), together 
+		 with instructions on where to get the Standard Version. 
+	  d. make other distribution arrangements with the Copyright Holder. 
+
+	5. You may charge a reasonable copying fee for any distribution of 
+	this Package. You may charge any fee you choose for support of 
+	this Package. You may not charge a fee for this Package itself. 
+	However, you may distribute this Package in aggregate with other 
+	(possibly commercial) programs as part of a larger (possibly 
+	commercial) software distribution provided that you do not a
+	dvertise this Package as a product of your own. You may embed this 
+	Package's interpreter within an executable of yours (by linking); 
+	this shall be construed as a mere form of aggregation, provided that 
+	the complete Standard Version of the interpreter is so embedded. 
+
+	6. The scripts and library files supplied as input to or produced as 
+	output from the programs of this Package do not automatically fall 
+	under the copyright of this Package, but belong to whomever generated 
+	them, and may be sold commercially, and may be aggregated with this 
+	Package. If such scripts or library files are aggregated with this 
+	Package via the so-called "undump" or "unexec" methods of producing 
+	a binary executable image, then distribution of such an image shall 
+	neither be construed as a distribution of this Package nor shall it 
+	fall under the restrictions of Paragraphs 3 and 4, provided that you 
+	do not represent such an executable image as a Standard Version of 
+	this Package. 
+
+	7. C subroutines (or comparably compiled subroutines in other languages) 
+	supplied by you and linked into this Package in order to emulate 
+	subroutines and variables of the language defined by this Package 
+	shall not be considered part of this Package, but are the equivalent 
+	of input as in Paragraph 6, provided these subroutines do not change 
+	the language in any way that would cause it to fail the regression 
+	tests for the language. 
+
+	8. Aggregation of this Package with a commercial distribution is always 
+	permitted provided that the use of this Package is embedded; that is, 
+	when no overt attempt is made to make this Package's interfaces visible 
+	to the end user of the commercial distribution. Such use shall not be 
+	construed as a distribution of this Package. 
+
+	9. The name of the Copyright Holder may not be used to endorse or promote 
+	products derived from this software without specific prior written permission. 
+
+	10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 
+	WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 
+	MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
+
+	The End 
+
+
+  Contacts
+  --------
+
+  For any questions involving X! tandem, please contact 
+  contact@thegpm.org
+
+  Acknowledgments
+  ----------------
+
+  Ron Beavis - system design and implementation
+  Rob Craig - debugging and LINUX implementation
+  Jayson Falkner - code for GeeToo LINUX implementation
+  Patrick Lacasse - initial additions for mzxml and mzdata functionality
+  Brendan McLean - optimized changes for mzxml and mzdata functionality using expat library
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Xtandem.txt	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,121 @@
+The Artistic License for all X! software, binaries and documentation 
+
+Preamble
+The intent of this document is to state the conditions under which a
+Package may be copied, such that the Copyright Holder maintains some 
+semblance of artistic control over the development of the package, 
+while giving the users of the package the right to use and distribute 
+the Package in a more-or-less customary fashion, plus the right to 
+make reasonable modifications. 
+
+Definitions
+"Package" refers to the collection of files distributed by the Copyright 
+  Holder, and derivatives of that collection of files created through 
+  textual modification. 
+
+"Standard Version" refers to such a Package if it has not been modified, 
+  or has been modified in accordance with the wishes of the Copyright 
+  Holder as specified below. 
+
+"Copyright Holder" is whoever is named in the copyright or copyrights 
+  for the package. 
+
+"You" is you, if you're thinking about copying or distributing this Package. 
+
+"Reasonable copying fee" is whatever you can justify on the basis of 
+  media cost, duplication charges, time of people involved, and so on. 
+  (You will not be required to justify it to the Copyright Holder, but 
+  only to the computing community at large as a market that must bear 
+  the fee.) 
+
+"Freely Available" means that no fee is charged for the item itself, 
+  though there may be fees involved in handling the item. It also means 
+  that recipients of the item may redistribute it under the same
+  conditions they received it. 
+
+1. You may make and give away verbatim copies of the source form of the 
+Standard Version of this Package without restriction, provided that 
+you duplicate all of the original copyright notices and associated 
+disclaimers. 
+
+2. You may apply bug fixes, portability fixes and other modifications 
+derived from the Public Domain or from the Copyright Holder. A 
+Package modified in such a way shall still be considered the Standard 
+Version. 
+
+3. You may otherwise modify your copy of this Package in any way, provided 
+that you insert a prominent notice in each changed file stating how and 
+when you changed that file, and provided that you do at least ONE of the 
+following: 
+
+  a. place your modifications in the Public Domain or otherwise make them 
+     Freely Available, such as by posting said modifications to Usenet 
+     or an equivalent medium, or placing the modifications on a major 
+     archive site such as uunet.uu.net, or by allowing the Copyright Holder 
+     to include your modifications in the Standard Version of the Package. 
+  b. use the modified Package only within your corporation or organization. 
+  c. rename any non-standard executables so the names do not conflict 
+     with standard executables, which must also be provided, and provide 
+     a separate manual page for each non-standard executable that clearly 
+     documents how it differs from the Standard Version. 
+  d. make other distribution arrangements with the Copyright Holder. 
+
+4. You may distribute the programs of this Package in object code or 
+executable form, provided that you do at least ONE of the following: 
+
+  a. distribute a Standard Version of the executables and library files, 
+     together with instructions (in the manual page or equivalent) on 
+     where to get the Standard Version. 
+  b. accompany the distribution with the machine-readable source of the 
+     Package with your modifications. 
+  c. give non-standard executables non-standard names, and clearly 
+     document the differences in manual pages (or equivalent), together 
+     with instructions on where to get the Standard Version. 
+  d. make other distribution arrangements with the Copyright Holder. 
+
+5. You may charge a reasonable copying fee for any distribution of 
+this Package. You may charge any fee you choose for support of 
+this Package. You may not charge a fee for this Package itself. 
+However, you may distribute this Package in aggregate with other 
+(possibly commercial) programs as part of a larger (possibly 
+commercial) software distribution provided that you do not a
+dvertise this Package as a product of your own. You may embed this 
+Package's interpreter within an executable of yours (by linking); 
+this shall be construed as a mere form of aggregation, provided that 
+the complete Standard Version of the interpreter is so embedded. 
+
+6. The scripts and library files supplied as input to or produced as 
+output from the programs of this Package do not automatically fall 
+under the copyright of this Package, but belong to whomever generated 
+them, and may be sold commercially, and may be aggregated with this 
+Package. If such scripts or library files are aggregated with this 
+Package via the so-called "undump" or "unexec" methods of producing 
+a binary executable image, then distribution of such an image shall 
+neither be construed as a distribution of this Package nor shall it 
+fall under the restrictions of Paragraphs 3 and 4, provided that you 
+do not represent such an executable image as a Standard Version of 
+this Package. 
+
+7. C subroutines (or comparably compiled subroutines in other languages) 
+supplied by you and linked into this Package in order to emulate 
+subroutines and variables of the language defined by this Package 
+shall not be considered part of this Package, but are the equivalent 
+of input as in Paragraph 6, provided these subroutines do not change 
+the language in any way that would cause it to fail the regression 
+tests for the language. 
+
+8. Aggregation of this Package with a commercial distribution is always 
+permitted provided that the use of this Package is embedded; that is, 
+when no overt attempt is made to make this Package's interfaces visible 
+to the end user of the commercial distribution. Such use shall not be 
+construed as a distribution of this Package. 
+
+9. The name of the Copyright Holder may not be used to endorse or promote 
+products derived from this software without specific prior written permission. 
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED 
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
+
+The End 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/masscomb_dbsearch_converter.xml	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,82 @@
+<tool name="DB search converter" id="masscomb_dbsearch_converter" version="1.0.1">
+	<description>Convert X!tandem output to mzIdentML standard format</description>
+	<!-- 
+	   For remote debugging start you listener on port 8000 and use the following as command interpreter:
+	       java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=D0100564.wurnet.nl:8000 
+	                    //////////////////////////
+	    -->
+	<command interpreter="java -jar">
+	   MassComb.jar 
+	   -action DBSEARCHCONVERT 
+	   -fileGrouping $fileType.type 
+	   -searchResultsFormat $fileType.inputFormatType.inputFormat
+	    #if $fileType.inputFormatType.inputFormat == "xtandem"
+	    	-isMs2SpectrumIdStartingAtZero $fileType.inputFormatType.isMs2SpectrumIdStartingAtZero
+        #end if
+	   -inputFile $fileType.inputFormatType.inputFile 
+	   -outputFile $outputFile 
+	</command>
+	<inputs>
+		<conditional name="fileType">
+	    <param name="type" type="select" label="select file grouping type">
+	      <option value="single" selected="true">single-File</option>
+	      <option value="fileSet">fileSet</option>
+	    </param>
+	    <when value="single">
+	      <conditional name="inputFormatType">
+	      	<param name="inputFormat" type="select" label="inputFormat">
+		    		<option value="xtandem">X!Tandem</option>
+		    		<option value="omssa">OMSSA</option>
+			</param>
+			<when value="xtandem">
+	      		<param name="inputFile" type="data" format="bioml,xml" label="MS/MS search results" help="Note: the spectra index values in the resulting file will only be reliable for when X!Tandem has executed on MzML data"/>
+	      		<param name="isMs2SpectrumIdStartingAtZero" type="select" label="Spectrum numbering starting at zero in original spectra file" help="Some formats, like mzML, start their spectrum numbering from 0, other formats start from 1. ">
+			      <option value="true" selected="true">Yes, starting at 0</option>
+			      <option value="false">No, starting at 1</option>
+			    </param>
+	      	</when>
+	      	<when value="omssa">
+	      		<param name="inputFile" type="data" format="omx" label="MS/MS search results"/>
+	      	</when>
+	      </conditional>
+	    </when>
+	    <when value="fileSet">
+	    	<conditional name="inputFormatType">
+		    	<param name="inputFormat" type="select" label="inputFormat">
+			    		<option value="xtandem">X!Tandem</option>
+			    		<option value="omssa">OMSSA</option>
+				</param>
+				<when value="xtandem">
+	      			<param name="inputFile" type="data" format="mscfileset" label="MS/MS search results" />
+	      			<param name="isMs2SpectrumIdStartingAtZero" type="select" label="Spectrum numbering starting at zero in original spectra file" help="Some formats, like mzML, start their spectrum numbering from 0, other formats start from 1. ">
+				      <option value="true" selected="true">Yes, starting at 0</option>
+				      <option value="false">No, starting at 1</option>
+				    </param>
+		      	</when>
+		      	<when value="omssa">
+		      		<param name="inputFile" type="data" format="mscfileset" label="MS/MS search results"/>
+		      	</when>
+		      </conditional>
+	    </when>
+	  </conditional>
+	</inputs>
+	<outputs>
+	  <data name="outputFile" format="mzid" >
+		<change_format>
+		    <when input="fileType.type" value="fileSet" format="mscfileset" />
+		</change_format>
+		</data>
+	</outputs>
+	<tests>
+	</tests>
+  <help>
+  
+.. class:: infomark
+  
+This tool translates X!Tandem and OMSSA results to mzIdentML format.
+It uses the library at http://code.google.com/p/mzidentml-parsers/ 
+-----
+
+
+  </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/masscomb_dbsearch_mascot.xml	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,49 @@
+<tool name="Mascot" id="masscomb_mascot" version="1.0.1">
+	<description>MS/MS DB search</description>
+	<!-- 
+	   For remote debugging start you listener on port 8000 and use the following as command interpreter:
+	       java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=D0100564.wurnet.nl:8000 
+	                    //////////////////////////
+	   This part is a WORKAROUND for the Cytoscape X11 dependency problem, even when running 'headless':
+	       export DISPLAY=:995;
+	       ...TODO -> this is linux specific...follow issue fix on Cytoscape...perhaps we can add try/catch in python here (see http://www.unix.com/shell-programming-scripting/107334-how-use-catch-try-final-bash-script.html)
+	       ...check how other tools do this  
+	    -->
+	<command interpreter="export DISPLAY=:995; java -jar">
+	    SedMat_cli.jar -pl $inputMS -ppids $inputPedtipeList -out $outputData -mtol  $mtol -rttol $rttol -dataset $outputData.dataset.id
+	</command>
+	<inputs>
+	 	<param name="inputMS" type="data" format="apml" label="MS data" />
+	 	<param name="inputPedtipeList" type="data" format="apml" label="Peptide ID data from MS/MS" />
+	 	<param name="outputFormat" type="select" label="Output format">
+	    	<option value="apml">APML</option>
+		</param>
+		<param name="mtol" type="integer" size="10" value="50" label="Set m/z tolerance (ppm) " />
+		<param name="rttol" type="integer" size="10" value="60" label="Set rention time tolerance (seconds) " />
+	</inputs>
+	<outputs>
+	  <data name="outputData" format="apml"/>
+	</outputs>
+	<tests>
+	  <!--  find out how to use -->
+	  <test>
+	    <param name="inputMS" value="testfile.pkl" ftype="pkl" />
+	    <output name="outputData" file="testsedmatout.pkl" ftype="tabular" />
+	  </test>
+	</tests>
+  <help>
+  
+.. class:: infomark
+  
+This tool matches MS and MS/MS results.
+It can match peaks found in the MS spectra with the peptides found using the MS/MS spectra.
+The result is the list of MS peaks annotated with peptides and proteins.
+
+-----
+
+**Output example**
+
+This tools returns APML output, a Cytoscape network (.xgmml) of the matches and Retention Time plots (.pdf). 
+
+  </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/masscomb_dbsearch_xtandem.xml	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,293 @@
+<tool name="X Tandem" id="masscomb_xtandem200" version="1.0.1">
+	<description>MS/MS DB search</description>
+	<!-- 
+	   For remote debugging start you listener on port 8000 and use the following as command interpreter:
+	       java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=D0100564.wurnet.nl:8000 
+	-->    
+	<command interpreter="java -jar">
+	    MassComb.jar 
+	    -action XTANDEMSEARCH 
+	    -outputFile $outputFile 
+	    -fileGrouping $fileType.type
+    	-inputFile $fileType.inputFile
+       	-parametersFile $parametersFile
+		-outputTsv $outTsv
+		-outReport $htmlReportFile
+	    -outReportPicturesPath $htmlReportFile.files_path
+	    </command>
+<inputs>
+  <conditional name="fileType">
+    <param name="type" type="select" label="select MS/MS input type">
+      <option value="single" selected="true">single-File</option>
+      <option value="fileSet">fileSet</option>
+    </param>
+    <when value="single">
+   		<param name="inputFile" type="data" format="mzml" label="MS/MS input file (mzml)"/>
+    </when>
+    <when value="fileSet">
+      <param name="inputFile" type="data" format="mscfileset" label="input file"/>
+    </when>
+  </conditional>
+
+   <param name="precursor_mass_tolerance_lower" type="text" size="30" label="precursor monoisotopic mass_tolerance_lower" value="100" help=""/>
+   <param name="precursor_mass_tolerance_upper" type="text" size="30" label="precursor monoisotopic mass_tolerance_upper" value="100" help=""/>
+   <param name="precursor_error_units" type="select" label="precursor_error_units" help="">
+   	<option value="ppm" selected="true">ppm</option>
+   	<option value="Daltons">Daltons</option>
+   </param>
+   <param name="fragment_mass_tolerance" type="text" size="30" label="fragment_mass_tolerance" value="0.4" help=""/>
+   <param name="fragment_error_units" type="select" label="fragment_error_units" help="">
+   	<option value="ppm">ppm</option>
+   	<option value="Daltons" selected="true">Daltons</option>
+   </param>
+   <param name="database" type="data" format="fasta" label="Protein sequences DB (FASTA)"/>
+   <!-- 
+   <param name="min_precursor_charge" type="text" size="30" label="min_precursor_charge" value="1" help=""/>
+   <param name="max_precursor_charge" type="text" size="30" label="max_precursor_charge" value="4" help=""/>-->
+   <param name="fixed_modifications" type="select" display="checkboxes" multiple="true" label="Complete modifications" help="">
+	   	<option value="57.021464@C">Carbamidomethyl (C)</option>
+		<option value="57.021464@C,10.008269@R,8.014199@K">Cam+SILAC (8@K,10@R)</option>
+		<option value="57.021464@C,4.025107@K,6.020129@R">Cam+SILAC (4@K,6@R)</option>
+		<option value="57.021464@C,4.025107@K,6.020129@R,6.020129@L">Cam+SILAC (4@K,6@R,6@L)</option>
+		<option value="58.005479@C">Carboxymethyl (C)</option>
+		<option value="45.987721@C">Methylthio (C)</option>
+		<option value="47.984744@C">Trioxidation (C)</option>
+		<option value="442.224991@C">ICAT-D (C)</option>
+		<option value="450.275205@C">ICAT-D:2H(8) (C)</option>
+		<option value="227.126991@C">ICAT-C (C)</option>
+		<option value="236.157185@C">ICAT-C:13C(9) (C)</option>
+		<option value="58.005479@C">Carboxymethyl (C)</option>
+		<option value="105.057849@C">Pyridylethyl (C)</option>
+		<option value="71.037114@C">Propionamide (C)</option>
+		<option value="125.047679@C">Nethylmaleimide (C)</option>
+		<option value="144.102063@[,144.102063@K">iTRAQ (N-term,K)</option>
+		<option value="57.021464@C,144.102063@[,144.102063@K">Cam + iTRAQ (C,N-term,K)</option>
+		<option value="57.021464@C,224.152478@K,224.152478@[">Cam + TMT (C,K,nt)</option>
+		<option value="57.021464@C,225.155833@K,225.155833@[">Cam + TMT2plex (C,K,nt)</option>
+		<option value="57.021464@C,229.1629328@K,229.1629328@[">Cam + TMT6plex (C,K,nt)</option>
+		<option value="57.021464@C,28.0313@[,28.0313@K">Cam + Dimethyl (C,28@N-term,K)</option>
+		<option value="57.021464@C,32.0564@[,32.0564@K">Cam + Dimethyl (C,32@N-term,K)</option>
+		<option value="57.021464@C,36.0757@[,36.0757@K">Cam + Dimethyl (C,36@N-term,K)</option>
+		<option value="45.987721@C,144.102063@[,144.102063@K">Methylthio + iTRAQ (C,N-term,K)</option>
+		<option value="45.987721@C,224.152478@K,224.152478@[">Methylthio + TMT (C,K,nt)</option>
+		<option value="45.987721@C,225.155833@K,225.155833@[">Methylthio + TMT2plex (C,K,nt)</option>
+		<option value="45.987721@C,229.1629328@K,229.1629328@[">Methylthio + TMT6plex (C,K,nt)</option>
+		<option value="14.0156@],14.0156@D,14.0156@E">Methy +14Da (D,E,C-term)</option>
+   </param>
+      <param name="potential_modifications" type="select" display="checkboxes" multiple="true" label="Potential modifications" help="">
+      	<option value="15.994915@M">Oxidation (M)</option>
+		<option value="15.994915@W">Oxidation (W)</option>
+		<option value="0.984016@N">Deamidation (N)</option>
+		<option value="0.984016@Q">Deamidation (Q)</option>
+		<option value="79.966331@S">Phospho (S)</option>
+		<option value="79.966331@T">Phospho (T)</option>
+		<option value="79.966331@Y">Phospho (Y)</option>
+		<option value="79.956815@Y">Sulfo (Y)</option>
+		<option value="42.010565@K">Acetyl (K)</option>
+		<option value="43.005814@[">Carbamyl (nt)</option>
+		<option value="43.005814@K">Carbamyl (K)</option>
+		<option value="72.021129@[">Carboxyethyl (nt)</option>
+		<option value="72.021129@K">Carboxyethyl (K)</option>
+		<option value="57.021464@[">Carbamidomethyl (nt)</option>
+		<option value="57.021464@K">Carbamidomethyl (K)</option>
+		<option value="57.021464@C">Carbamidomethyl (C)</option>
+		<option value="58.005479@C">Carboxymethyl (C)</option>
+		<option value="45.987721@C">Methylthio (C)</option>
+		<option value="125.047679@C">Nethylmaleimide (C)</option>
+		<option value="31.989829@C">Dioxidation (C)</option>
+		<option value="47.984744@C">Trioxidation (C)</option>
+		<option value="27.994915@K">formyl (K)</option>
+		<option value="27.994915@[">formyl (nt)</option>
+		<option value="114.042927@K">GlyGly (K)</option>
+		<option value="8.0502@C">ICAT-D:2H(8) (C)</option>
+		<option value="9.0302@C">ICAT-C:13C(9) (C)</option>
+		<option value="144.102063@[">iTRAQ (N-term)</option>
+		<option value="144.102063@K">iTRAQ (K)</option>
+		<option value="6.020129@L">Label:13C(6) (L)</option>
+		<option value="6.020129@K">Label:13C(6) (K)</option>
+		<option value="8.014199@K">Label:13C(6)15N(2) (K)</option>
+		<option value="6.020129@R">Label:13C(6) (R)</option>
+		<option value="4.025107@K">Label:2H(4) (K)</option>
+		<option value="125.047679@C">Nethylmaleimide (C)</option>
+		<option value="31.005814@C">Sulfinamide (C)</option>
+		<option value="224.152478@K,224.152478@[">TMT (K,nt)</option>
+		<option value="225.155833@K,225.155833@[">TMT2plex (K,nt)</option>
+		<option value="229.1629328@K,229.1629328@[">TMT6plex (K,nt)</option>      	
+      </param>
+      <!-- 
+      <param name="missed_cleavages" type="text" size="30" label="missed_cleavages" value="1" help="Nr. of possible cleavage sites missed by the enzyme"/>-->
+      <param name="minimum_fragment_mz" type="text" size="30" label="minimum_fragment_mz" value="150" help=""/>
+      <param name="cleavage_site" type="select" label="cleavage_site" help="">
+      	<option selected="true" value="[RK]|{P}">trypsin, [RK]|{P}</option>
+		<option value="[R]|[X]">endo-arg-C, [R]|[X]</option>
+		<option value="[K]|[X]">endo-lys-C, [K]|[X]</option>
+		<option value="[E]|[X]">endo-glu-C, [E]|[X]</option>
+		<option value="[X]|[D]">endo-asp-N, [X]|[D]</option>
+		<option value="[ED]|[X]">V8, [ED]|[X]</option>
+		<option value="[FYWL]|{P}">chymotrypsin, [FYWL]|{P}</option>
+      </param>
+      <param name="maximum_missed_cleavage_sites" type="integer" size="10" value="1" 
+      label="maximum missed cleavage sites" 
+      help="maximum number of missed cleavage sites allowed within a peptide. For a specific, 
+      aggressive enzyme such as trypsin, the number of missed sites will be low: a value of 1 or 2 is appropriate. 
+      For a non-specific enzyme, such as pepsin, then a value of 50 is more appropriate."/>
+      <param name="max_valid_expect" type="text" size="30" label="maximum valid expectation value" value="0.1" 
+      help="Max E-Value of a hit to be reported. All results with expectation values less than this value 
+      are considered to be statisitically significant and are recorded. "/>
+      <conditional name="refinementOpt">
+	      <param name="refinement" type="select" label="Refine search" help="Select this to enable a second round of more 
+	      detailed searching, using only the set of proteins found by the contraints above. E.g. 
+	      Rather than entering the 'potential modifications' in the options above, try entering them here only. This is 
+	      faster and limits this more thorough searching to a set of proteins for which there is already some evidence.">
+	      	<option value="yes">Yes</option>
+	      	<option value="no" selected="true">No</option>
+	      </param>
+	      <when value="yes">
+            <param name="refine_point_mutation" type="select" label="Allow for point mutations (substitutions)" 
+            help="Test the selected sequences for the possibility of a point mutation in each one of the 
+            peptides generated with the initial cleavage chemistry.">
+		      	<option value="yes" selected="true">Yes</option>
+		      	<option value="no">No</option>
+			</param>
+			<param name="refine_potential_modifications" type="select" display="checkboxes" multiple="true" label="Potential modifications to look for in refined search" help="">
+		      	<option value="15.994915@M">Oxidation (M)</option>
+				<option value="15.994915@W">Oxidation (W)</option>
+				<option value="0.984016@N">Deamidation (N)</option>
+				<option value="0.984016@Q">Deamidation (Q)</option>
+				<option value="79.966331@S">Phospho (S)</option>
+				<option value="79.966331@T">Phospho (T)</option>
+				<option value="79.966331@Y">Phospho (Y)</option>
+				<option value="79.956815@Y">Sulfo (Y)</option>
+				<option value="42.010565@K">Acetyl (K)</option>
+				<option value="43.005814@[">Carbamyl (nt)</option>
+				<option value="43.005814@K">Carbamyl (K)</option>
+				<option value="72.021129@[">Carboxyethyl (nt)</option>
+				<option value="72.021129@K">Carboxyethyl (K)</option>
+				<option value="57.021464@[">Carbamidomethyl (nt)</option>
+				<option value="57.021464@K">Carbamidomethyl (K)</option>
+				<option value="57.021464@C">Carbamidomethyl (C)</option>
+				<option value="58.005479@C">Carboxymethyl (C)</option>
+				<option value="45.987721@C">Methylthio (C)</option>
+				<option value="125.047679@C">Nethylmaleimide (C)</option>
+				<option value="31.989829@C">Dioxidation (C)</option>
+				<option value="47.984744@C">Trioxidation (C)</option>
+				<option value="27.994915@K">formyl (K)</option>
+				<option value="27.994915@[">formyl (nt)</option>
+				<option value="114.042927@K">GlyGly (K)</option>
+				<option value="8.0502@C">ICAT-D:2H(8) (C)</option>
+				<option value="9.0302@C">ICAT-C:13C(9) (C)</option>
+				<option value="144.102063@[">iTRAQ (N-term)</option>
+				<option value="144.102063@K">iTRAQ (K)</option>
+				<option value="6.020129@L">Label:13C(6) (L)</option>
+				<option value="6.020129@K">Label:13C(6) (K)</option>
+				<option value="8.014199@K">Label:13C(6)15N(2) (K)</option>
+				<option value="6.020129@R">Label:13C(6) (R)</option>
+				<option value="4.025107@K">Label:2H(4) (K)</option>
+				<option value="125.047679@C">Nethylmaleimide (C)</option>
+				<option value="31.005814@C">Sulfinamide (C)</option>
+				<option value="224.152478@K,224.152478@[">TMT (K,nt)</option>
+				<option value="225.155833@K,225.155833@[">TMT2plex (K,nt)</option>
+				<option value="229.1629328@K,229.1629328@[">TMT6plex (K,nt)</option>      	
+      		</param>
+      		<param name="refine_max_valid_expect" type="text" size="30" label="maximum valid expectation value for identifications coming from refine step" value="0.01" 
+      		help="Max E-Value of a 'refine based' hit to be reported. Notice that the default value here is stricter than
+      		the same parameter for 'non-refine based' identifications above. "/>
+	      </when>
+	  </conditional>
+      <param name="reverse_scoring" type="select" label="Scoring, include reverse" help=" Use the X! Tandem protein sequence reverse method (sequences are reversed in memory and searched again, the tag ':reversed' is added to the protein description).">
+      	<option value="yes">Yes</option>
+      	<option value="no" selected="true">No</option>
+      	<option value="only">Only</option>
+      </param>
+
+</inputs>
+<configfiles>
+<configfile name="parametersFile">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;tns:Program xmlns:tns="http://masscomb.pri.com/toolparameters/" name="XTandemWrapper" program="XTandemWrapper"&gt;
+	&lt;Files/&gt;
+	&lt;Parameters&gt;  
+		  &lt;Attribute attributeName="xtandemLocation" value="" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="database" value="${database}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="precursor_mass_tolerance_lower" toolSpecificName="spectrum, parent monoisotopic mass error minus" value="${precursor_mass_tolerance_lower}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="precursor_mass_tolerance_upper" toolSpecificName="spectrum, parent monoisotopic mass error plus" value="${precursor_mass_tolerance_upper}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="precursor_error_units" toolSpecificName="spectrum, parent monoisotopic mass error units" value="${precursor_error_units}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="fragment_mass_tolerance" toolSpecificName="spectrum, fragment monoisotopic mass error" value="${fragment_mass_tolerance}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="fragment_error_units" toolSpecificName="spectrum, fragment monoisotopic mass error units" value="${fragment_error_units}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="fixed_modifications" toolSpecificName="residue, modification mass" value="${fixed_modifications}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="potential_modifications" toolSpecificName="residue, potential modification mass" value="${potential_modifications}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="minimum_fragment_mz" toolSpecificName="spectrum, minimum fragment mz" value="${minimum_fragment_mz}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="cleavage_site" toolSpecificName="protein, cleavage site" value="${cleavage_site}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="maximum_missed_cleavage_sites" toolSpecificName="scoring, maximum missed cleavage sites" value="${maximum_missed_cleavage_sites}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="max_valid_expect" toolSpecificName="output, maximum valid expectation value" value="${max_valid_expect}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="refinement" toolSpecificName="refine" value="${refinementOpt.refinement}" type="Unknown" description=""/&gt;
+	#if $refinementOpt.refinement == "yes"
+		  &lt;Attribute attributeName="refine_point_mutation" toolSpecificName="refine, point mutations" value="${refinementOpt.refine_point_mutation}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="refine_potential_modifications" toolSpecificName="refine, potential modification mass" value="${refinementOpt.refine_potential_modifications}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="refine_max_valid_expect" toolSpecificName="refine, maximum valid expectation value" value="${refinementOpt.refine_max_valid_expect}" type="Unknown" description=""/&gt;
+	#end if
+		  &lt;Attribute attributeName="reverse_scoring" toolSpecificName="scoring, include reverse" value="${reverse_scoring}" type="Unknown" description=""/&gt;
+	&lt;/Parameters&gt;
+&lt;/tns:Program&gt;  
+</configfile>
+</configfiles>
+<outputs>
+	<data name="outputFile" format="bioml"  label="${tool.name} on ${on_string} - Results XML">
+		<change_format>
+		    <when input="fileType.type" value="fileSet" format="mscfileset" />
+		</change_format>
+	</data>
+	<data name="htmlReportFile" format="html" label="${tool.name} on ${on_string} - HTML report"> </data>
+	<data name="outTsv" format="tabular" label="${tool.name} on ${on_string} - TSV report"> </data>
+</outputs>
+<tests>
+	<test>
+	</test>
+</tests>
+<help>
+
+.. class:: infomark
+  
+This tool searches MS/MS spectra against a database using X!Tandem.
+
+For a complete set of parameters and their default values see `the X!Tandem parameters documentation page`_ . 
+Parameters that are not
+made available in the UI above but are listed in the given link are submitted with their
+default values.
+
+For more information on the refine step see: `Why should I use "refinement" to find modifications?`_ .
+
+For more information on the expectation value calculation see: 
+`A Method for Assessing the Statistical Significance of Mass Spectrometry-Based Protein Identifications Using General Scoring Schemes`_
+, David Fenyƶ and Ronald C. Beavis, Anal. Chem., 2003, 75, 768-774.
+This reference describes how peptides are scored by X!Tandem. 
+The expectation values on the individual peptides are calculated using this method. 
+<!-- Add this from Ron's email ? :
+They are an estimate of the spectrum-to-peptide match E-value associated with the 
+null-hypothesis "all spectrum-to-peptide matches are stochasitic".
+-->
+
+.. _the X!Tandem parameters documentation page: http://www.thegpm.org/tandem/api/index.html
+
+.. _Why should I use "refinement" to find modifications?: http://www.thegpm.org/GPM/refine.html
+
+.. _A Method for Assessing the Statistical Significance of Mass Spectrometry-Based Protein Identifications Using General Scoring Schemes: http://www.ncbi.nlm.nih.gov/pubmed/12622365
+
+-----
+
+**Output**
+
+This tools returns the X!Tandem XML output which can be converted to MzIdentML using the DBSearch converter tool.
+
+It also returns an HTML file with the list of peptides and the option to visualize the peptide to spectrum match
+using an embedded spectrum viewer. 
+
+.. image:: $PATH_TO_IMAGES/xtandem_results_viewer.png 
+
+Last but not least, it returns the list of identifications in TSV (tab separated values) format for users that are satisfied with this
+and do not need further processing steps like protein inference. 
+
+For the GPM web UI of X!Tandem see:
+http://ppp.thegpm.org/tandem/thegpm_ppp.html
+
+</help>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/masscomb_fasta_validator.xml	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,42 @@
+<tool name="Fasta Validator" id="masscomb_fastavalidator" version="1.0.1">
+	<description>Basic FASTA file validation</description>
+	<!-- 
+	   For remote debugging start you listener on port 8000 and use the following as command interpreter:
+	       java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=D0100564.wurnet.nl:8000 
+	-->    
+	<command interpreter="java -jar">
+	    MassComb.jar 
+	    -action FASTAVALIDATOR 
+	    -fastaFile $inputFile 
+	    -outputFile $outputFile 
+	    -expressions "$expressions"
+	    -maxLengthSequenceLine $maxLengthSequenceLine
+	    </command>
+<inputs>
+	<param name="inputFile" type="data" format="" label="Fasta file to validate"/>
+    
+	<param name="expressions" type="select" display="checkboxes" multiple="true" label="Error patterns to search for in each line" help="">
+      	<option value="description=White space in SEQUENCE;regex=^[a-zA-Z]+SLASHs[a-zA-Z]">White space in SEQUENCE (^[a-zA-Z]+\s[a-zA-Z])</option>
+      	<option value="description=Numbers in SEQUENCE;regex=^[0-9]PIPE^[a-zA-Z]+.*[0-9]">Numbers in SEQUENCE (^[0-9]|^[a-zA-Z]+.*[0-9])</option>
+      	<option value="description=Line starting with white space followed by alpha numeric characters;regex=^SLASHs[a-zA-Z0-9]+">Line starting with white space followed by alpha numeric characters (^\s[a-zA-Z0-9]+)</option>
+      	<option value="description=Line ending with white space;regex=.*SLASHsDOLLAR">Line ending with white space (.*\s$)</option>
+      	<option value="description=Sequence lines with non-Amino Acid characters;regex=(^[SLASHwAMPAMP[^ARNDCEQGHILKMFPSTWYV]])PIPE(^[ARNDCEQGHILKMFPSTWYV]+[SLASHwAMPAMP[^ARNDCEQGHILKMFPSTWYV]]+)">Sequence lines with non-Amino Acid characters ((^[\w&amp;&amp;[^ARNDCEQGHILKMFPSTWYV]])|(^[ARNDCEQGHILKMFPSTWYV]+[\w&amp;&amp;[^ARNDCEQGHILKMFPSTWYV]]+))</option>
+      	<option value="description=Hyphen in accession numbers;regex=^SLASHS*-">Hyphen in accession numbers (^\S*-)</option>
+      	<option value="description=Lines with stretches of X;regex=XX+">Lines with stretches of X (XX+)</option>
+    </param>
+
+	<param name="maxLengthSequenceLine" type="integer" size="10" value="0" label="Max length sequence line " 
+	help="(Optional) the maximum line width in the protein sequence part. Leave to 0 (zero) for no restrictions "/>
+
+</inputs>
+<outputs>
+	<data format="txt" name="outputFile" />
+</outputs>
+<tests>
+	<test>
+	</test>
+</tests>
+<help>
+
+</help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/masscomb_visual_mspicture.xml	Wed Oct 30 10:04:31 2013 -0400
@@ -0,0 +1,87 @@
+<tool name="MsPicture" id="masscomb_mspicture" version="1.0.1">
+	<description>MS data view</description>
+	<!-- 
+	   For remote debugging start you listener on port 8000 and use the following as command interpreter:
+	       java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=D0100564.wurnet.nl:8000 
+	-->    
+	<command interpreter="java -jar">
+	    MassComb.jar -action MSPICTURE 
+	    -outputFile $html_file 
+	    -picturesPath $html_file.files_path 
+	    -fileGrouping $fileType.type
+	    #if $fileType.type == "single"
+	    	-inputFile $fileType.inputFormatType.inputFile
+	    	-inputFormat $fileType.inputFormatType.inputFormat
+        #elif $fileType.type == "fileSet"
+	    	-inputFile $fileType.inputFile
+        #end if
+        -parametersFile $parametersFile
+		
+	    </command>
+<inputs>
+  <conditional name="fileType">
+    <param name="type" type="select" label="select MS/MS input type">
+      <option value="single" selected="true">single-File</option>
+      <option value="fileSet">fileSet</option>
+    </param>
+    <when value="single">
+      <conditional name="inputFormatType">
+      	<param name="inputFormat" type="select" label="inputFormat">
+	    		<option value="mzml" selected="true">mzml</option>
+				<option value="mzxml">mzxml</option>
+	    		<option value="apml">apml</option>
+		</param>
+		<when value="mzxml">
+      		<param name="inputFile" type="data" format="mzxml" label="MS input file (mzXML)"/>
+      	</when>
+      	<when value="mzml">
+      		<param name="inputFile" type="data" format="mzml" label="MS input file (mzml)"/>
+      	</when>
+      	<when value="apml">
+      		<param name="inputFile" type="data" format="apml" label="MS or MS/MS input file (APML)"/>
+      	</when>
+      </conditional>
+    </when>
+    <when value="fileSet">
+      <param name="inputFile" type="data" format="mscfileset" label="input file"/>
+    </when>
+  </conditional>
+
+  <param name="data_type" type="select" label="Data type" help=""> 
+   	    <option value="LC-MS">LC-MS</option>
+   	    <option value="LC-MS/MS">LC-MS/MS</option>
+  </param>
+
+  <param name="gray_scale" type="select" display="checkboxes" multiple="True" label="Use gray scale" help=""> 
+   	    <option value="Yes">Yes</option>
+  </param>
+
+</inputs>
+<configfiles>
+<configfile name="parametersFile">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;tns:Program xmlns:tns="http://masscomb.pri.com/toolparameters/" name="MsPictureWrapper" program="MsPictureWrapper"&gt;
+	&lt;Files/&gt;
+	&lt;Parameters&gt;
+		  &lt;Attribute attributeName="toolLocation" value="/home/lukas007/bin/" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="gray_scale" toolSpecificName="--grey" value="${gray_scale}" type="Unknown" description=""/&gt;
+		  &lt;Attribute attributeName="data_type" value="${data_type}" type="Unknown" description=""/&gt;
+	&lt;/Parameters&gt;
+&lt;/tns:Program&gt;  
+</configfile>
+</configfiles>
+<outputs>
+	<data format="html" name="html_file" />
+</outputs>
+<tests>
+	<test>
+	</test>
+</tests>
+<help>
+
+.. class:: infomark
+  
+This tool displays the MS data using ProteoWizard's msPicture tool
+
+
+</help>
+</tool>
\ No newline at end of file
Binary file static/images/xtandem_results_viewer.png has changed
--- a/tool_dependencies.xml	Mon Oct 21 02:29:17 2013 -0400
+++ b/tool_dependencies.xml	Wed Oct 30 10:04:31 2013 -0400
@@ -1,40 +1,23 @@
-<?xml version="1.0"?>
-<tool_dependency>
-    <package name="libtool" version="2.4">
-        <repository changeset_revision="5ccfb33b5622" name="package_libtool_2_4" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
-    </package>
-    <package name="Qt" version="4.8">
-        <repository changeset_revision="98d8cfa23907" name="package_qt_4_8" owner="iuc" prior_installation_required="True" toolshed="http://testtoolshed.g2.bx.psu.edu" />
-    </package>
-    <package name="OpenMS" version="1.10.0">
-        <install version="1.0">
-            <actions>
-              <action type="download_by_url">http://downloads.sourceforge.net/project/open-ms/OpenMS/OpenMS-1.10/OpenMS-1.10.0.tar.gz</action>
-
-                <!-- populate the environment variables from the dependend repos -->
-                <action type="set_environment_for_install">
-                    <repository changeset_revision="5ccfb33b5622" name="package_libtool_2_4" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
-                        <package name="libtool" version="2.4" />
-                    </repository>
-                    <repository changeset_revision="98d8cfa23907" name="package_qt_4_8" owner="iuc" toolshed="http://testtoolshed.g2.bx.psu.edu">
-                        <package name="Qt" version="4.8 " />
-                    </repository>
-                </action>
-
-              <action type="change_directory">contrib</action>
-              <action type="shell_command">cmake .</action>
-              <action type="change_directory">..</action>
-              <action type="shell_command">cmake . -DINSTALL_PREFIX=$INSTALL_DIR</action>
-              <action type="make_install" />
-              <action type="set_environment">
-                <environment_variable action="prepend_to" name="PATH">$INSTALL_DIR/bin</environment_variable>
-                <environment_variable action="prepend_to" name="LD_LIBRARY_PATH">$INSTALL_DIR/lib</environment_variable>
-              </action>
-            </actions>
-        </install>
-        <readme>
-            This package downloads and installs OpenMS.
-            http://open-ms.sourceforge.net/
-        </readme>
-    </package>
-</tool_dependency>
+<?xml version="1.0"?>
+<tool_dependency>
+<!-- see also http://wiki.galaxyproject.org/ToolShedToolFeatures for syntax help -->
+    <package name="xtandem" version="12.10011">
+        <install version="12.10011">
+            <actions>
+                <action type="download_by_url">ftp://ftp.thegpm.org/projects/tandem/source/2011-12-01/tandem-linux-12-10-01-1.zip</action>
+                <!--<action type="shell_command">make clean</action>
+                <action type="shell_command">make</action>-->
+                <action type="move_directory_files">
+					<source_directory>tandem-linux-12-10-01-1</source_directory>
+					<destination_directory>$INSTALL_DIR/tandem-linux-12-10-01-1</destination_directory>
+				</action>
+                <action type="set_environment">
+                    <environment_variable name="XTANDEM_12_10_01_PATH" action="set_to">$INSTALL_DIR/tandem-linux-12-10-01-1</environment_variable>
+                </action>
+            </actions>
+        </install>
+        <readme>
+Ensures XTandem is installed.
+        </readme>
+    </package>
+</tool_dependency>
\ No newline at end of file