changeset 2:418f42b34049 draft

Reuploading
author iracooke
date Mon, 23 Jul 2012 00:20:58 -0400
parents deaedec14cc8
children 255b5b6ec617
files display_applications/proteomics/PepXml.xml display_applications/proteomics/ProtXml.xml display_applications/proteomics/mzML.xml interprophet.xml interprophet_wrapper.rb lib/galaxy/datatypes/proteomics.py make_decoy.xml mzml_to_mgf.xml omssa.xml peptide_prophet.xml peptide_prophet_wrapper.rb pepxml_to_table.xml protein_prophet.xml protein_prophet_wrapper.rb tandem.xml tool-data/datatypes_conf.xml tool-data/mascot_databases.loc.sample tool-data/mascot_mods.loc.sample tool-data/omssa_mods.loc.sample tool-data/pepxml_databases.loc.sample tool-data/protk_display_site.txt.sample tool-data/tandem_mods.loc.sample xls_to_table.xml
diffstat 23 files changed, 1383 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/display_applications/proteomics/PepXml.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,18 @@
+<display id="proteomics_pepxml" version="1.0.0" name="view pepXML in">
+	<dynamic_links from_file="tool-data/protk_display_site.txt" skip_startswith="#" id="0" name="0">
+        <!-- Define parameters by column from file -->
+        <dynamic_param name="site_id" value="0"/>
+        <dynamic_param name="site_url" value="1"/>
+        <!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
+        <url target_frame="galaxy_main">${site_url}/init_local?file=${encoded_filename.qp}&amp;type=pepxml</url>
+        <param type="data" name="pep_file" viewable="False" format="pepXML"/>
+        <param type="data" dataset="pep_file" name="pepxml_file" format="pepXML" viewable="False" />
+        <param type="template" name="encoded_filename" strip="True" >
+            #import binascii
+            ${binascii.hexlify( $pepxml_file.file_name )}
+        </param>
+        <param type="template" name="galaxy_url" strip="True" >
+                ${BASE_URL.split(":")[1][2:]}
+        </param>
+    </dynamic_links>
+</display>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/display_applications/proteomics/ProtXml.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,18 @@
+<display id="proteomics_protxml" version="1.0.0" name="view protXML in">
+	<dynamic_links from_file="tool-data/protk_display_site.txt" skip_startswith="#" id="0" name="0">
+        <!-- Define parameters by column from file -->
+        <dynamic_param name="site_id" value="0"/>
+        <dynamic_param name="site_url" value="1"/>
+        <!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
+        <url target_frame="galaxy_main">${site_url}/init_local?file=${encoded_filename.qp}&amp;type=protxml</url>
+        <param type="data" name="prot_file" viewable="False" format="protXML"/>
+        <param type="data" dataset="prot_file" name="protxml_file" format="protXML" viewable="False" />
+        <param type="template" name="encoded_filename" strip="True" >
+            #import binascii
+            ${binascii.hexlify( $protxml_file.file_name )}
+        </param>
+        <param type="template" name="galaxy_url" strip="True" >
+                ${BASE_URL.split(":")[1][2:]}
+        </param>
+    </dynamic_links>
+</display>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/display_applications/proteomics/mzML.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,18 @@
+<display id="proteomics_mzml" version="1.0.2" name="view mzML data">
+	<dynamic_links from_file="tool-data/protk_display_site.txt" skip_startswith="#" id="0" name="0">
+        <!-- Define parameters by column from file -->
+        <dynamic_param name="site_id" value="0"/>
+        <dynamic_param name="site_url" value="1"/>
+        <!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
+        <url target_frame="galaxy_main">${site_url}/init_local?file=${encoded_filename.qp}&amp;type=mzml</url>
+        <param type="data" name="raw_file" viewable="False" format="mzML"/>
+        <param type="data" dataset="raw_file" name="mzml_file" format="mzML" viewable="False" />
+        <param type="template" name="encoded_filename" strip="True" >
+            #import binascii
+            ${binascii.hexlify( $mzml_file.file_name )}
+        </param>
+        <param type="template" name="galaxy_url" strip="True" >
+                ${BASE_URL.split(":")[1][2:]}
+        </param>
+    </dynamic_links>
+</display>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/interprophet.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,55 @@
+<tool id="proteomics_search_interprophet_1" name="InterProphet" version="1.0.0">
+	<requirements><requirement type="package">protk</requirement></requirements>
+  <description>Combine Peptide Prophet results from multiple search engines</description>
+
+  <command interpreter="ruby">
+
+	interprophet_wrapper.rb $output $use_nss $use_nrs $use_nse $use_nsi $use_nsm --minprob $minprob
+
+
+	## Inputs.
+	${first_input}
+	#for $input_file in $input_files:
+	${input_file.additional_input}
+	#end for  	
+
+  </command>
+
+  <inputs>
+
+	<param name="first_input" type="data" format="peptideprophet_pepxml" label="Peptide Prophet Results" help="These files will typically be outputs from search tools that have subsequently been run through peptide prophet"/> 	
+		
+	<repeat name="input_files" title="Additional PepXML Input Files">
+		<param format="peptideprophet_pepxml" name="additional_input" type="data" label="PepXML produced by Peptide Prophet" help=""/>
+	</repeat>
+	
+	<param name="use_nss" checked="true" type="boolean" label="Include NSS in Model" help="Include NSS (Number of Sibling Searches) in Statistical Model" truevalue="blank" falsevalue="--nonss"/>
+	<param name="use_nrs" checked="true" type="boolean" label="Include NRS in Model" help="Include NRS (Number of Replicate Spectra) in Statistical Model" truevalue="blank" falsevalue="--nonrs"/>
+	<param name="use_nse" checked="true" type="boolean" label="Include NSE in Model" help="Include NSE (Number of Sibling Experiments) in Statistical Model" truevalue="blank" falsevalue="--nonse"/>
+	<param name="use_nsi" checked="true" type="boolean" label="Include NSI in Model" help="Include NSI (Number of Sibling Ions) in Statistical Model" truevalue="blank" falsevalue="--nonsi"/>
+	<param name="use_nsm" checked="true" type="boolean" label="Include NSM in Model" help="Include NSM (Number of Sibling Modifications) in Statistical Model" truevalue="blank" falsevalue="--nonsm"/>
+	
+	<param name="minprob" type="text" label="Minimum threshod probability for reporting results"/>
+		
+  </inputs>
+  <outputs>
+    <data format="interprophet_pepxml" name="output" metadata_source="first_input" label="interprophet.${first_input.display_name}" from_work_dir="interprophet_output.pep.xml"/>
+  </outputs>
+
+ <help>
+
+**What it does**
+
+Takes a set of pepXML files (possibly generated using different search engines) and calculates updated identification probabilities for each peptide.  The updated probabilities are based on a statistical model that combines evidence from identifications across all of the input files, spectra, modified states and charge states. 
+
+----
+
+**Citation**
+
+If you use this tool please read and cite the paper describing iProphet
+
+Shteynberg D, et al. “iProphet: Improved statistical validation of peptide identifications in shotgun proteomics.” *Molecular and Cellular Proteomics* 10, M111.007690 (2011).
+
+  </help>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/interprophet_wrapper.rb	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,57 @@
+require 'pathname'
+
+$VERBOSE=nil
+
+# Hard-Coded argument order and number of arguments
+#
+actual_output_path_string=ARGV[0]
+use_nss=ARGV[1]
+use_nrs=ARGV[2]
+use_nse=ARGV[3]
+use_nsi=ARGV[4]
+use_nsm=ARGV[5]
+minprob=ARGV[6]
+minprob_val=ARGV[7]
+
+wd= Dir.pwd
+original_input_files=ARGV.drop(7)
+# End hard coded args #
+
+cmd=""
+
+output_substitution_cmds=""
+
+input_files=original_input_files.collect do |input|
+
+  # We append ".pep.xml" to the input file name because interprophet can't handle anything else
+  # In order for this to work properly we need to create a symbolic link our working directory
+  #
+  original_input_path=Pathname.new("#{input}")
+  actual_input_path_string="#{wd}/#{original_input_path.basename}.pep.xml"
+
+  cmd << "ln -s #{input} #{actual_input_path_string};"
+  output_substitution_cmds << "ruby -pi -e \"gsub('#{actual_input_path_string}', '#{input}.pep.xml')\" interprophet_output.pep.xml;"
+  actual_input_path_string
+end
+
+interprophet_path=%x[which interprophet.rb]
+cmd << interprophet_path.chomp
+
+cmd << " --no-nss" unless use_nss=="blank"
+cmd << " --no-nrs" unless use_nrs=="blank"
+cmd << " --no-nse" unless use_nse=="blank"
+cmd << " --no-nsi" unless use_nsi=="blank"
+cmd << " --no-nsm" unless use_nsm=="blank"
+
+
+input_files.each { |input|
+  cmd << " #{input}"
+}
+
+
+cmd << " -o interprophet_output.pep.xml -r"
+
+cmd << ";#{output_substitution_cmds}"
+
+%x[#{cmd}]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/galaxy/datatypes/proteomics.py	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,275 @@
+"""
+Proteomics format classes
+"""
+import logging
+import re
+from galaxy.datatypes.data import *
+from galaxy.datatypes.xml import *
+from galaxy.datatypes.sniff import *
+from galaxy.datatypes.binary import *
+
+log = logging.getLogger(__name__)
+
+
+class Xls( Binary ):
+    """Class describing a binary excel spreadsheet file"""
+    file_ext = "xls"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        if not dataset.dataset.purged:
+            dataset.peek  = "Excel Spreadsheet file"
+            dataset.blurb = data.nice_size( dataset.get_size() )
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+    def display_peek( self, dataset ):
+        try:
+            return dataset.peek
+        except:
+            return "Binary xls file (%s)" % ( data.nice_size( dataset.get_size() ) )
+
+class PepXml(GenericXml):
+    """pepXML data"""
+    file_ext = "pepxml"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = 'pepXML data'
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+    def sniff( self, filename ):
+        """
+        Determines whether the file is pepXML
+        """
+        #TODO - Use a context manager on Python 2.5+ to close handle
+        handle = open(filename)
+        xmlns_re = re.compile(".*pepXML\"")
+        for i in range(3):
+            line = handle.readline()
+            if xmlns_re.match(line.strip()):
+                handle.close()
+                return True
+
+        handle.close()
+        return False
+
+class MzML( GenericXml ):
+    """mzML data"""
+    file_ext = "mzml"
+    
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = 'mzML Mass Spectrometry data'
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+
+    def sniff( self, filename ):
+        handle = open(filename)
+        xmlns_re = re.compile("^<mzML")
+        for i in range(3):
+            line = handle.readline()
+            if xmlns_re.match(line.strip()):
+                handle.close()
+                return True
+
+        handle.close()
+        return False
+
+
+class ProtXML( Text ):
+    """protXML data"""
+    file_ext = "protxml"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = 'prot XML Search Results'
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+    def sniff( self, filename ):
+        protxml_header = [ '<?xml version="1.0" encoding="ISO-8859-1"?>',
+        'xmlns="http://regis-web.systemsbiology.net/protXML"' ]
+
+        for i, line in enumerate( file( filename ) ):
+            if i >= len( pepxml_header ):
+                return True
+            line = line.rstrip( '\n\r' )
+            if protxml_header[ i ] not in line:
+                return False
+
+
+
+class MzXML( Text ):
+    """mzXML data"""
+    file_ext = "mzXML"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = 'mzXML Mass Spectrometry data'
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+    def sniff( self, filename ):
+        mzxml_header = [ '<?xml version="1.0" encoding="ISO-8859-1"?>',
+        '<mzXML xmlns="http://sashimi.sourceforge.net/schema_revision/mzXML_2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sashimi.sourceforge.net/schema_revision/mzXML_2.1 http://sashimi.sourceforge.net/schema_revision/mzXML_2.1/mzXML_idx_2.1.xsd">' ]
+        for i, line in enumerate( file( filename ) ):
+            if i >= len( mzxml_header ):
+                return True
+            line = line.rstrip( '\n\r' )
+            if line != mzxml_header[ i ]:
+                return False        
+ 
+class Mgf( Text ):
+    """Mascot Generic Format data"""
+    file_ext = "mgf"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = 'mgf Mascot Generic Format'
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+
+
+    def sniff( self, filename ):
+        mgf_begin_ions = "BEGIN IONS"
+        max_lines=100
+
+        for i, line in enumerate( file( filename ) ):
+            line = line.rstrip( '\n\r' )
+            if line==mgf_begin_ions:
+                return True
+            if i>max_lines:
+                return False
+            
+                
+class MascotDat( Text ):
+    """Mascot search results """
+    file_ext = "mascotdat"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = data.get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+            dataset.blurb = 'mascotdat Mascot Search Results'
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+
+
+    def sniff( self, filename ):
+        mime_version = "MIME-Version: 1.0 (Generated by Mascot version 1.0)"
+        max_lines=10
+
+        for i, line in enumerate( file( filename ) ):
+            line = line.rstrip( '\n\r' )
+            if line==mime_version:
+                return True
+            if i>max_lines:
+                return False
+
+
+class RAW( Binary ):
+    """Class describing a Thermo Finnigan binary RAW file"""
+    file_ext = "raw"
+    def sniff( self, filename ):
+        # Thermo Finnigan RAW format is proprietary and hence not well documented.
+        # Files start with 2 bytes that seem to differ followed by F\0i\0n\0n\0i\0g\0a\0n
+        # This combination represents 17 bytes, but to play safe we read 20 bytes from 
+        # the start of the file.
+        try:
+            header = open( filename ).read(20)
+            hexheader = binascii.b2a_hex( header )
+            finnigan  = binascii.hexlify( 'F\0i\0n\0n\0i\0g\0a\0n' )
+            if hexheader.find(finnigan) != -1:
+                return True
+            return False
+        except:
+            return False
+    def set_peek( self, dataset, is_multi_byte=False ):
+        if not dataset.dataset.purged:
+            dataset.peek  = "Thermo Finnigan RAW file"
+            dataset.blurb = data.nice_size( dataset.get_size() )
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+    def display_peek( self, dataset ):
+        try:
+            return dataset.peek
+        except:
+            return "Thermo Finnigan RAW file (%s)" % ( data.nice_size( dataset.get_size() ) )
+
+
+class Msp(Text):
+    """ Output of NIST MS Search Program chemdata.nist.gov/mass-spc/ftp/mass-spc/PepLib.pdf """
+    file_ext = "msp"
+    
+    @staticmethod
+    def next_line_starts_with(contents, prefix):
+        next_line = contents.readline()
+        return next_line != None and next_line.startswith(prefix)
+
+    def sniff(self, filename):
+        """ Determines whether the file is a NIST MSP output file. 
+
+        >>> fname = get_test_fname('test.msp')  
+        >>> Msp().sniff(fname)
+        True
+        >>> fname = get_test_fname('test.mzXML')
+        >>> Msp().sniff(fname)
+        False
+        """
+        with open(filename, 'r') as contents:
+            return Msp.next_line_starts_with(contents, "Name:") and Msp.next_line_starts_with(contents, "MW:")
+
+class Ms2(Text):
+    file_ext = "ms2"
+    
+    def sniff(self, filename):
+        """ Determines whether the file is a valid ms2 file. 
+
+        >>> fname = get_test_fname('test.msp')  
+        >>> Ms2().sniff(fname)
+        False
+        >>> fname = get_test_fname('test.ms2')
+        >>> Ms2().sniff(fname)
+        True
+        """
+
+        with open(filename, 'r') as contents:
+            header_lines = []
+            while True:
+                line = contents.readline()
+                if line == None or len(line) == 0:
+                    pass
+                elif line.startswith('H\t'):
+                    header_lines.append(line)
+                else:
+                    break
+        for header_field in ['CreationDate', 'Extractor', 'ExtractorVersion', 'ExtractorOptions']:
+            found_header = False
+            for header_line in header_lines:
+                if header_line.startswith('H\t%s' % (header_field)):
+                    found_header = True
+                    break
+            if not found_header:
+                return False
+
+        return True
+
+# unsniffable binary format, should do something about this
+class XHunterAslFormat(Binary):
+    """ Annotated Spectra in the HLF format http://www.thegpm.org/HUNTER/format_2006_09_15.html """
+    file_ext = "hlf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make_decoy.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,26 @@
+<tool id="make_decoy_1" name="Create decoy databases" version="1.0.0">
+	<requirements>
+		<requirement type="package">protk</requirement>
+	</requirements>
+	
+	<description>Creates a random protein database with similar properties to a real protein database</description>
+
+	<command>make_decoy.rb $input_file -o $output -L $length -P $prefix $append</command>
+
+	<inputs>
+
+		<param name="input_file" type="data" format="fasta"  multiple="false" label="Input File" help="Real protein sequences. Take care that these are fasta formatted with no more than 80 amino acids per line. There should be no whitespace in the sequences."/>
+		<param name="prefix" type="text" label="String to prepend to generated protein ID's" size="60" value="decoy_"/>
+		<param name="length" type="text" label="Number of random sequences to generate" help="If 0, a database of equal size to the input database will be generated" size="60" value="0"/>
+		<param name="append" type="boolean" checked="true" label="Append input dataset to the generated sequences" truevalue="-A" falsevalue=""/>
+	</inputs>
+	
+	<outputs>
+		<data format="fasta" name="output" metadata_source="input_file" label="Random sequences from ${input_file.display_name}" from_work_dir="random.fasta"/>
+	</outputs>
+
+	<help>
+		Create random protein sequences
+	</help>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mzml_to_mgf.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,25 @@
+<tool id="mzml_to_mgf_1" name="MzML to mgf" version="1.0.0">
+	<requirements>
+		<requirement type="package">protk</requirement>
+	</requirements>
+	
+	<description>Converts an mzML file to mgf suitable for searching by omssa</description>
+
+	<command>file_convert.rb $input_file -o $output $maldi</command>
+
+	<inputs>
+
+		<param name="input_file" type="data" format="mzml"  multiple="false" label="Input File" help="Line Spectra in mzML format"/>
+		<param name="maldi" type="boolean" label="Is the data from a MALDI instrument" truevalue="-l" falsevalue=""/>
+
+	</inputs>
+	
+	<outputs>
+		<data format="mgf" name="output" metadata_source="input_file" label="${input_file.display_name}.mgf" from_work_dir="converted.mgf"/>
+	</outputs>
+
+	<help>
+		Convert line spectra to Mascot Generic Format
+	</help>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omssa.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,161 @@
+<tool id="proteomics_search_omssa_1" name="OMSSA MSMS Search" version="1.0.0">
+	<requirements>
+		<requirement type="package">protk</requirement>
+	</requirements>
+	
+	<description>Run an OMSSA MS/MS Search</description>
+		
+	<command>#if $database.source_select=="built_in":
+		omssa_search.rb -d $database.dbkey 
+		#else #omssa_search.rb -d $database.fasta_file
+		#end if
+		
+		--var-mods='
+		$variable_mods
+		'
+		
+		--fix-mods='
+		$fixed_mods
+		'
+		
+		--searched-ions='
+		$searched_ions
+		'
+		
+		$input_file -o $output -r --enzyme=$enzyme --precursor-ion-tol-units=$precursor_tolu -v $missed_cleavages -f $fragment_ion_tol -p $precursor_ion_tol --num-peaks-for-multi-isotope-search $multi_isotope $use_average_mass $respect_precursor_charges --max-hit-expect $max_hit_expect --intensity-cut-off $intensity_cut_off
+
+	</command>
+	
+
+	<inputs>	
+		<conditional name="database">
+			<param name="source_select" type="select" label="Database source">
+				<option value="built_in">Built-In</option>
+				<option value="input_ref">Uploaded fasta file</option>
+			</param>
+			<when value="built_in">
+				<param name="dbkey" type="select" format="text" >
+					<label>Database</label>
+					<options from_file="pepxml_databases.loc">
+						<column name="name" index="0" />
+						<column name="value" index="2" />
+					</options>
+				</param>
+			</when>
+			<when value="input_ref">
+				<param name="fasta_file" type="data" format="fasta" label="Uploaded FASTA file" />
+			</when>
+		</conditional>
+		
+		<param name="input_file" type="data" format="mgf" multiple="false" label="MSMS File" help="An mgf file with MS/MS data"/>		
+
+		<param name="variable_mods" format="text" type="select" multiple="true" label="Variable Modifications" help="Hold the appropriate key while
+			clicking to select multiple items">
+			<options from_file="omssa_mods.loc">
+				<column name="name" index="0" />
+				<column name="value" index="2" />
+			</options>
+		</param>		
+
+		<param name="fixed_mods" format="text" type="select" multiple="true" label="Fixed Modifications" help="Hold the appropriate key while
+		clicking to select multiple items">
+			<options from_file="omssa_mods.loc">
+				<column name="name" index="0" />
+				<column name="value" index="2" />
+			</options>
+		</param>
+
+		
+		<param name="missed_cleavages" type="select" format="text" help="Allow peptides to contain up to this many missed enzyme cleavage sites">
+			<label>Missed Cleavages Allowed</label>
+		    <option value="0">0</option>		
+			<option value="1">1</option>
+			<option value="2">2</option>
+		</param>
+
+		<param name="enzyme" type="select" format="text">
+		    <label>Enzyme</label>
+		    <option value="0">Trypsin</option>
+			<option value="1">Arg-C</option>
+			<option value="2">CNBr</option>
+			<option value="3">Chymotrypsin (FYWL)</option>
+			<option value="4">Formic Acid</option>
+			<option value="5">Lys-C</option>
+			<option value="6">Lys-C, no P rule</option>
+			<option value="7">Pepsin A</option>
+			<option value="8">Trypsin+CNBr</option>
+			<option value="9">Trypsin+Chymotrypsin (FYWLKR)</option>
+			<option value="10">Trypsin, no P rule</option>
+			<option value="11">Whole protein</option>
+			<option value="12">Asp-N</option>
+			<option value="13">Glu-C</option>
+			<option value="14">Asp-N+Glu-C</option>
+			<option value="15">Top-Down</option>
+			<option value="16">Semi-Tryptic</option>
+			<option value="17">No Enzyme</option>
+			<option value="18">Chymotrypsin, no P rule (FYWL)</option>
+			<option value="19">Asp-N (DE)</option>
+			<option value="20">Glu-C (DE)</option>
+			<option value="21">Lys-N (K)</option>
+			<option value="22">Thermolysin, no P rule</option>
+			<option value="23">Semi-Chymotrypsin (FYWL)</option>
+			<option value="24">Semi-Glu-C</option>
+		</param>
+
+		<param name="fragment_ion_tol" help="Fragment Ion Tolerance in Daltons" type="float" value="0.65" min="0" max="10000" label="Fragment ion tolerance"/>
+		<param name="max_hit_expect" help="Expect values less than this are considered to be hits. Use a large value, eg 10000 when results will be processed downstream with Peptide Prophet" type="float" value="1.0" min="0" max="10000000" label="Maximum Expect value allowed in the hit list"/><!-- -he-->
+		<param name="intensity_cut_off" help="Peak intensity cut-off as a fraction of maximum peak intensity" type="float" value="0.0005" min="0" max="1" label="Peak intensity cut-off"/><!-- -ci-->
+
+
+		<param name="precursor_ion_tol" help="Precursor Ion Tolerance (Da or ppm)" type="float" value="100" min="0" max="10000" label="Precursor ion tolerance"/>
+		<param name="precursor_tolu" type="select" format="text">
+		    <label>Precursor Ion Tolerance Units</label>
+		    <option value="ppm">ppm</option>		
+			<option value="Da">Da</option>
+		</param>
+		
+		<param name="use_average_mass" type="boolean" label="Use average precursor masses" help="Match precursor to average mass of the parent ion instead of its monoisotopic mass" truevalue="-a average" falsevalue=""/>
+		<param name="respect_precursor_charges" type="boolean" label="Respect precursor charges" help="Use precursor charge information in input file rather than OMSSA's inferred value" truevalue="--respect-charges" falsevalue=""/>
+		
+		<param name="multi_isotope" type="select" format="text" help="Include this many neighbouring peaks when searching for a match to the precursor mass. Only used when doing monoisotopic search">
+			<label>Multi-isotope search.</label>
+		    <option value="0">0</option>
+			<option value="1">1</option>
+			<option value="2">2</option>
+			<option value="3">3</option>
+			<option value="4">4</option>
+		</param>
+
+		<param name="searched_ions" display="checkboxes" type="select" multiple="true" format="text" label="Ions included in search" help="">
+		    <option selected="true" value="0">a</option>
+			<option selected="true" value="1">b</option>
+			<option value="2">c</option>
+			<option selected="true" value="3">x</option>
+			<option selected="true" value="4">y</option>
+			<option value="5">zdot</option>
+			<option value="10">adot</option>
+			<option value="11">x-CO2</option>
+			<option value="12">adot-CO2</option>
+		</param>
+		
+	</inputs>
+
+	<outputs>
+		<data format="raw_pepxml" name="output" metadata_source="input_file" label="omssa_vs_${database.dbkey if $database.has_key('dbkey') else $database.fasta_file.display_name}.${input_file.display_name}.pepXML"/>
+	</outputs>
+
+	<help>
+**What it does**
+
+Runs an MS/MS database search using the OMSSA search engine. Output is in the form of a pepXML file containing identified peptides along with their raw search scores.
+
+----
+
+**Citation**
+
+If you use this tool please read and cite the paper describing OMSSA. 
+
+Geer L. Y., et al. “Open mass spectrometry search algorithm” *J. Proteome Res.* 3(5), 958-964 (2004).
+
+	</help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/peptide_prophet.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,79 @@
+<tool id="proteomics_search_peptide_prophet_1" name="Peptide Prophet" version="1.0.0">
+	<requirements><requirement type="package">protk</requirement></requirements>
+	<description>Calculate Peptide Prophet statistics on search results</description>
+
+	<command interpreter="ruby">peptide_prophet_wrapper.rb ${output} ${input_file}  -r $glyco $useicat $phospho $usepi $usert $accurate_mass $no_ntt $no_nmc $use_gamma $use_only_expect $force_fit $allow_alt_instruments $maldi
+	</command>
+
+	<inputs>
+	
+    <param name="input_file" type="data" format="raw_pepxml" multiple="false" label="Raw Search Results" help="These files will typically be outputs from omssa or xtandem search tools"/>
+
+	<param name="glyco" type="boolean" label="Expect true positives to have a glycocapture motif" truevalue="--glyco" falsevalue=""/>
+	<param name="useicat" type="boolean" label="Use icat information" truevalue="--useicat" falsevalue="--no-useicat"/>
+	<param name="phospho" type="boolean" label="Use phospho information" truevalue="--phospho" falsevalue=""/>
+	<param name="usepi" type="boolean" label="Use pI information" truevalue="--usepi" falsevalue=""/>
+	<param name="usert" type="boolean" label="Use hydrophobicity / RT information" truevalue="--usert" falsevalue=""/>
+	<param name="accurate_mass" type="boolean" label="Use accurate mass binning" truevalue="--accurate-mass" falsevalue=""/>
+	<param name="no_ntt" type="boolean" label="Don't use NTT model" truevalue="--no-ntt" falsevalue=""/>
+	<param name="no_nmc" type="boolean" label="Don't use NMC model" truevalue="--no-nmc" falsevalue=""/>
+	<param name="use_gamma" type="boolean" label="Use Gamma distribution to model the negatives" help="Applies only to X!Tandem results" truevalue="--usegamma" falsevalue=""/>
+	<param name="use_only_expect" type="boolean" label="Only use Expect Score as the discriminant" help="Applies only to X!Tandem results. 
+        Helpful for data with homologous top hits e.g. phospho or glyco" truevalue="--use-only-expect" falsevalue=""/>
+	<param name="force_fit" type="boolean" label="Force fitting" help="Bypasses automatic mixture model checks and forces fitting of a mixture model" truevalue="--force-fit" falsevalue=""/>
+	<param name="allow_alt_instruments" type="boolean" label="Allow multiple instrument types" help="Warning instead of exit with error if instrument types between runs is different" truevalue="--allow-alt-instruments" falsevalue=""/>
+	<param name="maldi" type="boolean" label="Maldi data" truevalue="-l" falsevalue=""/>
+	
+	
+  </inputs>
+  <outputs>
+    <data format="peptideprophet_pepxml" name="output" metadata_source="input_file" label="peptide_prophet.${input_file.display_name}.pep.xml" from_work_dir="peptide_prophet_output.pep.xml"/>
+  </outputs>
+
+<help>
+
+**What it does**
+
+Given raw search engine scores as inputs this tool estimates the accuracy of peptide assignments.  From a practical perspective it estimates the probability that each peptide assignment is correct (providing probabilities as outputs), given raw scores (possibly on some arbitrary scale) as inputs. 
+
+----
+
+**Citation**
+
+If you use this tool please read and cite the paper describing the statistical model implemented by Peptide Prophet
+
+Keller A., et al. “Empirical Statistical Model to Estimate the Accuracy of Peptide Identifications Made by MS/MS and Database Search” *Anal. Chem.* 74, 5383-5392 (2002).
+
+
+</help>
+
+
+<!--PeptideProphet options [following the 'O']:
+                 i [use icat information in PeptideProphet]
+                 f [do not use icat information in PeptideProphet]
+                 g [use N-glyc motif information in PeptideProphet]
+                 H [use Phospho information in PeptideProphet]
+                 m [maldi data]
+                 I [use pI information in PeptideProphet]
+                 R [use Hydrophobicity / RT information in PeptideProphet]
+                 F [force the fitting of the mixture model, bypass automatic mixture model checks]
+                 A [use accurate mass binning in PeptideProphet]
+                 w [warning instead of exit with error if instrument types between runs is different]
+                 x [exclude all entries with asterisked score values in PeptideProphet]
+                 l [leave alone all entries with asterisked score values in PeptideProphet]
+                 n [use hardcoded default initialization parameters of the distributions]
+                 P [use Non-parametric model, can only be used with decoy option]
+                 N [do not use the NTT model]
+                 M [do not use the NMC model]
+                 G [use Gamma Distribution to model the Negatives (applies only to X!Tandem data)]
+                 E [only use Expect Score as the Discriminant(applies only to X!Tandem data, 
+                    helpful for data with homologous top hits e.g. phospho or glyco)]
+                 d [report decoy hits with a computed probability based on the model learned]
+                 p [run ProteinProphet afterwards]
+                 t [do not create png data plot]
+                 u [do not assemble protein groups in ProteinProphet analysis]
+                 s [do not use Occam's Razor in ProteinProphet analysis to 
+                    derive the simplest protein list to explain observed peptides]
+-->
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/peptide_prophet_wrapper.rb	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,38 @@
+require 'pathname'
+
+$VERBOSE=nil
+
+peptide_prophet_path=%x[which peptide_prophet.rb]
+
+actual_output_path_string=ARGV.shift
+
+# Second argument is the original input file name ... we'll change this below
+original_input_file=ARGV[0]
+
+# Before doing anything we append create a link to the input file in our working dir with ".pep.xml" appended to the input 
+# name because peptide prophet can't handle anything else
+
+wd= Dir.pwd
+
+original_input_path=Pathname.new("#{original_input_file}")
+actual_input_path_string="#{wd}/#{original_input_path.basename}.pep.xml"
+full_tmp_output_path_string="#{wd}/peptide_prophet_output.pep.xml"
+
+cmd = "ln -s #{original_input_file} #{actual_input_path_string};"
+
+cmd << peptide_prophet_path.chomp
+
+
+ARGV[0]="#{actual_input_path_string}"
+
+ARGV.each { |a|    
+  cmd << " #{a}" 
+}
+
+cmd << " -o peptide_prophet_output.pep.xml"
+
+# Finally we need to fix up the output file so any references to the temporary working file are changed to refs to the original input file
+cmd << ";ruby -pi -e \"gsub('#{actual_input_path_string}', '#{original_input_file}')\" peptide_prophet_output.pep.xml"
+cmd << ";ruby -pi -e \"gsub('#{full_tmp_output_path_string}', '#{actual_output_path_string}')\" peptide_prophet_output.pep.xml"
+
+%x[#{cmd}]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pepxml_to_table.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,23 @@
+<tool id="pepxml_to_table_1" name="PepXML to Table" version="1.0.0">
+	<requirements><requirement type="package">protk</requirement></requirements>
+  <description>Converts a pepXML file to a tab delimited text file</description>
+
+
+<!-- Note .. the input file is assumed to be the first argument -->
+<command>pepxml_to_table.rb $input_file -o $output</command>
+
+
+<inputs>
+
+	<param name="input_file" type="data" format="pepxml"  multiple="false" label="Input File" help="A pepXML file"/>
+
+</inputs>
+<outputs>
+	<data format="csv" name="output" metadata_source="input_file" label="${input_file.display_name}.csv" />
+</outputs>
+
+<help>
+	Convert a pepXML file to Tab delimited text
+</help>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/protein_prophet.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,67 @@
+<tool id="proteomics_search_protein_prophet_1" name="Protein Prophet" version="1.0.0">
+	<requirements><requirement type="package">protk</requirement></requirements>
+  <description>Calculate Protein Prophet statistics on search results</description>
+
+
+<!-- Note .. the input file is assumed to be the first argument -->
+  <command>protein_prophet.rb --galaxy $input_file -r $iproph $nooccam $groupwts $normprotlen $logprobs $confem $allpeps $unmapped $instances $delude --minprob=$minprob --minindep=$minindep </command>
+  <inputs>
+	
+    <param name="input_file" type="data" format="pepxml" multiple="false" label="Peptide Prophet Results" help="These files will typically be outputs from peptide prophet or interprophet"/>
+
+
+	<param name="iproph" selected="true" type="boolean" label="Inputs are from iProphet" truevalue="--iprophet-input" falsevalue=""/>
+	<param name="nooccam" type="boolean" label="Don't apply Occam's razor" help="When selected no attempt will be made to derive the simplest protein list explaining observed peptides" truevalue="--no-occam" falsevalue=""/>
+	<param name="groupwts" type="boolean" label="Use group weights" help="Check peptide's total weight (rather than actual weight) in the Protein Group against the threshold" truevalue="--group-wts" falsevalue=""/>
+	<param name="normprotlen" type="boolean" label="Normalize NSP using Protein Length" truevalue="--norm-protlen" falsevalue=""/>
+	<param name="logprobs" type="boolean" label="Use the log of probability in the confidence calculations" truevalue="--log-prob" falsevalue=""/>
+	<param name="confem" type="boolean" label="Use the EM to compute probability given the confidenct" truevalue="--confem" falsevalue=""/>
+	<param name="allpeps" type="boolean" label="Consider all possible peptides in the database in the confidence model" truevalue="--allpeps" falsevalue=""/>
+	<param name="unmapped" type="boolean" label="Report results for unmapped proteins" truevalue="--unmapped" falsevalue=""/>
+	<param name="instances" type="boolean" label="Use Expected Number of Ion Instances to adjust the peptide probabilities prior to NSP adjustment" truevalue="--instances" falsevalue=""/>
+	<param name="delude" type="boolean" label="Do NOT use peptide degeneracy information when assessing proteins" truevalue="--delude" falsevalue=""/>
+
+	<param name="minprob" type="text" label="Minimum peptide prophet probability for peptides to be considered" value="0.05"/>
+	<param name="minindep" type="text" label="Minimum percentage of independent peptides required for a protein" value="0"/>
+	
+  </inputs>
+  <outputs>
+    <data format="protxml" name="output" metadata_source="input_file" label="protein_prophet.${input_file.display_name}.protXML" from_work_dir="protein_prophet_results.prot.xml"/>
+  </outputs>
+
+
+<!--NOPLOT: do not generate plot png file
+		NOOCCAM: non-conservative maximum protein list
+		GROUPWTS: check peptide's total weight in the Protein Group against the threshold (default: check peptide's actual weight against threshold)   
+		NORMPROTLEN: Normalize NSP using Protein Length
+		LOGPROBS: Use the log of the probabilities in the Confidence calculations
+		CONFEM: Use the EM to compute probability given the confidence 
+		ALLPEPS: Consider all possible peptides in the database in the confidence model
+		UNMAPPED: Report results for UNMAPPED proteins
+		INSTANCES: Use Expected Number of Ion Instances to adjust the peptide probabilities prior to NSP adjustment
+		DELUDE: do NOT use peptide degeneracy information when assessing proteins
+		
+		MINPROB: peptideProphet probabilty threshold (default=0.05) 
+		MININDEP: minimum percentage of independent peptides required for a protein (default=0) 
+		
+		
+-->
+
+  <help>
+
+**What it does**
+
+Given a set of peptide assignments from MS/MS spectra in the form of a pepXML file, this tool estimates probabilities at the protein level.  As output, the tool produces a protXML file, which contains proteins along with the estimated probabilities that those proteins were present.  Probabilities are estimated using a statistical model based on the number of peptides corresponding to that protein and the confidence that each of those peptides were assigned correctly.  It takes account of the fact that peptides may correspond to more than one protein. 
+
+----
+
+**Citation**
+
+If you use this tool please read and cite the paper describing the statistical model implemented by Protein Prophet
+
+Nesvizhskii A., et al. “A Statistical Model for Identifying Proteins by Tandem Mass Spectrometry” *Anal. Chem.* 75, 4646-4658 (2003).
+
+
+  </help>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/protein_prophet_wrapper.rb	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,37 @@
+require 'pathname'
+
+$VERBOSE=nil
+
+protein_prophet_path=%x[which protein_prophet.rb]
+
+actual_output_path_string=ARGV.shift
+
+# Second argument is the original input file name ... we'll change this below
+original_input_file=ARGV[0]
+
+# Before doing anything we append create a link to the input file in our working dir with ".pep.xml" appended to the input 
+# name because peptide prophet can't handle anything else
+
+wd= Dir.pwd
+
+original_input_path=Pathname.new("#{original_input_file}")
+actual_input_path_string="#{wd}/#{original_input_path.basename}.pep.xml"
+
+cmd = "ln -s #{original_input_file} #{actual_input_path_string};"
+
+cmd << protein_prophet_path.chomp
+
+
+ARGV[0]="#{actual_input_path_string}"
+
+ARGV.each { |a| 
+    
+  cmd << " #{a}" 
+}
+
+cmd << " -o protein_prophet_results.prot.xml"
+
+cmd << ";ruby -pi -e \"gsub('#{actual_input_path_string}', '#{original_input_file}.pep.xml')\" protein_prophet_results.prot.xml"
+
+%x[#{cmd}]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tandem.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,128 @@
+<tool id="proteomics_search_tandem_1" name="X!Tandem MSMS Search" version="1.0.0">
+	<requirements><requirement type="package">protk</requirement></requirements>
+	<description>Run an X!Tandem Search</description>
+
+	<command>
+		#if $database.source_select=="built_in":
+		tandem_search.rb -d $database.dbkey 
+		#else #tandem_search.rb -d $database.fasta_file
+		#end if
+
+		--var-mods='
+		$variable_mods
+		#for $custom_variable_mod in $custom_variable_mods:
+		,${custom_variable_mod.custom_mod}
+		#end for
+		'
+
+		--fix-mods='
+		$fixed_mods
+		#for $custom_fix_mod in $custom_fix_mods:
+		,${custom_fix_mod.custom_mod}
+		#end for
+		'
+
+		$input_file -o $output -r --enzyme=$enzyme --precursor-ion-tol-units=$precursor_tolu -v $missed_cleavages -f $fragment_ion_tol -p $precursor_ion_tol $allow_multi_isotope_search --keep-params-files
+		
+		
+		
+	</command>
+
+	<inputs>	
+		<conditional name="database">
+			<param name="source_select" type="select" label="Database source">
+				<option value="built_in">Built-In</option>
+				<option value="input_ref">Your Upload File</option>
+			</param>
+			<when value="built_in">
+				<param name="dbkey" type="select" format="text" >
+					<label>Database</label>
+					<options from_file="pepxml_databases.loc">
+						<column name="name" index="0" />
+						<column name="value" index="2" />
+					</options>
+				</param>
+			</when>
+			<when value="input_ref">
+				<param name="fasta_file" type="data" format="fasta" label="Uploaded FASTA file" />
+			</when>
+		</conditional>
+		
+		<param name="input_file" type="data" format="mzml" multiple="false" label="MSMS File" help="An mzML file with MS/MS data"/>
+
+
+		<param name="variable_mods" format="text" type="select" multiple="true" label="Variable Modifications" help="Hold the appropriate key while
+			clicking to select multiple items">
+			<options from_file="tandem_mods.loc">
+				<column name="name" index="0" />
+				<column name="value" index="2" />
+			</options>
+		</param>
+
+		<repeat name="custom_variable_mods" title="Custom Variable Modifications" help="You can specify a modification when present in a motif. For instance, 0.998@N!{P}[ST] is a deamidation modification on N only if it is present in an N[any but P][S or T] motif (N-glycosite).">
+			<param name="custom_mod" type="text">
+			</param>
+		</repeat>
+		
+		
+		<param name="fixed_mods" format="text" type="select" multiple="true" label="Fixed Modifications" help="Hold the appropriate key while
+			clicking to select multiple items">
+			<options from_file="tandem_mods.loc">
+				<column name="name" index="0" />
+				<column name="value" index="2" />
+			</options>
+		</param>
+
+		<repeat name="custom_fix_mods" title="Custom Fixed Modifications" help="You can specify a modification when present in a motif. For instance, 0.998@N!{P}[ST] is a deamidation modification on N only if it is present in an N[any but P][S or T] motif (N-glycosite).">
+			<param name="custom_mod" type="text">
+			</param>
+		</repeat>
+		
+		
+
+		<param name="missed_cleavages" type="select" format="text" help="Allow peptides to contain up to this many missed enzyme cleavage sites">
+			<label>Missed Cleavages Allowed</label>
+		    <option value="0">0</option>		
+			<option value="1">1</option>
+			<option value="2">2</option>
+		</param>
+		
+		<param name="enzyme" type="select" format="text">
+		    <label>Enzyme</label>
+		    <option value="Trypsin">Trypsin</option>
+		</param>
+		
+		<param name="fragment_ion_tol" help="Fragment Ion Tolerance in Daltons" type="float" value="0.65" min="0" max="10000" label="Fragment ion tolerance"/>
+
+		<param name="precursor_ion_tol" help="Precursor Ion Tolerance (Da or ppm)" type="float" value="100" min="0" max="10000" label="Precursor ion tolerance"/>
+		<param name="precursor_tolu" type="select" format="text">
+		    <label>Precursor Ion Tolerance Units</label>
+		    <option value="ppm">ppm</option>		
+			<option value="Da">Da</option>
+		</param>
+		
+		<param name="allow_multi_isotope_search" type="boolean" label="Allow multi-isotope search" help="This allows peptide candidates in windows around -1 Da and -2 Da from the acquired mass to be considered. Only applicable when the minus/plus window above is set to less than 0.5 Da. Good for accurate-mass instruments for which the reported precursor mass is not corrected to the monoisotopic mass." truevalue="" falsevalue="--strict-monoisotopic-mass"/>
+
+	</inputs>
+
+
+	<outputs>
+		<data format="raw_pepxml" name="output" metadata_source="input_file" label="X!Tandem_vs_${database.dbkey if $database.has_key('dbkey') else $database.fasta_file.display_name}.${input_file.display_name}.${input_file.display_name}.pepXML"/>
+	</outputs>
+
+
+  <help>
+
+**What it does**
+
+Runs an MS/MS database search using the X!Tandem search engine. Output is in the form of a pepXML file containing identified peptides along with their raw search scores.
+
+----
+
+**References**
+
+Please see http://www.thegpm.org/GPM/references.html for details of references describing the X!Tandem search engine.
+
+  </help>
+
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/datatypes_conf.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<datatypes>
+  <datatype_files>
+    <datatype_file name="proteomics.py"/>
+  </datatype_files>		
+  <registration display_path="display_applications">	
+    <datatype extension="pepxml" type="galaxy.datatypes.proteomics:PepXml" mimetype="application/xml" display_in_upload="true">
+      <display file="proteomics/PepXml.xml" />
+    </datatype>
+    <datatype extension="raw_pepxml" type="galaxy.datatypes.proteomics:PepXml" subclass="true">
+      <display file="proteomics/PepXml.xml" />
+    </datatype>
+    <datatype extension="peptideprophet_pepxml" type="galaxy.datatypes.proteomics:PepXml" subclass="true">
+      <display file="proteomics/PepXml.xml" />
+    </datatype>
+    <datatype extension="interprophet_pepxml" type="galaxy.datatypes.proteomics:PepXml" subclass="true">
+      <display file="proteomics/PepXml.xml" />
+    </datatype>
+    <datatype extension="protxml" type="galaxy.datatypes.proteomics:ProtXML" display_in_upload="true" >
+      <display file="proteomics/ProtXml.xml"/>
+    </datatype>
+    <datatype extension="mascotdat" type="galaxy.datatypes.proteomics:MascotDat" display_in_upload="false" />
+    <datatype extension="mzml" type="galaxy.datatypes.proteomics:MzML" mimetype="application/xml" display_in_upload="true">
+      <display file="proteomics/mzML.xml"/>
+    </datatype>
+    <datatype extension="mgf" type="galaxy.datatypes.proteomics:Mgf" display_in_upload="true" />		
+    <datatype extension="xls" type="galaxy.datatypes.proteomics:Xls" display_in_upload="true" />
+    <datatype extension="mzxml" type="galaxy.datatypes.proteomics:MzXML" mimetype="application/xml" display_in_upload="true" />
+    <datatype extension="raw" type="galaxy.datatypes.proteomics:RAW" display_in_upload="true" />
+    <datatype extension="msp" type="galaxy.datatypes.proteomics:Msp" display_in_upload="true" />
+    <datatype extension="ms2" type="galaxy.datatypes.proteomics:Ms2" display_in_upload="true" />
+    <datatype extension="hlf" type="galaxy.datatypes.proteomics:XHunterAslFormat" display_in_upload="true" />
+  </registration>
+  <sniffers>
+    <sniffer type="galaxy.datatypes.proteomics:MzML"/>        
+    <sniffer type="galaxy.datatypes.proteomics:PepXml"/>
+    <sniffer type="galaxy.datatypes.proteomics:Mgf"/>
+    <sniffer type="galaxy.datatypes.proteomics:ProtXML"/>
+    <sniffer type="galaxy.datatypes.proteomics:MzXML"/>
+    <sniffer type="galaxy.datatypes.proteomics:Xls"/>
+  </sniffers>
+</datatypes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/mascot_databases.loc.sample	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,13 @@
+#This file lists the names of protein databases installed on Mascot
+#
+#In order to use interprophet to combine results from different search engines
+#it is important that all searches are performed on the same database
+#you should therefore ensure that each database installed on mascot has an equivalent
+#database installed in the Protk databases directory (databases used by omssa and x!tandem)
+#the mascot_to_pepxml tool will ask for this database when performing the conversion.
+#
+# Entries should follow the be structured as follows
+# Display_name dbkey dbNameOnMascot dbkey
+#
+Swissprot	spall_	SPAll	spall_
+Swissprot Human	sphuman_	SPHuman	sphuman_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/mascot_mods.loc.sample	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,77 @@
+#This file lists the names of chemical modifications acceptable for proteomics search engines
+#
+#
+Acetyl (K)	acetyl_k_	Acetyl (K)	acetyl_k_
+Acetyl (N-term)	acetyl_n-term_	Acetyl (N-term)	acetyl_n-term_
+Acetyl (Protein N-term)	acetyl_proteinn-term_	Acetyl (Protein N-term)	acetyl_proteinn-term_
+Amidated (C-term)	amidated_c-term_	Amidated (C-term)	amidated_c-term_
+Amidated (Protein C-term)	amidated_proteinc-term_	Amidated (Protein C-term)	amidated_proteinc-term_
+Ammonia-loss (N-term C)	ammonia-loss_n-termc_	Ammonia-loss (N-term C)	ammonia-loss_n-termc_
+Biotin (K)	biotin_k_	Biotin (K)	biotin_k_
+Biotin (N-term)	biotin_n-term_	Biotin (N-term)	biotin_n-term_
+Carbamidomethyl (C)	carbamidomethyl_c_	Carbamidomethyl (C)	carbamidomethyl_c_
+Carbamyl (K)	carbamyl_k_	Carbamyl (K)	carbamyl_k_
+Carbamyl (N-term)	carbamyl_n-term_	Carbamyl (N-term)	carbamyl_n-term_
+Carboxymethyl (C)	carboxymethyl_c_	Carboxymethyl (C)	carboxymethyl_c_
+Cation:Na (C-term)	cation_na_c-term_	Cation:Na (C-term)	cation_na_c-term_
+Cation:Na (DE)	cation_na_de_	Cation:Na (DE)	cation_na_de_
+Deamidated (NQ)	deamidated_nq_	Deamidated (NQ)	deamidated_nq_
+Deamidated-N (N)	deamidated-n_n_	Deamidated-N (N)	deamidated-n_n_
+Dehydrated (N-term C)	dehydrated_n-termc_	Dehydrated (N-term C)	dehydrated_n-termc_
+Dehydro (C)	dehydro_c_	Dehydro (C)	dehydro_c_
+Dioxidation (M)	dioxidation_m_	Dioxidation (M)	dioxidation_m_
+Ethanolyl (C)	ethanolyl_c_	Ethanolyl (C)	ethanolyl_c_
+ExacTagAmine (K)	exactagamine_k_	ExacTagAmine (K)	exactagamine_k_
+ExacTagThiol (C)	exactagthiol_c_	ExacTagThiol (C)	exactagthiol_c_
+Formyl (N-term)	formyl_n-term_	Formyl (N-term)	formyl_n-term_
+Formyl (Protein N-term)	formyl_proteinn-term_	Formyl (Protein N-term)	formyl_proteinn-term_
+Gln->pyro-Glu (N-term Q)	gln_pyro-glu_n-termq_	Gln->pyro-Glu (N-term Q)	gln_pyro-glu_n-termq_
+Glu->pyro-Glu (N-term E)	glu_pyro-glu_n-terme_	Glu->pyro-Glu (N-term E)	glu_pyro-glu_n-terme_
+Guanidinyl (K)	guanidinyl_k_	Guanidinyl (K)	guanidinyl_k_
+ICAT-C (C)	icat-c_c_	ICAT-C (C)	icat-c_c_
+ICAT-C:13C(9) (C)	icat-c_13c_9__c_	ICAT-C:13C(9) (C)	icat-c_13c_9__c_
+ICPL (K)	icpl_k_	ICPL (K)	icpl_k_
+ICPL (Protein N-term)	icpl_proteinn-term_	ICPL (Protein N-term)	icpl_proteinn-term_
+ICPL:13C(6) (K)	icpl_13c_6__k_	ICPL:13C(6) (K)	icpl_13c_6__k_
+ICPL:13C(6) (Protein N-term)	icpl_13c_6__proteinn-term_	ICPL:13C(6) (Protein N-term)	icpl_13c_6__proteinn-term_
+ICPL:13C(6)2H(4) (K)	icpl_13c_6_2h_4__k_	ICPL:13C(6)2H(4) (K)	icpl_13c_6_2h_4__k_
+ICPL:13C(6)2H(4) (N-term)	icpl_13c_6_2h_4__n-term_	ICPL:13C(6)2H(4) (N-term)	icpl_13c_6_2h_4__n-term_
+ICPL:13C(6)2H(4) (Protein N-term)	icpl_13c_6_2h_4__proteinn-term_	ICPL:13C(6)2H(4) (Protein N-term)	icpl_13c_6_2h_4__proteinn-term_
+ICPL:2H(4) (K)	icpl_2h_4__k_	ICPL:2H(4) (K)	icpl_2h_4__k_
+ICPL:2H(4) (Protein N-term)	icpl_2h_4__proteinn-term_	ICPL:2H(4) (Protein N-term)	icpl_2h_4__proteinn-term_
+iTRAQ4plex (K)	itraq4plex_k_	iTRAQ4plex (K)	itraq4plex_k_
+iTRAQ4plex (N-term)	itraq4plex_n-term_	iTRAQ4plex (N-term)	itraq4plex_n-term_
+iTRAQ4plex (Y)	itraq4plex_y_	iTRAQ4plex (Y)	itraq4plex_y_
+iTRAQ8plex (K)	itraq8plex_k_	iTRAQ8plex (K)	itraq8plex_k_
+iTRAQ8plex (N-term)	itraq8plex_n-term_	iTRAQ8plex (N-term)	itraq8plex_n-term_
+iTRAQ8plex (Y)	itraq8plex_y_	iTRAQ8plex (Y)	itraq8plex_y_
+Label:18O(1) (C-term)	label_18o_1__c-term_	Label:18O(1) (C-term)	label_18o_1__c-term_
+Label:18O(2) (C-term)	label_18o_2__c-term_	Label:18O(2) (C-term)	label_18o_2__c-term_
+Met->Hse (C-term M)	met_hse_c-termm_	Met->Hse (C-term M)	met_hse_c-termm_
+Met->Hsl (C-term M)	met_hsl_c-termm_	Met->Hsl (C-term M)	met_hsl_c-termm_
+Methyl (C-term)	methyl_c-term_	Methyl (C-term)	methyl_c-term_
+Methyl (DE)	methyl_de_	Methyl (DE)	methyl_de_
+Methylthio (C)	methylthio_c_	Methylthio (C)	methylthio_c_
+mTRAQ (K)	mtraq_k_	mTRAQ (K)	mtraq_k_
+mTRAQ (N-term)	mtraq_n-term_	mTRAQ (N-term)	mtraq_n-term_
+mTRAQ (Y)	mtraq_y_	mTRAQ (Y)	mtraq_y_
+mTRAQ:13C(3)15N(1) (K)	mtraq_13c_3_15n_1__k_	mTRAQ:13C(3)15N(1) (K)	mtraq_13c_3_15n_1__k_
+mTRAQ:13C(3)15N(1) (N-term)	mtraq_13c_3_15n_1__n-term_	mTRAQ:13C(3)15N(1) (N-term)	mtraq_13c_3_15n_1__n-term_
+mTRAQ:13C(3)15N(1) (Y)	mtraq_13c_3_15n_1__y_	mTRAQ:13C(3)15N(1) (Y)	mtraq_13c_3_15n_1__y_
+NIPCAM (C)	nipcam_c_	NIPCAM (C)	nipcam_c_
+Oxidation (HW)	oxidation_hw_	Oxidation (HW)	oxidation_hw_
+Oxidation (M)	oxidation_m_	Oxidation (M)	oxidation_m_
+Phospho (ST)	phospho_st_	Phospho (ST)	phospho_st_
+Phospho (Y)	phospho_y_	Phospho (Y)	phospho_y_
+Propionamide (C)	propionamide_c_	Propionamide (C)	propionamide_c_
+Pyridylethyl (C)	pyridylethyl_c_	Pyridylethyl (C)	pyridylethyl_c_
+Pyro-carbamidomethyl (N-term C)	pyro-carbamidomethyl_n-termc_	Pyro-carbamidomethyl (N-term C)	pyro-carbamidomethyl_n-termc_
+Sulfo (S)	sulfo_s_	Sulfo (S)	sulfo_s_
+Sulfo (T)	sulfo_t_	Sulfo (T)	sulfo_t_
+Sulfo (Y)	sulfo_y_	Sulfo (Y)	sulfo_y_
+TMT (K)	tmt_k_	TMT (K)	tmt_k_
+TMT (N-term)	tmt_n-term_	TMT (N-term)	tmt_n-term_
+TMT2plex (K)	tmt2plex_k_	TMT2plex (K)	tmt2plex_k_
+TMT2plex (N-term)	tmt2plex_n-term_	TMT2plex (N-term)	tmt2plex_n-term_
+TMT6plex (K)	tmt6plex_k_	TMT6plex (K)	tmt6plex_k_
+TMT6plex (N-term)	tmt6plex_n-term_	TMT6plex (N-term)	tmt6plex_n-term_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/omssa_mods.loc.sample	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,181 @@
+#This file lists the names of chemical modifications accepted by OMMSA
+#
+#
+2-amino-3-oxo-butanoic acid T	2-amino-3-oxo-butanoicacidt_	23	2-amino-3-oxo-butanoicacidt_
+Asparagine HexNAc	asparaginehexnac_	182	asparaginehexnac_
+Asparagine dHexHexNAc	asparaginedhexhexnac_	183	asparaginedhexhexnac_
+CAMthiopropanoyl K	camthiopropanoylk_	131	camthiopropanoylk_
+CHD2-di-methylation of K	chd2-di-methylationofk_	189	chd2-di-methylationofk_
+CHD2-di-methylation of peptide n-term	chd2-di-methylationofpeptiden-term_	190	chd2-di-methylationofpeptiden-term_
+ICAT heavy	icatheavy_	130	icatheavy_
+ICAT light	icatlight_	129	icatlight_
+M cleavage from protein n-term	mcleavagefromproteinn-term_	9	mcleavagefromproteinn-term_
+MMTS on C	mmtsonc_	179	mmtsonc_
+Maleimide-PEO2-Biotin of C	maleimide-peo2-biotinofc_	191	maleimide-peo2-biotinofc_
+NEM C	nemc_	83	nemc_
+NIPCAM	nipcam_	84	nipcam_
+O18 on peptide n-term	o18onpeptiden-term_	87	o18onpeptiden-term_
+PNGasF in O18 water	pngasfino18water_	139	pngasfino18water_
+SeMet	semet_	113	semet_
+Serine HexNAc	serinehexnac_	184	serinehexnac_
+TMT 6-plex on K	tmt6-plexonk_	198	tmt6-plexonk_
+TMT 6-plex on n-term peptide	tmt6-plexonn-termpeptide_	199	tmt6-plexonn-termpeptide_
+Threonine HexNAc	threoninehexnac_	185	threoninehexnac_
+Uniblue A on K	uniblueaonk_	195	uniblueaonk_
+acetylation of K	acetylationofk_	24	acetylationofk_
+acetylation of protein n-term	acetylationofproteinn-term_	10	acetylationofproteinn-term_
+amidation of peptide c-term	amidationofpeptidec-term_	25	amidationofpeptidec-term_
+arginine to ornithine	argininetoornithine_	163	argininetoornithine_
+beta elimination of S	betaeliminationofs_	140	betaeliminationofs_
+beta elimination of T	betaeliminationoft_	141	betaeliminationoft_
+beta methythiolation of D	betamethythiolationofd_	13	betamethythiolationofd_
+beta-carboxylation of D	beta-carboxylationofd_	47	beta-carboxylationofd_
+beta-methylthiolation of D (duplicate of 13)	beta-methylthiolationofd_duplicateof13__	26	beta-methylthiolationofd_duplicateof13__
+carbamidomethyl C	carbamidomethylc_	3	carbamidomethylc_
+carbamylation of K	carbamylationofk_	31	carbamylationofk_
+carbamylation of n-term peptide	carbamylationofn-termpeptide_	32	carbamylationofn-termpeptide_
+carboxyamidomethylation of D	carboxyamidomethylationofd_	29	carboxyamidomethylationofd_
+carboxyamidomethylation of E	carboxyamidomethylationofe_	30	carboxyamidomethylationofe_
+carboxyamidomethylation of H	carboxyamidomethylationofh_	28	carboxyamidomethylationofh_
+carboxyamidomethylation of K	carboxyamidomethylationofk_	27	carboxyamidomethylationofk_
+carboxykynurenin of W	carboxykynureninofw_	165	carboxykynureninofw_
+carboxymethyl C	carboxymethylc_	2	carboxymethylc_
+carboxymethylated selenocysteine	carboxymethylatedselenocysteine_	207	carboxymethylatedselenocysteine_
+citrullination of R	citrullinationofr_	33	citrullinationofr_
+deamidation of N	deamidationofn_	196	deamidationofn_
+deamidation of N and Q	deamidationofnandq_	4	deamidationofnandq_
+dehydro of S and T	dehydroofsandt_	164	dehydroofsandt_
+di-O18 on peptide n-term	di-o18onpeptiden-term_	88	di-o18onpeptiden-term_
+di-iodination of Y	di-iodinationofy_	35	di-iodinationofy_
+di-methylation of K	di-methylationofk_	36	di-methylationofk_
+di-methylation of R	di-methylationofr_	37	di-methylationofr_
+di-methylation of peptide n-term	di-methylationofpeptiden-term_	38	di-methylationofpeptiden-term_
+farnesylation of C	farnesylationofc_	42	farnesylationofc_
+fluorophenylalanine	fluorophenylalanine_	46	fluorophenylalanine_
+formylation of K	formylationofk_	43	formylationofk_
+formylation of peptide n-term	formylationofpeptiden-term_	44	formylationofpeptiden-term_
+formylation of protein n-term	formylationofproteinn-term_	82	formylationofproteinn-term_
+gamma-carboxylation of E	gamma-carboxylationofe_	48	gamma-carboxylationofe_
+gammathiopropionylation of K	gammathiopropionylationofk_	40	gammathiopropionylationofk_
+gammathiopropionylation of peptide n-term	gammathiopropionylationofpeptiden-term_	41	gammathiopropionylationofpeptiden-term_
+geranyl-geranyl	geranyl-geranyl_	49	geranyl-geranyl_
+glucuronylation of protein n-term	glucuronylationofproteinn-term_	50	glucuronylationofproteinn-term_
+glutathione disulfide	glutathionedisulfide_	51	glutathionedisulfide_
+guanidination of K	guanidinationofk_	53	guanidinationofk_
+heavy arginine-13C6	heavyarginine-13c6_	136	heavyarginine-13c6_
+heavy arginine-13C6-15N4	heavyarginine-13c6-15n4_	137	heavyarginine-13c6-15n4_
+heavy lysine - 13C6 15N2	heavylysine-13c615n2_	181	heavylysine-13c615n2_
+heavy lysine - 2H4	heavylysine-2h4_	180	heavylysine-2h4_
+heavy lysine-13C6	heavylysine-13c6_	138	heavylysine-13c6_
+homoserine	homoserine_	56	homoserine_
+homoserine lactone	homoserinelactone_	57	homoserinelactone_
+hydroxylation of  Y	hydroxylationofy_	64	hydroxylationofy_
+hydroxylation of D	hydroxylationofd_	59	hydroxylationofd_
+hydroxylation of F	hydroxylationoff_	63	hydroxylationoff_
+hydroxylation of K	hydroxylationofk_	60	hydroxylationofk_
+hydroxylation of N	hydroxylationofn_	61	hydroxylationofn_
+hydroxylation of P	hydroxylationofp_	62	hydroxylationofp_
+iTRAQ114 on K	itraq114onk_	168	itraq114onk_
+iTRAQ114 on Y	itraq114ony_	169	itraq114ony_
+iTRAQ114 on nterm	itraq114onnterm_	167	itraq114onnterm_
+iTRAQ115 on K	itraq115onk_	171	itraq115onk_
+iTRAQ115 on Y	itraq115ony_	172	itraq115ony_
+iTRAQ115 on nterm	itraq115onnterm_	170	itraq115onnterm_
+iTRAQ116 on K	itraq116onk_	174	itraq116onk_
+iTRAQ116 on Y	itraq116ony_	175	itraq116ony_
+iTRAQ116 on nterm	itraq116onnterm_	173	itraq116onnterm_
+iTRAQ117 on K	itraq117onk_	177	itraq117onk_
+iTRAQ117 on Y	itraq117ony_	178	itraq117ony_
+iTRAQ117 on nterm	itraq117onnterm_	176	itraq117onnterm_
+iTRAQ8plex	itraq8plex_	204	itraq8plex_
+iTRAQ8plex	itraq8plex_	205	itraq8plex_
+iTRAQ8plex	itraq8plex_	203	itraq8plex_
+iTRAQ8plex	itraq8plex_	201	itraq8plex_
+iTRAQ8plex	itraq8plex_	202	itraq8plex_
+iTRAQ8plex	itraq8plex_	200	itraq8plex_
+iodination of Y	iodinationofy_	65	iodinationofy_
+lipoyl K	lipoylk_	67	lipoylk_
+methyl C	methylc_	73	methylc_
+methyl H	methylh_	74	methylh_
+methyl N	methyln_	75	methyln_
+methyl R	methylr_	77	methylr_
+methyl ester of D	methylesterofd_	69	methylesterofd_
+methyl ester of E (duplicate of 17)	methylesterofe_duplicateof17__	70	methylesterofe_duplicateof17__
+methyl ester of S	methylesterofs_	71	methylesterofs_
+methyl ester of Y	methylesterofy_	72	methylesterofy_
+methyl ester of peptide c-term (duplicate of 18)	methylesterofpeptidec-term_duplicateof18__	68	methylesterofpeptidec-term_duplicateof18__
+methylation of D	methylationofd_	16	methylationofd_
+methylation of E	methylationofe_	17	methylationofe_
+methylation of K	methylationofk_	0	methylationofk_
+methylation of Q	methylationofq_	14	methylationofq_
+methylation of peptide c-term	methylationofpeptidec-term_	18	methylationofpeptidec-term_
+methylation of peptide n-term	methylationofpeptiden-term_	76	methylationofpeptiden-term_
+methylation of protein n-term	methylationofproteinn-term_	11	methylationofproteinn-term_
+myristoleylation of G	myristoleylationofg_	78	myristoleylationofg_
+myristoyl-4H of G	myristoyl-4hofg_	79	myristoyl-4hofg_
+myristoylation of K	myristoylationofk_	81	myristoylationofk_
+myristoylation of peptide n-term G	myristoylationofpeptiden-termg_	80	myristoylationofpeptiden-termg_
+n-acyl diglyceride cysteine	n-acyldiglyceridecysteine_	118	n-acyldiglyceridecysteine_
+n-formyl met addition	n-formylmetaddition_	22	n-formylmetaddition_
+oxidation of C	oxidationofc_	193	oxidationofc_
+oxidation of C to cysteic acid	oxidationofctocysteicacid_	34	oxidationofctocysteicacid_
+oxidation of C to sulfinic acid	oxidationofctosulfinicacid_	162	oxidationofctosulfinicacid_
+oxidation of F to dihydroxyphenylalanine	oxidationofftodihydroxyphenylalanine_	39	oxidationofftodihydroxyphenylalanine_
+oxidation of H	oxidationofh_	89	oxidationofh_
+oxidation of H to D	oxidationofhtod_	55	oxidationofhtod_
+oxidation of H to N	oxidationofhton_	54	oxidationofhton_
+oxidation of M	oxidationofm_	1	oxidationofm_
+oxidation of P to pyroglutamic acid	oxidationofptopyroglutamicacid_	111	oxidationofptopyroglutamicacid_
+oxidation of W	oxidationofw_	90	oxidationofw_
+oxidation of W to formylkynurenin	oxidationofwtoformylkynurenin_	45	oxidationofwtoformylkynurenin_
+oxidation of W to hydroxykynurenin	oxidationofwtohydroxykynurenin_	58	oxidationofwtohydroxykynurenin_
+oxidation of W to kynurenin	oxidationofwtokynurenin_	66	oxidationofwtokynurenin_
+oxidation of W to nitro	oxidationofwtonitro_	85	oxidationofwtonitro_
+oxidation of Y (duplicate of 64)	oxidationofy_duplicateof64__	194	oxidationofy_duplicateof64__
+oxidation of Y to nitro	oxidationofytonitro_	86	oxidationofytonitro_
+palmitoleyl of C	palmitoleylofc_	187	palmitoleylofc_
+palmitoleyl of S	palmitoleylofs_	186	palmitoleylofs_
+palmitoleyl of T	palmitoleyloft_	188	palmitoleyloft_
+palmitoylation of C	palmitoylationofc_	92	palmitoylationofc_
+palmitoylation of K	palmitoylationofk_	93	palmitoylationofk_
+palmitoylation of S	palmitoylationofs_	94	palmitoylationofs_
+palmitoylation of T	palmitoylationoft_	95	palmitoylationoft_
+phosphopantetheine S	phosphopantetheines_	91	phosphopantetheines_
+phosphorylation of H	phosphorylationofh_	192	phosphorylationofh_
+phosphorylation of S	phosphorylationofs_	6	phosphorylationofs_
+phosphorylation of S with ETD loss	phosphorylationofswithetdloss_	134	phosphorylationofswithetdloss_
+phosphorylation of S with prompt loss	phosphorylationofswithpromptloss_	96	phosphorylationofswithpromptloss_
+phosphorylation of T	phosphorylationoft_	7	phosphorylationoft_
+phosphorylation of T with ETD loss	phosphorylationoftwithetdloss_	135	phosphorylationoftwithetdloss_
+phosphorylation of T with prompt loss	phosphorylationoftwithpromptloss_	97	phosphorylationoftwithpromptloss_
+phosphorylation of Y	phosphorylationofy_	8	phosphorylationofy_
+phosphorylation with neutral loss on C	phosphorylationwithneutrallossonc_	99	phosphorylationwithneutrallossonc_
+phosphorylation with neutral loss on D	phosphorylationwithneutrallossond_	100	phosphorylationwithneutrallossond_
+phosphorylation with neutral loss on H	phosphorylationwithneutrallossonh_	101	phosphorylationwithneutrallossonh_
+phosphorylation with neutral loss on S	phosphorylationwithneutrallossons_	132	phosphorylationwithneutrallossons_
+phosphorylation with neutral loss on T	phosphorylationwithneutrallossont_	133	phosphorylationwithneutrallossont_
+phosphorylation with prompt loss on Y	phosphorylationwithpromptlossony_	98	phosphorylationwithpromptlossony_
+propionamide C	propionamidec_	5	propionamidec_
+propionyl heavy K	propionylheavyk_	104	propionylheavyk_
+propionyl heavy peptide n-term	propionylheavypeptiden-term_	105	propionylheavypeptiden-term_
+propionyl light K	propionyllightk_	102	propionyllightk_
+propionyl light on peptide n-term	propionyllightonpeptiden-term_	103	propionyllightonpeptiden-term_
+pyridyl K	pyridylk_	106	pyridylk_
+pyridyl peptide n-term	pyridylpeptiden-term_	107	pyridylpeptiden-term_
+pyro-cmC	pyro-cmc_	108	pyro-cmc_
+pyro-glu from n-term E	pyro-glufromn-terme_	109	pyro-glufromn-terme_
+pyro-glu from n-term Q	pyro-glufromn-termq_	110	pyro-glufromn-termq_
+s-pyridylethylation of C	s-pyridylethylationofc_	112	s-pyridylethylationofc_
+selenocysteine	selenocysteine_	206	selenocysteine_
+sulfation of Y	sulfationofy_	114	sulfationofy_
+sulphone of M	sulphoneofm_	115	sulphoneofm_
+sumoylation of K	sumoylationofk_	166	sumoylationofk_
+tri-deuteromethylation of D	tri-deuteromethylationofd_	19	tri-deuteromethylationofd_
+tri-deuteromethylation of E	tri-deuteromethylationofe_	20	tri-deuteromethylationofe_
+tri-deuteromethylation of peptide c-term	tri-deuteromethylationofpeptidec-term_	21	tri-deuteromethylationofpeptidec-term_
+tri-iodination of Y	tri-iodinationofy_	116	tri-iodinationofy_
+tri-methylation of K	tri-methylationofk_	15	tri-methylationofk_
+tri-methylation of R	tri-methylationofr_	117	tri-methylationofr_
+tri-methylation of protein n-term	tri-methylationofproteinn-term_	12	tri-methylationofproteinn-term_
+trideuteration of L (SILAC)	trideuterationofl_silac__	197	trideuterationofl_silac__
+ubiquitinylation residue	ubiquitinylationresidue_	52	ubiquitinylationresidue_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/pepxml_databases.loc.sample	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,13 @@
+#This file lists the names of protein databases installed locally in protk. 
+# These are used by omssa and x!tandem as well as the "mascot to pepxml" tool
+# In order to combine search results with Interprophet searches must be run against an identical database
+#
+# Entries should follow the be structured as follows
+# Display_name omssa_tandem_dbname dbkey
+#
+#
+Swissprot	spall_	spall	spall_
+Combined PlasmboDB (falciparum) and Swissprot Human	plasmodb_pfalciparum_sphuman_	plasmodb_pfalciparum_sphuman	plasmodb_pfalciparum_sphuman_
+Swissprot Human	sphuman_	sphuman	sphuman_
+Combined Swissprot/TRembl Human	sptrhuman_	sptrhuman	sptrhuman_
+Swissprot Mouse	spmouse_	spmouse	spmouse_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/protk_display_site.txt.sample	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,3 @@
+#Proteomic Visualization application should be hosted on the same server as galaxy
+#Entries in this file are of the format "site_id" site_url
+Proteomics Visualize	http://127.0.0.1:8500
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/tandem_mods.loc.sample	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,6 @@
+#This file lists the names of inbuilt chemical modifications accepted by X!Tandem
+#
+#
+Carbamidomethyl C	carbamidomethyl_c_	57.021464@C	carbamidomethyl_c_
+Glycocapture-N	glycocapture_n_	0.998@N!{P}[ST]	glycocapture_n_
+Oxidation M	oxidation_m_	15.994915@M	oxidation_m_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xls_to_table.xml	Mon Jul 23 00:20:58 2012 -0400
@@ -0,0 +1,23 @@
+<tool id="xls_to_table_1" name="Excel to Table" version="1.0.0">
+	<requirements><requirement type="package">protk</requirement></requirements>
+  <description>Converts an excel spreadsheet to a tab delimited text file</description>
+
+
+<!-- Note .. the input file is assumed to be the first argument -->
+<command>xls_to_table.rb $input_file -o $output</command>
+
+
+<inputs>
+
+	<param name="input_file" type="data" format="xls"  multiple="false" label="Input File" help="An Excel Spreadsheet"/>
+
+</inputs>
+<outputs>
+	<data format="csv" name="output" metadata_source="input_file" label="${input_file.display_name}.csv" />
+</outputs>
+
+<help>
+	Convert an Excel Spreadsheet to Tab delimited text
+</help>
+
+</tool>