changeset 2:5b5a9f59e2c7 draft

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/pepquery commit 8b553bb3e585b03c670a3689d4fe6eef7e464407"
author galaxyp
date Mon, 15 Mar 2021 12:52:03 +0000
parents 528bcf03e561
children 962599ac5406
files macros.xml pepquery.xml test-data/immunopeptidomics.mgf test-data/novel_peptides test-data/pFind.qry.res test-data/test.tags
diffstat 6 files changed, 770 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/macros.xml	Fri Jul 17 17:05:41 2020 -0400
+++ b/macros.xml	Mon Mar 15 12:52:03 2021 +0000
@@ -1,5 +1,6 @@
  <macros>
-    <token name="@VERSION@">1.6.0</token>
+    <token name="@TOOL_VERSION@">1.6.2</token>
+    <token name="@VERSION_SUFFIX@">0</token>
     <xml name="modifications">
         <option value="1">HexNAc of T (203.07937251951) modaa</option>
         <option value="2">HexNAc of S (203.07937251951) modaa</option>
--- a/pepquery.xml	Fri Jul 17 17:05:41 2020 -0400
+++ b/pepquery.xml	Mon Mar 15 12:52:03 2021 +0000
@@ -1,10 +1,10 @@
-<tool id="pepquery" name="PepQuery" version="@VERSION@.0">
+<tool id="pepquery" name="PepQuery" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@">
     <description>Peptide-centric search engine for novel peptide identification and validation.</description>
     <macros>
         <import>macros.xml</import>
     </macros>
     <requirements> 
-        <requirement type="package" version="@VERSION@">pepquery</requirement>
+        <requirement type="package" version="@TOOL_VERSION@">pepquery</requirement>
     </requirements>
     <stdio>
         <exit_code range="1:" level="fatal" description="Failed" />
@@ -19,6 +19,9 @@
             #set $db_file = $re.sub('\s','_',$re.sub('[.][^.]*$','',$req_inputs.db_file.display_name.split('/')[-1])) + ".fa"
             ln -s '$req_inputs.spectrum_file' '$spectrum_file' &&
             ln -s '$req_inputs.db_file' '$db_file' &&
+            #if $req_inputs.tags.tagType == 'pFind':
+                pepquery main.java.util.generateTags '$req_inputs.tags.qry_res' > qry.tags &&
+            #end if
             pepquery 
                 -ms '$spectrum_file'
                 -db '$db_file'
@@ -42,6 +45,13 @@
                     #end if
                 #end if
                 -indexType $req_inputs.indexType
+                #if $req_inputs.tags.tagType == 'PepQuery':
+                    -tag '$req_inputs.tags.tag_file'
+                    -tagIndexType $req_inputs.tags.tagIndexType
+                #elif $req_inputs.tags.tagType == 'pFind':
+                    -tag qry.tags
+                    -tagIndexType 2
+                #end if
                 #if $modifications.fixed_mod
                 -fixMod '$modifications.fixed_mod'
                 #end if
@@ -73,11 +83,11 @@
     <inputs>
         <section name="req_inputs" title="Input Data" expanded="true">
             <conditional name="input_type">
-                <param name="input_type_selector" type="select" label="Input Type" argument="-t" help="" >
+                <param name="input_type_selector" argument="-t" type="select" label="Input Type" help="" >
                     <option value="peptide">peptide</option>
                     <option value="1">protein</option>
                     <option value="2">DNA (translate to protein sequences)</option>
-                    <!-- these are not working with pepquery version 1.3
+                    <!-- these are not working with pepquery version 1.6
                     <option value="3">VCF (translate to protein sequences)</option>
                     <option value="4">BED (translate to protein sequences)</option>
                     <option value="5">GTF (translate to protein sequences)</option>
@@ -90,10 +100,10 @@
                             <option value="single">Single peptide entered as text</option>
                         </param> 
                         <when value="multiple">
-                            <param name="input" type="data" format="txt" label="Peptide Sequences (.txt)" argument="-pep" help="Peptide sequence file containing peptides which you want to search (no column header, 1 peptide per line)." />
+                            <param name="input" argument="-pep" type="data" format="txt" label="Peptide Sequences (.txt)" help="Peptide sequence file containing peptides which you want to search (no column header, 1 peptide per line)." />
                         </when>
                         <when value="single">
-                            <param name="input" type="text" label="Peptide Sequence" argument="-pep" help="Peptide sequence which you want to search">
+                            <param name="input" argument="-pep" type="text" label="Peptide Sequence" help="Peptide sequence which you want to search">
                                 <validator type="regex" message="Must be AA letters">^[AC-IK-NP-TV-Yac-ik-np-tv-y]+$</validator>
                             </param>
                         </when>
@@ -106,20 +116,20 @@
                             <option value="single">Single protein entered as text</option>
                         </param> 
                         <when value="multiple">
-                            <param name="input" type="data" format="fasta" label="Protein Sequences (.txt)" argument="-i" help="Protein fasta file containing proteins which you want to search." />
+                            <param name="input" argument="-i" type="data" format="fasta" label="Protein Sequences (.txt)" help="Protein fasta file containing proteins which you want to search." />
                         </when>
                         <when value="single">
-                            <param name="input" type="text" label="Protein Sequence" argument="-i" help="Protein sequence which you want to search">
+                            <param name="input" argument="-i" type="text" label="Protein Sequence" help="Protein sequence which you want to search">
                                 <validator type="regex" message="Must be AA letters">^[AC-IK-NP-TV-Yac-ik-np-tv-y]+$</validator>
                             </param>
                         </when>
                     </conditional>
                 </when>
                 <when value="2">
-                    <param name="input" type="text" label="DNA Sequence (at least 60 bp)" argument="-i" help="DNA sequence which you want to search">
+                    <param name="input" argument="-i" type="text" label="DNA Sequence (at least 60 bp)" help="DNA sequence which you want to search">
                         <validator type="regex" message="Must be at least 60bp">^[acgtuAGCTU]{60}[acgtuAGCTU]*$</validator>
                     </param> 
-                    <param name="frame" type="select" label="Frame(s) for DNA translation" argument="-f" multiple="true" help="The frame(s) to translate DNA sequence to protein. Selecting nothing (default) keeps the longest frame">
+                    <param name="frame" argument="-f" type="select" label="Frame(s) for DNA translation" multiple="true" help="The frame(s) to translate DNA sequence to protein. Selecting nothing (default) keeps the longest frame">
                         <option value="1">1</option>
                         <option value="2">2</option>
                         <option value="3">3</option>
@@ -128,7 +138,7 @@
                         <option value="6">6</option>
                     </param>
                 </when>
-                <!-- these are not working with pepquery version 1.3
+                <!-- these are not working with pepquery version 1.6
                 <when value="3">   
                     <param name="input" type="data" format="vcf" label="VCF File" argument="-i" help="" />
                     <param name="anno" type="data_collection" label="Annotation Files" argument="-anno" help="Annotation files for the VCF file. Please follow preparation instructions here: http://bioconductor.org/packages/devel/bioc/html/PGA.html" />
