Repository 'maxquant_mqpar'
hg clone https://toolshed.g2.bx.psu.edu/repos/galaxyp/maxquant_mqpar

Changeset 0:256cc0e17454 (2019-07-20)
Next changeset 1:26693e21c3c8 (2019-08-07)
Commit message:
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant commit ab4e4f1817080cbe8a031a82cb180610ff140847
added:
README.md
init.py
macros.xml
maxquant_mqpar.xml
mqparam.py
mqwrapper.py
test-data/BSA_min_21.mzXML
test-data/BSA_min_22
test-data/bsa.fasta
test-data/exp_design_test.txt
test-data/template.xml
test-data/two/combined/txt/allPeptides.txt
test-data/two/combined/txt/evidence.txt
test-data/two/combined/txt/modificationSpecificPeptides.txt
test-data/two/combined/txt/msms.txt
test-data/two/combined/txt/msmsScans.txt
test-data/two/combined/txt/mzRange.txt
test-data/two/combined/txt/mzTab.mzTab
test-data/two/combined/txt/parameters.txt
test-data/two/combined/txt/peptideSection.txt
test-data/two/combined/txt/peptides.txt
test-data/two/combined/txt/proteinGroups.txt
test-data/two/combined/txt/summary.txt
test-data/two/exp_design_template.txt
test-data/two/mqpar.xml
b
diff -r 000000000000 -r 256cc0e17454 README.md
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md Sat Jul 20 04:53:23 2019 -0400
b
@@ -0,0 +1,27 @@
+GalaxyP - MaxQuant
+==================
+
+* Home: <https://github.com/galaxyproteomics/tools-galaxyp/>
+* Tool ID: `maxquant_mqpar`
+* Tool Type: `default`
+
+
+Description
+-----------
+
+Wrapper for the MaxQuant version available in conda.
+
+
+Updating
+--------
+
+MaxQuant often changes the layout of its parameters file.
+So changes to the code are likely to be necessary when
+updating to a new version of MaxQuant. The init.py script
+can be used to initialize the tool with a new list of
+modifications or enzymes. From the tool dir run:
+
+./init.py -m MODIFICATIONS.XML -e ENZYMES.XML
+
+The location of these xml files usually is:
+ANACONDA_DIR/bin/conf/
b
diff -r 000000000000 -r 256cc0e17454 init.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/init.py Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+"""Initialize MaxQuant tool for use with a new version of
+modifications/enzymes.xml.
+
+TODO: Append function: only add modifications that are not
+already present, add modification entries to conda maxquant
+
+Authors: Damian Glaetzer <d.glaetzer@mailbox.org>
+
+Usage: init.py [-a] [-m MODS_FILE] [-e ENZYMES_FILE]
+FILES are the modifications/enzymes.xml of MaxQuant, located at
+<ANACONDA_DIR>/pkgs/maxquant-<VERSION>/bin/conf/.
+(for conda installations)
+
+Updates modification parameters in macros.xml.
+"""
+
+import argparse
+import re
+import xml.etree.ElementTree as ET
+from xml.dom import minidom
+
+
+def build_list(node, name, mod_list, append=False):
+    """Build the modifications list in macros.xml"""
+    node.clear()
+    node.tag = 'xml'
+    node.set('name', name)
+    for m in mod_list:
+        ET.SubElement(node, 'expand', attrib={'macro': 'mod_option',
+                                              'value': m})
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument("-m", "--modifications",
+                    help="modifications.xml of maxquant")
+parser.add_argument("-e", "--enzymes",
+                    help="enzymes.xml of maxquant")
+args = parser.parse_args()
+
+if args.modifications:
+    mods_root = ET.parse(args.modifications).getroot()
+
+    mods = mods_root.findall('modification')
+    standard_mods = []
+    label_mods = []
+    for m in mods:
+        if (m.findtext('type') == 'Standard'
+            or m.findtext('type') == 'AaSubstitution'):
+            standard_mods.append(m.get('title'))
+        elif m.findtext('type') == 'Label':
+            label_mods.append(m.get('title'))
+
+if args.enzymes:
+    enzymes_root = ET.parse(args.enzymes).getroot()
+
+    enzymes = enzymes_root.findall('enzyme')
+    enzymes_list = [e.get('title') for e in enzymes]
+
+macros_root = ET.parse('./macros.xml').getroot()
+for child in macros_root:
+    if child.get('name') == 'modification' and args.modifications:
+        build_list(child, 'modification', standard_mods)
+    elif child.get('name') == 'label' and args.modifications:
+        build_list(child, 'label', label_mods)
+    elif child.get('name') == 'proteases' and args.enzymes:
+        build_list(child, 'proteases', enzymes_list)
+
+rough_string = ET.tostring(macros_root, 'utf-8')
+reparsed = minidom.parseString(rough_string)
+pretty = reparsed.toprettyxml(indent="    ")
+even_prettier = re.sub(r"\n\s+\n", r"\n", pretty)
+with open('./macros.xml', 'w') as f:
+    print(even_prettier, file=f)
b
diff -r 000000000000 -r 256cc0e17454 macros.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,14 @@
+<?xml version="1.0" ?>
+<macros>
+    <token name="@VERSION@">1.6.3.4</token>
+    <token name="@SUBSTITUTION_RX@">[^\w\-\s\.]</token>
+    <xml name="output" token_format="tabular" token_label="default description" token_name="default">
+        <data format="@FORMAT@" label="@LABEL@ for ${on_string}" name="@NAME@">
+            <filter>'@NAME@' in output</filter>
+        </data>
+    </xml>
+    <xml name="output_option" token_label="default label" token_name="default">
+        <option value="@NAME@">@LABEL@</option>
+    </xml>
+</macros>
+
b
diff -r 000000000000 -r 256cc0e17454 maxquant_mqpar.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/maxquant_mqpar.xml Sat Jul 20 04:53:23 2019 -0400
[
b'@@ -0,0 +1,214 @@\n+<tool id="maxquant_mqpar" name="MaxQuant (using mqpar.xml)" version="@VERSION@">\n+    <macros>\n+        <import>macros.xml</import>\n+    </macros>\n+    <requirements>\n+        <requirement type="package" version="@VERSION@">maxquant</requirement>\n+        <requirement type="package" version="3.7">python</requirement>\n+    </requirements>\n+    <command detect_errors="exit_code"><![CDATA[\n+    #import re\n+\n+    python3 \'$__tool_directory__/mqwrapper.py\'\n+    --num_threads=\\${GALAXY_SLOTS:-1}\n+    --substitution_rx=\'@SUBSTITUTION_RX@\'\n+    #if $infile.select == "mzxml_files"\n+        --mzxml_files=\'$infile.mzxml_files\'\n+        #set names = \',\'.join([re.sub(\'@SUBSTITUTION_RX@\', \'_\', str($name.element_identifier)) for $name in $infile.mzxml_files])\n+    #else\n+        --raw_files=\'$infile.raw_files\'\n+        #set names = \',\'.join([re.sub(\'@SUBSTITUTION_RX@\', \'_\', str($name.element_identifier)) for $name in $infile.raw_files])\n+    #end if\n+    --infile_names=\'$names\'\n+    --version=\'@VERSION@\'\n+    --fasta_files=\'$fasta_files\'\n+    --identifier_parse_rule=\'$identifier_parse_rule\'\n+    --description_parse_rule=\'$description_parse_rule\'\n+    --mqpar_in=\'$mqpar_in\'\n+\n+    --evidence=\'$evidence\'\n+    --msms=\'$msms\'\n+    --parameters=\'$parameters\'\n+    --peptides=\'$peptides\'\n+    --proteinGroups=\'$proteinGroups\'\n+    --allPeptides=\'$allPeptides\'\n+    --libraryMatch=\'$libraryMatch\'\n+    --matchedFeatures=\'$matchedFeatures\'\n+    --modificationSpecificPeptides=\'$modificationSpecificPeptides\'\n+    --ms3Scans=\'$ms3Scans\'\n+    --msmsScans=\'$msmsScans\'\n+    --mzRange=\'$mzRange\'\n+    --peptideSection=\'$peptideSection\'\n+    --summary=\'$summary\'\n+    --mzTab=\'$mzTab\'\n+    --output_all=\'$output_all\'\n+    --mqpar_out=\'$mqpar_out\'\n+\n+    > \'$log\'\n+    ]]></command>\n+    <inputs>\n+        <conditional name="infile">\n+            <param name="select" type="select" label="choose the type of your input files">\n+                <option value="raw_files">Thermo.raw</option>\n+                <option value="mzxml_files">mzXML</option>\n+            </param>\n+            <when value="raw_files"> \n+                <param multiple="true" name="raw_files" type="data"\n+                       format="thermo.raw" label="RAW Files"\n+                       help="Specify one or more Thermo RAW files" />\n+            </when>\n+            <when value="mzxml_files">\n+                <param multiple="true" name="mzxml_files" type="data"\n+                       format="mzxml" label="mzXML Files"\n+                       help="Specify one or more mzXML files" />\n+            </when>\n+        </conditional>\n+        <param format="fasta" multiple="true" name="fasta_files"\n+               type="data" label="FASTA files"\n+               help="Specify one or more FASTA databases." />\n+        <param name="identifier_parse_rule" type="text"\n+               label="identifier parse rule" value="^&gt;.*\\|(.*)\\|.*$">\n+            <sanitizer>\n+                <valid initial="string.printable">\n+                    <remove value="&apos;"/>\n+                </valid>\n+            </sanitizer>\n+        </param>\n+        <param name="description_parse_rule" type="text"\n+               label="description parse rule" value="^&gt;.*\\|.*\\|[^ ]+ (.*) OS.*$"\n+               help="Modify parse rules if needed">\n+            <sanitizer>\n+                <valid initial="string.printable">\n+                    <remove value="&apos;"/>\n+                </valid>\n+            </sanitizer>\n+        </param>\n+        <param type="data" name="mqpar_in" format="xml"\n+               label="mqpar.xml file with your search parameters. RAW file names \n+                      must match the names displayed in galaxy. Their paths \n+                      from the local machine are ignored. E.g. a file named\n+                      \'test01.raw\' in galaxy can either be named \'test01.raw\' or\n+                      \'D:\\path\\to\\test01.raw\' in the mqpar.xml."/>\n+\n+        <param type="select" name="o'..b'        <expand macro="output" format="tar" name="output_all"\n+                label="\'combined/txt/\' directory"/>\n+        <data name="log" format="txt"\n+              label="log"/>\n+    </outputs>\n+\n+    <tests>\n+        <test>\n+            <param name="select" value="mzxml_files" />\n+            <param name="mzxml_files" value="BSA_min_22,BSA_min_21.mzXML" />\n+            <param name="fasta_files" value="bsa.fasta" />\n+            <param name="identifier_parse_rule" value="&gt;([^\\s]*)" />\n+            <param name="description_parse_rule" value="&gt;(.*)" />\n+            <param name="mqpar_in" value="two/mqpar.xml" />\n+            <param name="output" value="evidence,msms,mzTab,allPeptides,msmsScans,mzRange,parameters,peptides,peptideSection,proteinGroups,summary,modificationSpecificPeptides" />\n+            <output name="evidence" file="two/combined/txt/evidence.txt" />\n+            <output name="msms" file="two/combined/txt/msms.txt" />\n+            <output name="mzTab" file="two/combined/txt/mzTab.mzTab" lines_diff="4"/>\n+            <output name="allPeptides" file="two/combined/txt/allPeptides.txt" lines_diff="14"/>\n+            <output name="msmsScans" file="two/combined/txt/msmsScans.txt" />\n+            <output name="mzRange" file="two/combined/txt/mzRange.txt" />\n+            <output name="parameters" file="two/combined/txt/parameters.txt" lines_diff="8"/>\n+            <output name="peptides" file="two/combined/txt/peptides.txt" />\n+            <output name="peptideSection" file="two/combined/txt/peptideSection.txt" />\n+            <output name="proteinGroups" file="two/combined/txt/proteinGroups.txt" />\n+            <output name="summary" file="two/combined/txt/summary.txt" />\n+            <output name="modificationSpecificPeptides" file="two/combined/txt/modificationSpecificPeptides.txt" />\n+        </test>\n+    </tests>\n+    <help><![CDATA[\n+MaxQuant is a quantitative proteomics software package designed for analyzing large mass-spectrometric data sets. \n+\n+This tool is a wrapper for MaxQuant v@VERSION@. It gets its search parameters from a previously created parameter file (mqpar.xml). A similiar tool that allows the specification of search parameters directly through galaxy is available as well and should be preferred. \n+\n+**Input files**\n+\n+- Thermo raw file or mzXML file\n+    - The datatype has to be \'thermo.raw\' or \'mzXML\'. Make sure to specify the correct datatype either during upload to Galaxy or afterwards (edit attributes --> datatypes)\n+- Optional files:\n+    - mqpar.xml: \n+        - MaxQuant parameters will be taken from the provided mqpar.xml file. This parameter file MUST be created using the same version of MaxQuant as is used by this tool. The correct version of MaxQuant can be obtained via the bioconda channel for the conda package manager.\n+\n+**Output files**\n+\n+Different output file options are available, most of them are part of the MaxQuant txt folder. An additional mztab output option is implemented. \n+    ]]></help>\n+    <citations>\n+        <citation type="bibtex">\n+        @article{cox2008maxquant,\n+        title={MaxQuant enables high peptide identification rates, individualized\n+        ppb-range mass accuracies and proteome-wide protein quantification},\n+        author={Cox, J{\\"u}rgen and Mann, Matthias},\n+        journal={Nature biotechnology},\n+        volume={26},\n+        number={12},\n+        pages={1367},\n+        year={2008},\n+        publisher={Nature Publishing Group}\n+        }\n+        </citation>\n+        <citation type="bibtex">\n+        @article{tyanova2016maxquant,\n+        title={The MaxQuant computational platform for mass\n+        spectrometry-based shotgun proteomics},\n+        author={Tyanova, Stefka and Temu, Tikira and Cox, J{\\"u}rgen},\n+        journal={Nature protocols},\n+        volume={11},\n+        number={12},\n+        pages={2301},\n+        year={2016},\n+        publisher={Nature Publishing Group}\n+        }\n+        </citation>\n+    </citations>\n+</tool>\n'
b
diff -r 000000000000 -r 256cc0e17454 mqparam.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mqparam.py Sat Jul 20 04:53:23 2019 -0400
[
b'@@ -0,0 +1,346 @@\n+"""\n+Create a project-specific MaxQuant parameter file.\n+\n+TODO: check validity of parsed experimental design template\n+      add support for parameter groups\n+      add reporter ion MS2\n+\n+Author: Damian Glaetzer <d.glaetzer@mailbox.org>\n+"""\n+\n+import ntpath\n+import os\n+import re\n+import xml.etree.ElementTree as ET\n+from itertools import zip_longest\n+from xml.dom import minidom\n+\n+\n+class MQParam:\n+    """Represents a mqpar.xml and provides methods to modify\n+    some of its parameters.\n+    """\n+\n+    fasta_template = """<FastaFileInfo>\n+    <fastaFilePath></fastaFilePath>\n+    <identifierParseRule></identifierParseRule>\n+    <descriptionParseRule></descriptionParseRule>\n+    <taxonomyParseRule></taxonomyParseRule>\n+    <variationParseRule></variationParseRule>\n+    <modificationParseRule></modificationParseRule>\n+    <taxonomyId></taxonomyId>\n+    </FastaFileInfo>"""\n+\n+    def __init__(self, mqpar_out, mqpar_in, exp_design,\n+                 substitution_rx=r\'[^\\s\\S]\'):  # no sub by default\n+        """Initialize MQParam class. mqpar_in can either be a template\n+        or a already suitable mqpar file.\n+        >>> t = MQParam("test", \'./test-data/template.xml\', None)\n+        >>> t.root.tag\n+        \'MaxQuantParams\'\n+        >>> (t.root.find(\'maxQuantVersion\')).text\n+        \'1.6.3.4\'\n+        """\n+\n+        self.orig_mqpar = mqpar_in\n+        self.exp_design = exp_design\n+        self.mqpar_out = mqpar_out\n+        self.root = ET.parse(mqpar_in).getroot()\n+        self.version = self.root.find(\'maxQuantVersion\').text\n+        # regex for substitution of certain file name characters\n+        self.substitution_rx = substitution_rx\n+\n+    @staticmethod\n+    def _add_child(el, name, text, attrib=None):\n+        """Add a child element to an element.\n+\n+        >>> t = MQParam("test", \'./test-data/template.xml\', None)\n+        >>> MQParam._add_child(t.root, "test", "test")\n+        >>> t.root.find(\'test\').text == "test"\n+        True\n+        """\n+\n+        child = ET.SubElement(el, name, attrib=attrib if attrib else {})\n+        child.text = str(text)\n+\n+    def _make_exp_design(self, infiles):\n+        """Create a dict representing an experimental design from\n+        an experimental design template and a list of input files.\n+        If the experimental design template is None, create a default\n+        design with one experiment for each input file, no fractions and\n+        parameter group 0 for all files.\n+        >>> t2 = MQParam("test", \'./test-data/template.xml\', \\\n+                         \'./test-data/two/exp_design_template.txt\')\n+        >>> design = t2._make_exp_design([\'./test-data/BSA_min_21.mzXML\', \\\n+                                          \'./test-data/BSA_min_22.mzXML\'])\n+        >>> design[\'Name\']\n+        [\'./test-data/BSA_min_21.mzXML\', \'./test-data/BSA_min_22.mzXML\']\n+        >>> design[\'Fraction\']\n+        [\'1\', \'2\']\n+        """\n+        design = {s: [] for s in ("Name", "PTM", "Fraction", "Experiment")}\n+        if not self.exp_design:\n+            design["Name"] = infiles\n+            design["Fraction"] = (\'32767\',) * len(infiles)\n+            design["Experiment"] = [os.path.split(f)[1] for f in infiles]\n+            design["PTM"] = (\'False\',) * len(infiles)\n+        else:\n+            with open(self.exp_design) as design_file:\n+                index_line = design_file.readline().strip()\n+                index = []\n+                for i in index_line.split(\'\\t\'):\n+                    if i in design:\n+                        index.append(i)\n+                    else:\n+                        raise Exception("Invalid comlumn index in experimental"\n+                                        + " design template: {}".format(i))\n+                for line in design_file:\n+                    row = line.strip().split(\'\\t\')\n+                    for e, i in zip_longest(row, index):\n+                        design[i].append(e)\n+\n+            # map infiles to names in exp. design template\n'..b'EdgesPerNode\',\n+                         \'lfq_avg_edges_per_node\':\n+                         \'.parameterGroups/parameterGroup/lfqAvEdgesPerNode\',\n+                         \'lfq_min_ratio_count\':\n+                         \'.parameterGroups/parameterGroup/lfqMinRatioCount\'}\n+\n+        if key in simple_params:\n+            node = self.root.find(simple_params[key])\n+            if node is None:\n+                raise ValueError(\'Element {} not found in parameter file\'\n+                                 .format(simple_params[key]))\n+            node.text = str(value)\n+        else:\n+            raise ValueError("Parameter not found.")\n+\n+    def set_silac(self, light_mods, medium_mods, heavy_mods):\n+        """Set label modifications.\n+        >>> t1 = MQParam(\'test\', \'./test-data/template.xml\', None)\n+        >>> t1.set_silac(None, (\'test1\', \'test2\'), None)\n+        >>> t1.root.find(\'.parameterGroups/parameterGroup/maxLabeledAa\').text\n+        \'2\'\n+        >>> t1.root.find(\'.parameterGroups/parameterGroup/multiplicity\').text\n+        \'3\'\n+        >>> t1.root.find(\'.parameterGroups/parameterGroup/labelMods\')[1].text\n+        \'test1;test2\'\n+        >>> t1.root.find(\'.parameterGroups/parameterGroup/labelMods\')[2].text\n+        \'\'\n+        """\n+        multiplicity = 3 if medium_mods else 2 if heavy_mods else 1\n+        max_label = str(max(len(light_mods) if light_mods else 0,\n+                            len(medium_mods) if medium_mods else 0,\n+                            len(heavy_mods) if heavy_mods else 0))\n+        multiplicity_node = self.root.find(\'.parameterGroups/parameterGroup/\'\n+                                           + \'multiplicity\')\n+        multiplicity_node.text = str(multiplicity)\n+        max_label_node = self.root.find(\'.parameterGroups/parameterGroup/\'\n+                                        + \'maxLabeledAa\')\n+        max_label_node.text = max_label\n+\n+        node = self.root.find(\'.parameterGroups/parameterGroup/labelMods\')\n+        node[0].text = \';\'.join(light_mods) if light_mods else \'\'\n+        if multiplicity == 3:\n+            MQParam._add_child(node, name=\'string\', text=\';\'.join(medium_mods))\n+        if multiplicity > 1:\n+            MQParam._add_child(node, name=\'string\',\n+                               text=\';\'.join(heavy_mods) if heavy_mods else \'\')\n+\n+    def set_list_params(self, key, vals):\n+        """Set a list parameter.\n+        >>> t = MQParam(None, \'./test-data/template.xml\', None)\n+        >>> t.set_list_params(\'proteases\', (\'test 1\', \'test 2\'))\n+        >>> len(t.root.find(\'.parameterGroups/parameterGroup/enzymes\'))\n+        2\n+        >>> t.set_list_params(\'var_mods\', (\'Oxidation (M)\', ))\n+        >>> var_mods = \'.parameterGroups/parameterGroup/variableModifications\'\n+        >>> t.root.find(var_mods)[0].text\n+        \'Oxidation (M)\'\n+        """\n+\n+        params = {\'var_mods\':\n+                  \'.parameterGroups/parameterGroup/variableModifications\',\n+                  \'fixed_mods\':\n+                  \'.parameterGroups/parameterGroup/fixedModifications\',\n+                  \'proteases\':\n+                  \'.parameterGroups/parameterGroup/enzymes\'}\n+\n+        if key in params:\n+            node = self.root.find(params[key])\n+            if node is None:\n+                raise ValueError(\'Element {} not found in parameter file\'\n+                                 .format(params[key]))\n+            node.clear()\n+            node.tag = params[key].split(\'/\')[-1]\n+            for e in vals:\n+                MQParam._add_child(node, name=\'string\', text=e)\n+        else:\n+            raise ValueError("Parameter {} not found.".format(key))\n+\n+    def write(self):\n+        rough_string = ET.tostring(self.root, \'utf-8\', short_empty_elements=False)\n+        reparsed = minidom.parseString(rough_string)\n+        pretty = reparsed.toprettyxml(indent="\\t")\n+        even_prettier = re.sub(r"\\n\\s+\\n", r"\\n", pretty)\n+        with open(self.mqpar_out, \'w\') as f:\n+            print(even_prettier, file=f)\n'
b
diff -r 000000000000 -r 256cc0e17454 mqwrapper.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mqwrapper.py Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,99 @@
+"""
+Run MaxQuant on a modified mqpar.xml.
+Use maxquant conda package.
+TODO: add support for parameter groups
+
+Authors: Damian Glaetzer <d.glaetzer@mailbox.org>
+
+based on the maxquant galaxy tool by John Chilton:
+https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/maxquant
+"""
+
+import argparse
+import os
+import shutil
+import subprocess
+
+import mqparam
+
+# build parser
+parser = argparse.ArgumentParser()
+
+# input, special outputs and others
+other_args = ('raw_files', 'mzxml_files', 'fasta_files',
+              'description_parse_rule', 'identifier_parse_rule',
+              'mqpar_in', 'output_all',
+              'mqpar_out', 'infile_names', 'mzTab',
+              'version', 'substitution_rx')
+
+# txt result files
+txt_output = ('evidence', 'msms', 'parameters',
+              'peptides', 'proteinGroups', 'allPeptides',
+              'libraryMatch', 'matchedFeatures',
+              'modificationSpecificPeptides', 'ms3Scans',
+              'msmsScans', 'mzRange', 'peptideSection',
+              'summary')
+
+global_simple_args = ('num_threads',)
+
+arguments = ['--' + el for el in (txt_output
+                                  + other_args
+                                  + global_simple_args)]
+
+for arg in arguments:
+    parser.add_argument(arg)
+
+args = vars(parser.parse_args())
+
+# link infile datasets to names with correct extension
+# for maxquant to accept them
+files = (args['raw_files'] if args['raw_files']
+         else args['mzxml_files']).split(',')
+ftype = ".thermo.raw" if args['raw_files'] else ".mzXML"
+filenames = args['infile_names'].split(',')
+fnames_with_ext = [(a if a.endswith(ftype)
+                    else os.path.splitext(a)[0] + ftype)
+                   for a in filenames]
+
+for f, l in zip(files, fnames_with_ext):
+    os.link(f, l)
+
+# build mqpar.xml
+mqpar_temp = os.path.join(os.getcwd(), 'mqpar.xml')
+mqpar_out = args['mqpar_out'] if args['mqpar_out'] != 'None' else mqpar_temp
+mqpar_in = args['mqpar_in']
+
+exp_design = None
+m = mqparam.MQParam(mqpar_out, mqpar_in, exp_design,
+                    substitution_rx=args['substitution_rx'])
+if m.version != args['version']:
+    raise Exception('mqpar version is ' + m.version +
+                    '. Tool uses version {}.'.format(args['version']))
+
+# modify parameters, interactive mode if no mqpar_in was specified
+m.add_infiles([os.path.join(os.getcwd(), name) for name in fnames_with_ext], False)
+m.add_fasta_files(args['fasta_files'].split(','),
+                  identifier=args['identifier_parse_rule'],
+                  description=args['description_parse_rule'])
+
+m.write()
+
+# build and run MaxQuant command
+cmd = ['maxquant', mqpar_out]
+
+subprocess.run(cmd, check=True, cwd='./')
+
+# copy results to galaxy database
+for el in txt_output:
+    destination = args[el]
+    source = os.path.join(os.getcwd(), "combined", "txt", "{}.txt".format(el))
+    if destination != 'None' and os.path.isfile(source):
+        shutil.copy(source, destination)
+
+if args['mzTab'] != 'None':
+    source = os.path.join(os.getcwd(), "combined", "txt", "mzTab.mzTab")
+    if os.path.isfile(source):
+        shutil.copy(source, args['mzTab'])
+
+if args['output_all'] != 'None':
+    subprocess.run(('tar', '-zcf', args['output_all'], './combined/txt/'))
b
diff -r 000000000000 -r 256cc0e17454 test-data/BSA_min_21.mzXML
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/BSA_min_21.mzXML Sat Jul 20 04:53:23 2019 -0400
b
b'@@ -0,0 +1,2200 @@\n+<?xml version="1.0" encoding="ISO-8859-1"?>\n+<mzXML xmlns="http://sashimi.sourceforge.net/schema_revision/mzXML_3.2"\n+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n+       xsi:schemaLocation="http://sashimi.sourceforge.net/schema_revision/mzXML_3.2 http://sashimi.sourceforge.net/schema_revision/mzXML_3.2/mzXML_idx_3.2.xsd">\n+  <msRun scanCount="100" startTime="PT0.2912S" endTime="PT35.5222S">\n+    <parentFile fileName="file:///D:\\shared\\dglaetzer\\maxquant_tool\\test2\\two/BSA_min_21.raw"\n+                fileType="RAWData"\n+                fileSha1="52125693477eda68b26bcebf7d345c550c6d3ef0"/>\n+    <msInstrument msInstrumentID="1">\n+      <msManufacturer category="msManufacturer" value="Thermo Scientific"/>\n+      <msModel category="msModel" value="LTQ Orbitrap XL"/>\n+      <msIonisation category="msIonisation" value="nanoelectrospray"/>\n+      <msMassAnalyzer category="msMassAnalyzer" value="orbitrap"/>\n+      <msDetector category="msDetector" value="inductive detector"/>\n+      <software type="acquisition" name="Xcalibur" version="2.5.5 SP2"/>\n+    </msInstrument>\n+    <msInstrument msInstrumentID="2">\n+      <msManufacturer category="msManufacturer" value="Thermo Scientific"/>\n+      <msModel category="msModel" value="LTQ Orbitrap XL"/>\n+      <msIonisation category="msIonisation" value="nanoelectrospray"/>\n+      <msMassAnalyzer category="msMassAnalyzer" value="radial ejection linear ion trap"/>\n+      <msDetector category="msDetector" value="electron multiplier"/>\n+      <software type="acquisition" name="Xcalibur" version="2.5.5 SP2"/>\n+    </msInstrument>\n+    <dataProcessing centroided="1">\n+      <software type="conversion" name="ProteoWizard software" version="3.0.9706"/>\n+      <processingOperation name="Conversion to mzML"/>\n+      <software type="processing" name="ProteoWizard software" version="3.0.9706"/>\n+      <comment>Thermo/Xcalibur peak picking</comment>\n+    </dataProcessing>\n+    <scan num="1"\n+          scanType="Full"\n+          centroided="1"\n+          msLevel="1"\n+          peaksCount="704"\n+          polarity="+"\n+          retentionTime="PT0.2912S"\n+          lowMz="370.207275390625"\n+          highMz="1609.848266601563"\n+          basePeakMz="372.186614990234"\n+          basePeakIntensity="1.998346e06"\n+          totIonCurrent="2.1077186e07"\n+          msInstrumentID="1">\n+      <peaks compressionType="zlib"\n+             compressedLen="5188"\n+             precision="32"\n+             byteOrder="network"\n+             contentType="m/z-int">eJwNlXdYDvwXxpGIXu2l1FNGkaJUiMo453yfJ+OnSaKhXiNJJWWkaAhpb02KSshINGmJaKdJGkK9VFJk5tdfn+vc549zXedc97khX/Y8V4ArAflgzeZ5b4X8Ex50JDsE8n1OcrV/L4Z8fz7y9j8F+fF/afjba8hPWsrdcuIV5Bf1ExNuhQKRYFpvew8KpM7Tz4gZk2xiIulyUCDdZzj62QgK5h2gUP1aKJB3ZYJlPlDA6WSa1xAKnHMpaNkaKDgyQI5rPaDAR5n+jIZAgW8iecW0QUGcMS/0/SwoSMqjyE/8UDDYxlSlJuf9kmKHPMKgUMaCdWQGQqHsFt6W2W5QaBnIzbpwAwq9dlIlxx4K4ytY2D/boTBZks3NeAiFrQL0tMoKiuQ7GF8KQlHEUt78D0NQVKZBFKIAxWKJLC/OEorlllFkxSMoDhWhp82GUJwkSLZnxSb5gKwqz8Mj+TDyffQGHiWIkYuzLjz64Ew6e3/CY8k39OL9XCiRfs9sBfWgZJ4nm+ZqDyUKx2ir4wCUOMWRz797ocQrkZm8VoaSeG+2xvI0lCpEsNR7rlCqOEFtt/ZAqfclQzmNYihNPEdXvDlQmtxH92/ZQmlqCdXRJDumk9GAGpS+0qWQtUJQ+ncWl2caAGWKwVx+k49Qts6SVvVdgzIapz3rPKHMW5R71SYQyhJyyUtTHsqSrCli+SUouzxC+fnboFxOlTrW7YVyjjB5hCpDuaU4hbUXQfmpYnZU5TaUx98kn0EVKL+6j2ucugPKfx9nqk+uQIXMIYrf+Asq5OXo8vuPULGwha2ivVARfJtJVFVARUgTNzT6MTwR3syMd+yCJ3On047ci/Bk52M6l3UQniSpUmjffahUuE0BVpVQ+cWTvN1L4Oncd2RT1wJPQxsp2BzhmV0oWf+YCs88r5Hz/GR4luxPtz1+Q5XcejoYZgpV8v9x5eW+QpWnDDvF8YWqZHP6YrQFnnP6eJHBx+C5pzB9S5gNzxPmUcKOafD8sjHXml8RXsjGUFfYMLyQ96YuSVF4MXknPxlbqJYLoJd63lB9ailFePKg2svEcFV+KVR7+5Nj7xeojgkhWyFTqI5fxPYEWED1n1Lu/rocqJHcQbbMBGq4MeSgNhtqbEao+GsY1Lg1k+94O9ScquQ6CrZCjVcd1a7/B2oSPZmj5hyoSQ6jrTLvoOYPkbfXMqhNnUNPbzCoreSSRbMD1Ml3UfitU1BnO0SX+mWh7rIXt+xEF9TLbaT2Y9lQL29E9/l9oZ7TwjZLtUO94gDLuewP9ewFea96DfW779DZ9YFQf2QbWXVkQYOUIFlEeECDUjcv84c7NKQacw2ztaEh04buO5pDI0eX5/PlEDQqPiDPNYPQOH8bRdSIQ6NqPm1ON4TGlCyuvoMENCkksCm5xtCUqMKsE1SgKamcTNqnw8t5ybSjYBO8jGmiWJfX8PLSa'..b'NHRCj1upncp6xEbXPUmiVKB1nxGq6Kf0adS89yW3sJuodHpK6oRT1fo1U1pqD+sjVlHL7BS6eO8E0/DiahP4UvycCzasrqX+XDVr4RUzfJ8CVEg0bclBDf+l3zqI6GK3bT5Bz1320nXeigo5oGOx3k7vY7j9+7/2n</peaks>\n+    </scan>\n+  </msRun>\n+  <index name="scan">\n+    <offset id="1">1917</offset>\n+    <offset id="2">9424</offset>\n+    <offset id="3">14360</offset>\n+    <offset id="4">18439</offset>\n+    <offset id="5">22458</offset>\n+    <offset id="6">26385</offset>\n+    <offset id="7">29205</offset>\n+    <offset id="8">37722</offset>\n+    <offset id="9">41941</offset>\n+    <offset id="10">44317</offset>\n+    <offset id="11">48311</offset>\n+    <offset id="12">52139</offset>\n+    <offset id="13">56154</offset>\n+    <offset id="14">64532</offset>\n+    <offset id="15">65383</offset>\n+    <offset id="16">69045</offset>\n+    <offset id="17">72975</offset>\n+    <offset id="18">75614</offset>\n+    <offset id="19">79022</offset>\n+    <offset id="20">87581</offset>\n+    <offset id="21">90501</offset>\n+    <offset id="22">93065</offset>\n+    <offset id="23">95486</offset>\n+    <offset id="24">97717</offset>\n+    <offset id="25">99928</offset>\n+    <offset id="26">108098</offset>\n+    <offset id="27">112447</offset>\n+    <offset id="28">115533</offset>\n+    <offset id="29">118046</offset>\n+    <offset id="30">120113</offset>\n+    <offset id="31">123748</offset>\n+    <offset id="32">132140</offset>\n+    <offset id="33">135796</offset>\n+    <offset id="34">138376</offset>\n+    <offset id="35">141633</offset>\n+    <offset id="36">145590</offset>\n+    <offset id="37">148239</offset>\n+    <offset id="38">156729</offset>\n+    <offset id="39">159772</offset>\n+    <offset id="40">162343</offset>\n+    <offset id="41">165625</offset>\n+    <offset id="42">167531</offset>\n+    <offset id="43">171020</offset>\n+    <offset id="44">179417</offset>\n+    <offset id="45">183256</offset>\n+    <offset id="46">185204</offset>\n+    <offset id="47">188784</offset>\n+    <offset id="48">191705</offset>\n+    <offset id="49">200242</offset>\n+    <offset id="50">203051</offset>\n+    <offset id="51">206241</offset>\n+    <offset id="52">209376</offset>\n+    <offset id="53">213124</offset>\n+    <offset id="54">216660</offset>\n+    <offset id="55">225224</offset>\n+    <offset id="56">228456</offset>\n+    <offset id="57">230355</offset>\n+    <offset id="58">232081</offset>\n+    <offset id="59">234387</offset>\n+    <offset id="60">237086</offset>\n+    <offset id="61">246008</offset>\n+    <offset id="62">249052</offset>\n+    <offset id="63">252303</offset>\n+    <offset id="64">254108</offset>\n+    <offset id="65">258229</offset>\n+    <offset id="66">261306</offset>\n+    <offset id="67">270056</offset>\n+    <offset id="68">273107</offset>\n+    <offset id="69">276205</offset>\n+    <offset id="70">278441</offset>\n+    <offset id="71">280948</offset>\n+    <offset id="72">283995</offset>\n+    <offset id="73">293087</offset>\n+    <offset id="74">297029</offset>\n+    <offset id="75">300575</offset>\n+    <offset id="76">303864</offset>\n+    <offset id="77">307621</offset>\n+    <offset id="78">310545</offset>\n+    <offset id="79">319429</offset>\n+    <offset id="80">323075</offset>\n+    <offset id="81">326682</offset>\n+    <offset id="82">330374</offset>\n+    <offset id="83">332639</offset>\n+    <offset id="84">335653</offset>\n+    <offset id="85">345009</offset>\n+    <offset id="86">348399</offset>\n+    <offset id="87">349987</offset>\n+    <offset id="88">352823</offset>\n+    <offset id="89">356445</offset>\n+    <offset id="90">364892</offset>\n+    <offset id="91">368014</offset>\n+    <offset id="92">371687</offset>\n+    <offset id="93">373873</offset>\n+    <offset id="94">383076</offset>\n+    <offset id="95">386464</offset>\n+    <offset id="96">388199</offset>\n+    <offset id="97">390817</offset>\n+    <offset id="98">393876</offset>\n+    <offset id="99">396801</offset>\n+    <offset id="100">405732</offset>\n+  </index>\n+  <indexOffset>408106</indexOffset>\n+  <sha1>fc6ffa16c1a8c2a4794d4fbb0b345d08e73fe577</sha1>\n+</mzXML>\n'
b
diff -r 000000000000 -r 256cc0e17454 test-data/BSA_min_22
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/BSA_min_22 Sat Jul 20 04:53:23 2019 -0400
b
b'@@ -0,0 +1,2190 @@\n+<?xml version="1.0" encoding="ISO-8859-1"?>\n+<mzXML xmlns="http://sashimi.sourceforge.net/schema_revision/mzXML_3.2"\n+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n+       xsi:schemaLocation="http://sashimi.sourceforge.net/schema_revision/mzXML_3.2 http://sashimi.sourceforge.net/schema_revision/mzXML_3.2/mzXML_idx_3.2.xsd">\n+  <msRun scanCount="100" startTime="PT0.1508S" endTime="PT35.9553S">\n+    <parentFile fileName="file:///D:\\shared\\dglaetzer\\maxquant_tool\\test2\\two/BSA_min_22.raw"\n+                fileType="RAWData"\n+                fileSha1="670beb3b6f7b8ee6c02f3a44c53017346731d382"/>\n+    <msInstrument msInstrumentID="1">\n+      <msManufacturer category="msManufacturer" value="Thermo Scientific"/>\n+      <msModel category="msModel" value="LTQ Orbitrap XL"/>\n+      <msIonisation category="msIonisation" value="nanoelectrospray"/>\n+      <msMassAnalyzer category="msMassAnalyzer" value="orbitrap"/>\n+      <msDetector category="msDetector" value="inductive detector"/>\n+      <software type="acquisition" name="Xcalibur" version="2.5.5 SP2"/>\n+    </msInstrument>\n+    <msInstrument msInstrumentID="2">\n+      <msManufacturer category="msManufacturer" value="Thermo Scientific"/>\n+      <msModel category="msModel" value="LTQ Orbitrap XL"/>\n+      <msIonisation category="msIonisation" value="nanoelectrospray"/>\n+      <msMassAnalyzer category="msMassAnalyzer" value="radial ejection linear ion trap"/>\n+      <msDetector category="msDetector" value="electron multiplier"/>\n+      <software type="acquisition" name="Xcalibur" version="2.5.5 SP2"/>\n+    </msInstrument>\n+    <dataProcessing centroided="1">\n+      <software type="conversion" name="ProteoWizard software" version="3.0.9706"/>\n+      <processingOperation name="Conversion to mzML"/>\n+      <software type="processing" name="ProteoWizard software" version="3.0.9706"/>\n+      <comment>Thermo/Xcalibur peak picking</comment>\n+    </dataProcessing>\n+    <scan num="1"\n+          scanType="Full"\n+          centroided="1"\n+          msLevel="1"\n+          peaksCount="796"\n+          polarity="+"\n+          retentionTime="PT0.1508S"\n+          lowMz="370.200469970703"\n+          highMz="1629.619750976563"\n+          basePeakMz="467.559143066406"\n+          basePeakIntensity="1.43900225e06"\n+          totIonCurrent="2.4422036e07"\n+          msInstrumentID="1">\n+      <peaks compressionType="zlib"\n+             compressedLen="5854"\n+             precision="32"\n+             byteOrder="network"\n+             contentType="m/z-int">eJwNl2c8138XxomySsnefik0qQhJ65zz+f7QslLSlqYoqQhZRZE/sjJC0roVpWWWWUZljyi0jKYRpXV79H6d6zw5D65zvc6BHMXrdHtGEOTYzqYTlWKQ4+FJf6wjIMfrLB16ORVy/Ly57PgayDlTSLZuzZAT/YoubzwPOQkjVHjjHuQkzeIH/jaBnGu7KV9qJuT8cKS8Fg3IFXSlB5uPQa78e368zl/IVaxg+u8eQa5qJCdq+hBy1b+yxfv2QK6fPpUcG9Pj1nFSi2oh95cM2yA5CHkKJ2n/ynDI0+aRhdVkyDtWQxuk0yHP+yDdaz8PeReq6MqaOshrVuB0NryFfHl7NuVTGeQr8qiw+gTkR85lJ8Z5QH5CGe0uPwMFygb0A+dDQdYI2U6XgYJ3ymTS1QGFKrv5T5KfQqFqNxtnMhEKee/IdHE1FDqk8oXkL0Nhog41R8iOsYOl1VyBwta9nPx6PjxSzGCitc/hkYodW+5RBY/UTehS5B54FOfLveSWwKNkO3IPqoLH8j30UUINHit8ZjE7g+GxSgb5GfnC4y1LaaVWAjz2TmMHMtLgcXwAc5M9CI+TjClS7TgUqSKTOrIBitRCueJXklDEk2LyEeJQ5O1ENpY2UOSTYGbT8h2KkmbQpaB8KLo4ygwEhaHonzi3p8cRihV1KE4iA4o1QvkrT+yD4u07KeiSGBT7TOFqu05AcUIBG69QAMUpP7hJzqFQ3K/FCvYjlCgvYLPD3o1xhM3eUQklnD5tbnsOJfbTKUzfC0q8ctmmnNVQ4n2NnS68BiVJFrQ58imUJK8nv/RMKLm8m7uwY0z/7cKW346AUlVTOq4XAqXT69medh6Uhr1i8uVhUBr/lJnt1ILS/gxy9HoCZUoRFFF/D8pULCjsaieUXfwfZ7m1Bspe97Ckv4FQrq7A3FwToTw+iKU+MYHy8htsfuxxKO//j82omQRPlT/wDRJz4WmiHWtPOAVPf7mRv8YXqFA2oSTHUqhQmUanTi6CCtVO9s2iCypOSLJzauugIvEVBdcGQ8XFDXTXxwUq1bvN1jpcgUp+FqV1rIDKEzzm/DQbKmNmMeFZT6AyYSbFTP8ClSnWfMl90lA1dRIleiRDlVIw5R8SgSrV/yjjzAKoUp9Lm0cvQ5WGDRNK+jXGUsreOA+qDt8g68MPocozgi36EwhVMRq0WFkRqpIEKKxbB6pl62jPJF2oVkmmSK1/UO3xh9z3LoRqbxuz1QueQrV/KB3svgXVsefYvKXXoTpen5NbGAzVf0o5x6DJ8EzpKlOCMnjmtotq1dXgmVcVd/D2EDzzLqNvzXnwLDGK3kWO6RdtKFrgMDxr7qLt3bnw7I8Vhdvvg+c7jJjYLlt4keLLlVx5ADXK1tQ9vAtqVBdwbwO+QI16B4u+fhRqND6xEOm1UDP9Kg20u0NNwnQzqU8tUJN0ni3elAg1t96'..b'frhO0Chcj624c6xuW44879rxIWwe5hTY8KrQI+Z6ff7CzgdpOi9zfG0A9o4OVBX04qZ9P8yMaUbhmMf1g0Yei9JWU81qKs85lbPv7KZxbkMfy4iyc95VR06oilBqe4S/VJiitV1OD0wmUdWRwbGT1/6SMAX4=</peaks>\n+    </scan>\n+  </msRun>\n+  <index name="scan">\n+    <offset id="1">1917</offset>\n+    <offset id="2">10314</offset>\n+    <offset id="3">14484</offset>\n+    <offset id="4">19915</offset>\n+    <offset id="5">24049</offset>\n+    <offset id="6">26515</offset>\n+    <offset id="7">29743</offset>\n+    <offset id="8">38208</offset>\n+    <offset id="9">42590</offset>\n+    <offset id="10">46568</offset>\n+    <offset id="11">50805</offset>\n+    <offset id="12">52873</offset>\n+    <offset id="13">58040</offset>\n+    <offset id="14">66800</offset>\n+    <offset id="15">71095</offset>\n+    <offset id="16">75640</offset>\n+    <offset id="17">77396</offset>\n+    <offset id="18">80771</offset>\n+    <offset id="19">83862</offset>\n+    <offset id="20">91950</offset>\n+    <offset id="21">95476</offset>\n+    <offset id="22">97015</offset>\n+    <offset id="23">100343</offset>\n+    <offset id="24">104219</offset>\n+    <offset id="25">105921</offset>\n+    <offset id="26">114407</offset>\n+    <offset id="27">115239</offset>\n+    <offset id="28">118369</offset>\n+    <offset id="29">119730</offset>\n+    <offset id="30">122087</offset>\n+    <offset id="31">126187</offset>\n+    <offset id="32">134469</offset>\n+    <offset id="33">137380</offset>\n+    <offset id="34">140395</offset>\n+    <offset id="35">142195</offset>\n+    <offset id="36">146250</offset>\n+    <offset id="37">147804</offset>\n+    <offset id="38">156053</offset>\n+    <offset id="39">157941</offset>\n+    <offset id="40">160678</offset>\n+    <offset id="41">163217</offset>\n+    <offset id="42">166119</offset>\n+    <offset id="43">169056</offset>\n+    <offset id="44">177367</offset>\n+    <offset id="45">178987</offset>\n+    <offset id="46">181947</offset>\n+    <offset id="47">185515</offset>\n+    <offset id="48">188232</offset>\n+    <offset id="49">189982</offset>\n+    <offset id="50">199249</offset>\n+    <offset id="51">201017</offset>\n+    <offset id="52">202782</offset>\n+    <offset id="53">203875</offset>\n+    <offset id="54">207454</offset>\n+    <offset id="55">210548</offset>\n+    <offset id="56">219477</offset>\n+    <offset id="57">223038</offset>\n+    <offset id="58">225876</offset>\n+    <offset id="59">233946</offset>\n+    <offset id="60">234776</offset>\n+    <offset id="61">238403</offset>\n+    <offset id="62">241997</offset>\n+    <offset id="63">244836</offset>\n+    <offset id="64">247880</offset>\n+    <offset id="65">255494</offset>\n+    <offset id="66">257770</offset>\n+    <offset id="67">266705</offset>\n+    <offset id="68">269871</offset>\n+    <offset id="69">273183</offset>\n+    <offset id="70">281555</offset>\n+    <offset id="71">282721</offset>\n+    <offset id="72">286189</offset>\n+    <offset id="73">288371</offset>\n+    <offset id="74">289922</offset>\n+    <offset id="75">297777</offset>\n+    <offset id="76">298854</offset>\n+    <offset id="77">302643</offset>\n+    <offset id="78">304110</offset>\n+    <offset id="79">311913</offset>\n+    <offset id="80">315935</offset>\n+    <offset id="81">318836</offset>\n+    <offset id="82">320953</offset>\n+    <offset id="83">323219</offset>\n+    <offset id="84">331302</offset>\n+    <offset id="85">335375</offset>\n+    <offset id="86">338998</offset>\n+    <offset id="87">347061</offset>\n+    <offset id="88">348359</offset>\n+    <offset id="89">356606</offset>\n+    <offset id="90">359875</offset>\n+    <offset id="91">362167</offset>\n+    <offset id="92">370394</offset>\n+    <offset id="93">372614</offset>\n+    <offset id="94">375149</offset>\n+    <offset id="95">382972</offset>\n+    <offset id="96">385759</offset>\n+    <offset id="97">393892</offset>\n+    <offset id="98">401021</offset>\n+    <offset id="99">404265</offset>\n+    <offset id="100">406676</offset>\n+  </index>\n+  <indexOffset>409039</indexOffset>\n+  <sha1>c2b383b781920c60c1ac034edee96ff0ab830715</sha1>\n+</mzXML>\n'
b
diff -r 000000000000 -r 256cc0e17454 test-data/bsa.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/bsa.fasta Sat Jul 20 04:53:23 2019 -0400
b
@@ -0,0 +1,12 @@
+>bsa sp|P02769|ALBU_BOVIN Serum albumin OS=Bos taurus OX=9913 GN=ALB PE=1 SV=4
+MKWVTFISLLLLFSSAYSRGVFRRDTHKSEIAHRFKDLGEEHFKGLVLIAFSQYLQQCPF
+DEHVKLVNELTEFAKTCVADESHAGCEKSLHTLFGDELCKVASLRETYGDMADCCEKQEP
+ERNECFLSHKDDSPDLPKLKPDPNTLCDEFKADEKKFWGKYLYEIARRHPYFYAPELLYY
+ANKYNGVFQECCQAEDKGACLLPKIETMREKVLASSARQRLRCASIQKFGERALKAWSVA
+RLSQKFPKAEFVEVTKLVTDLTKVHKECCHGDLLECADDRADLAKYICDNQDTISSKLKE
+CCDKPLLEKSHCIAEVEKDAIPENLPPLTADFAEDKDVCKNYQEAKDAFLGSFLYEYSRR
+HPEYAVSVLLRLAKEYEATLEECCAKDDPHACYSTVFDKLKHLVDEPQNLIKQNCDQFEK
+LGEYGFQNALIVRYTRKVPQVSTPTLVEVSRSLGKVGTRCCTKPESERMPCTEDYLSLIL
+NRLCVLHEKTPVSEKVTKCCTESLVNRRPCFSALTPDETYVPKAFDEKLFTFHADICTLP
+DTEKQIKKQTALVELLKHKPKATEEQLKTVMENFVAFVDKCCAADDKEACFAVEGPKLVV
+STQTALA
b
diff -r 000000000000 -r 256cc0e17454 test-data/exp_design_test.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/exp_design_test.txt Sat Jul 20 04:53:23 2019 -0400
b
@@ -0,0 +1,3 @@
+Name Fraction Experiment PTM
+QEplus021874 3 1
+QEplus021876 4 2
b
diff -r 000000000000 -r 256cc0e17454 test-data/template.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/template.xml Sat Jul 20 04:53:23 2019 -0400
b
b'@@ -0,0 +1,428 @@\n+<?xml version="1.0" encoding="utf-8"?>\n+<MaxQuantParams xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n+   <fastaFiles>\n+      <FastaFileInfo>\n+         <fastaFilePath></fastaFilePath>\n+         <identifierParseRule>>(.*)</identifierParseRule>\n+         <descriptionParseRule></descriptionParseRule>\n+         <taxonomyParseRule></taxonomyParseRule>\n+         <variationParseRule></variationParseRule>\n+         <modificationParseRule></modificationParseRule>\n+         <taxonomyId></taxonomyId>\n+      </FastaFileInfo>\n+   </fastaFiles>\n+   <fastaFilesProteogenomics>\n+   </fastaFilesProteogenomics>\n+   <fastaFilesFirstSearch>\n+   </fastaFilesFirstSearch>\n+   <fixedSearchFolder></fixedSearchFolder>\n+   <andromedaCacheSize>350000</andromedaCacheSize>\n+   <advancedRatios>True</advancedRatios>\n+   <pvalThres>0.005</pvalThres>\n+   <neucodeRatioBasedQuantification>False</neucodeRatioBasedQuantification>\n+   <neucodeStabilizeLargeRatios>False</neucodeStabilizeLargeRatios>\n+   <rtShift>False</rtShift>\n+   <separateLfq>False</separateLfq>\n+   <lfqStabilizeLargeRatios>True</lfqStabilizeLargeRatios>\n+   <lfqRequireMsms>True</lfqRequireMsms>\n+   <decoyMode>revert</decoyMode>\n+   <boxCarMode>all</boxCarMode>\n+   <includeContaminants>True</includeContaminants>\n+   <maxPeptideMass>4600</maxPeptideMass>\n+   <epsilonMutationScore>True</epsilonMutationScore>\n+   <mutatedPeptidesSeparately>True</mutatedPeptidesSeparately>\n+   <proteogenomicPeptidesSeparately>True</proteogenomicPeptidesSeparately>\n+   <minDeltaScoreUnmodifiedPeptides>0</minDeltaScoreUnmodifiedPeptides>\n+   <minDeltaScoreModifiedPeptides>6</minDeltaScoreModifiedPeptides>\n+   <minScoreUnmodifiedPeptides>0</minScoreUnmodifiedPeptides>\n+   <minScoreModifiedPeptides>40</minScoreModifiedPeptides>\n+   <secondPeptide>True</secondPeptide>\n+   <matchBetweenRuns>False</matchBetweenRuns>\n+   <matchUnidentifiedFeatures>False</matchUnidentifiedFeatures>\n+   <matchBetweenRunsFdr>False</matchBetweenRunsFdr>\n+   <dependentPeptides>False</dependentPeptides>\n+   <dependentPeptideFdr>0</dependentPeptideFdr>\n+   <dependentPeptideMassBin>0</dependentPeptideMassBin>\n+   <dependentPeptidesBetweenRuns>False</dependentPeptidesBetweenRuns>\n+   <dependentPeptidesWithinExperiment>False</dependentPeptidesWithinExperiment>\n+   <dependentPeptidesWithinParameterGroup>False</dependentPeptidesWithinParameterGroup>\n+   <dependentPeptidesRestrictFractions>False</dependentPeptidesRestrictFractions>\n+   <dependentPeptidesFractionDifference>0</dependentPeptidesFractionDifference>\n+   <msmsConnection>False</msmsConnection>\n+   <ibaq>False</ibaq>\n+   <top3>False</top3>\n+   <independentEnzymes>False</independentEnzymes>\n+   <useDeltaScore>False</useDeltaScore>\n+   <splitProteinGroupsByTaxonomy>False</splitProteinGroupsByTaxonomy>\n+   <taxonomyLevel>Species</taxonomyLevel>\n+   <avalon>False</avalon>\n+   <nModColumns>3</nModColumns>\n+   <ibaqLogFit>False</ibaqLogFit>\n+   <razorProteinFdr>True</razorProteinFdr>\n+   <deNovoSequencing>False</deNovoSequencing>\n+   <deNovoVarMods>True</deNovoVarMods>\n+   <massDifferenceSearch>False</massDifferenceSearch>\n+   <isotopeCalc>False</isotopeCalc>\n+   <writePeptidesForSpectrumFile></writePeptidesForSpectrumFile>\n+   <intensityPredictionsFile>\n+   </intensityPredictionsFile>\n+   <minPepLen>7</minPepLen>\n+   <psmFdrCrosslink>0.01</psmFdrCrosslink>\n+   <peptideFdr>0.01</peptideFdr>\n+   <proteinFdr>0.01</proteinFdr>\n+   <siteFdr>0.01</siteFdr>\n+   <minPeptideLengthForUnspecificSearch>8</minPeptideLengthForUnspecificSearch>\n+   <maxPeptideLengthForUnspecificSearch>25</maxPeptideLengthForUnspecificSearch>\n+   <useNormRatiosForOccupancy>True</useNormRatiosForOccupancy>\n+   <minPeptides>1</minPeptides>\n+   <minRazorPeptides>1</minRazorPeptides>\n+   <minUniquePeptides>0</minUniquePeptides>\n+   <useCounterparts>False</useCounterparts>\n+   <advancedSiteIntensities>True</advancedSiteIntensities>\n+   <customProteinQuantification>Fa'..b'nceInPpm>\n+         <Deisotope>False</Deisotope>\n+         <Topx>8</Topx>\n+         <TopxInterval>100</TopxInterval>\n+         <HigherCharges>True</HigherCharges>\n+         <IncludeWater>True</IncludeWater>\n+         <IncludeAmmonia>True</IncludeAmmonia>\n+         <DependentLosses>True</DependentLosses>\n+         <Recalibration>False</Recalibration>\n+      </msmsParams>\n+   </msmsParamsArray>\n+   <fragmentationParamsArray>\n+      <fragmentationParams>\n+         <Name>CID</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>HCD</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>ETD</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>PQD</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>ETHCD</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>ETCID</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>UVPD</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+      <fragmentationParams>\n+         <Name>Unknown</Name>\n+         <Connected>False</Connected>\n+         <ConnectedScore0>1</ConnectedScore0>\n+         <ConnectedScore1>1</ConnectedScore1>\n+         <ConnectedScore2>1</ConnectedScore2>\n+         <InternalFragments>False</InternalFragments>\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\n+      </fragmentationParams>\n+   </fragmentationParamsArray>\n+</MaxQuantParams>\n'
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/allPeptides.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/allPeptides.txt Sat Jul 20 04:53:23 2019 -0400
[
b'@@ -0,0 +1,408 @@\n+Raw file\tType\tCharge\tm/z\tMass\tUncalibrated m/z\tResolution\tNumber of data points\tNumber of scans\tNumber of isotopic peaks\tPIF\tMass fractional part\tMass deficit\tMass precision [ppm]\tMax intensity m/z 0\tRetention time\tRetention length\tRetention length (FWHM)\tMin scan number\tMax scan number\tIdentified\tMS/MS IDs\tSequence\tLength\tModifications\tModified sequence\tProteins\tScore\tIntensity\tIntensities\tIsotope pattern\tMS/MS Count\tMSMS Scan Numbers\tMSMS Isotope Indices\r\n+BSA_min_21\tMULTI\t1\t847.38839\t846.38111\t847.38839\tNaN\t7\t6\t2\t\t0.381109\t-0.0482261469993546\t1.201046\t847.387791819248\t0.081\t14.703\t0\t1\t43\t\t-1\t \t0\t \t \t \tNaN\t19113\t0;6793.9501953125;17268.0778808594;11640.9873046875;6699.59985351563;5769.13671875;0;0\t13493.8720703125;4010.92431640625\t0\t\t\r\n+BSA_min_21\tMULTI\t2\t723.80749\t1445.6004\t723.80749\tNaN\t7\t6\t2\t\t0.600433\t-0.104543113917543\t2.322806\t723.806797032529\t0.117\t14.703\t0\t1\t43\t\t-1\t \t0\t \t \t \tNaN\t39557\t0;8110.6953125;19435.744140625;29747.7436523438;30690.26953125;13858.6052246094;0;0\t22715.69921875;8219.908203125\t0\t\t\r\n+BSA_min_21\tMULTI\t2\t752.78847\t1503.5624\t752.78847\tNaN\t8\t4\t2\t\t0.562393\t-0.169245917260469\t0.718395\t752.788732084711\t0.073\t10.458\t0\t1\t31\t\t-1\t \t0\t \t \t \tNaN\t29387\t0;10127.0834960938;21733.4140625;15751.8271484375;11119.455078125;0\t12711.455078125;9021.958984375\t0\t\t\r\n+BSA_min_21\tMULTI\t2\t457.25346\t912.49237\t457.25346\tNaN\t16\t10\t2\t\t0.492374\t0.032627612403644\t0.393188\t457.253359375054\t0.155\t22.841\t0\t1\t66\t\t-1\t \t0\t \t \t \tNaN\t59467\t0;3735.79150390625;8995.0302734375;35687.0673828125;53174.9091796875;53788.833984375;43220.4130859375;26300.759765625;15439.015625;9543.25659179688;0;0\t39425.62109375;16446.333984375\t1\t27\t0\r\n+BSA_min_21\tMULTI\t2\t485.29192\t968.56929\t485.29192\tNaN\t22\t13\t3\t\t0.569295\t0.0837527808154164\t0.60771\t485.291493836352\t0.158\t29.17\t0\t1\t84\t\t-1\t \t0\t \t \t \tNaN\t35092\t0;6617.423828125;22640.4897460938;31257.1982421875;34228.8039550781;35066.3161621094;22591.3203125;25334.1130371094;10954.4208984375;10387.701171875;5409.716796875;5679.3515625;3629.8916015625;3413.14501953125;0\t22239.669921875;10595.8701171875;3631.79956054688\t0\t\t\r\n+BSA_min_21\tMULTI\t1\t609.34313\t608.33585\t609.34313\tNaN\t15\t10\t2\t\t0.33585\t0.0160151214452071\t0.700196\t609.343255068747\t0.14\t22.841\t0\t1\t66\t\t-1\t \t0\t \t \t \tNaN\t16927\t0;9840.98266601563;11124.4873046875;15963.8212890625;11129.7348632813;11067.9287109375;5360.87646484375;5169.17236328125;5964.7109375;5728.80078125;4231.7958984375;0\t9241.0615234375;7473.39013671875\t0\t\t\r\n+BSA_min_21\tMULTI\t2\t693.81484\t1385.6151\t693.81484\tNaN\t26\t13\t4\t\t0.615131\t-0.062251707645828\t0.485084\t693.814719759074\t0.18\t29.17\t0\t1\t84\t\t-1\t \t0\t \t \t \tNaN\t80275\t0;7327.79443359375;24553.93359375;45629.8364257813;58990.1015625;78488.80859375;45947.73046875;28370.5776367188;21553.2905273438;7933.5;5035.5166015625;6192.29931640625;0;0;0\t34374.92578125;27593.28515625;12015.12109375;4505.4765625\t2\t20;38\t0;1\r\n+BSA_min_21\tMULTI\t2\t752.31297\t1502.6114\t752.31297\tNaN\t9\t6\t2\t\t0.611394\t-0.119807465702706\t0.803042\t752.312709646655\t0.121\t14.703\t0\t1\t43\t\t-1\t \t0\t \t \t \tNaN\t39800\t0;4285.77001953125;11859.416015625;29434.9091796875;28467.7021484375;21782.734375;7783.14453125;0\t22226.8125;12791.9208984375\t1\t36\t0\r\n+BSA_min_21\tMULTI\t4\t835.11285\t3336.4223\t835.11285\tNaN\t18\t7\t3\t\t0.4223\t-0.152454285480871\t0.475471\t835.363566648992\t0.151\t16.655\t0\t1\t48\t\t-1\t \t0\t \t \t \tNaN\t63753\t0;17149.9038085938;25055.0866699219;28565.6630859375;44055.3051757813;40159.6279296875;23483.638671875;9918.11328125;0\t0;20459.83203125;17639.462890625;9406.8017578125\t1\t41\t2\r\n+BSA_min_21\tMULTI\t1\t1129.4643\t1128.457\t1129.4643\tNaN\t7\t4\t2\t\t0.456983\t-0.102107204594404\t1.365982\t1129.46329424631\t0.127\t10.543\t0\t7\t37\t\t-1\t \t0\t \t \t \tNaN\t16363\t0;7075.529296875;14889.8579101563;13879.3891601563;10506.4604492188;0\t8219.6025390625;7768.6494140625\t0\t\t\r\n+BSA_min_21\tMULTI\t2\t529.23526\t1056.456\t529.23526\tNaN\t11\t6\t2\t\t0.45597\t-0.069999862038685\t0.525352\t529.23524702789\t0.144\t14.61\t0\t7\t48\t\t-1\t \t0\t \t \t \tNaN\t40116\t0;20066.6826171875;28887.369140625;34706.0693359375;23093.0561523438;20422.7763671875;4860.9877929'..b'8.3828125;712827.775390625;711122.657226563;657815.7890625;639986.428710938;568138.3671875;498523.453125;0\t816282.4375;246289.265625;56386.8359375\t0\t\t\r\n+BSA_min_22\tMULTI\t2\t687.86486\t1373.7152\t687.86486\tNaN\t34\t19\t2\t\t0.715161\t0.043251617335045\t0.408298\t687.864771258339\t0.45\t30.39\t0\t19\t97\t\t-1\t \t0\t \t \t \tNaN\t153820\t0;17070.9765625;15239.01953125;37858.7900390625;49730.232421875;83999.640625;108620.02734375;78961.19921875;68455.525390625;103047.68359375;76193.4423828125;60915.087890625;103987.82421875;80639.453125;96846.3671875;59798.15625;50967.80859375;118319.59375;92429.69140625;0;0\t80212.90625;56705.4921875\t1\t81\t0\r\n+BSA_min_22\tMULTI\t2\t691.87178\t1381.729\t691.87178\tNaN\t27\t17\t2\t\t0.729007\t0.0534120610388982\t0.643739\t691.872041785377\t0.504\t26.16\t0\t31\t97\t\t-1\t \t0\t \t \t \tNaN\t89423\t0;31056.8515625;24916.55859375;42320.4921875;33702.22265625;30072.40234375;54384.478515625;39607.3984375;67881.76171875;70223.21484375;56608.279296875;67995.814453125;48903.1484375;61068.0712890625;78135.9296875;60122.98046875;34629.55859375;20974.099609375;0\t45579.89453125;44678.484375\t0\t\t\r\n+BSA_min_22\tMULTI\t2\t760.30996\t1518.6054\t760.30996\tNaN\t38\t21\t2\t\t0.605373\t-0.133185204643723\t0.494963\t760.310131649569\t0.405\t34.473\t0\t7\t97\t\t-1\t \t0\t \t \t \tNaN\t207300\t0;36578.73828125;35192.98046875;64308.9140625;105542.3984375;139310.45703125;114743.15234375;104284.55078125;173741.90625;124384.26171875;122811.6171875;118852.75390625;119179.0390625;95637.0078125;153314.75390625;109609.643554688;90966.337890625;97841.005859375;109332.62109375;95516.654296875;67384.787109375;43305.8515625;0\t130571.7890625;63446.5625\t0\t\t\r\n+BSA_min_22\tMULTI\t2\t771.36091\t1540.7073\t771.36091\tNaN\t4\t2\t2\t\t0.707265\t-0.0414607402663023\t0.934804\t771.862096841899\t0.582\t3.252\t0\t94\t97\t\t-1\t \t0\t \t \t \tNaN\t90784\t0;51686.912109375;66223.453125;0\t30713.21875;35510.234375\t0\t\t\r\n+BSA_min_22\tMULTI\t1\t784.34691\t783.33963\t784.34691\tNaN\t30\t15\t2\t\t0.339634\t-0.0607024155548288\t2.253709\t784.349756464299\t0.383\t22.026\t0\t43\t97\t\t-1\t \t0\t \t \t \tNaN\t259480\t0;70757.70703125;189261.94140625;222351.78515625;199627.3203125;236004.41796875;230515.21875;190031.2265625;175600.515625;145150.48046875;144838.58203125;131776.0390625;109370.369140625;100637.03515625;105928.84375;90421.66015625;0\t176021.15625;68246.65625\t0\t\t\r\n+BSA_min_22\tMULTI\t1\t794.64688\t793.63961\t794.64688\tNaN\t30\t15\t2\t\t0.639606\t0.2345314189688\t2.099521\t794.643543730692\t0.384\t22.026\t0\t43\t97\t\t-1\t \t0\t \t \t \tNaN\t238400\t0;75799.166015625;182819.57421875;205794.7265625;190388.55078125;216829.5625;232016.9453125;192153.88671875;159977.91015625;138327.91796875;133145.87890625;134100.47265625;98902.771484375;91682.572265625;94544.208984375;90000.30859375;0\t154234.703125;77830.1171875\t0\t\t\r\n+BSA_min_22\tMULTI\t2\t882.35364\t1762.6927\t882.35364\tNaN\t37\t10\t4\t\t0.692728\t-0.158110717070485\t0.258722\t882.3537934524\t0.506\t13.317\t0\t66\t97\t\t-1\t \t0\t \t \t \tNaN\t589450\t0;124034.1953125;163759.890625;282199.0859375;462152.302734375;567479.9140625;517910.6875;574728.921875;462919.96484375;487479.03125;390846.802734375;0\t260553.25;218559.125;96019.7890625;50340.6796875\t2\t79;76\t0;1\r\n+BSA_min_22\tMULTI\t1\t885.46037\t884.4531\t885.46037\tNaN\t30\t15\t2\t\t0.453095\t0.00624667122758638\t0.223453\t885.460184927629\t0.523\t22.026\t0\t43\t97\t\t-1\t \t0\t \t \t \tNaN\t461250\t0;113598.3125;268971.296875;273512.21875;327821.2734375;293932.546875;284912.0546875;317776.6875;276913.546875;282582.9375;309678.84375;315305.8359375;341380.8984375;412443.2890625;350983.1953125;333208.1015625;0\t311737.5;106428.734375\t0\t\t\r\n+BSA_min_22\tMULTI\t2\t891.32977\t1780.645\t891.32977\tNaN\t7\t4\t3\t\t0.644993\t-0.214103988484794\t1.708541\t891.330602133011\t0.564\t5.366\t0\t88\t97\t\t-1\t \t0\t \t \t \tNaN\t108510\t0;18189.900390625;36413.9580078125;95086.095703125;33709.892578125;0\t54638.015625;26095.5859375;17093.90234375\t0\t\t\r\n+BSA_min_22\tMULTI\t1\t998.47572\t997.46844\t998.47572\tNaN\t8\t5\t2\t\t0.468444\t-0.0303914675558872\t0.989651\t998.476134677568\t0.575\t6.3\t0\t86\t97\t\t-1\t \t0\t \t \t \tNaN\t68746\t0;24384.458984375;29209.26171875;59130.58984375;43881.052734375;60372.1484375;0\t43851.453125;18626.490234375\t0\t\t\r\n'
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/evidence.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/evidence.txt Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,11 @@
+Sequence Length Modifications Modified sequence Oxidation (M) Probabilities Oxidation (M) Score Diffs Oxidation (M) Missed cleavages Proteins Leading proteins Leading razor protein Type Raw file Fraction Experiment MS/MS m/z Charge m/z Mass Resolution Uncalibrated - Calibrated m/z [ppm] Uncalibrated - Calibrated m/z [Da] Mass error [ppm] Mass error [Da] Uncalibrated mass error [ppm] Uncalibrated mass error [Da] Max intensity m/z 0 Retention time Retention length Calibrated retention time Calibrated retention time start Calibrated retention time finish Retention time calibration Match time difference Match m/z difference Match q-value Match score Number of data points Number of scans Number of isotopic peaks PIF Fraction of total spectrum Base peak fraction PEP MS/MS count MS/MS scan number Score Delta score Combinatorics Intensity Reverse Potential contaminant id Protein group IDs Peptide ID Mod. peptide ID MS/MS IDs Best MS/MS AIF MS/MS IDs Oxidation (M) site IDs
+DDPHACYSTVFDK 13 Unmodified _DDPHACYSTVFDK_ 0 0 CON__P02769;bsa CON__P02769 CON__P02769 MULTI-MSMS BSA_min_21 1 BSA_min_21.mzXML 777.835021972656 2 777.830105 1553.64566 NaN 0 0 0.83472 0.00064927 0.83472 0.00064927 777.830735936543 0.47149 0.26748 0.47149 0.29786 0.56534 0 10 7 2 0 0 0 0.0087938 1 82 0 0 1 32419 + 0 0 0 0 0 0
+ECCHGDLLECADDR 14 Unmodified _ECCHGDLLECADDR_ 0 0 CON__P02769;bsa CON__P02769 CON__P02769 MULTI-MSMS BSA_min_22 2 BSA_min_22.mzXML 584.229736328125 3 583.892361 1748.65525 NaN 0 0 -1.2 -0.00070066 -1.2 -0.00070066 583.891878608632 0.42243 0.40142 0.42243 0.19137 0.59279 0 52 16 4 0 0 0 0.012255 2 60 4.06 4.06 1 339840 + 1 0 1 1 1;2 1
+ECCHGDLLECADDR 14 Unmodified _ECCHGDLLECADDR_ 0 0 CON__P02769;bsa CON__P02769 CON__P02769 MULTI-MSMS BSA_min_22 2 BSA_min_22.mzXML 875.332336425781 2 875.334903 1748.65525 NaN 0 0 0.26945 0.00023586 0.26945 0.00023586 875.335151892134 0.508 0.18103 0.508 0.41176 0.59279 0 16 8 3 0 0 0 0.012255 1 90 3.6449 3.6449 1 145520 + 2 0 1 1 3 3
+GCTTTNSPSTPCQNCSR 17 Unmodified _GCTTTNSPSTPCQNCSR_ 0 0 CON__Q6IFU6 CON__Q6IFU6 CON__Q6IFU6 MSMS BSA_min_21 1 BSA_min_21.mzXML 964.384521484375 2 964.388198 1926.76184 NaN NaN NaN NaN NaN NaN NaN NaN 0.26375 1 0.26375 -0.23625 0.76375 0 0 0 0 0.016011 1 45 0 0 1 + 3 4 2 2 4 4
+LGQYTSPVAK 10 Unmodified _LGQYTSPVAK_ 0 0 CON__P01030;CON__ENSEMBL:ENSBTAP00000007350 CON__P01030 CON__P01030 MSMS BSA_min_21 1 BSA_min_21.mzXML 532.293029785156 2 532.292756 1062.57096 NaN NaN NaN NaN NaN NaN NaN NaN 0.057288 1 0.057288 -0.44271 0.55729 6.9389E-18 0 0 0 0.0074222 1 10 9.2141 9.2141 1 + 4 1 3 3 5 5
+TSDANINWNNLK 12 Unmodified _TSDANINWNNLK_ 0 0 CON__Q29443;CON__Q0IIK2 CON__Q29443 CON__Q29443 MULTI-MSMS BSA_min_21 1 BSA_min_21.mzXML 463.896636962891 3 463.896757 1388.66844 NaN 0 0 0.2251 0.00010442 0.2251 0.00010442 463.896829521798 0.42161 0.33709 0.42161 0.2654 0.60249 0 18 9 3 0 0 0 0.0053592 2 67 2.8669 2.8669 1 99326 + 5 3 4 4 6;7 6
+TSDANINWNNLK 12 Unmodified _TSDANINWNNLK_ 0 0 CON__Q29443;CON__Q0IIK2 CON__Q29443 CON__Q29443 MULTI-MSMS BSA_min_21 1 BSA_min_21.mzXML 695.341064453125 2 695.341498 1388.66844 NaN 0 0 1.6082 0.0011183 1.6082 0.0011183 695.342847214244 0.40624 0.23684 0.40624 0.29786 0.5347 -5.5511E-17 11 6 2 0 0 0 0.0053592 1 70 0 0 1 38250 + 6 3 4 4 8 8
+YCGVPGEYWLGNDR 14 Unmodified _YCGVPGEYWLGNDR_ 0 0 CON__P02676 CON__P02676 CON__P02676 MULTI-MSMS BSA_min_21 1 BSA_min_21.mzXML 562.586242675781 3 562.584073 1684.73039 NaN 0 0 -0.095012 -5.3452E-05 -0.095012 -5.3452E-05 562.584772670959 0.49991 0.26937 0.49991 0.33312 0.60249 0 23 7 4 0 0 0 0.012255 1 80 0 0 1 78017 + 7 2 5 5 9 9
+YCGVPGEYWLGNDR 14 Unmodified _YCGVPGEYWLGNDR_ 0 0 CON__P02676 CON__P02676 CON__P02676 MULTI-MSMS BSA_min_21 1 BSA_min_21.mzXML 843.877807617188 2 843.372472 1684.73039 NaN 0 0 1.6852 0.0014212 1.6852 0.0014212 843.374714279736 0.52265 0.19871 0.52265 0.40378 0.60249 0 16 5 4 0 0 0 0.012255 1 92 3.6449 3.6449 1 36308 + 8 2 5 5 10 10
+YICDNQDTISSK 12 Unmodified _YICDNQDTISSK_ 0 0 CON__P02769;bsa CON__P02769 CON__P02769 MSMS BSA_min_21 1 BSA_min_21.mzXML 722.326232910156 2 722.324656 1442.63476 NaN NaN NaN NaN NaN NaN NaN NaN 0.25827 1 0.25827 -0.24173 0.75827 0 0 0 0 3.6003E-09 1 44 24.343 7.7115 1 + 9 0 6 6 11 11
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/modificationSpecificPeptides.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/modificationSpecificPeptides.txt Sat Jul 20 04:53:23 2019 -0400
b
@@ -0,0 +1,8 @@
+Sequence Modifications Mass Mass Fractional Part Protein Groups Proteins Unique (Groups) Unique (Proteins) Oxidation (M) Missed cleavages Fraction Average Fraction Std. Dev. Fraction 1 Fraction 2 Experiment BSA_min_21.mzXML Experiment BSA_min_22.mzXML Retention time Calibrated retention time Charges PEP MS/MS scan number Raw file Score Delta score Intensity Intensity BSA_min_21.mzXML Intensity BSA_min_22.mzXML Reverse Potential contaminant id Protein group IDs Peptide ID Evidence IDs MS/MS IDs Best MS/MS Oxidation (M) site IDs MS/MS Count
+DDPHACYSTVFDK Unmodified 1553.6457 0.64565776 0 CON__P02769;bsa yes no 0 0 1 0 1 1 0.47149 0.47149 2 0.0087938 82 BSA_min_21 0 0 32419 32419 0 + 0 0 0 0 0 0 1
+ECCHGDLLECADDR Unmodified 1748.6553 0.65525294 0 CON__P02769;bsa yes no 0 0 2 0 2 2 0.46522 0.46522 2;3 0.012255 60 BSA_min_22 4.06 4.06 485350 0 485350 + 1 0 1 1;2 1;2;3 1 3
+GCTTTNSPSTPCQNCSR Unmodified 1926.7618 0.76184328 4 CON__Q6IFU6 yes yes 0 0 1 0 1 1 0.26375 0.26375 2 0.016011 45 BSA_min_21 0 0 0 0 0 + 2 4 2 3 4 4 1
+LGQYTSPVAK Unmodified 1062.571 0.5709599 1 CON__P01030;CON__ENSEMBL:ENSBTAP00000007350 yes no 0 0 1 0 1 1 0.057288 0.057288 2 0.0074222 10 BSA_min_21 9.2141 9.2141 0 0 0 + 3 1 3 4 5 5 1
+TSDANINWNNLK Unmodified 1388.6684 0.66844211 3 CON__Q29443;CON__Q0IIK2 yes no 0 0 1 0 2 2 0.41393 0.41393 2;3 0.0053592 98 BSA_min_21 2.8669 2.8669 137580 137580 0 + 4 3 4 5;6 6;7;8 7 3
+YCGVPGEYWLGNDR Unmodified 1684.7304 0.73039044 2 CON__P02676 yes yes 0 0 1 0 2 2 0.51128 0.51128 2;3 0.012255 80 BSA_min_21 0 0 114330 114330 0 + 5 2 5 7;8 9;10 9 2
+YICDNQDTISSK Unmodified 1442.6348 0.63475872 0 CON__P02769;bsa yes no 0 0 1 0 1 1 0.25827 0.25827 2 3.6003E-09 44 BSA_min_21 24.343 7.7115 0 0 0 + 6 0 6 9 11 11 1
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/msms.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/msms.txt Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,13 @@
+Raw file Scan number Scan index Sequence Length Missed cleavages Modifications Modified sequence Oxidation (M) Probabilities Oxidation (M) Score Diffs Oxidation (M) Proteins Charge Fragmentation Mass analyzer Type Scan event number Isotope index m/z Mass Mass error [ppm] Mass error [Da] Simple mass error [ppm] Retention time PEP Score Delta score Score diff Localization prob Combinatorics PIF Fraction of total spectrum Base peak fraction Precursor Full ScanNumber Precursor Intensity Precursor Apex Fraction Precursor Apex Offset Precursor Apex Offset Time Matches Intensities Mass Deviations [Da] Mass Deviations [ppm] Masses Number of Matches Intensity coverage Peak coverage Neutral loss level ETD identification type Reverse All scores All sequences All modified sequences id Protein group IDs Peptide ID Mod. peptide ID Evidence ID Oxidation (M) site IDs
+BSA_min_21 82 67 DDPHACYSTVFDK 13 0 Unmodified _DDPHACYSTVFDK_ 0 CON__P02769;bsa 2 CID FTMS MULTI-MSMS 4 0 777.83011 1553.6457 0.83472 0.00064927 NaN 0.48088 0.0087938 0 0 NaN NaN 1 0 0 0 78 14602.341796875 1 0 0 0 0 0 None Unknown 0 DDPHACYSTVFDK _DDPHACYSTVFDK_ 0 0 0 0 0
+BSA_min_22 60 48 ECCHGDLLECADDR 14 0 Unmodified _ECCHGDLLECADDR_ 0 CON__P02769;bsa 3 CID FTMS MULTI-MSMS 2 1 583.89236 1748.6553 -1.2 -0.00070066 NaN 0.34278 0.012255 4.06 4.06 NaN NaN 1 0 0 0 58 153296.796875 1 0 0 y2;b7 138.2;64.3 0.000875681750017066;0.0151950483749488 3.01808299667453;17.4197737863645 290.14501953125;872.287353515625 2 0.0345694906307557 0.016260162601626 None Unknown 4.06002529511453 ECCHGDLLECADDR _ECCHGDLLECADDR_ 1 0 1 1 1
+BSA_min_22 67 53 ECCHGDLLECADDR 14 0 Unmodified _ECCHGDLLECADDR_ 0 CON__P02769;bsa 3 CID FTMS MULTI-MSMS 1 0 583.89236 1748.6553 -1.2 -0.00070066 NaN 0.3858 0.012255 0 0 NaN NaN 1 0 0 0 66 93077.6484375 0.590638368628048 -6 0.16876 0 0 0 None Unknown 0 ECCHGDLLECADDR _ECCHGDLLECADDR_ 2 0 1 1 1
+BSA_min_22 90 70 ECCHGDLLECADDR 14 0 Unmodified _ECCHGDLLECADDR_ 0 CON__P02769;bsa 2 CID FTMS MULTI-MSMS 2 0 875.3349 1748.6553 0.26945 0.00023586 NaN 0.52328 0.012255 3.6449 3.6449 NaN NaN 1 0 0 0 88 65524.953125 1 0 0 y10 82.6 -0.0168735156998991 -14.5021701256686 1163.5166015625 1 0.0263469586281723 0.00862068965517241 None Unknown 3.64492303257886 ECCHGDLLECADDR _ECCHGDLLECADDR_ 3 0 1 1 2
+BSA_min_21 45 36 GCTTTNSPSTPCQNCSR 17 0 Unmodified _GCTTTNSPSTPCQNCSR_ 0 CON__Q6IFU6 2 CID FTMS MSMS 2 964.3882 1926.7618 NaN NaN NaN 0.26375 0.016011 0 0 NaN NaN 1 0 0 0 -1 NaN NaN 0 NaN 0 0 0 None Unknown 0 GCTTTNSPSTPCQNCSR _GCTTTNSPSTPCQNCSR_ 4 4 2 2 3
+BSA_min_21 10 7 LGQYTSPVAK 10 0 Unmodified _LGQYTSPVAK_ 0 CON__P01030;CON__ENSEMBL:ENSBTAP00000007350 2 CID FTMS MSMS 3 532.29276 1062.571 NaN NaN NaN 0.057288 0.0074222 9.2141 9.2141 NaN NaN 1 0 0 0 -1 NaN NaN 0 NaN y3;b2;b4 12.9;21.6;166.6 -0.00279849649376729;-0.00340676689998531;-0.00711106876252643 -8.82191072988591;-19.9090833143192;-15.3838714608204 317.221130371094;171.1162109375;462.241821289063 3 0.0308188417439214 0.0245901639344262 None Unknown 9.21405366890568;0;0 LGQYTSPVAK;AQYELIAQK;AQYEIIAQK _LGQYTSPVAK_;_AQYELIAQK_;_AQYEIIAQK_ 5 1 3 3 4
+BSA_min_21 67 54 TSDANINWNNLK 12 0 Unmodified _TSDANINWNNLK_ 0 CON__Q29443;CON__Q0IIK2 3 CID FTMS MULTI-MSMS 1 0 463.89676 1388.6684 0.2251 0.00010442 NaN 0.39389 0.0053592 0 0 NaN NaN 1 0 0 0 66 23524.845703125 0.459529453830584 -1 0.0348916666666667 0 0 0 None Unknown 0 TSDANINWNNLK _TSDANINWNNLK_ 6 3 4 4 5
+BSA_min_21 98 80 TSDANINWNNLK 12 0 Unmodified _TSDANINWNNLK_ 0 CON__Q29443;CON__Q0IIK2 3 CID FTMS MULTI-MSMS 5 1 463.89676 1388.6684 0.2251 0.00010442 NaN 0.57847 0.0053592 2.8669 2.8669 NaN NaN 1 0 0 0 93 7351.9912109375 0.14361227054852 4 NaN b9 5.8 -0.00485963613130025 -4.78099799382671 1016.44805908203 1 0.00268406539551173 0.00961538461538462 None Unknown 2.86688527480472 TSDANINWNNLK _TSDANINWNNLK_ 7 3 4 4 5
+BSA_min_21 70 57 TSDANINWNNLK 12 0 Unmodified _TSDANINWNNLK_ 0 CON__Q29443;CON__Q0IIK2 2 CID FTMS MULTI-MSMS 4 0 695.3415 1388.6684 1.6082 0.0011183 NaN 0.41019 0.0053592 0 0 NaN NaN 1 0 0 0 66 16808.548828125 0.978200928418143 -1 0.0348916666666667 0 0 0 None Unknown 0;0 TSDANINWNNLK;HVFAVDGAGEMLK _TSDANINWNNLK_;_HVFAVDGAGEM(ox)LK_ 8 3 4 4 6
+BSA_min_21 80 65 YCGVPGEYWLGNDR 14 0 Unmodified _YCGVPGEYWLGNDR_ 0 CON__P02676 3 CID FTMS MULTI-MSMS 2 0 562.58407 1684.7304 -0.095012 -5.3452E-05 NaN 0.46942 0.012255 0 0 NaN NaN 1 0 0 0 78 21744.55859375 0.743883342518387 -1 0.0342566666666667 0 0 0 None Unknown 0 YCGVPGEYWLGNDR _YCGVPGEYWLGNDR_ 9 2 5 5 7
+BSA_min_21 92 75 YCGVPGEYWLGNDR 14 0 Unmodified _YCGVPGEYWLGNDR_ 0 CON__P02676 2 CID FTMS MULTI-MSMS 3 1 843.37247 1684.7304 1.6852 0.0014212 NaN 0.54095 0.012255 3.6449 3.6449 NaN NaN 1 0 0 0 89 10235.505859375 1 0 0 y13 5.5 0.01796629868727 11.7993127121924 1522.65637207031 1 0.00360499788750048 0.00961538461538462 None Unknown 3.64492303257886 YCGVPGEYWLGNDR _YCGVPGEYWLGNDR_ 10 2 5 5 8
+BSA_min_21 44 35 YICDNQDTISSK 12 0 Unmodified _YICDNQDTISSK_ 0 CON__P02769;bsa 2 CID FTMS MSMS 1 722.32466 1442.6348 NaN NaN NaN 0.25827 3.6003E-09 24.343 7.7115 NaN NaN 1 0 0 0 -1 NaN NaN 0 NaN y3;y8;y9;y10;b9 300.5;246.4;476.9;729.7;28 -0.00453549397497;-0.0138762988750614;-0.0167184231250985;-0.0175643623499582;-0.0019145705750816 -14.1212848085697;-15.5485287132689;-16.594286035641;-15.0442644146915;-1.70415154482157 321.181396484375;892.450927734375;1007.48071289063;1167.51220703125;1123.47436523438 5 0.182617971514711 0.0357142857142857 None Unknown 24.3433433825462;16.6318347984703 YICDNQDTISSK;YICENQDSISSK _YICDNQDTISSK_;_YICENQDSISSK_ 11 0 6 6 9
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/msmsScans.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/msmsScans.txt Sat Jul 20 04:53:23 2019 -0400
b
b'@@ -0,0 +1,160 @@\n+Raw file\tScan number\tRetention time\tIon injection time\tTotal ion current\tCollision energy\tSummations\tBase peak intensity\tElapsed time\tIdentified\tMS/MS IDs\tSequence\tLength\tFiltered peaks\tm/z\tMass\tCharge\tType\tFragmentation\tMass analyzer\tParent intensity fraction\tFraction of total spectrum\tBase peak fraction\tPrecursor full scan number\tPrecursor intensity\tPrecursor apex fraction\tPrecursor apex offset\tPrecursor apex offset time\tScan event number\tModifications\tModified sequence\tProteins\tScore\tFraction\tExperiment\tIntens Comp Factor\tCTCD Comp\tRawOvFtT\tAGC Fill\tScan index\tMS scan index\tMS scan number\r\n+BSA_min_21\t2\t0.01221\t-1\t47150\t35\t0\t0\t-1\t-\t-1\t \t0\t150\t722.798704576355\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t1\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t0\t0\t1\r\n+BSA_min_21\t3\t0.017623\t-1\t17297\t35\t0\t0\t-1\t-\t-1\t \t0\t121\t594.555969238281\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t2\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t1\t0\t1\r\n+BSA_min_21\t4\t0.023405\t-1\t18183\t35\t0\t0\t-1\t-\t-1\t \t0\t142\t759.809204101563\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t3\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t2\t0\t1\r\n+BSA_min_21\t5\t0.029038\t-1\t16124\t35\t0\t0\t-1\t-\t-1\t \t0\t116\t487.732727050781\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t4\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t3\t0\t1\r\n+BSA_min_21\t6\t0.034095\t-1\t16526\t35\t0\t0\t-1\t-\t-1\t \t0\t113\t372.19735409279\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t5\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t4\t0\t1\r\n+BSA_min_21\t8\t0.04682\t-1\t65409\t35\t0\t0\t-1\t-\t-1\t \t0\t122\t472.250845646481\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t1\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t5\t1\t7\r\n+BSA_min_21\t9\t0.051375\t-1\t13709\t35\t0\t0\t-1\t-\t-1\t \t0\t114\t891.331298828125\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t2\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t6\t1\t7\r\n+BSA_min_21\t10\t0.057288\t-1\t8824.9\t35\t0\t0\t-1\t+\t5\tLGQYTSPVAK\t10\t122\t532.293029785156\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t3\tUnmodified\t_LGQYTSPVAK_\tCON__ENSEMBL:ENSBTAP00000007350;CON__P01030\t9.21405366890568\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t7\t1\t7\r\n+BSA_min_21\t11\t0.062452\t-1\t11430\t35\t0\t0\t-1\t-\t-1\t \t0\t119\t538.768188476563\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t4\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t8\t1\t7\r\n+BSA_min_21\t12\t0.06764\t-1\t7136.7\t35\t0\t0\t-1\t-\t-1\t \t0\t115\t517.73974609375\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t5\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t9\t1\t7\r\n+BSA_min_21\t14\t0.080647\t-1\t33.829\t35\t0\t0\t-1\t-\t-1\t \t0\t4\t1568.24185979966\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t13\t63387.5625\t1\t0\t0\t1\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t10\t2\t13\r\n+BSA_min_21\t15\t0.086635\t-1\t7892.6\t35\t0\t0\t-1\t-\t-1\t \t0\t111\t526.229125976563\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t2\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t11\t2\t13\r\n+BSA_min_21\t16\t0.091825\t-1\t6445.6\t35\t0\t0\t-1\t-\t-1\t \t0\t115\t508.24755859375\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t3\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t12\t2\t13\r\n+BSA_min_21\t17\t0.096923\t-1\t3111.3\t35\t0\t0\t-1\t-\t-1\t \t0\t112\t735.343090637035\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t4\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t13\t2\t13\r\n+BSA_min_21\t18\t0.10248\t-1\t5136.5\t35\t0\t0\t-1\t-\t-1\t \t0\t110\t570.301832275435\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t5\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t14\t2\t13\r\n+BSA_min_21\t20\t0.11574\t-1\t3120.2\t35\t0\t0\t-1\t-\t-1\t \t0\t114\t693.814842092965\t1385.61513125273\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t19\t25857.935546875\t0.752232476411029\t-2\t0.06875\t1\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t15\t3\t19\r\n+BSA_min_21\t21\t0.12116\t-1\t2652.8\t35\t0\t0\t-1\t-\t-1\t \t0\t124\t751.810485839844\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t2\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t16\t3\t19\r\n+BSA_min_21\t22\t0.12678\t-1\t3085\t35\t0\t0\t-1\t-\t-1\t \t0\t102\t672.697509765625\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t3\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t17\t3\t19\r\n+BSA_min_21\t23\t0.13276\t-1\t2127.5\t35\t0\t0\t-1\t-\t-1\t \t0\t120\t960.878540039063\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t4\t \t \t \tNaN\t1\tBSA_min_21.mzXML\tNaN\tNaN\tNaN\t0\t18\t3\t19\r\n+BSA_min_21\t24\t0.13858\t-1\t2039.5\t35\t0\t0\t-1\t-\t-1\t '..b'LTI\tCID\tFTMS\t0\t0\t0\t69\t44722.15234375\t0.0212647431022184\t8\t-0.16323\t3\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t57\t13\t69\r\n+BSA_min_22\t73\t0.42101\t-1\t700.97\t35\t0\t0\t-1\t-\t-1\t \t0\t62\t747.54713506966\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t69\t47683.56640625\t0.163391162978462\t9\t-0.185018333333333\t4\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t58\t13\t69\r\n+BSA_min_22\t75\t0.4333\t-1\t213.41\t35\t0\t0\t-1\t-\t-1\t \t0\t24\t1146.0434746856\t2290.072396438\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t74\t102962.9140625\t0.243369234361311\t5\t-0.102611666666667\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t59\t14\t74\r\n+BSA_min_22\t76\t0.43931\t-1\t10561\t35\t0\t0\t-1\t-\t-1\t \t0\t161\t882.35364043549\t1762.69272793778\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t74\t65622.515625\t0.300250632980893\t-5\t0.114316666666667\t2\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t60\t14\t74\r\n+BSA_min_22\t77\t0.44516\t-1\t1115\t35\t0\t0\t-1\t-\t-1\t \t0\t45\t421.6946603681\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t74\t77002.7578125\t1\t0\t0\t3\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t61\t14\t74\r\n+BSA_min_22\t79\t0.45692\t-1\t12429\t35\t0\t0\t-1\t-\t-1\t \t0\t159\t882.35364043549\t1762.69272793778\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t78\t125207.5546875\t0.480544973772156\t-2\t0.0532533333333333\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t62\t15\t78\r\n+BSA_min_22\t80\t0.46277\t-1\t3207.6\t35\t0\t0\t-1\t-\t-1\t \t0\t104\t519.302064481083\t1036.58957602897\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t78\t107721.2890625\t0.756074997274729\t-3\t0.0730283333333333\t2\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t63\t15\t78\r\n+BSA_min_22\t81\t0.46789\t-1\t1712.2\t35\t0\t0\t-1\t-\t-1\t \t0\t80\t687.864856762204\t1373.71516059121\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t78\t62486.453125\t0.779007469574137\t-5\t0.120298333333333\t3\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t64\t15\t78\r\n+BSA_min_22\t82\t0.47339\t-1\t2066.8\t35\t0\t0\t-1\t-\t-1\t \t0\t102\t706.30552913519\t1410.59650533718\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t78\t46566.94140625\t0.933613855450418\t-2\t0.0532533333333333\t4\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t65\t15\t78\r\n+BSA_min_22\t84\t0.48564\t-1\t10930\t35\t0\t0\t-1\t-\t-1\t \t0\t149\t759.303833007813\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t66\t16\t83\r\n+BSA_min_22\t85\t0.4913\t-1\t5536.7\t35\t0\t0\t-1\t-\t-1\t \t0\t120\t586.330980330897\t1170.64740772859\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t83\t65373.234375\t1\t0\t0\t2\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t67\t16\t83\r\n+BSA_min_22\t87\t0.50368\t-1\t592.85\t35\t0\t0\t-1\t-\t-1\t \t0\t45\t1502.25634765625\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t68\t17\t86\r\n+BSA_min_22\t89\t0.51803\t-1\t3787.5\t35\t0\t0\t-1\t-\t-1\t \t0\t118\t586.330980330897\t1170.64740772859\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t88\t87861.3359375\t0.892882174576085\t4\t-0.0718366666666667\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t69\t18\t88\r\n+BSA_min_22\t90\t0.52328\t-1\t3324.1\t35\t0\t0\t-1\t+\t3\tECCHGDLLECADDR\t14\t116\t875.335138792643\t1748.65572465208\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t88\t65524.953125\t1\t0\t0\t2\tUnmodified\t_ECCHGDLLECADDR_\tbsa;CON__P02769\t2.29958343542733\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t70\t18\t88\r\n+BSA_min_22\t92\t0.53604\t-1\t1584.9\t35\t0\t0\t-1\t-\t-1\t \t0\t95\t594.55510633116\t1780.64348959368\t3\tMULTI\tCID\tFTMS\t0\t0\t0\t91\t73712.65625\t0.32216225208255\t-3\t0.0503366666666666\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t71\t19\t91\r\n+BSA_min_22\t93\t0.54179\t-1\t2714.4\t35\t0\t0\t-1\t-\t-1\t \t0\t109\t664.969909667969\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t2\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t72\t19\t91\r\n+BSA_min_22\t95\t0.55474\t-1\t3493.2\t35\t0\t0\t-1\t-\t-1\t \t0\t105\t613.754756007251\t1225.4949590813\t2\tMULTI\tCID\tFTMS\t0\t0\t0\t94\t38025.9921875\t0.998631205980059\t5\tNaN\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t73\t20\t94\r\n+BSA_min_22\t98\t0.58882\t-1\t5962.2\t35\t0\t0\t-1\t-\t-1\t \t0\t117\t577.318869144967\t576.311592678367\t1\tMULTI\tCID\tFTMS\t0\t0\t0\t97\t938697.4375\t0.505617380261114\t10\tNaN\t1\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t74\t22\t97\r\n+BSA_min_22\t99\t0.59405\t-1\t2406.8\t35\t0\t0\t-1\t-\t-1\t \t0\t104\t613.757507324219\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t2\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t75\t22\t97\r\n+BSA_min_22\t100\t0.59926\t-1\t7827.3\t35\t0\t0\t-1\t-\t-1\t \t0\t106\t891.338134765625\tNaN\t0\tPEAK\tCID\tFTMS\t0\t0\t0\t-1\tNaN\tNaN\t0\tNaN\t3\t \t \t \tNaN\t2\tBSA_min_22.mzXML\tNaN\tNaN\tNaN\t0\t76\t22\t97\r\n'
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/mzRange.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/mzRange.txt Sat Jul 20 04:53:23 2019 -0400
[
b'@@ -0,0 +1,3709 @@\n+Raw file\tm/z\tPeaks / Da\tSingle peaks / Da\tIsotope patterns / Da\tSingle isotope patterns / Da\tSILAC pairs / Da\tIdentified SILAC pairs / Da\tSILAC identification rate [%]\tMS/MS / Da\tIdentified MS/MS / Da\tIdentification rate [%]\r\n+BSA_min_21\t118.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t119.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t120.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t121.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t122.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t123.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t124.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t125.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t126.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t127.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t128.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t129.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t130.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t131.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t132.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t133.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t134.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t135.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t136.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t137.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t138.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t139.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t140.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t141.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t142.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t143.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t144.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t145.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t146.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t147.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t148.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t149.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t150.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t151.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t152.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t153.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t154.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t155.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t156.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t157.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t158.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t159.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t160.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t161.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t162.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t163.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t164.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t165.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t166.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t167.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t168.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t169.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t170.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t171.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t172.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t173.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t174.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t175.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t176.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t177.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t178.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t179.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t180.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t181.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t182.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t183.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t184.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t185.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t186.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t187.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t188.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t189.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t190.061454772949\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_21\t191.061454772949\t0'..b'\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1920.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1921.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1922.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1923.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1924.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1925.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1926.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1927.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1928.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1929.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1930.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1931.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1932.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1933.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1934.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1935.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1936.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1937.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1938.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1939.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1940.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1941.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1942.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1943.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1944.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1945.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1946.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1947.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1948.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1949.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1950.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1951.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1952.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1953.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1954.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1955.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1956.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1957.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1958.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1959.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1960.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1961.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1962.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1963.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1964.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1965.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1966.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1967.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1968.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1969.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1970.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1971.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1972.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1973.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1974.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1975.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1976.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1977.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1978.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1979.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1980.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1981.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1982.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1983.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1984.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1985.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1986.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1987.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1988.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1989.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1990.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1991.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1992.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1993.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1994.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1995.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1996.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n+BSA_min_22\t1997.18692779541\t0\t0\t0\t0\t0\t0\tNaN\t0\t0\t\r\n'
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/mzTab.mzTab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/mzTab.mzTab Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,55 @@
+MTD mzTab-version 1.0.0
+MTD mzTab-mode Complete
+MTD mzTab-type Identification
+MTD title null
+MTD description null
+MTD software[1] [MS, MS:1001583, MaxQuant,1.6.3.4]
+COM [, CHEMMOD:57.0214637236, Carbamidomethyl (C),]
+MTD fixed_mod[1] [, , CHEMMOD:57.0214637236,]
+MTD fixed_mod[1]-site C
+MTD fixed_mod[1]-position Anywhere
+COM [, CHEMMOD:15.9949146221, Oxidation (M),]
+MTD variable_mod[1] [, , CHEMMOD:15.9949146221,]
+MTD variable_mod[1]-site M
+MTD variable_mod[1]-position Anywhere
+MTD protein_search_engine_score[1] [MS, MS:1002375, protein group-level combined FDRscore, ]
+MTD peptide_search_engine_score[1] [MS, MS:1001250, local FDR, ]
+MTD psm_search_engine_score[1] [MS, MS:1002338, Andromeda:score,  ]
+MTD psm_search_engine_score[2] [MS, MS:1002995, Andromeda:PEP,  ]
+MTD ms_run[1]-format [MS, MS:1002996, Andromeda:apl file format, ]
+MTD ms_run[1]-location file://d:/shared/dglaetzer/maxquant_tool/test2/two_mzxml_short/combined/andromeda/allspectra.cid.ftms.iso_0.apl
+MTD ms_run[1]-id_format [MS, MS:1000776, scan number only nativeID format, ]
+MTD ms_run[2]-format [MS, MS:1002996, Andromeda:apl file format, ]
+MTD ms_run[2]-location file://d:/shared/dglaetzer/maxquant_tool/test2/two_mzxml_short/combined/andromeda/allspectra.cid.ftms.iso_1.apl
+MTD ms_run[2]-id_format [MS, MS:1000776, scan number only nativeID format, ]
+
+PRH accession description taxid species database database_version search_engine best_search_engine_score[1] search_engine_score[1]_ms_run[1] search_engine_score[1]_ms_run[2] num_psms_ms_run[1] num_psms_ms_run[2] num_peptides_distinct_ms_run[1] num_peptides_distinct_ms_run[2] num_peptides_unique_ms_run[1] num_peptides_unique_ms_run[2] ambiguity_members modifications protein_coverage opt_global_cv_MS:1002217_decoy_peptide 
+PRT CON__P02769 null null null null null [MS, MS:1002337, Andromeda, 1.6.3.4] 24.4111732500507 null null null null null null null null CON__P02769, bsa null 0.064 0
+PRT CON__P01030 null null null null null [MS, MS:1002337, Andromeda, 1.6.3.4] 6.12946896793655 null null null null null null null null CON__P01030, CON__ENSEMBL:ENSBTAP00000007350 null 0.006 0
+PRT CON__P02676 null null null null null [MS, MS:1002337, Andromeda, 1.6.3.4] 5.91168885522525 null null null null null null null null CON__P02676 null 0.028 0
+PRT CON__Q29443 null null null null null [MS, MS:1002337, Andromeda, 1.6.3.4] 6.27089675212204 null null null null null null null null CON__Q29443, CON__Q0IIK2 null 0.018 0
+PRT CON__Q6IFU6 null null null null null [MS, MS:1002337, Andromeda, 1.6.3.4] 5.79558497906794 null null null null null null null null CON__Q6IFU6 null 0.035 0
+
+PSH sequence PSM_ID accession unique database database_version search_engine search_engine_score[1] search_engine_score[2] modifications retention_time charge exp_mass_to_charge calc_mass_to_charge spectra_ref pre post start end opt_global_cv_MS:1000776_scan_number_only_nativeID_format opt_global_cv_MS:1002217_decoy_peptide 
+PSM DDPHACYSTVFDK 1 CON__P02769 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.00879376465973971 null 0.480878333333333 2 777.83 777.83011 ms_run[1]:index=121 K L 387 399 82 0
+PSM DDPHACYSTVFDK 1 bsa 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.00879376465973971 null 0.480878333333333 2 777.83 777.83011 ms_run[1]:index=121 K L 387 399 82 0
+PSM ECCHGDLLECADDR 2 CON__P02769 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 4.06002529511453 0.0122549387437507 null 0.342775 3 583.89 583.89236 ms_run[1]:index=147 K A 267 280 60 0
+PSM ECCHGDLLECADDR 2 bsa 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 4.06002529511453 0.0122549387437507 null 0.342775 3 583.89 583.89236 ms_run[1]:index=147 K A 267 280 60 0
+PSM ECCHGDLLECADDR 3 CON__P02769 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.0122549387437507 null 0.385801666666667 3 583.89 583.89236 ms_run[1]:index=146 K A 267 280 67 0
+PSM ECCHGDLLECADDR 3 bsa 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.0122549387437507 null 0.385801666666667 3 583.89 583.89236 ms_run[1]:index=146 K A 267 280 67 0
+PSM ECCHGDLLECADDR 4 CON__P02769 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 3.64492303257886 0.0122549387437507 null 0.523276666666667 2 875.34 875.3349 ms_run[1]:index=148 K A 267 280 90 0
+PSM ECCHGDLLECADDR 4 bsa 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 3.64492303257886 0.0122549387437507 null 0.523276666666667 2 875.34 875.3349 ms_run[1]:index=148 K A 267 280 90 0
+PSM GCTTTNSPSTPCQNCSR 5 CON__Q6IFU6 1 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.0160108733047593 null 0.263751666666667 2 964.38 964.3882 ms_run[1]:index=170 K I 5 21 45 0
+PSM LGQYTSPVAK 6 CON__P01030 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 9.21405366890568 0.00742217230209436 null 0.0572883333333333 2 532.29 532.29276 ms_run[1]:index=35 K R 689 698 10 0
+PSM LGQYTSPVAK 6 CON__ENSEMBL:ENSBTAP00000007350 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 9.21405366890568 0.00742217230209436 null 0.0572883333333333 2 532.29 532.29276 ms_run[1]:index=35 K R 689 698 10 0
+PSM TSDANINWNNLK 7 CON__Q29443 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.00535924051359045 null 0.393891666666667 3 463.9 463.89676 ms_run[1]:index=84 K D 438 449 67 0
+PSM TSDANINWNNLK 7 CON__Q0IIK2 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.00535924051359045 null 0.393891666666667 3 463.9 463.89676 ms_run[1]:index=84 K D 438 449 67 0
+PSM TSDANINWNNLK 8 CON__Q29443 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 2.86688527480472 0.00535924051359045 null 0.578475 3 463.9 463.89676 ms_run[1]:index=85 K D 438 449 98 0
+PSM TSDANINWNNLK 8 CON__Q0IIK2 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 2.86688527480472 0.00535924051359045 null 0.578475 3 463.9 463.89676 ms_run[1]:index=85 K D 438 449 98 0
+PSM TSDANINWNNLK 9 CON__Q29443 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.00535924051359045 null 0.41019 2 695.34 695.3415 ms_run[1]:index=86 K D 438 449 70 0
+PSM TSDANINWNNLK 9 CON__Q0IIK2 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.00535924051359045 null 0.41019 2 695.34 695.3415 ms_run[1]:index=86 K D 438 449 70 0
+PSM YCGVPGEYWLGNDR 10 CON__P02676 1 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 0 0.0122549387437507 null 0.469416666666667 3 562.58 562.58407 ms_run[1]:index=140 K I 319 332 80 0
+PSM YCGVPGEYWLGNDR 11 CON__P02676 1 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 3.64492303257886 0.0122549387437507 null 0.540946666666667 2 843.37 843.37247 ms_run[1]:index=141 K I 319 332 92 0
+PSM YICDNQDTISSK 12 CON__P02769 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 24.3433433825462 3.60031720952497E-09 null 0.258266666666667 2 722.33 722.32466 ms_run[1]:index=94 K L 286 297 44 0
+PSM YICDNQDTISSK 12 bsa 0 null null [MS, MS:1002338, Andromeda:score, 1.6.3.4] 24.3433433825462 3.60031720952497E-09 null 0.258266666666667 2 722.33 722.32466 ms_run[1]:index=94 K L 286 297 44 0
+
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/parameters.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/parameters.txt Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,105 @@
+Parameter Value
+Version 1.6.3.4
+User name dglaetzer
+Machine name FPROT-BEAST
+Date of writing 04/01/2019 13:43:35
+Include contaminants True
+PSM FDR 0.01
+PSM FDR Crosslink 0.01
+Protein FDR 0.01
+Site FDR 0.01
+Use Normalized Ratios For Occupancy True
+Min. peptide Length 7
+Min. score for unmodified peptides 0
+Min. score for modified peptides 40
+Min. delta score for unmodified peptides 0
+Min. delta score for modified peptides 6
+Min. unique peptides 0
+Min. razor peptides 1
+Min. peptides 1
+Use only unmodified peptides and True
+Modifications included in protein quantification Oxidation (M)
+Peptides used for protein quantification Razor
+Discard unmodified counterpart peptides True
+Label min. ratio count 2
+Use delta score False
+iBAQ False
+iBAQ log fit False
+Match between runs False
+Find dependent peptides False
+Fasta file D:\fasta\bsa.fasta
+Decoy mode revert
+Include contaminants True
+Advanced ratios True
+Fixed andromeda index folder
+Temporary folder
+Combined folder location
+Second peptides False
+Stabilize large LFQ ratios True
+Separate LFQ in parameter groups False
+Require MS/MS for LFQ comparisons True
+Calculate peak properties False
+Main search max. combinations 200
+Advanced site intensities True
+Write msScans table False
+Write msmsScans table True
+Write ms3Scans table True
+Write allPeptides table True
+Write mzRange table True
+Write pasefMsmsScans table True
+Write accumulatedPasefMsmsScans table True
+Max. peptide mass [Da] 4600
+Min. peptide length for unspecific search 8
+Max. peptide length for unspecific search 25
+Razor protein FDR True
+Disable MD5 False
+Max mods in site table 3
+Match unidentified features False
+Epsilon score for mutations
+Evaluate variant peptides separately True
+Variation mode None
+MS/MS tol. (FTMS) 20 ppm
+Top MS/MS peaks per Da interval. (FTMS) 12
+Da interval. (FTMS) 100
+MS/MS deisotoping (FTMS) True
+MS/MS deisotoping tolerance (FTMS) 7
+MS/MS deisotoping tolerance unit (FTMS) ppm
+MS/MS higher charges (FTMS) True
+MS/MS water loss (FTMS) True
+MS/MS ammonia loss (FTMS) True
+MS/MS dependent losses (FTMS) True
+MS/MS recalibration (FTMS) False
+MS/MS tol. (ITMS) 0.5 Da
+Top MS/MS peaks per Da interval. (ITMS) 8
+Da interval. (ITMS) 100
+MS/MS deisotoping (ITMS) False
+MS/MS deisotoping tolerance (ITMS) 0.15
+MS/MS deisotoping tolerance unit (ITMS) Da
+MS/MS higher charges (ITMS) True
+MS/MS water loss (ITMS) True
+MS/MS ammonia loss (ITMS) True
+MS/MS dependent losses (ITMS) True
+MS/MS recalibration (ITMS) False
+MS/MS tol. (TOF) 40 ppm
+Top MS/MS peaks per Da interval. (TOF) 10
+Da interval. (TOF) 100
+MS/MS deisotoping (TOF) True
+MS/MS deisotoping tolerance (TOF) 0.01
+MS/MS deisotoping tolerance unit (TOF) Da
+MS/MS higher charges (TOF) True
+MS/MS water loss (TOF) True
+MS/MS ammonia loss (TOF) True
+MS/MS dependent losses (TOF) True
+MS/MS recalibration (TOF) False
+MS/MS tol. (Unknown) 0.5 Da
+Top MS/MS peaks per Da interval. (Unknown) 8
+Da interval. (Unknown) 100
+MS/MS deisotoping (Unknown) False
+MS/MS deisotoping tolerance (Unknown) 0.15
+MS/MS deisotoping tolerance unit (Unknown) Da
+MS/MS higher charges (Unknown) True
+MS/MS water loss (Unknown) True
+MS/MS ammonia loss (Unknown) True
+MS/MS dependent losses (Unknown) True
+MS/MS recalibration (Unknown) False
+Site tables Oxidation (M)Sites.txt
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/peptideSection.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/peptideSection.txt Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,8 @@
+PEH sequence accession unique database database_version search_engine best_search_engine_score[1] search_engine_score[1]_ms_run[0] search_engine_score[1]_ms_run[1] modifications retention_time retention_time_window charge mass_to_charge spectra_ref peptide_abundance_study_variable[0] peptide_abundance_stdev_study_variable[0] peptide_abundance_std_error_study_variable[0]
+PEP DDPHACYSTVFDK null
+PEP ECCHGDLLECADDR null
+PEP GCTTTNSPSTPCQNCSR null
+PEP LGQYTSPVAK null
+PEP TSDANINWNNLK null
+PEP YCGVPGEYWLGNDR null
+PEP YICDNQDTISSK null
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/peptides.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/peptides.txt Sat Jul 20 04:53:23 2019 -0400
b
@@ -0,0 +1,8 @@
+Sequence N-term cleavage window C-term cleavage window Amino acid before First amino acid Second amino acid Second last amino acid Last amino acid Amino acid after A Count R Count N Count D Count C Count Q Count E Count G Count H Count I Count L Count K Count M Count F Count P Count S Count T Count W Count Y Count V Count U Count O Count Length Missed cleavages Mass Proteins Leading razor protein Start position End position Unique (Groups) Unique (Proteins) Charges PEP Score Fraction Average Fraction Std. Dev. Fraction 1 Fraction 2 Experiment BSA_min_21.mzXML Experiment BSA_min_22.mzXML Intensity Intensity BSA_min_21.mzXML Intensity BSA_min_22.mzXML Reverse Potential contaminant id Protein group IDs Mod. peptide IDs Evidence IDs MS/MS IDs Best MS/MS Oxidation (M) site IDs MS/MS Count
+DDPHACYSTVFDK LAKEYEATLEECCAKDDPHACYSTVFDKLK AKDDPHACYSTVFDKLKHLVDEPQNLIKQN K D D D K L 1 0 0 3 1 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 13 0 1553.6457 CON__P02769;bsa CON__P02769 387 399 yes no 2 0.0087938 0 1 0 1 1 32419 32419 0 + 0 0 0 0 0 0 1
+ECCHGDLLECADDR VEVTKLVTDLTKVHKECCHGDLLECADDRA KECCHGDLLECADDRADLAKYICDNQDTIS K E C D R A 1 1 0 3 3 0 2 1 1 0 2 0 0 0 0 0 0 0 0 0 0 0 14 0 1748.6553 CON__P02769;bsa CON__P02769 267 280 yes no 2;3 0.012255 4.06 2 0 2 2 485350 0 485350 + 1 0 1 1;2 1;2;3 1 3
+GCTTTNSPSTPCQNCSR ______________________________ TTTNSPSTPCQNCSRITNVSTISSNNGCHP K G C S R I 0 1 2 0 3 1 0 1 0 0 0 0 0 0 2 3 4 0 0 0 0 0 17 0 1926.7618 CON__Q6IFU6 CON__Q6IFU6 5 21 yes yes 2 0.016011 0 1 0 1 1 0 0 0 + 2 4 2 3 4 4 1
+LGQYTSPVAK RKKRNVNFQKAIHEKLGQYTSPVAKRCCQD AIHEKLGQYTSPVAKRCCQDGLTRLPMART K L G A K R 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 1 0 1 1 0 0 10 0 1062.571 CON__P01030;CON__ENSEMBL:ENSBTAP00000007350 CON__P01030 689 698 yes no 2 0.0074222 9.2141 1 0 1 1 0 0 0 + 3 1 3 4 5 5 1
+TSDANINWNNLK KNTPEKGYLAVAVVKTSDANINWNNLKDKK VVKTSDANINWNNLKDKKSCHTAVDRTAGW K T S L K D 1 0 4 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 12 0 1388.6684 CON__Q29443;CON__Q0IIK2 CON__Q29443 438 449 yes no 2;3 0.0053592 2.8669 1 0 2 2 137580 137580 0 + 4 3 4 5;6 6;7;8 6 3
+YCGVPGEYWLGNDR KQGFGNIATNAEGKKYCGVPGEYWLGNDRI KYCGVPGEYWLGNDRISQLTNMGPTKLLIE K Y C D R I 0 1 1 1 1 0 1 3 0 0 1 0 0 0 1 0 0 1 2 1 0 0 14 0 1684.7304 CON__P02676 CON__P02676 319 332 yes yes 2;3 0.012255 3.6449 1 0 2 2 114330 114330 0 + 5 2 5 7;8 9;10 9 2
+YICDNQDTISSK GDLLECADDRADLAKYICDNQDTISSKLKE LAKYICDNQDTISSKLKECCDKPLLEKSHC K Y I S K L 0 0 1 2 1 1 0 0 0 2 0 1 0 0 0 2 1 0 1 0 0 0 12 0 1442.6348 CON__P02769;bsa CON__P02769 286 297 yes no 2 3.6003E-09 24.343 1 0 1 1 0 0 0 + 6 0 6 9 11 11 1
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/proteinGroups.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/proteinGroups.txt Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,6 @@
+Protein IDs Majority protein IDs Peptide counts (all) Peptide counts (razor+unique) Peptide counts (unique) Fasta headers Number of proteins Peptides Razor + unique peptides Unique peptides Peptides BSA_min_21.mzXML Peptides BSA_min_22.mzXML Razor + unique peptides BSA_min_21.mzXML Razor + unique peptides BSA_min_22.mzXML Unique peptides BSA_min_21.mzXML Unique peptides BSA_min_22.mzXML Sequence coverage [%] Unique + razor sequence coverage [%] Unique sequence coverage [%] Mol. weight [kDa] Sequence length Sequence lengths Fraction average Fraction 1 Fraction 2 Q-value Score Sequence coverage BSA_min_21.mzXML [%] Sequence coverage BSA_min_22.mzXML [%] Intensity Intensity BSA_min_21.mzXML Intensity BSA_min_22.mzXML MS/MS count Only identified by site Reverse Potential contaminant id Peptide IDs Peptide is razor Mod. peptide IDs Evidence IDs MS/MS IDs Best MS/MS Oxidation (M) site IDs Oxidation (M) site positions
+CON__P02769;bsa CON__P02769;bsa 3;3 3;3 3;3 ;bsa sp|P02769|ALBU_BOVIN Serum albumin OS=Bos taurus OX=9913 GN=ALB PE=1 SV=4 2 3 3 3 2 1 2 1 2 1 6.4 6.4 6.4 69.293 607 607;607 1.5 2 2 0 24.411 4.1 2.3 517770 32419 485350 5 + 0 0;1;6 True;True;True 0;1;6 0;1;2;9 0;1;2;3;11 0;1;11
+CON__P01030;CON__ENSEMBL:ENSBTAP00000007350 CON__P01030;CON__ENSEMBL:ENSBTAP00000007350 1;1 1;1 1;1 ; 2 1 1 1 1 0 1 0 1 0 0.6 0.6 0.6 192.79 1741 1741;1742 1 1 0 6.1295 0.6 0 0 0 0 1 + 1 3 True 3 4 5 5
+CON__P02676 CON__P02676 1 1 1 1 1 1 1 1 0 1 0 1 0 2.8 2.8 2.8 56.44 495 495 1 2 0 5.9117 2.8 0 114330 114330 0 2 + 2 5 True 5 7;8 9;10 9
+CON__Q29443;CON__Q0IIK2 CON__Q29443;CON__Q0IIK2 1;1 1;1 1;1 ; 2 1 1 1 1 0 1 0 1 0 1.8 1.8 1.8 75.829 685 685;704 1 2 0 6.2709 1.8 0 137580 137580 0 3 + 3 4 True 4 5;6 6;7;8 6
+CON__Q6IFU6 CON__Q6IFU6 1 1 1 1 1 1 1 1 0 1 0 1 0 3.5 3.5 3.5 55.651 491 491 1 1 0 5.7956 3.5 0 0 0 0 1 + 4 2 True 2 3 4 4
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/combined/txt/summary.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/combined/txt/summary.txt Sat Jul 20 04:53:23 2019 -0400
[
@@ -0,0 +1,4 @@
+Raw file Experiment Fraction Enzyme Enzyme mode Enzyme first search Enzyme mode first search Use enzyme first search Variable modifications Fixed modifications Multi modifications Variable modifications first search Use variable modifications first search Requantify Multiplicity Max. missed cleavages Labels0 LC-MS run type Time-dependent recalibration MS MS/MS MS3 MS/MS Submitted MS/MS Submitted (SIL) MS/MS Submitted (ISO) MS/MS Submitted (PEAK) MS/MS Identified MS/MS Identified (SIL) MS/MS Identified (ISO) MS/MS Identified (PEAK) MS/MS Identified [%] MS/MS Identified (SIL) [%] MS/MS Identified (ISO) [%] MS/MS Identified (PEAK) [%] Peptide Sequences Identified Peaks Peaks Sequenced Peaks Sequenced [%] Peaks Repeatedly Sequenced Peaks Repeatedly Sequenced [%] Isotope Patterns Isotope Patterns Sequenced Isotope Patterns Sequenced (z>1) Isotope Patterns Sequenced [%] Isotope Patterns Sequenced (z>1) [%] Isotope Patterns Repeatedly Sequenced Isotope Patterns Repeatedly Sequenced [%] Recalibrated Av. Absolute Mass Deviation [ppm] Mass Standard Deviation [ppm] Av. Absolute Mass Deviation [mDa] Mass Standard Deviation [mDa]
+BSA_min_21 BSA_min_21.mzXML 1 Trypsin/P Specific False Oxidation (M) Carbamidomethyl (C) False False 1 0 Standard 18 82 0 125 39 0 86 9 6 0 3 7.2 15.38 NaN 3.49 6 1031 56 5.43 1 1.79 112 33 32 29.46 34.41 6 18.18 + 0.89087 1.1135 0.66933 0.8609
+BSA_min_22 BSA_min_22.mzXML 2 Trypsin/P Specific False Oxidation (M) Carbamidomethyl (C) False False 1 0 Standard 23 77 0 101 53 0 48 3 3 0 0 2.97 5.66 NaN 0 1 1675 61 3.64 1 1.64 295 43 41 14.58 15.24 10 23.26 + 0.73591 0.87113 0.46826 0.52276
+Total 41 159 0 226 92 0 134 12 9 0 3 5.31 9.78 NaN 2.24 7 2706 407 76 73 18.67 20.17 16 21.05 0.84659 1.05 0.61188 0.77941
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/exp_design_template.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/exp_design_template.txt Sat Jul 20 04:53:23 2019 -0400
b
@@ -0,0 +1,3 @@
+Name Fraction Experiment PTM
+BSA_min_21 1 BSA_min_21.mzXML False
+BSA_min_22 2 BSA_min_22.mzXML False
b
diff -r 000000000000 -r 256cc0e17454 test-data/two/mqpar.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/two/mqpar.xml Sat Jul 20 04:53:23 2019 -0400
[
b'@@ -0,0 +1,432 @@\n+<?xml version="1.0" encoding="utf-8"?>\r\n+<MaxQuantParams xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r\n+   <fastaFiles>\r\n+      <FastaFileInfo>\r\n+         <fastaFilePath>D:\\fasta\\bsa.fasta</fastaFilePath>\r\n+         <identifierParseRule>>([^\\s]*)</identifierParseRule>\r\n+         <descriptionParseRule>>(.*)</descriptionParseRule>\r\n+         <taxonomyParseRule></taxonomyParseRule>\r\n+         <variationParseRule></variationParseRule>\r\n+         <modificationParseRule></modificationParseRule>\r\n+         <taxonomyId></taxonomyId>\r\n+      </FastaFileInfo>\r\n+   </fastaFiles>\r\n+   <fastaFilesProteogenomics>\r\n+   </fastaFilesProteogenomics>\r\n+   <fastaFilesFirstSearch>\r\n+   </fastaFilesFirstSearch>\r\n+   <fixedSearchFolder></fixedSearchFolder>\r\n+   <andromedaCacheSize>350000</andromedaCacheSize>\r\n+   <advancedRatios>True</advancedRatios>\r\n+   <pvalThres>0.005</pvalThres>\r\n+   <neucodeRatioBasedQuantification>False</neucodeRatioBasedQuantification>\r\n+   <neucodeStabilizeLargeRatios>False</neucodeStabilizeLargeRatios>\r\n+   <rtShift>False</rtShift>\r\n+   <separateLfq>False</separateLfq>\r\n+   <lfqStabilizeLargeRatios>True</lfqStabilizeLargeRatios>\r\n+   <lfqRequireMsms>True</lfqRequireMsms>\r\n+   <decoyMode>revert</decoyMode>\r\n+   <boxCarMode>all</boxCarMode>\r\n+   <includeContaminants>True</includeContaminants>\r\n+   <maxPeptideMass>4600</maxPeptideMass>\r\n+   <epsilonMutationScore>True</epsilonMutationScore>\r\n+   <mutatedPeptidesSeparately>True</mutatedPeptidesSeparately>\r\n+   <proteogenomicPeptidesSeparately>True</proteogenomicPeptidesSeparately>\r\n+   <minDeltaScoreUnmodifiedPeptides>0</minDeltaScoreUnmodifiedPeptides>\r\n+   <minDeltaScoreModifiedPeptides>6</minDeltaScoreModifiedPeptides>\r\n+   <minScoreUnmodifiedPeptides>0</minScoreUnmodifiedPeptides>\r\n+   <minScoreModifiedPeptides>40</minScoreModifiedPeptides>\r\n+   <secondPeptide>False</secondPeptide>\r\n+   <matchBetweenRuns>False</matchBetweenRuns>\r\n+   <matchUnidentifiedFeatures>False</matchUnidentifiedFeatures>\r\n+   <matchBetweenRunsFdr>False</matchBetweenRunsFdr>\r\n+   <dependentPeptides>False</dependentPeptides>\r\n+   <dependentPeptideFdr>0</dependentPeptideFdr>\r\n+   <dependentPeptideMassBin>0</dependentPeptideMassBin>\r\n+   <dependentPeptidesBetweenRuns>False</dependentPeptidesBetweenRuns>\r\n+   <dependentPeptidesWithinExperiment>False</dependentPeptidesWithinExperiment>\r\n+   <dependentPeptidesWithinParameterGroup>False</dependentPeptidesWithinParameterGroup>\r\n+   <dependentPeptidesRestrictFractions>False</dependentPeptidesRestrictFractions>\r\n+   <dependentPeptidesFractionDifference>0</dependentPeptidesFractionDifference>\r\n+   <msmsConnection>False</msmsConnection>\r\n+   <ibaq>False</ibaq>\r\n+   <top3>False</top3>\r\n+   <independentEnzymes>False</independentEnzymes>\r\n+   <useDeltaScore>False</useDeltaScore>\r\n+   <splitProteinGroupsByTaxonomy>False</splitProteinGroupsByTaxonomy>\r\n+   <taxonomyLevel>Species</taxonomyLevel>\r\n+   <avalon>False</avalon>\r\n+   <nModColumns>3</nModColumns>\r\n+   <ibaqLogFit>False</ibaqLogFit>\r\n+   <razorProteinFdr>True</razorProteinFdr>\r\n+   <deNovoSequencing>False</deNovoSequencing>\r\n+   <deNovoVarMods>True</deNovoVarMods>\r\n+   <massDifferenceSearch>False</massDifferenceSearch>\r\n+   <isotopeCalc>False</isotopeCalc>\r\n+   <writePeptidesForSpectrumFile></writePeptidesForSpectrumFile>\r\n+   <intensityPredictionsFile>\r\n+   </intensityPredictionsFile>\r\n+   <minPepLen>7</minPepLen>\r\n+   <psmFdrCrosslink>0.01</psmFdrCrosslink>\r\n+   <peptideFdr>0.01</peptideFdr>\r\n+   <proteinFdr>0.01</proteinFdr>\r\n+   <siteFdr>0.01</siteFdr>\r\n+   <minPeptideLengthForUnspecificSearch>8</minPeptideLengthForUnspecificSearch>\r\n+   <maxPeptideLengthForUnspecificSearch>25</maxPeptideLengthForUnspecificSearch>\r\n+   <useNormRatiosForOccupancy>True</useNormRatiosForOccupancy>\r\n+   <minPeptides>1</minPeptides>\r\n+   <minRazorPeptides>1</minRazorPeptides>\r\n+   <minUniquePeptides>0</minUniquePeptides>\r\n+   <useCounterparts>False</useCo'..b'terval>100</TopxInterval>\r\n+         <HigherCharges>True</HigherCharges>\r\n+         <IncludeWater>True</IncludeWater>\r\n+         <IncludeAmmonia>True</IncludeAmmonia>\r\n+         <DependentLosses>True</DependentLosses>\r\n+         <Recalibration>False</Recalibration>\r\n+      </msmsParams>\r\n+   </msmsParamsArray>\r\n+   <fragmentationParamsArray>\r\n+      <fragmentationParams>\r\n+         <Name>CID</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>HCD</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>ETD</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>PQD</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>ETHCD</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>ETCID</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>UVPD</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+      <fragmentationParams>\r\n+         <Name>Unknown</Name>\r\n+         <Connected>False</Connected>\r\n+         <ConnectedScore0>1</ConnectedScore0>\r\n+         <ConnectedScore1>1</ConnectedScore1>\r\n+         <ConnectedScore2>1</ConnectedScore2>\r\n+         <InternalFragments>False</InternalFragments>\r\n+         <InternalFragmentWeight>1</InternalFragmentWeight>\r\n+         <InternalFragmentAas>KRH</InternalFragmentAas>\r\n+      </fragmentationParams>\r\n+   </fragmentationParamsArray>\r\n+</MaxQuantParams>\r\n'