@@ -143,39 +153,63 @@
                 </when>
                 -->
             </conditional>
-            <param name="db_file" type="data" format="fasta" label="Protein Reference Database File" argument="-db" help="an input sequence that matches a reference will be ignored." />
-            <param name="spectrum_file" type="data" format="mgf" label="Spectrum File" argument="-ms" help="Spectrum file used for identification, mgf format" />
-            <param name="indexType" type="select" label="Report Spectrum Scan as" argument="-indexType" help="" >
+            <param name="db_file" argument="-db" type="data" format="fasta" label="Protein Reference Database File" help="an input sequence that matches a reference will be ignored." />
+            <param name="spectrum_file" argument="-ms" type="data" format="mgf" label="Spectrum File" help="Spectrum file used for identification, mgf format" />
+            <param name="indexType" argument="-indexType" type="select" label="Report Spectrum Scan as" help="" >
                 <option value="1" selected="true">index (1-based) in MGF</option>
                 <option value="2">spectrum title in MGF</option>
             </param>
+            <conditional name="tags">
+                <param name="tagType" type="select" label="Tag File">
+                    <option value="None">None</option>
+                    <option value="PepQuery">PepQuery</option>
+                    <option value="pFind">pFind</option>
+                </param>
+                <when value="None"/>
+                <when value="PepQuery">
+                    <param name="tag_file" argument="-tag" type="data" format="txt" label="PepPuery Tag File"/>
+                    <param name="tagIndexType" argument="-tagIndexType" type="select" label="Tag File Index Type" help="pFind uses the spectrum title" >
+                        <option value="1">index (1-based) in MGF</option>
+                        <option value="2" selected="true">spectrum title in MGF</option>
+                    </param>
+                </when>
+                <when value="pFind">
+                    <param name="qry_res" type="data" format="txt" label="pFind .qry.res" help="pFind can be used to generate a tags file for no-enzyme immunopeptidomics search" />
+                </when>
+            </conditional>
         </section>
+
+        <!--
+        <section name="tags" title="Tags File" expanded="false">
+            <param name="qry_res" type="data" format="txt" optional="true" label="pFind .qry.res" help="pFind can be used to generate a tags file for no-enzyme immunopeptidomics search" />
+        </section>
+        -->
         <section name="modifications" title="Modifications" expanded="false">
-             <param name="fixed_mod" type="select" label="Fixed modification(s)" multiple="true" argument="-fixMod" help="Fixed modification">
+             <param name="fixed_mod" argument="-fixMod" type="select" label="Fixed modification(s)" multiple="true" help="Fixed modification">
                 <option value="6" selected="true">Carbamidomethylation of C (57.02146372057) modaa</option>
                 <option value="117">Oxidation of M (15.99491461956) modaa</option>
                 <expand macro="modifications" />
              </param>
-             <param name="var_mod" type="select" label="Variable modification(s)" multiple="true" argument="-varMod" help="Variable modification" >
+             <param name="var_mod" argument="-varMod" type="select" label="Variable modification(s)" multiple="true" help="Variable modification" >
                 <option value="117" selected="true">Oxidation of M (15.99491461956) modaa</option>
                 <option value="6">Carbamidomethylation of C (57.02146372057) modaa</option>
                 <expand macro="modifications" />
              </param>
-             <param name="max_mods" type="integer" label="Max Modifications" value="3" argument="-maxVar" help="Max number of variable modifications" />
-             <param name="unmodified" type="boolean" truevalue="-um" falsevalue="" checked="false" label="Unmodified?" argument="-um" help="Validation with unrestricted modification searching" />
-             <param name="aa" type="boolean" truevalue="-aa" falsevalue="" checked="false" label="Consider amino acid substitution modifications?" argument="-aa" help="Whether or not to consider aa substitution modifications when perform modification filtering." />
+             <param name="max_mods" argument="-maxVar" type="integer" label="Max Modifications" value="3" help="Max number of variable modifications" />
+             <param name="unmodified" argument="-um" type="boolean" truevalue="-um" falsevalue="" checked="false" label="Unmodified?" help="Validation with unrestricted modification searching" />
+             <param name="aa" argument="-aa" type="boolean" truevalue="-aa" falsevalue="" checked="false" label="Consider amino acid substitution modifications?" help="Whether or not to consider aa substitution modifications when perform modification filtering." />
         </section>
         <section name="ms_params" title="Mass spectrometer" expanded="false">
             <section name="tolerance_params" title="Tolerance" expanded="true">
-                <param name="precursor_tolerance" type="integer" value="10" label="Precursor Tolerance" argument="-tol" help="the error window on experimental peptide mass values. This parameter is usually set according to the mass spectrometer which was used to generate the MS/MS data." />
-                <param name="precursor_unit" type="select" label="Precursor Unit" argument="-tolu" help="The unit of precursor ion m/z tolerance">
+                <param name="precursor_tolerance" argument="-tol" type="integer" value="10" label="Precursor Tolerance" help="the error window on experimental peptide mass values. This parameter is usually set according to the mass spectrometer which was used to generate the MS/MS data." />
+                <param name="precursor_unit" argument="-tolu" type="select" label="Precursor Unit" help="The unit of precursor ion m/z tolerance">
                     <option value="ppm" selected="true">ppm</option>
                     <option value="Da">Da</option>
                 </param>
-                <param name="tolerance" type="float" value="0.6" label="Tolerance" argument="-itol" help="Error window for MS/MS fragment ion mass values in Da unit." />
+                <param name="tolerance" argument="-itol" type="float" value="0.6" label="Tolerance" help="Error window for MS/MS fragment ion mass values in Da unit." />
             </section>
             <section name="digestion" title="Digestion" expanded="false">
-                <param name="enzyme" type="select" label="Enzyme" argument="-e" help="Enzyme used for protein digestion" >
+                <param name="enzyme" argument="-e" type="select" label="Enzyme" help="Enzyme used for protein digestion" >
                     <option value="0">Non enzyme</option>
                     <option value="1" selected="true">Trypsin</option>
                     <option value="2">Trypsin (no P rule)</option>
@@ -185,55 +219,59 @@
                     <option value="6">Glu-C</option>
                     <option value="7">Lys-C</option>
                 </param>
-                <param name="max_missed_cleavages" type="integer" value="2" label="Max Missed Cleavages" argument="-c" help="The max missed cleavages" />
+                <param name="max_missed_cleavages" argument="-c" type="integer" value="2" label="Max Missed Cleavages" help="The max missed cleavages" />
             </section>
             <section name="search" title="PSM" expanded="false">
-                <param name="frag_method" type="select" label="Fragmentation Method" argument="-fragmentMethod">
+                <param name="frag_method" argument="-fragmentMethod" type="select" label="Fragmentation Method">
                     <option value="1" selected="true">CID/HCD</option>
                     <option value="2">ETD</option>
                 </param>
-                <param name="scoring_method" type="select" label="Scoring Method" argument="-m">
+                <param name="scoring_method" argument="-m" type="select" label="Scoring Method">
                     <option value="1" selected="true">HyperScore</option>
                     <option value="2">MVH</option>
                 </param>
-                <param name="max_charge" type="integer" value="3" label="Max Charge" argument="-maxCharge" help="The maximum charge to consider if the charge state is not available" />
-                <param name="min_charge" type="integer" value="2" label="Minimum Charge" argument="-minCharge" help="The minimum charge to consider if the charge state is not available" />
-                <param name="min_peaks" type="integer" value="10" label="Minimum Peaks" argument="-minPeaks" help="Min peaks in spectrum" />
-                <param name="min_score" type="integer" value="12" label="Minimum Score" argument="-minScore" help="Minimum score to consider for peptide searching" />
-                <param name="max_length" type="integer" value="45" label="Maximum length of peptide" argument="-maxLength" help="The maximum length of peptide to consider." />
-                <param name="num_random_peptides" type="integer" value="1000" label="Number of Random Peptides" argument="-n" help="The number of random peptides" />
+                <param name="max_charge" argument="-maxCharge" type="integer" value="3" label="Max Charge" help="The maximum charge to consider if the charge state is not available" />
+                <param name="min_charge" argument="-minCharge" type="integer" value="2" label="Minimum Charge" help="The minimum charge to consider if the charge state is not available" />
+                <param name="min_peaks" argument="-minPeaks" type="integer" value="10" label="Minimum Peaks" help="Min peaks in spectrum" />
+                <param name="min_score" argument="-minScore" type="integer" value="12" label="Minimum Score" help="Minimum score to consider for peptide searching" />
+                <param name="max_length" argument="-maxLength" type="integer" value="45" label="Maximum length of peptide" help="The maximum length of peptide to consider." />
+                <param name="num_random_peptides" argument="-n" type="integer" value="1000" label="Number of Random Peptides" help="The number of random peptides" />
             </section>
         </section>
         <param name="report_spectrum_file" type="boolean" truevalue="spectrum_file," falsevalue="" checked="false" label="Add spectrum_file column" help="Add a spectrum_file column before the spectrum_title column.  Useful for combining pepquery outputs." />
     </inputs>
     <outputs>
-        <data format="tabular" name="psm_annotation" from_work_dir="pepquery_output/psm_annotation.txt" label="${tool.name} on ${on_string}: PSM Annotation">
+        <data name="query_tags" format="tabular" from_work_dir="qry.tags" label="${tool.name} on ${on_string}: tag file">
+            <filter>req_inputs['tags']['tagType'] in ['pFind']</filter>
+        </data> 
+        <data name="psm_annotation" format="tabular" from_work_dir="pepquery_output/psm_annotation.txt" label="${tool.name} on ${on_string}: PSM Annotation">
            <actions>
                 <action name="comment_lines" type="metadata" default="1" />
                 <action name="column_names" type="metadata" default="peptide,Query,calc_mr,observed_mz,charge,pepSeq,m_label,m_mz,m_intensity,mz,intensity" />
             </actions>
         </data> 
-        <data format="tabular" name="detail" from_work_dir="pepquery_output/detail.txt" label="${tool.name} on ${on_string}: Detail">
+        <data name="detail" format="tabular" from_work_dir="pepquery_output/detail.txt" label="${tool.name} on ${on_string}: Detail">
            <actions>
                 <action name="comment_lines" type="metadata" default="1" />
                 <action name="column_names" type="metadata" default="${report_spectrum_file}spectrum_title,peptide,modification,pep_mass,score" />
             </actions>
         </data> 
-        <data format="tabular" name="psm" from_work_dir="pepquery_output/psm.txt" label="${tool.name} on ${on_string}: PSM">
+        <data name="psm" format="tabular" from_work_dir="pepquery_output/psm.txt" label="${tool.name} on ${on_string}: PSM">
            <actions>
                 <action name="comment_lines" type="metadata" default="1" />
                 <action name="column_names" type="metadata" default="peptide,modification,n,${report_spectrum_file}spectrum_title,charge,exp_mass,ppm,pep_mass,mz,score,n_db,total_db,n_random,total_random,pvalue" />
             </actions>
         </data> 
-        <data format="tabular" name="psm_rank_txt" from_work_dir="pepquery_output/psm_rank.txt" label="${tool.name} on ${on_string}: PSM Rank (txt)">
+        <data name="psm_rank_txt" format="tabular" from_work_dir="pepquery_output/psm_rank.txt" label="${tool.name} on ${on_string}: PSM Rank (txt)">
            <actions>
                 <action name="comment_lines" type="metadata" default="1" />
                 <action name="column_names" type="metadata" default="peptide,modification,n,${report_spectrum_file}spectrum_title,charge,exp_mass,ppm,pep_mass,mz,score,n_db,total_db,n_random,total_random,pvalue,rank,n_ptm" />
             </actions>
         </data> 
-        <data format="mgf" name="psm_rank_mgf" from_work_dir="pepquery_output/psm_rank.mgf" label="${tool.name} on ${on_string}: PSM Rank (mgf)"/>
+        <data name="psm_rank_mgf" format="mgf" from_work_dir="pepquery_output/psm_rank.mgf" label="${tool.name} on ${on_string}: PSM Rank (mgf)"/>
     </outputs>
     <tests>
+        <!-- Test-1 -->
         <test>
             <section name="req_inputs">
                 <conditional name="input_type">
@@ -278,10 +316,12 @@
             <output name="psm_rank_txt">
                 <assert_contents>
                     <has_text text="ELGSSDLTAR" />
+                    <has_line_matching expression="ELGSSDLTAR\tiTRAQ 4-plex of peptide N-term@0\S+\t2\tiTRAQ_f4.mgf\t2\t2\t1191.6\d+\t2.0\d+\t1191.62\d+\t596.81\d+\t18.68\d+\t0\t20\t5\t995\t0.006\d+\t1"/>
                 </assert_contents>
             </output>
         </test>
 
+        <!-- Test-2 -->
         <test>
             <section name="req_inputs">
                 <conditional name="input_type">
@@ -327,10 +367,63 @@
                 <assert_contents>
                     <has_text text="ELGSSDLTAR" />
                     <has_text text="SPYREFTDHLVK" />
+                    <has_line_matching expression="SPYREFTDHLVK\tiTRAQ 4-plex of K@12\S+;iTRAQ 4-plex of peptide N-term@0\S+\t1\tiTRAQ_f4.mgf\t4\t3\t1778.\d+\t3.02\d+\t1778.95\d+\t593.99\d+\t12.17\d+\t2\t14\t-1\t-1\t100.0\t1"/>
                 </assert_contents>
             </output>
         </test>
 
+        <!-- Test-3 -->
+        <test>
+            <section name="req_inputs">
+                <conditional name="input_type">
+                    <param name="input_type_selector" value="peptide"/>
+                    <conditional name="multiple">
+                        <param name="peptide_input_selector" value="multiple" />
+                        <param name="input" ftype="tabular" value="novel_peptides"/>
+                    </conditional>
+                </conditional>
+                <param name="db_file" ftype="fasta" value="Uniprot.fasta"/>
+                <param name="spectrum_file" ftype="mgf" value="iTRAQ_f4.mgf"/>
+            </section> 
+            <section name="modifications">
+                 <param name="fixed_mod" value="6,103,157"/>
+                 <param name="var_mod" value="117"/>
+                 <param name="max_mods" value="3"/>
+                 <param name="unmodified" value="True"/>
+                 <param name="aa" value="True"/>
+            </section>
+            <section name="ms_params">
+                <section name="tolerance_params">
+                    <param name="precursor_tolerance" value="10"/>
+                    <param name="precursor_unit" value="ppm"/>
+                    <param name="tolerance" value="0.6"/>
+                </section>
+                <section name="digestion">
+                    <param name="enzyme" value="0"/>
+                    <param name="max_missed_cleavages" value="1"/>
+                </section>
+                <section name="search">
+                    <param name="frag_method" value="1"/>
+                    <param name="scoring_method" value="1"/>
+                    <param name="max_charge" value="3"/>
+                    <param name="min_charge" value="2"/>
+                    <param name="min_peaks" value="7"/>
+                    <param name="min_score" value="10"/>
+                    <param name="max_length" value="45"/>
+                    <param name="num_random_peptides" value="1000"/>
+                </section>
+            </section>
+            <param name="report_spectrum_file" value="false"/>
+            <output name="psm_rank_txt">
+                <assert_contents>
+                    <has_text text="ELGSSDLTAR" />
+                    <has_text text="SPYREFTDHLVK" />
+                    <has_line_matching expression="ELGSSDLTAR\tiTRAQ 4-plex of peptide N-term@0\S+\t2\t3\t2\t1191.6\d+\t-3.04\d+\t1191.62\d+\t596.8\d+\t24.18\d+\t0\t22\t1\t995\t0.002\d+\t1\t0\tYes" />
+                </assert_contents>
+            </output>
+        </test>
+
+        <!-- Test-4 -->
         <test>
             <section name="req_inputs">
                 <conditional name="input_type">
@@ -380,6 +473,7 @@
             </output>
         </test>
 
+        <!-- Test-5 -->
         <test>
             <section name="req_inputs">
                 <conditional name="input_type">
@@ -425,9 +519,125 @@
             </output>
         </test>
 
+        <!-- Test-6 -->
+        <test>
+            <section name="req_inputs">
+                <conditional name="input_type">
+                    <param name="input_type_selector" value="peptide"/>
+                    <conditional name="multiple">
+                        <param name="peptide_input_selector" value="multiple" />
+                        <param name="input" ftype="tabular" value="novel_peptides"/>
+                    </conditional>
+                </conditional>
+                <param name="db_file" ftype="fasta" value="Uniprot.fasta"/>
+                <param name="spectrum_file" ftype="mgf" value="immunopeptidomics.mgf"/>
+                <param name="indexType" value="2"/>
+                <conditional name="tags">
+                    <param name="tagType" value="PepQuery"/>
+                    <param name="tag_file" ftype="tabular" value="test.tags"/>
+                    <param name="tagIndexType" value="2"/>
+                </conditional>
+            </section> 
+            <section name="modifications">
+                 <param name="fixed_mod" value=""/>
+                 <param name="var_mod" value="117,114,118,128"/>
+                 <param name="max_mods" value="3"/>
+                 <param name="unmodified" value="True"/>
+                 <param name="aa" value="True"/>
+            </section>
+            <section name="ms_params">
+                <section name="tolerance_params">
+                    <param name="precursor_tolerance" value="20"/>
+                    <param name="precursor_unit" value="ppm"/>
+                    <param name="tolerance" value="0.02"/>
+                </section>
+                <section name="digestion">
+                    <param name="enzyme" value="0"/>
+                    <param name="max_missed_cleavages" value="0"/>
+                </section>
+                <section name="search">
+                    <param name="frag_method" value="1"/>
+                    <param name="scoring_method" value="1"/>
+                    <param name="max_charge" value="3"/>
+                    <param name="min_charge" value="2"/>
+                    <param name="min_peaks" value="10"/>
+                    <param name="min_score" value="12"/>
+                    <param name="max_length" value="25"/>
+                    <param name="num_random_peptides" value="1000"/>
+                </section>
+            </section>
+            <param name="report_spectrum_file" value="true"/>
+            <output name="psm_rank_txt">
+                <assert_contents>
+                    <has_text text="MTDRHAGTY" />
+                    <has_text text="controllerType=0 controllerNumber=1 scan=19905" />
+                </assert_contents>
+            </output>
+        </test>
+
+        <!-- Test-7 -->
+        <test>
+            <section name="req_inputs">
+                <conditional name="input_type">
+                    <param name="input_type_selector" value="peptide"/>
+                    <conditional name="multiple">
+                        <param name="peptide_input_selector" value="multiple" />
+                        <param name="input" ftype="tabular" value="novel_peptides"/>
+                    </conditional>
+                </conditional>
+                <param name="db_file" ftype="fasta" value="Uniprot.fasta"/>
+                <param name="spectrum_file" ftype="mgf" value="immunopeptidomics.mgf"/>
+                <param name="indexType" value="2"/>
+                <conditional name="tags">
+                    <param name="tagType" value="pFind"/>
+                    <param name="qry_res" ftype="txt" value="pFind.qry.res"/>
+                </conditional>
+            </section> 
+            <section name="modifications">
+                 <param name="fixed_mod" value=""/>
+                 <param name="var_mod" value="117,114,118,128"/>
+                 <param name="max_mods" value="3"/>
+                 <param name="unmodified" value="True"/>
+                 <param name="aa" value="True"/>
+            </section>
+            <section name="ms_params">
+                <section name="tolerance_params">
+                    <param name="precursor_tolerance" value="20"/>
+                    <param name="precursor_unit" value="ppm"/>
+                    <param name="tolerance" value="0.02"/>
+                </section>
+                <section name="digestion">
+                    <param name="enzyme" value="0"/>
+                    <param name="max_missed_cleavages" value="0"/>
+                </section>
+                <section name="search">
+                    <param name="frag_method" value="1"/>
+                    <param name="scoring_method" value="1"/>
+                    <param name="max_charge" value="3"/>
+                    <param name="min_charge" value="2"/>
+                    <param name="min_peaks" value="10"/>
+                    <param name="min_score" value="12"/>
+                    <param name="max_length" value="25"/>
+                    <param name="num_random_peptides" value="1000"/>
+                </section>
+            </section>
+            <param name="report_spectrum_file" value="true"/>
+            <output name="psm_rank_txt">
+                <assert_contents>
+                    <has_text text="MTDRHAGTY" />
+                    <has_text text="controllerType=0 controllerNumber=1 scan=19905" />
+                </assert_contents>
+            </output>
+            <output name="query_tags" file="test.tags"/>
+            <!--
+            -->
+        </test>
+
     </tests>
     <help><![CDATA[
-PepQuery is a peptide-centric search engine for novel peptide identification and validation. Cancer genomics studies have identified a large number of genomic alterations that may lead to novel, cancer-specific protein sequences. Proteins resulted from these genomic alterations are attractive candidates for cancer biomarkers and therapeutic targets. The leading approach to proteomic validation of genomic alterations is to analyze tandem mass spectrometry (MS/MS) data using customized proteomics databases created from genomics data. Such analysis is time-consuming and requires thorough training and detailed knowledge in proteomics data analysis, leading to a gap between MS/MS data and the cancer genomics community. PepQuery does not require customized databases and allows quick and easy proteomic validation of genomic alterations.
+**PepQuery**
+
+PepQuery_ is a peptide-centric search engine for novel peptide identification and validation. Cancer genomics studies have identified a large number of genomic alterations that may lead to novel, cancer-specific protein sequences. Proteins resulted from these genomic alterations are attractive candidates for cancer biomarkers and therapeutic targets. The leading approach to proteomic validation of genomic alterations is to analyze tandem mass spectrometry (MS/MS) data using customized proteomics databases created from genomics data. Such analysis is time-consuming and requires thorough training and detailed knowledge in proteomics data analysis, leading to a gap between MS/MS data and the cancer genomics community. PepQuery does not require customized databases and allows quick and easy proteomic validation of genomic alterations.
 
 **Inputs**
     - A sequence to match, one of the following:
@@ -438,24 +648,38 @@
 
     - A mass spectrometry MGF file 
     - A reference protein fasta database, peptides matching a reference sequence will be excluded.  
+    - An optional tags file for no-enzyme immunopeptidomics search 
+
+      - See:  http://pepquery.org/data/PepQuery_for_immunopeptidomics_data.pdf
 
 **Outputs**
     - PSM annotation - tabular with columns: 
-      peptide Query calc_mr observed_mz charge pepSeq m_label m_mz m_intensity mz intensity
+      
+      - peptide Query calc_mr observed_mz charge pepSeq m_label m_mz m_intensity mz intensity
+
     - Detail - tabular with columns: 
-      *report_spectrum_file* spectrum_title peptide modification pep_mass score
+      
+      - *report_spectrum_file* spectrum_title peptide modification pep_mass score
+
     - PSM - tabular with columns: 
-      peptide modification n *report_spectrum_file* spectrum_title charge exp_mass ppm pep_mass mz score n_db total_db n_random total_random pvalue
+      
+      - peptide modification n *report_spectrum_file* spectrum_title charge exp_mass ppm pep_mass mz score n_db total_db n_random total_random pvalue
+
     - PSM Rank - tabular with columns: 
-      peptide modification n *report_spectrum_file* spectrum_title charge exp_mass ppm pep_mass mz score n_db total_db n_random total_random pvalue rank *n_ptm*
+      
+      - peptide modification n *report_spectrum_file* spectrum_title charge exp_mass ppm pep_mass mz score n_db total_db n_random total_random pvalue rank *n_ptm*
+
     - An MGF with the best matching spectrums
 
     The *report_spectrum_file* is an optional field that can be added.  
+
     The *n_ptm* field is added when using unrestricted modification searching (-um).
     
+.. _PepQuery: http://pepquery.org/document.html
 
     ]]></help>
     <citations>
         <citation type="doi">10.1101/gr.235028.118</citation>
+        <citation type="doi">10.1038/s41467-020-15456-w</citation>
     </citations>
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/immunopeptidomics.mgf	Mon Mar 15 12:52:03 2021 +0000
@@ -0,0 +1,464 @@
+BEGIN IONS
+TITLE=controllerType=0 controllerNumber=1 scan=19846
+RTINSECONDS=2320.06458
+PEPMASS=383.529876708984
+CHARGE=3+
+84.0449677 46347.0703125
+84.0813446 85493.9453125
+86.0719299 7175.7060546875
+86.0969772 135316.21875
+87.0795746 57686.53515625
+89.5852509 6013.955078125
+91.0547638 26870.0390625
+100.0871506 10508.3408203125
+101.0712357 8028.2236328125
+102.0548477 7109.3364257813
+110.071434 72448.5390625
+112.0872192 68537.90625
+116.0708847 66026.75
+116.6829987 7043.2426757813
+119.0492325 28436.21484375
+120.0808487 28182.986328125
+123.0442657 6282.2768554688
+127.0979004 32528.88671875
+129.1026154 74929.3046875
+129.1124268 15517.341796875
+132.1023407 7616.8291015625
+136.075592 267654.46875
+137.0793915 44604.71484375
+140.0816498 8406.1591796875
+145.4732819 7887.0209960938
+147.0440521 10594.44921875
+147.1123962 10032.357421875
+155.0816803 6984.1274414063
+157.1085968 34948.90234375
+165.0540466 39318.01953125
+167.0815887 29707.244140625
+168.085022 6312.9848632813
+182.0816193 28942.546875
+183.1242371 7433.0512695313
+183.1487885 8203.357421875
+193.0978699 6826.6010742188
+195.0764313 23284.12109375
+195.1120148 9413.0185546875
+197.1287689 31395.33203125
+198.132309 9345.76953125
+199.7877808 5461.4345703125
+213.0883179 6907.8862304688
+217.1338043 13646.8583984375
+219.1365814 28881.201171875
+226.1663971 13425.7822265625
+244.165451 62294.3984375
+245.1695709 14033.3974609375
+249.673233 32895.77734375
+254.1607361 72503.140625
+255.1666107 6893.8310546875
+259.0739441 12570.2685546875
+260.0770569 6460.126953125
+271.1891785 9831.76953125
+275.1358337 11066.83984375
+304.6169434 9695.1650390625
+308.5368347 10936.181640625
+308.8744507 6715.9243164063
+311.181427 8423.06640625
+326.7102356 8839.98828125
+328.2081909 21860.5078125
+329.8709106 7965.8657226563
+330.2044983 8398.9033203125
+331.1609192 7686.9453125
+333.8371277 25565.46484375
+334.1699219 7952.1284179688
+339.8395081 31163.154296875
+340.1759949 26240.822265625
+340.6808167 36919.71484375
+342.1118774 7167.1025390625
+342.1811218 10171.65234375
+346.5349731 7574.7329101563
+347.7381592 9350.056640625
+348.4993286 7552.921875
+353.6708679 38643.10546875
+354.1769409 6889.3901367188
+354.2250671 21217.833984375
+361.6572571 6491.6513671875
+362.1836853 6020.7607421875
+363.1853333 8824.9462890625
+377.2033691 6569.89453125
+381.2067871 7040.6538085938
+383.2186279 68377.4609375
+383.3130188 116036.234375
+383.526886 42512.03125
+385.2560425 10095.142578125
+398.2119751 25488.392578125
+401.2857666 10739.900390625
+410.2869873 10938.7431640625
+417.2008667 6045.6533203125
+417.696991 8364.318359375
+418.2027893 8019.1762695313
+426.2158203 9391.662109375
+428.8858948 6009.2065429688
+431.206543 9535.4150390625
+451.2514343 6296.6337890625
+465.7139282 6659.9360351563
+466.2247925 8575.556640625
+475.2226257 6292.1694335938
+488.2868042 7346.7373046875
+489.2886047 30622.896484375
+491.2367249 8038.7392578125
+492.2262268 27380.2578125
+496.3111572 9502.2919921875
+498.3398438 83627.8203125
+499.348114 9477.421875
+502.2510376 7497.5302734375
+502.8083191 7691.1728515625
+518.2723389 29630.49609375
+519.2763672 13119.953125
+656.3309937 6904.6923828125
+673.3564453 8458.634765625
+END IONS
+BEGIN IONS
+TITLE=controllerType=0 controllerNumber=1 scan=19905
+RTINSECONDS=2325.98454
+PEPMASS=534.22802734375
+CHARGE=2+
+74.0607834 11525.5478515625
+80.820961 1134.3864746094
+84.0448685 11916.904296875
+84.0813599 24140.73046875
+86.0719757 1059.546875
+86.0969696 48334.11328125
+87.0556259 2711.1242675781
+87.0794067 2536.3103027344
+87.099884 1441.4647216797
+88.0397949 1339.0686035156
+89.0711365 5940.744140625
+95.5842514 960.4934692383
+100.0871887 1435.1180419922
+101.0711517 11117.935546875
+102.0551834 7843.828125
+104.0528793 2629.0866699219
+107.0505447 1256.6583251953
+107.47509 1007.3388061523
+110.0714264 24055.96484375
+112.087204 2137.0339355469
+115.0872574 2242.5446777344
+119.0812531 1181.8509521484
+120.0808029 19385.041015625
+127.0867386 5999.564453125
+129.065918 4383.1904296875
+129.1022491 33245.55859375
+130.0497742 1252.8232421875
+131.0811462 1228.9758300781
+136.0639343 1478.1802978516
+136.0756531 41457.83203125
+137.0790558 2168.0249023438
+141.0658417 2161.6188964844
+141.1025543 1396.7373046875
+145.0974884 1154.3653564453
+152.0713348 1227.7298583984
+155.0810394 2207.4116210938
+157.0602112 1539.4930419922
+157.08461 1485.4039306641
+157.1333466 2088.0070800781
+159.0758057 2233.6645507813
+159.1125183 1578.9256591797
+165.0541687 14583.548828125
+166.085968 18895.611328125
+169.1333466 10393.7421875
+171.0764618 1893.2116699219
+172.1085052 1334.9647216797
+180.0661316 2653.572265625
+182.0809937 32101.177734375
+183.076828 2454.3715820313
+183.1490936 1469.2236328125
+185.077774 2541.4504394531
+185.0941162 1574.8117675781
+185.1289368 1785.0300292969
+186.087677 2044.2495117188
+187.1076813 2141.6088867188
+198.0757141 1864.1412353516
+199.0702972 1590.9162597656
+200.10289 5724.33203125
+201.1239624 2084.2858886719
+203.0672455 1515.2619628906
+207.1134491 2512.40625
+213.0875549 1643.7739257813
+215.1399994 2060.5869140625
+216.0997772 1206.705078125
+216.1348419 1320.7780761719
+217.1352234 8159.3056640625
+220.1828613 3609.7250976563
+220.2030029 1611.9375
+221.1286774 11386.6640625
+223.1070251 5323.6176757813
+226.1182861 4679.68359375
+230.1152496 2067.7849121094
+235.1436768 2349.3061523438
+236.1468964 1393.5037841797
+237.1257629 2463.6643066406
+240.1340179 1668.9652099609
+245.13237 1704.8936767578
+247.1428375 1828.2724609375
+249.0960083 1496.8309326172
+249.1233063 1982.8770751953
+254.1599274 1287.4233398438
+262.6038818 2132.6999511719
+267.1069946 1409.6979980469
+267.1347351 4155.18359375
+270.1081848 2705.4152832031
+270.6130981 2401.3571777344
+271.1154175 1773.4208984375
+277.6126709 1322.0480957031
+283.1292419 6684.1733398438
+285.2037659 1555.5247802734
+290.6115112 1747.0528564453
+293.1127625 1832.3509521484
+295.0375366 1139.5216064453
+298.6217346 2137.7734375
+299.1255493 1164.4644775391
+299.6296692 5615.0180664063
+304.6210938 1524.0411376953
+313.6674805 1478.9112548828
+314.6342773 1185.4146728516
+341.1139832 1686.7280273438
+350.1498108 2248.2668457031
+350.6541443 9815.0107421875
+351.1555786 4738.2700195313
+351.6599426 1457.0270996094
+355.647583 1925.8502197266
+358.1459961 1697.1291503906
+364.1647644 2035.076171875
+364.6515198 2264.7180175781
+365.6571045 2539.4509277344
+366.1519775 1271.5914306641
+368.1899719 2488.8234863281
+370.1492615 1207.8226318359
+372.6609192 1450.5041503906
+373.1611023 15705.77734375
+373.6647339 6134.396484375
+376.5512695 1535.8891601563
+379.1600952 1519.6890869141
+379.6573486 1735.7387695313
+382.6697693 1877.0784912109
+384.6668396 1368.4975585938
+386.1818542 4932.7622070313
+388.0981445 1814.0821533203
+388.1616516 1639.3973388672
+391.6724243 1722.4331054688
+394.6583252 2745.8254394531
+395.1569519 1794.5734863281
+399.1826477 1813.751953125
+399.6832886 2202.8469238281
+400.1859131 27261.03515625
+400.6886902 11703.2177734375
+405.1769714 1845.1595458984
+406.1872559 5626.5249023438
+409.1769714 1553.7102050781
+410.2037659 9268.25390625
+410.7049255 2537.4650878906
+412.1827393 2462.1599121094
+415.1905518 4857.001953125
+417.1824646 2098.9926757813
+423.1886902 1632.6658935547
+428.6966248 5038.703125
+429.1943359 2628.6257324219
+430.1769409 2335.6350097656
+438.2408752 2383.4521484375
+439.1846313 18274.087890625
+439.6879578 7237.6088867188
+443.2449951 1595.5926513672
+445.186676 4973.349609375
+445.6867676 2095.1735839844
+446.1969604 1545.0024414063
+450.6947937 2427.0949707031
+452.2566528 1537.7886962891
+454.1917114 1963.4315185547
+458.1747131 1448.1218261719
+461.2607727 1722.7113037109
+465.6973877 1562.3093261719
+466.1947937 2171.53515625
+467.2056274 10621.619140625
+467.7023621 9091.3349609375
+468.1976929 1944.4018554688
+468.267395 4734.5639648438
+469.273468 1822.9508056641
+473.1994934 1352.2316894531
+473.6989746 1343.6881103516
+475.1999512 5885.4248046875
+475.7026672 6054.9418945313
+476.2094421 4897.3432617188
+476.7133789 1982.70703125
+478.2355347 5131.12109375
+481.1903992 2123.00390625
+481.7055664 2059.3818359375
+482.2129822 6752.0048828125
+482.7108459 2522.6437988281
+487.3049316 2514.1276855469
+490.7094421 2462.6801757813
+495.70578 5170.00390625
+501.7067566 1650.3034667969
+501.7937622 7237.1142578125
+502.296875 2418.212890625
+504.21698 9748.248046875
+504.7191772 6072.6821289063
+510.2188721 6962.052734375
+519.2223511 8869.3369140625
+519.7225342 4718.7387695313
+520.2103271 16541.169921875
+520.7109985 2730.8581542969
+524.7560425 1626.7911376953
+526.2027588 2263.7565917969
+526.7091675 1732.9114990234
+533.8047485 10959.140625
+534.2905273 10083.3759765625
+534.7897339 30336.474609375
+535.220459 1591.669921875
+539.1575928 2096.6694335938
+551.1583862 2616.3996582031
+569.1661377 2812.7487792969
+641.3411255 4872.2426757813
+643.3137207 1385.0288085938
+652.3312378 1978.6364746094
+668.3342896 1452.5230712891
+682.3339233 1898.4290771484
+683.3429565 1458.1762695313
+696.3226318 1923.4722900391
+784.5008545 6190.7158203125
+790.3800659 2451.6320800781
+819.3933716 4207.2880859375
+820.4173584 2018.9385986328
+824.4292603 11264.025390625
+869.4186401 2067.2492675781
+882.4277954 1771.7611083984
+884.423584 1570.5802001953
+885.4588623 2440.49609375
+955.4633789 7311.4379882813
+969.456604 2234.6115722656
+END IONS
+BEGIN IONS
+TITLE=controllerType=0 controllerNumber=1 scan=19944
+RTINSECONDS=2329.22502
+PEPMASS=516.783386230469
+CHARGE=2+
+72.0815811 27197.671875
+74.0610199 4197.1069335938
+84.0451736 15634.2109375
+84.0815887 26392.96875
+86.0969391 88900.34375
+87.0557785 6371.4975585938
+87.1004715 5257.353515625
+88.0400085 4621.7041015625
+101.0712738 5125.9956054688
+102.0554962 23467.248046875
+107.0487747 4362.7963867188
+110.0715256 339710.21875
+111.0756683 11064.5341796875
+112.0868912 4111.2602539063
+116.0706635 55538.3046875
+120.080925 26441.748046875
+127.0875549 4627.248046875
+129.102829 26702.419921875
+132.1021881 5254.7578125
+133.0611267 3728.3393554688
+136.0756378 91992.3203125
+137.0794525 4378.3774414063
+138.0666656 7507.4252929688
+145.5386963 6195.8090820313
+157.1097717 3760.1879882813
+159.0761414 3559.2092285156
+166.086441 5174.974609375
+169.0968933 6497.8017578125
+173.09198 66982.4140625
+180.113205 6698.7612304688
+181.0975647 20135.044921875
+182.081604 7997.3110351563
+183.1493378 16863.73046875
+197.1275787 6301.8452148438
+202.0863037 3530.7102050781
+208.1073456 25956.681640625
+209.0920258 14764.1796875
+218.0425568 28767.90234375
+229.1558533 5750.8208007813
+233.0927124 4071.7492675781
+235.1186981 36820.6640625
+243.1336212 24782.921875
+267.1106567 5503.90625
+278.1124878 4135.1215820313
+286.1757813 15374.74609375
+304.1647339 5803.3159179688
+306.0768738 3530.1059570313
+318.1595459 5520.9609375
+330.1925964 14000.76171875
+344.6773376 3574.6950683594
+356.2409973 12024.30078125
+360.2006531 46041.26171875
+360.7026062 19602.333984375
+363.6889648 16339.1533203125
+364.1605225 3471.5439453125
+365.1912537 6514.8598632813
+365.6857605 3434.3635253906
+372.6929016 23375.6328125
+374.1980286 240148.9375
+374.6990051 88531.46875
+377.6847839 18261.869140625
+378.1841431 4990.4458007813
+384.2341614 28763.40234375
+386.6903687 14500.7939453125
+398.2019958 16223.544921875
+416.7427673 8074.5288085938
+423.2320251 4371.8520507813
+425.1813965 4210.1938476563
+430.7402344 27642.935546875
+431.2440491 13417.583984375
+442.2075195 7980.6059570313
+442.2713928 4595.1391601563
+442.7108459 5553.3310546875
+448.2337952 8279.3447265625
+448.7311707 5624.8461914063
+451.2121582 8333.0185546875
+451.7119141 4570.4624023438
+457.7275391 17480.1015625
+459.2512817 48900.5546875
+459.7523804 29497.771484375
+460.2167053 5359.6381835938
+498.7574158 3551.4931640625
+499.2520752 4235.8666992188
+507.2600708 53245.89453125
+507.7609253 46670.12890625
+508.2612305 19332.828125
+516.2666626 4137.541015625
+516.7805176 58299.46875
+517.281189 36883.984375
+529.3075562 16754.47265625
+556.2666626 3977.314453125
+582.3347168 7930.2817382813
+599.2963867 5640.9077148438
+610.3297729 130150.6640625
+611.3359375 27716.517578125
+617.3026733 19406.369140625
+618.3014526 5174.8359375
+626.3168335 4723.9135742188
+635.3135986 17860.3515625
+636.3198853 4314.6948242188
+643.3532715 23298.431640625
+644.3613892 4250.1220703125
+667.2992554 8192.587890625
+685.3235474 3758.7578125
+719.3981934 13301.7373046875
+720.395752 4378.724609375
+729.3352051 7709.2412109375
+747.3901367 84267.8828125
+748.3964233 29535.37109375
+754.3642578 5714.333984375
+755.3690186 3943.5083007813
+764.3662109 6421.2250976563
+772.3707886 3762.69140625
+789.3843384 4607.880859375
+791.3812256 3588.5078125
+798.3960571 6360.8334960938
+806.4115601 30085.07421875
+832.4921875 4568.6284179688
+833.508728 4909.1865234375
+860.4714355 13005.275390625
+895.4536743 16561.779296875
+896.4584961 4322.0971679688
+END IONS
--- a/test-data/novel_peptides	Fri Jul 17 17:05:41 2020 -0400
+++ b/test-data/novel_peptides	Mon Mar 15 12:52:03 2021 +0000
@@ -1,3 +1,6 @@
 DSGASGSILEASAAR
 ELGSSDLTAR
 SPYREFTDHLVK
+RQVPEHLGP
+RPGPGTRKSL
+MTDRHAGTY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/pFind.qry.res	Mon Mar 15 12:52:03 2021 +0000
@@ -0,0 +1,32 @@
+S	1148.575077	3
+controllerType=0 controllerNumber=1 scan=19846
+1	FACNGTGGIIVP	1148.576804	3.554176	0.977448	0.268814	0	0	1	0	1	11340;1979;S;V	0	-0.001047	0.000000	5.000000	0.145238	1.000000	18	0	0	0	1344	0	0	0
+2	TLMEQTLPVT	1148.586699	4.380692	0.986473	0.268814	1	3	Oxidation[M]#0	0	0	0	2	32727;102;F;V	93939;102;F;V	0	0.005119	1.000000	2.000000	0.157397	2.000000	109	0	0	0	384	0	0	0
+3	RSDALGGCLSL	1148.572781	3.598858	0.991751	0.268814	1	8	Carbamidomethyl[C]#0	0	1	0	1	5598;401;D;A	0	0.000261	1.000000	6.000000	0.087418	2.000000	1	0	0	0	800	0	0	0
+4	SETLSIVCPSI	1148.586698	4.274827	0.995714	0.268814	0	0	0	0	1	120267;1812;Q;I	0	0.000569	1.000000	4.000000	0.131591	2.000000	648	0	0	0	800	0	0	0
+5	RPSTASGSSVVT	1148.590536	3.900134	0.995843	0.268814	0	0	0	0	1	33405;1207;H;A	0	0.001153	1.000000	6.000000	0.155589	2.000000	3	0	0	0	1568	0	0	0
+6	FGQVAASTAPSL	1148.594562	3.942397	0.997807	0.268814	0	0	0	0	7	18779;1673;V;F	57765;21;V;F	68677;499;V;F	72305;1102;V;F	106433;450;V;F	118259;1661;V;F	149057;526;V;F	0	0.002566	1.000000	7.000000	0.115885	2.000000	1088	0	0	0	1600	0	0	0
+7	QDGPGFKSISL	1148.594562	3.621902	0.997928	0.268814	0	0	1	0	3	25722;229;V;R	46484;120;V;R	119316;229;V;R	0	0.002473	1.000000	6.000000	0.127843	2.000000	512	0	0	0	800	0	0	0
+S	1067.448778	2
+controllerType=0 controllerNumber=1 scan=19905
+1	VDQEGANSMT	1067.430933	3.505104	0.997174	0.444184	1	9	Oxidation[M]#0	0	0	0	3	20025;195;D;A	133965;196;D;A	138831;195;D;A	0	0.006154	1.000000	4.000000	0.098087	2.000000	1	0	0	0	408	0	0	0
+2	FYGNSISIS	1067.444476	3.014719	0.998504	0.444184	1	7	Phospho[S]#0	0	0	0	1	11805;412;S;A	0	0.006294	1.000000	3.000000	0.054075	2.000000	32	0	0	0	70	0	0	0
+3	KDPGMGAMGGM	1067.431801	3.263346	0.998586	0.444184	1	11	Oxidation[M]#0	0	0	0	1	23457;553;E;G	0	-0.000013	1.000000	5.000000	0.087146	2.000000	261	0	0	0	400	0	0	0
+4	FYGNSISIS	1067.444476	3.028426	0.998621	0.444184	1	9	Phospho[S]#0	0	0	0	1	11805;412;S;A	0	0.003416	1.000000	3.000000	0.032929	2.000000	160	0	0	0	134	0	0	0
+S	1142.501268	2
+controllerType=0 controllerNumber=1 scan=19907
+1	MQSSQSMSKL	1142.517968	3.710725	0.978768	0.276033	1	7	Oxidation[M]#0	0	0	0	1	33;841;I;T	0	-0.001474	0.000000	3.000000	0.145364	3.000000	0	0	0	0	302	0	0	0
+2	MQSSQSMSKL	1142.517968	1.886902	0.998416	0.276033	1	1	Oxidation[M]#0	0	0	0	1	33;841;I;T	0	0.003725	0.000000	6.000000	0.104444	1.000000	5	0	0	0	256	0	0	0
+3	DTITQKVEE	1142.497627	1.828102	0.999712	0.276033	1	4	Phospho[T]#0	0	0	0	5	6567;5813;S;I	65345;3767;S;I	73025;5704;S;I	100015;919;S;I	103069;3727;S;I	0	-0.011066	1.000000	5.000000	0.145552	1.000000	130	0	0	0	0	0	0	0
+S	928.482124	2
+controllerType=0 controllerNumber=1 scan=19946
+1	GPRLPGSSSA	928.484626	7.710279	0.421887	0.011383	0	0	0	0	1	26031;290;E;A	0	0.001328	1.000000	0.000000	0.207882	8.000000	510	0	0	0	488	0	0	0
+2	PLGRPGSSGT	928.484626	5.893959	0.818989	0.011383	0	0	1	0	4	23498;63;G;G	50106;66;G;G	69602;63;G;G	147656;118;G;G	0	0.002600	1.000000	1.000000	0.212426	5.000000	250	0	0	0	488	0	0	0
+3	IVNPGRDSA	928.484626	4.782812	0.975088	0.011383	0	0	0	0	8	8187;441;A;T	50181;441;A;T	50183;441;A;T	54737;441;A;T	61191;441;A;T	73135;441;A;T	85927;441;A;T	133089;441;A;T	0	0.000119	1.000000	3.000000	0.149306	3.000000	232	0	0	0	200	0	0	0
+4	PRLPGSSSA	928.484629	8.003373	0.979251	0.011383	1	0	Carbamidomethyl[AnyN-term]#0	0	0	0	1	26031;291;G;A	0	0.001326	1.000000	0.000000	0.207882	8.000000	255	0	0	0	244	0	0	0
+5	GAPLAAPFGGA	928.488651	4.541935	0.980862	0.011383	0	0	1	0	1	7256;3036;P;G	0	0.002595	1.000000	3.000000	0.134447	4.000000	582	0	0	0	960	0	0	0
+6	RKAPDPSGT	928.484626	3.961262	0.983572	0.011383	0	0	0	0	1	26911;595;S;G	0	0.003601	1.000000	3.000000	0.147253	3.000000	99	0	0	0	224	0	0	0
+7	RPVGASPSSA	928.484626	4.484990	0.987448	0.011383	0	0	1	0	1	680;164;A;Q	0	0.000146	1.000000	5.000000	0.155946	3.000000	449	0	0	0	448	0	0	0
+8	HLLFGPSSA	928.488651	4.685283	0.989669	0.011383	0	0	0	0	4	23883;190;Y;L	58837;221;Y;L	77055;191;Y;L	117305;220;Y;L	0	-0.003066	1.000000	4.000000	0.200977	3.000000	225	0	0	0	224	0	0	0
+9	QLQPKSSSA	928.473392	4.929118	0.990178	0.011383	1	0	Gln->pyro-Glu[AnyN-termQ]#0	0	0	0	2	6245;3970;I;G	136775;870;I;G	0	0.007494	1.000000	3.000000	0.156720	4.000000	240	0	0	0	240	0	0	0
+10	NAHISKTSA	928.484626	3.752999	0.992705	0.011383	0	0	1	0	6	25928;751;F;P	42420;742;F;P	47934;768;F;P	58152;692;F;P	101556;692;F;P	141526;759;F;P	0	-0.000622	1.000000	4.000000	0.126520	2.000000	193	0	0	0	208	0	0	0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test.tags	Mon Mar 15 12:52:03 2021 +0000
@@ -0,0 +1,3 @@
+controllerType=0 controllerNumber=1 scan=19846	FACNGTGGIIVP;TLMEQTLPVT;RSDALGGCLSL;SETLSIVCPSI;RPSTASGSSVVT;FGQVAASTAPSL;QDGPGFKSISL
+controllerType=0 controllerNumber=1 scan=19905	VDQEGANSMT;FYGNSISIS;KDPGMGAMGGM;FYGNSISIS
+controllerType=0 controllerNumber=1 scan=19907	MQSSQSMSKL;MQSSQSMSKL;DTITQKVEE