Repository 'split_file_to_collection'
hg clone https://toolshed.g2.bx.psu.edu/repos/bgruening/split_file_to_collection

Changeset 0:de3c2c88e710 (2018-07-17)
Next changeset 1:750c1684d47c (2019-02-18)
Commit message:
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/text_processing/split_file_to_collection commit 85015046a6d8a9dc0f4b54611986676aceeeadd7
added:
split_file_to_collection.py
split_file_to_collection.xml
test-data/batch_tab_0.tabular
test-data/batch_tab_1.tabular
test-data/demo758Dacentroid.mgf
test-data/demo_0.mgf
test-data/demo_1.mgf
test-data/demo_2.mgf
test-data/fasta_batch_0.fasta
test-data/fasta_batch_1.fasta
test-data/file1.tab
test-data/file2.tab
test-data/file3.tab
test-data/file4.tab
test-data/foo.tab
test-data/foo2.tab
test-data/foo3.tab
test-data/psm.tabular
test-data/rand_0.fasta
test-data/rand_1.fasta
test-data/test.fasta
test-data/test.fastq
test-data/test.mgf
test-data/test.tabular
test-data/test_0.fasta
test-data/test_0.fastq
test-data/test_0.tabular
test-data/test_1.fasta
test-data/test_1.fastq
test-data/test_1.tabular
b
diff -r 000000000000 -r de3c2c88e710 split_file_to_collection.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/split_file_to_collection.py Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,261 @@\n+#!/usr/bin/env python\n+\n+import argparse\n+import os\n+import re\n+import random\n+import math\n+\n+\n+"""\n+regexes that indicate the *beginning* of a record\n+new file types can be added by appending to this dict,\n+updating the parser, and adding a new type option in the Galaxy wrapper\n+"""\n+FILETYPES = {\'fasta\': \'^>\',\n+             \'fastq\': \'^@\',\n+             \'tabular\': \'^.*\',\n+             \'mgf\': \'^BEGIN IONS\'}\n+\n+\n+def main():\n+    ps = parser_cli()\n+    args = vars(ps.parse_args())\n+\n+    # get args and validate\n+    in_file = args["in"]\n+    if not os.path.isfile(args["in"]):\n+        raise FileNotFoundError(\'Input file does not exist\')\n+\n+    out_dir = args["out_dir"]\n+    if not os.path.isdir(args["out_dir"]):\n+        raise FileNotFoundError(\'out_dir is not a directory\')\n+\n+    top = args["top"]\n+    if top < 0:\n+        raise ValueError("Number of header lines cannot be negative")\n+\n+    ftype = args["ftype"]\n+\n+    if args["ftype"] == "tabular" and args["by"] == "col":\n+        args["match"] = replace_mapped_chars(args["match"])\n+        args["sub"] = replace_mapped_chars(args["sub"])\n+        split_by_column(args, in_file, out_dir, top)\n+\n+    else:\n+        split_by_record(args, in_file, out_dir, top, ftype)\n+\n+\n+def parser_cli():\n+    parser = argparse.ArgumentParser(description="split a file into multiple files. " +\n+                                                 "Can split on the column of a tabular file, " +\n+                                                 "with custom and useful names based on column value.")\n+    parser.add_argument(\'--in\', \'-i\', required=True, help="The input file")\n+    parser.add_argument(\'--out_dir\', \'-o\', default=os.getcwd(), help="The output directory", required=True)\n+    parser.add_argument(\'--file_names\', \'-a\', help="If not splitting by column, the base name of the new files")\n+    parser.add_argument(\'--file_ext\', \'-e\', help="If not splitting by column," +\n+                                                 " the extension of the new files (without a period)")\n+    parser.add_argument(\'--ftype\', \'-f\', help="The type of the file to split", required = True,\n+        choices=["mgf", "fastq", "fasta", "tabular"])\n+    parser.add_argument(\'--by\', \'-b\', help="Split by line or by column (tabular only)",\n+        default = "row", choices = ["col", "row"])\n+    parser.add_argument(\'--top\', \'-t\', type=int, default=0, help="Number of header lines to carry over to new files. " +\n+                                                                 "(tabular only).")\n+    parser.add_argument(\'--rand\', \'-r\', help="Divide records randomly into new files", action=\'store_true\')\n+    parser.add_argument(\'--seed\', \'-x\', help="Provide a seed for the random number generator. " +\n+                                             "If not provided and args[\\"rand\\"]==True, then date is used", type=int)\n+    parser.add_argument(\'--numnew\', \'-n\', type=int, default = 1,\n+                        help="Number of output files desired. Not valid for splitting on a column")\n+    parser.add_argument(\'--batch\', action=\'store_true\',\n+                        help="Distribute files to collection while maintaining order. Ignored if splitting on column.")\n+\n+    bycol = parser.add_argument_group(\'If splitting on a column\')\n+    bycol.add_argument(\'--match\', \'-m\', default = "(.*)", help="The regular expression to match id column entries")\n+    bycol.add_argument(\'--sub\', \'-s\', default = r\'\\1\',\n+                       help="The regular expression to substitute in for the matched pattern.")\n+    bycol.add_argument(\'--id_column\', \'-c\', default="1",\n+                       help="Column that is used to name output files. Indexed starting from 1.", type=int)\n+    return parser\n+\n+\n+def close_files(file_list):\n+    # finally, close all files\n+    for open_file in file_list:\n+        open_file.close()\n+\n+\n+def replace_mapped_chars(pattern):\n+    """\n+    handles special escaped characters when coming from galaxy\n+    """\n+'..b'ader specified by top\n+    header = ""\n+    # keep track of the files that have been opened so far\n+    fresh_files = {i for i in range(0, numnew)}\n+\n+    # keep track in loop of number of records in each file\n+    # only used in batch\n+    records_in_file = 0\n+    \n+    # open file\n+    with open(in_file, "r") as file:\n+        record = ""\n+        for line in file:\n+            n_read += 1\n+            if n_read <= top:\n+                header += line\n+                continue\n+            # check if beginning of line is record sep\n+            # if beginning of line is record sep, either start record or finish one\n+            if re.match(sep, line) is not None:\n+                # this only happens first time through\n+                if record == "":\n+                    record += line\n+                else:\n+                    # if is in fresh_files, write header and drop from freshFiles\n+                    if new_file_counter in fresh_files:\n+                        newfiles[new_file_counter].write(header)\n+                        fresh_files.remove(new_file_counter)\n+\n+                    # write record to file\n+                    newfiles[new_file_counter].write(record)\n+\n+                    # if not the first time through, we assign the new record\n+                    record = line\n+\n+                    # change destination file\n+                    if rand:\n+                        new_file_counter = int(math.floor(random.random() * numnew))\n+                    elif batch:\n+                        # number of records read per file\n+                        records_in_file += 1\n+                        # have we reached the max for each file?\n+                        # if so, switch file\n+                        if records_in_file >= n_per_file:\n+                            new_file_counter = (new_file_counter + 1) % numnew\n+                            records_in_file = 0  # reset to 0\n+                    else:\n+                        new_file_counter = (new_file_counter + 1) % numnew\n+            # if beginning of line is not record sep, we must be inside a record\n+            # so just append\n+            else:\n+                record += line\n+        # after loop, write final record to file\n+        newfiles[new_file_counter].write(record)\n+    # close new files\n+    close_files(newfiles)\n+\n+\n+def split_by_column(args, in_file, out_dir, top):\n+\n+    # shift to 0-based indexing\n+    id_col = int(args["id_column"]) - 1\n+\n+    try:\n+        match = re.compile(args["match"])\n+    except re.error:\n+        print("ERROR: Match (-m) supplied is not valid regex.")\n+        raise\n+\n+    sub = args["sub"]\n+\n+    # set of file names\n+    new_files = dict()\n+\n+    # keep track of how many lines have been read\n+    n_read = 0\n+    header = ""\n+    with open(in_file) as file:\n+        for line in file:\n+            # if still in top, save to header\n+            n_read += 1\n+            if n_read <= top:\n+                header += line\n+                continue\n+            # split into columns, on tab\n+            fields = re.split(r\'\\t\', line.strip(\'\\n\'))\n+\n+            # get id column value\n+            id_col_val = fields[id_col]\n+\n+            # use regex to get new file name\n+            out_file_name = re.sub(match, sub, id_col_val)\n+            out_file_path = os.path.join(out_dir, out_file_name)\n+\n+            # write\n+            if out_file_name not in new_files.keys():\n+                # open file (new, so not already open)\n+                current_new_file = open(out_file_path, "w")\n+                current_new_file.write(header)\n+                current_new_file.write(line)\n+                # add to dict\n+                new_files[out_file_name] = current_new_file\n+            else:\n+                # file is already open, so just write to it\n+                new_files[out_file_name].write(line)\n+\n+    # finally, close all files\n+    close_files(new_files.values())\n+\n+\n+if __name__ == "__main__":\n+    main()\n'
b
diff -r 000000000000 -r de3c2c88e710 split_file_to_collection.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/split_file_to_collection.xml Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,289 @@\n+<tool id="split_file_to_collection" name="Split file" version="0.1.1">\n+    <description>to dataset collection</description>\n+    <macros>\n+        <xml name="numnew_fname">\n+            <param name="numnew" type="integer" label="Number of new files" min="1" value="1"/>\n+            <param name="newfilenames" type="text" label="Base name for new files in collection"\n+                help="This will increment automatically - if input is \'file\', then output is \'file0\', \'file1\', etc." value="split_file"/>\n+            <conditional name="select_allocate">\n+                <param name="allocate" type="select" label="Method to allocate records to new files" help="See the information section for a diagram">\n+                    <option value="random">At random</option>\n+                    <option value="batch">Maintain record order</option>\n+                    <option value="byrow" selected="true">Alternate output files</option>\n+                </param>\n+                <when value="random">\n+                    <param name="seed" type="integer" label="Random number seed" help="For reproducibility, set this to some arbitrary integer (i.e. \'1010\')" value="1010"/>\n+                </when>\n+                <when value="batch">\n+                </when>\n+                <when value="byrow">\n+                </when>\n+            </conditional>\n+        </xml>\n+    </macros>\n+    <requirements>\n+        <requirement type="package" version="3.5">python</requirement>\n+    </requirements>\n+    <command detect_errors="aggressive"><![CDATA[\n+        mkdir ./out &&\n+        python \'$__tool_directory__/split_file_to_collection.py\'\n+            --out ./out\n+            --in \'$split_parms.input\'\n+            --ftype \'$split_parms.select_ftype\'\n+            #if $split_parms.select_ftype == "tabular":\n+                --top \'$split_parms.top\'\n+                --by \'$split_parms.split_by.select_split_by\'\n+                #if $split_parms.split_by.select_split_by == "col":\n+                    --id_column \'$split_parms.split_by.id_col\'\n+                    --match \'$split_parms.split_by.match_regex\'\n+                    --sub \'$split_parms.split_by.sub_regex\'\n+                #else \n+                    --numnew \'$split_parms.split_by.numnew\' \n+                    #if $split_parms.split_by.select_allocate.allocate == "random":\n+                        --rand\n+                        --seed \'$split_parms.split_by.rand.seed\'\n+                    #end if\n+                    #if $split_parms.split_by.select_allocate.allocate == "batch":\n+                        --batch\n+                    #end if\n+                #end if\n+            #else\n+                --numnew \'$split_parms.numnew\'\n+                #if $split_parms.select_allocate.allocate == "random":\n+                    --rand\n+                    --seed \'$split_parms.select_allocate.seed\'\n+                #end if\n+                #if $split_parms.select_allocate.allocate == "batch":\n+                    --batch\n+                #end if\n+            #end if\n+        #if ($split_parms.select_ftype == "tabular" and $split_parms.split_by.select_split_by == "row"):\n+             --file_names \'$split_parms.split_by.newfilenames\'\n+             --file_ext \'$split_parms.select_ftype\'\n+        #end if\n+        #if $split_parms.select_ftype != "tabular":\n+            --file_names \'$split_parms.newfilenames\'\n+            --file_ext \'$split_parms.select_ftype\'\n+        #end if\n+        > \'$log\'\n+    ]]></command>\n+    <inputs>\n+        <conditional name="split_parms">\n+            <param name="select_ftype" type="select" label="Select the file type to split">\n+                <option value="mgf">MGF</option>\n+                <option value="fastq">FASTQ</option>\n+                <option value="tabular">Tabular</option>\n+                <option value="fasta">FASTA</option>\n+            </param>\n+            <when value="tabular">\n+                <param name="input" type="data" format="ta'..b'<element name="demo_2.mgf" file="demo_2.mgf" ftype="mgf"/>\n+            </output_collection>\n+        </test>\n+        <test>\n+            <param name="input" value="test.fasta" ftype="fasta"/>\n+            <param name="select_ftype" value="fasta"/>\n+            <param name="numnew" value="2"/>\n+            <param name="newfilenames" value="test"/> \n+            <output_collection name="list_output_fasta" type="list">\n+                <element name="test_0.fasta" file="test_0.fasta" ftype="fasta"/>\n+                <element name="test_1.fasta" file="test_1.fasta" ftype="fasta"/>\n+            </output_collection>\n+        </test>\n+        <test>\n+            <param name="input" value="test.fastq" ftype="fastq"/>\n+            <param name="select_ftype" value="fastq"/>\n+            <param name="numnew" value="2"/>\n+            <param name="newfilenames" value="test"/> \n+            <output_collection name="list_output_fastq" type="list">\n+                <element name="test_0.fastq" file="test_0.fastq" ftype="fastq"/>\n+                <element name="test_1.fastq" file="test_1.fastq" ftype="fastq"/>\n+            </output_collection>\n+        </test>\n+        <test>\n+            <param name="input" value="test.fasta" ftype="fasta"/>\n+            <param name="select_ftype" value="fasta"/>\n+            <param name="numnew" value="2"/>\n+            <param name="newfilenames" value="rand"/>\n+            <param name="allocate" value="random"/>\n+            <param name="seed" value="1010"/> \n+            <output_collection name="list_output_fasta" type="list">\n+                <element name="rand_0.fasta" file="rand_0.fasta" ftype="fasta"/>\n+                <element name="rand_1.fasta" file="rand_1.fasta" ftype="fasta"/>\n+            </output_collection>\n+        </test>\n+        <test>\n+            <param name="input" value="test.fasta" ftype="fasta"/>\n+            <param name="select_ftype" value="fasta"/>\n+            <param name="numnew" value="2"/>\n+            <param name="newfilenames" value="fasta_batch"/>\n+            <param name="allocate" value="batch"/>\n+            <output_collection name="list_output_fasta" type="list">\n+                <element name="fasta_batch_0.fasta" file="fasta_batch_0.fasta" ftype="fasta"/>\n+                <element name="fasta_batch_1.fasta" file="fasta_batch_1.fasta" ftype="fasta"/>\n+            </output_collection>\n+        </test> \n+    </tests>\n+    <help><![CDATA[\n+**Split file into a dataset collection**\n+\n+This tool can split five types of files into a separate files within a dataset collection: MGF, FASTA, FASTQ, and tabular.\n+If a tabular file is used as input, you may choose to split by line or by column. If split by column, a new file is created for each unique value in the column.\n+In addition, (Python) regular expressions may be used to transform the value in the column to a new value. Caution should be used with this feature, as it could transform all values to the same value, or other unexpected behavior.\n+The default regular expression uses each value in the column without modifying it. \n+\n+If splitting by line (or by some other item, like a FASTA entry or an MGF section), the splitting can be either done sequentially or at random. \n+Note that there are no guarantees when splitting at random that every result file will be non-empty, so downstream tools should be able to gracefully handle empty files. \n+\n+**Note**\n+\n+Due to current limitations with dataset collections, a log file is produced when running this tool. It will usually be empty, but if the tool fails, any errors will be printed to the log file. \n+    ]]></help>\n+    <citations>\n+        <citation type="bibtex">\n+@misc{githubsplit,\n+  author = {Easterly, Caleb},\n+  year = {2018},\n+  title = {split_file_to_collection: a Galaxy tool},\n+  publisher = {GitHub},\n+  journal = {GitHub repository},\n+  url = {https://github.com/galaxyproteomics/tools-galaxyp/tools/split_file_to_collection},\n+}</citation>\n+    </citations>\n+</tool>\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/batch_tab_0.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/batch_tab_0.tabular Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,4 @@
+#This is a file
+#file   data
+foo.mgf bar
+foo2.mgf bar2
b
diff -r 000000000000 -r de3c2c88e710 test-data/batch_tab_1.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/batch_tab_1.tabular Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,4 @@
+#This is a file
+#file   data
+foo3.mgf bar3
+foo.mgf bar4
b
diff -r 000000000000 -r de3c2c88e710 test-data/demo758Dacentroid.mgf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/demo758Dacentroid.mgf Tue Jul 17 14:37:13 2018 -0400
b
b'@@ -0,0 +1,1041 @@\n+BEGIN IONS\r\n+TITLE=scan=986 profile data \r\n+RTINSECONDS=297.916\r\n+PEPMASS=758.571517944336 12066.720502853394\r\n+CHARGE=1+\r\n+37.05708507 1.0\r\n+38.08264425 1.0\r\n+42.1891818 1.0\r\n+46.14368796 1.0\r\n+48.07514101 1.0\r\n+48.40614326 1.0\r\n+49.33508131 2.0\r\n+50.54946907 1.0\r\n+52.6205571 1.0\r\n+56.00151781 1.0\r\n+57.0870461 1.0\r\n+58.30777063 1.0\r\n+60.39263327 1.0\r\n+61.56610754 1.0\r\n+62.39865419 1.0\r\n+63.99422731 1.0\r\n+64.03597531 1.0\r\n+64.5380131 1.0\r\n+65.52825667 1.0\r\n+66.15204831 1.0\r\n+66.93807779 1.0\r\n+67.68867639 1.0\r\n+68.49239211 1.0\r\n+69.19085355 1.0\r\n+69.60524622 1.0\r\n+73.18497548 1.0\r\n+73.3100153 1.0\r\n+80.04627221 1.0\r\n+80.12409709 5.0\r\n+80.76368748 2.0\r\n+81.12359532 8.0\r\n+81.15179578 1.0\r\n+83.09994922 1.0\r\n+85.54993848 1.0\r\n+86.09132419 154.0\r\n+86.09455183 405.0\r\n+86.09777954 281.0\r\n+86.10100731 151.0\r\n+86.10423513 122.0\r\n+86.10746302 60.0\r\n+86.11069097 31.0\r\n+86.11391898 24.0\r\n+86.11714705 8.0\r\n+86.12037518 14.0\r\n+86.12360337 5.0\r\n+86.12683162 8.0\r\n+86.13005994 9.0\r\n+86.13328831 1.0\r\n+86.13651674 13.0\r\n+86.13974523 9.0\r\n+86.1462024 11.0\r\n+86.15588861 3.0\r\n+87.84631838 1.0\r\n+90.43425642 1.0\r\n+90.69909187 1.0\r\n+91.2531837 1.0\r\n+94.22783258 1.0\r\n+95.25035276 1.0\r\n+97.70353213 1.0\r\n+98.63756141 1.0\r\n+107.9546139 1.0\r\n+109.8167024 1.0\r\n+110.2874522 1.0\r\n+112.2689611 1.0\r\n+112.5861633 1.0\r\n+112.6969205 1.0\r\n+114.6290884 1.0\r\n+119.963407 1.0\r\n+120.4057758 1.0\r\n+121.040237 1.0\r\n+124.7848509 1.0\r\n+124.9947737 82.0\r\n+124.9986628 121.0\r\n+125.002552 83.0\r\n+125.0064412 54.0\r\n+125.0103305 37.0\r\n+125.0142199 21.0\r\n+125.0181093 13.0\r\n+125.0219988 11.0\r\n+125.0258883 4.0\r\n+125.0297779 3.0\r\n+125.0375573 1.0\r\n+125.0414471 1.0\r\n+125.4385234 1.0\r\n+126.6687618 2.0\r\n+126.9586411 12.0\r\n+126.9625606 12.0\r\n+126.9664802 5.0\r\n+126.9703999 5.0\r\n+126.9743196 2.0\r\n+126.9821593 1.0\r\n+132.5773556 1.0\r\n+134.8338603 1.0\r\n+134.9469833 1.0\r\n+137.5945461 1.0\r\n+144.5015506 1.0\r\n+144.5893767 1.0\r\n+148.2386341 1.0\r\n+152.405389 1.0\r\n+161.4067478 1.0\r\n+171.6584713 1.0\r\n+176.6205764 1.0\r\n+179.9134854 2.0\r\n+180.132849 4.0\r\n+181.241038 1.0\r\n+182.8838192 12.0\r\n+182.8885235 7.0\r\n+182.8979322 1.0\r\n+183.807014 5.0\r\n+183.8117302 10.0\r\n+183.8164463 8.0\r\n+183.8211626 7.0\r\n+183.8258789 1.0\r\n+184.0334568 1.0\r\n+184.0381759 26.0\r\n+184.042895 5.0\r\n+184.0476142 9.0\r\n+184.0523334 62.0\r\n+184.0570527 62.0\r\n+184.061772 462.0\r\n+184.0664914 3608.0\r\n+184.0712109 9535.0\r\n+184.0759304 7454.0\r\n+184.08065 4404.0\r\n+184.0853696 3262.0\r\n+184.0900893 2055.0\r\n+184.0948091 1061.0\r\n+184.0995289 925.0\r\n+184.1042488 519.0\r\n+184.1089688 335.0\r\n+184.1136888 233.0\r\n+184.1184088 138.0\r\n+184.123129 197.0\r\n+184.1278492 155.0\r\n+184.1325694 113.0\r\n+184.1372897 93.0\r\n+184.1420101 37.0\r\n+184.1467305 78.0\r\n+184.151451 8.0\r\n+184.1561716 5.0\r\n+184.1608922 20.0\r\n+184.1656129 3.0\r\n+184.1703336 4.0\r\n+184.1750544 3.0\r\n+184.1797753 2.0\r\n+184.2033804 1.0\r\n+184.2081017 2.0\r\n+184.2269872 10.0\r\n+184.2317087 29.0\r\n+184.2364303 45.0\r\n+184.2411519 30.0\r\n+184.2458736 33.0\r\n+184.2505954 13.0\r\n+184.2553172 8.0\r\n+184.2789272 1.0\r\n+184.3119838 16.0\r\n+184.3167064 20.0\r\n+184.3214291 11.0\r\n+184.3261518 17.0\r\n+184.3308746 15.0\r\n+184.3355975 11.0\r\n+184.3403204 4.0\r\n+184.3450433 6.0\r\n+184.3544895 20.0\r\n+184.3592126 12.0\r\n+184.3639358 11.0\r\n+184.3686591 2.0\r\n+184.3828293 18.0\r\n+184.3875529 7.0\r\n+184.3922764 2.0\r\n+184.4158952 27.0\r\n+184.4206192 16.0\r\n+184.4253432 15.0\r\n+184.4300672 10.0\r\n+184.4347914 46.0\r\n+184.4395155 47.0\r\n+184.4442398 24.0\r\n+184.4489641 18.0\r\n+184.4536885 2.0\r\n+184.4584129 3.0\r\n+184.4631374 16.0\r\n+184.4678619 26.0\r\n+184.4725865 39.0\r\n+184.4773112 71.0\r\n+184.4820359 71.0\r\n+184.4867607 52.0\r\n+184.4914856 47.0\r\n+184.4962105 27.0\r\n+184.5009355 8.0\r\n+184.5056605 10.0\r\n+184.5198359 11.0\r\n+184.5245612 14.0\r\n+184.5292865 8.0\r\n+184.5340119 3.0\r\n+184.5387374 1.0\r\n+184.6096264 17.0\r\n+184.6143529 5.0\r\n+184.6190794 5.0\r\n+184.6238059 1.0\r\n+184.6285325 1.0\r\n+184.6568934 12.0\r\n+184.6616205 37.0\r\n+184.6663475 17.0\r\n+184.6710747 5.0\r\n+184.6758019 9.0\r\n+184.6805292 4.0\r\n+184.6852565 13.0\r\n+184.6947113 4.0\r\n+184.6994389 3.0\r'..b'3.5207801 1.0\r\n+413.7896263 1.0\r\n+416.9302525 1.0\r\n+418.5156926 1.0\r\n+423.2685945 1.0\r\n+425.3465631 1.0\r\n+430.9391654 1.0\r\n+434.8836997 1.0\r\n+437.1426706 1.0\r\n+443.5077112 1.0\r\n+445.5098919 1.0\r\n+446.347302 1.0\r\n+447.722651 1.0\r\n+449.4245325 1.0\r\n+449.9630279 1.0\r\n+458.7792544 1.0\r\n+471.6538918 1.0\r\n+485.9404752 2.0\r\n+495.9137427 10.0\r\n+495.9292358 2.0\r\n+504.3464519 47.0\r\n+504.3777005 16.0\r\n+504.3933252 10.0\r\n+522.3549152 1.0\r\n+523.2695983 1.0\r\n+542.7113937 1.0\r\n+544.1223564 1.0\r\n+548.6269323 1.0\r\n+562.2933137 2.0\r\n+567.2782288 1.0\r\n+568.6460936 1.0\r\n+568.9281613 1.0\r\n+573.8756678 2.0\r\n+579.0287286 1.0\r\n+579.8995841 1.0\r\n+584.5411814 1.0\r\n+585.4835048 1.0\r\n+602.7458921 1.0\r\n+610.0097083 1.0\r\n+611.5915635 1.0\r\n+613.1668534 1.0\r\n+622.956299 1.0\r\n+625.6680787 1.0\r\n+631.7473992 1.0\r\n+639.3417041 2.0\r\n+653.9634901 1.0\r\n+657.8655703 1.0\r\n+662.2357148 1.0\r\n+662.9251745 1.0\r\n+667.1593117 1.0\r\n+685.2956588 1.0\r\n+696.7440527 1.0\r\n+696.8634233 1.0\r\n+714.2710857 2.0\r\n+725.7143418 1.0\r\n+727.3927023 1.0\r\n+758.4902225 40.0\r\n+758.5285437 16.0\r\n+758.5668659 284.0\r\n+758.643513 36.0\r\n+758.9022259 26.0\r\n+758.9980566 2.0\r\n+759.3718544 51.0\r\n+759.5635813 144.0\r\n+759.6211041 10.0\r\n+759.6594538 23.0\r\n+760.2060426 16.0\r\n+760.2252247 4.0\r\n+760.6185116 4.0\r\n+769.5667261 1.0\r\n+777.0732402 1.0\r\n+784.3044168 1.0\r\n+791.9606048 1.0\r\n+806.5940053 1.0\r\n+823.9554289 1.0\r\n+833.3881817 1.0\r\n+835.2570465 1.0\r\n+838.2958981 1.0\r\n+839.6964291 1.0\r\n+840.2710856 1.0\r\n+842.3596489 1.0\r\n+864.3796032 1.0\r\n+867.2762797 1.0\r\n+880.7583746 1.0\r\n+881.1610364 1.0\r\n+881.8839936 1.0\r\n+887.1083977 1.0\r\n+902.4561422 1.0\r\n+911.6439447 1.0\r\n+921.2688933 1.0\r\n+921.3533611 1.0\r\n+921.7546358 1.0\r\n+923.5297393 1.0\r\n+930.5729479 1.0\r\n+937.2488424 1.0\r\n+938.2821191 1.0\r\n+938.9215443 1.0\r\n+948.9354938 1.0\r\n+973.383205 1.0\r\n+984.8337738 1.0\r\n+986.6795085 1.0\r\n+989.9164383 1.0\r\n+990.474688 1.0\r\n+996.2854206 1.0\r\n+1025.917093 1.0\r\n+1029.195386 1.0\r\n+1048.524363 1.0\r\n+1050.676863 1.0\r\n+1057.498248 1.0\r\n+1082.290631 1.0\r\n+1084.592055 1.0\r\n+1122.79606 1.0\r\n+1127.054519 1.0\r\n+1133.943388 1.0\r\n+1136.146631 1.0\r\n+1153.81411 1.0\r\n+1177.519128 1.0\r\n+1183.518947 1.0\r\n+1190.650031 1.0\r\n+1191.526413 1.0\r\n+1191.898672 1.0\r\n+END IONS\r\n+BEGIN IONS\r\n+TITLE=scan=986 centroided 100 most intense (25 total peaks)\r\n+RTINSECONDS=297.916\r\n+PEPMASS=758.571517944336 12066.720502853394\r\n+CHARGE=1+\r\n+86.09455183 405.0\r\n+124.9986628 121.0\r\n+184.0523334 62.0\r\n+184.0712109 9535.0\r\n+184.123129 197.0\r\n+184.1467305 78.0\r\n+184.2364303 45.0\r\n+184.2458736 33.0\r\n+184.4395155 47.0\r\n+184.4773112 71.0\r\n+184.4820359 71.0\r\n+184.836563 61.0\r\n+184.8743993 83.0\r\n+185.0731034 72.0\r\n+185.3050599 44.0\r\n+185.4234609 23.0\r\n+219.5218692 30.0\r\n+313.2659073 120.0\r\n+504.3464519 47.0\r\n+758.4902225 40.0\r\n+758.5668659 284.0\r\n+758.643513 36.0\r\n+759.3718544 51.0\r\n+759.5635813 144.0\r\n+759.6594538 23.0\r\n+END IONS\r\n+BEGIN IONS\r\n+TITLE=scan=986 centroided 200 most intense (50 total peaks)\r\n+RTINSECONDS=297.916\r\n+PEPMASS=758.571517944336 12066.720502853394\r\n+CHARGE=1+\r\n+86.09455183 405.0\r\n+86.12037518 14.0\r\n+86.13651674 13.0\r\n+124.9986628 121.0\r\n+126.9586411 12.0\r\n+126.9625606 12.0\r\n+182.8838192 12.0\r\n+183.8117302 10.0\r\n+184.0381759 26.0\r\n+184.0523334 62.0\r\n+184.0712109 9535.0\r\n+184.123129 197.0\r\n+184.1467305 78.0\r\n+184.1608922 20.0\r\n+184.2364303 45.0\r\n+184.2458736 33.0\r\n+184.3167064 20.0\r\n+184.3261518 17.0\r\n+184.3544895 20.0\r\n+184.3828293 18.0\r\n+184.4158952 27.0\r\n+184.4395155 47.0\r\n+184.4773112 71.0\r\n+184.4820359 71.0\r\n+184.5245612 14.0\r\n+184.6096264 17.0\r\n+184.6616205 37.0\r\n+184.6852565 13.0\r\n+184.836563 61.0\r\n+184.8507512 18.0\r\n+184.8743993 83.0\r\n+185.0731034 72.0\r\n+185.1488283 22.0\r\n+185.3050599 44.0\r\n+185.3666237 18.0\r\n+185.4234609 23.0\r\n+191.9070035 22.0\r\n+219.5218692 30.0\r\n+313.2659073 120.0\r\n+313.2905351 44.0\r\n+313.3397938 11.0\r\n+504.3464519 47.0\r\n+504.3777005 16.0\r\n+758.4902225 40.0\r\n+758.5285437 16.0\r\n+758.5668659 284.0\r\n+758.643513 36.0\r\n+758.9022259 26.0\r\n+759.3718544 51.0\r\n+759.5635813 144.0\r\n+759.6594538 23.0\r\n+760.2060426 16.0\r\n+END IONS\r\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/demo_0.mgf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/demo_0.mgf Tue Jul 17 14:37:13 2018 -0400
b
b'@@ -0,0 +1,588 @@\n+BEGIN IONS\n+TITLE=scan=986 profile data \n+RTINSECONDS=297.916\n+PEPMASS=758.571517944336 12066.720502853394\n+CHARGE=1+\n+37.05708507 1.0\n+38.08264425 1.0\n+42.1891818 1.0\n+46.14368796 1.0\n+48.07514101 1.0\n+48.40614326 1.0\n+49.33508131 2.0\n+50.54946907 1.0\n+52.6205571 1.0\n+56.00151781 1.0\n+57.0870461 1.0\n+58.30777063 1.0\n+60.39263327 1.0\n+61.56610754 1.0\n+62.39865419 1.0\n+63.99422731 1.0\n+64.03597531 1.0\n+64.5380131 1.0\n+65.52825667 1.0\n+66.15204831 1.0\n+66.93807779 1.0\n+67.68867639 1.0\n+68.49239211 1.0\n+69.19085355 1.0\n+69.60524622 1.0\n+73.18497548 1.0\n+73.3100153 1.0\n+80.04627221 1.0\n+80.12409709 5.0\n+80.76368748 2.0\n+81.12359532 8.0\n+81.15179578 1.0\n+83.09994922 1.0\n+85.54993848 1.0\n+86.09132419 154.0\n+86.09455183 405.0\n+86.09777954 281.0\n+86.10100731 151.0\n+86.10423513 122.0\n+86.10746302 60.0\n+86.11069097 31.0\n+86.11391898 24.0\n+86.11714705 8.0\n+86.12037518 14.0\n+86.12360337 5.0\n+86.12683162 8.0\n+86.13005994 9.0\n+86.13328831 1.0\n+86.13651674 13.0\n+86.13974523 9.0\n+86.1462024 11.0\n+86.15588861 3.0\n+87.84631838 1.0\n+90.43425642 1.0\n+90.69909187 1.0\n+91.2531837 1.0\n+94.22783258 1.0\n+95.25035276 1.0\n+97.70353213 1.0\n+98.63756141 1.0\n+107.9546139 1.0\n+109.8167024 1.0\n+110.2874522 1.0\n+112.2689611 1.0\n+112.5861633 1.0\n+112.6969205 1.0\n+114.6290884 1.0\n+119.963407 1.0\n+120.4057758 1.0\n+121.040237 1.0\n+124.7848509 1.0\n+124.9947737 82.0\n+124.9986628 121.0\n+125.002552 83.0\n+125.0064412 54.0\n+125.0103305 37.0\n+125.0142199 21.0\n+125.0181093 13.0\n+125.0219988 11.0\n+125.0258883 4.0\n+125.0297779 3.0\n+125.0375573 1.0\n+125.0414471 1.0\n+125.4385234 1.0\n+126.6687618 2.0\n+126.9586411 12.0\n+126.9625606 12.0\n+126.9664802 5.0\n+126.9703999 5.0\n+126.9743196 2.0\n+126.9821593 1.0\n+132.5773556 1.0\n+134.8338603 1.0\n+134.9469833 1.0\n+137.5945461 1.0\n+144.5015506 1.0\n+144.5893767 1.0\n+148.2386341 1.0\n+152.405389 1.0\n+161.4067478 1.0\n+171.6584713 1.0\n+176.6205764 1.0\n+179.9134854 2.0\n+180.132849 4.0\n+181.241038 1.0\n+182.8838192 12.0\n+182.8885235 7.0\n+182.8979322 1.0\n+183.807014 5.0\n+183.8117302 10.0\n+183.8164463 8.0\n+183.8211626 7.0\n+183.8258789 1.0\n+184.0334568 1.0\n+184.0381759 26.0\n+184.042895 5.0\n+184.0476142 9.0\n+184.0523334 62.0\n+184.0570527 62.0\n+184.061772 462.0\n+184.0664914 3608.0\n+184.0712109 9535.0\n+184.0759304 7454.0\n+184.08065 4404.0\n+184.0853696 3262.0\n+184.0900893 2055.0\n+184.0948091 1061.0\n+184.0995289 925.0\n+184.1042488 519.0\n+184.1089688 335.0\n+184.1136888 233.0\n+184.1184088 138.0\n+184.123129 197.0\n+184.1278492 155.0\n+184.1325694 113.0\n+184.1372897 93.0\n+184.1420101 37.0\n+184.1467305 78.0\n+184.151451 8.0\n+184.1561716 5.0\n+184.1608922 20.0\n+184.1656129 3.0\n+184.1703336 4.0\n+184.1750544 3.0\n+184.1797753 2.0\n+184.2033804 1.0\n+184.2081017 2.0\n+184.2269872 10.0\n+184.2317087 29.0\n+184.2364303 45.0\n+184.2411519 30.0\n+184.2458736 33.0\n+184.2505954 13.0\n+184.2553172 8.0\n+184.2789272 1.0\n+184.3119838 16.0\n+184.3167064 20.0\n+184.3214291 11.0\n+184.3261518 17.0\n+184.3308746 15.0\n+184.3355975 11.0\n+184.3403204 4.0\n+184.3450433 6.0\n+184.3544895 20.0\n+184.3592126 12.0\n+184.3639358 11.0\n+184.3686591 2.0\n+184.3828293 18.0\n+184.3875529 7.0\n+184.3922764 2.0\n+184.4158952 27.0\n+184.4206192 16.0\n+184.4253432 15.0\n+184.4300672 10.0\n+184.4347914 46.0\n+184.4395155 47.0\n+184.4442398 24.0\n+184.4489641 18.0\n+184.4536885 2.0\n+184.4584129 3.0\n+184.4631374 16.0\n+184.4678619 26.0\n+184.4725865 39.0\n+184.4773112 71.0\n+184.4820359 71.0\n+184.4867607 52.0\n+184.4914856 47.0\n+184.4962105 27.0\n+184.5009355 8.0\n+184.5056605 10.0\n+184.5198359 11.0\n+184.5245612 14.0\n+184.5292865 8.0\n+184.5340119 3.0\n+184.5387374 1.0\n+184.6096264 17.0\n+184.6143529 5.0\n+184.6190794 5.0\n+184.6238059 1.0\n+184.6285325 1.0\n+184.6568934 12.0\n+184.6616205 37.0\n+184.6663475 17.0\n+184.6710747 5.0\n+184.6758019 9.0\n+184.6805292 4.0\n+184.6852565 13.0\n+184.6947113 4.0\n+184.6994389 3.0\n+184.7088941 1.0\n+184.7183495 3.0\n+184.7230773 1.0\n+184.7372611 6.0\n+184.8318337 13.0\n+184.836563 61.0\n+184.8412923 45.0\n+184.8460217 17.0\n+184.8507512 18.0\n+184.8554807 11.0\n+184.8602103 3.0\n+184.8649399 11.0\n+184'..b'87391 1.0\n+385.2385454 1.0\n+392.1652496 1.0\n+392.5717868 1.0\n+394.4279899 1.0\n+394.9532122 1.0\n+413.5207801 1.0\n+413.7896263 1.0\n+416.9302525 1.0\n+418.5156926 1.0\n+423.2685945 1.0\n+425.3465631 1.0\n+430.9391654 1.0\n+434.8836997 1.0\n+437.1426706 1.0\n+443.5077112 1.0\n+445.5098919 1.0\n+446.347302 1.0\n+447.722651 1.0\n+449.4245325 1.0\n+449.9630279 1.0\n+458.7792544 1.0\n+471.6538918 1.0\n+472.341612 1.0\n+485.9404752 2.0\n+489.9669036 1.0\n+492.0249267 1.0\n+495.9137427 10.0\n+495.9214892 2.0\n+495.9292358 2.0\n+497.1539508 1.0\n+499.0637921 1.0\n+504.3386398 10.0\n+504.3464519 47.0\n+504.3542639 31.0\n+504.3620761 20.0\n+504.3698883 16.0\n+504.3777005 16.0\n+504.3855128 2.0\n+504.3933252 10.0\n+504.4089502 3.0\n+509.9003969 1.0\n+522.3549152 1.0\n+523.2695983 1.0\n+542.7113937 1.0\n+544.1223564 1.0\n+548.6269323 1.0\n+549.9476636 1.0\n+562.2933137 2.0\n+563.2340492 1.0\n+567.2782288 1.0\n+568.6460936 1.0\n+568.9281613 1.0\n+572.9260834 1.0\n+573.8756678 2.0\n+579.0203581 1.0\n+579.0287286 1.0\n+579.8995841 1.0\n+584.5411814 1.0\n+585.4835048 1.0\n+602.7458921 1.0\n+610.0097083 1.0\n+611.5915635 1.0\n+613.1668534 1.0\n+622.956299 1.0\n+625.6680787 1.0\n+631.7473992 1.0\n+638.3042443 1.0\n+639.3417041 2.0\n+647.3707521 1.0\n+653.9634901 1.0\n+657.8655703 1.0\n+662.2357148 1.0\n+662.9251745 1.0\n+667.1593117 1.0\n+685.2956588 1.0\n+696.7440527 1.0\n+696.8634233 1.0\n+712.9608485 1.0\n+714.2710857 2.0\n+714.4756283 1.0\n+725.7143418 1.0\n+727.3927023 1.0\n+737.9948844 1.0\n+758.4806424 8.0\n+758.4902225 40.0\n+758.4998027 21.0\n+758.509383 13.0\n+758.5189633 6.0\n+758.5285437 16.0\n+758.5381241 7.0\n+758.5477047 37.0\n+758.5572852 147.0\n+758.5668659 284.0\n+758.5764465 208.0\n+758.5860273 135.0\n+758.5956081 84.0\n+758.605189 45.0\n+758.6147699 19.0\n+758.6243509 18.0\n+758.6339319 28.0\n+758.643513 36.0\n+758.6530942 25.0\n+758.6626754 9.0\n+758.6722567 4.0\n+758.6818381 4.0\n+758.9022259 26.0\n+758.9118087 13.0\n+758.9213915 7.0\n+758.9309745 6.0\n+758.9405574 3.0\n+758.9884733 1.0\n+758.9980566 2.0\n+759.00764 1.0\n+759.3622687 1.0\n+759.3718544 51.0\n+759.3814402 30.0\n+759.391026 25.0\n+759.4006119 8.0\n+759.4101978 5.0\n+759.4773012 1.0\n+759.4964741 3.0\n+759.5444075 22.0\n+759.5539943 120.0\n+759.5635813 144.0\n+759.5731682 106.0\n+759.5827553 62.0\n+759.5923424 33.0\n+759.6019296 23.0\n+759.6115168 9.0\n+759.6211041 10.0\n+759.6306914 1.0\n+759.6402788 11.0\n+759.6498662 12.0\n+759.6594538 23.0\n+759.6690414 7.0\n+759.678629 1.0\n+760.1964516 15.0\n+760.2060426 16.0\n+760.2156336 3.0\n+760.2252247 4.0\n+760.2348159 1.0\n+760.608918 2.0\n+760.6185116 4.0\n+765.663491 1.0\n+769.5667261 1.0\n+777.0732402 1.0\n+784.3044168 1.0\n+791.9606048 1.0\n+806.5940053 1.0\n+823.9554289 1.0\n+833.3881817 1.0\n+835.2570465 1.0\n+838.2958981 1.0\n+839.6964291 1.0\n+840.2710856 1.0\n+842.3596489 1.0\n+864.3796032 1.0\n+867.2762797 1.0\n+880.7583746 1.0\n+881.1610364 1.0\n+881.8839936 1.0\n+887.1083977 1.0\n+902.4561422 1.0\n+911.6439447 1.0\n+921.2688933 1.0\n+921.3533611 1.0\n+921.7546358 1.0\n+923.5297393 1.0\n+930.5729479 1.0\n+937.2488424 1.0\n+938.2821191 1.0\n+938.9215443 1.0\n+948.9354938 1.0\n+973.383205 1.0\n+984.8337738 1.0\n+986.6795085 1.0\n+989.9164383 1.0\n+990.474688 1.0\n+996.2854206 1.0\n+1025.917093 1.0\n+1029.195386 1.0\n+1048.524363 1.0\n+1050.676863 1.0\n+1057.498248 1.0\n+1082.290631 1.0\n+1084.592055 1.0\n+1122.79606 1.0\n+1127.054519 1.0\n+1133.943388 1.0\n+1136.146631 1.0\n+1153.81411 1.0\n+1177.519128 1.0\n+1183.518947 1.0\n+1190.650031 1.0\n+1191.526413 1.0\n+1191.898672 1.0\n+END IONS\n+BEGIN IONS\n+TITLE=scan=986 centroided 100 most intense (25 total peaks)\n+RTINSECONDS=297.916\n+PEPMASS=758.571517944336 12066.720502853394\n+CHARGE=1+\n+86.09455183 405.0\n+124.9986628 121.0\n+184.0523334 62.0\n+184.0712109 9535.0\n+184.123129 197.0\n+184.1467305 78.0\n+184.2364303 45.0\n+184.2458736 33.0\n+184.4395155 47.0\n+184.4773112 71.0\n+184.4820359 71.0\n+184.836563 61.0\n+184.8743993 83.0\n+185.0731034 72.0\n+185.3050599 44.0\n+185.4234609 23.0\n+219.5218692 30.0\n+313.2659073 120.0\n+504.3464519 47.0\n+758.4902225 40.0\n+758.5668659 284.0\n+758.643513 36.0\n+759.3718544 51.0\n+759.5635813 144.0\n+759.6594538 23.0\n+END IONS\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/demo_1.mgf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/demo_1.mgf Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,163 @@
+BEGIN IONS
+TITLE=scan=986 profile mode (100 most intense)
+RTINSECONDS=297.916
+PEPMASS=758.571517944336 12066.720502853394
+CHARGE=1+
+86.09132419 154.0
+86.09455183 405.0
+86.09777954 281.0
+86.10100731 151.0
+86.10423513 122.0
+86.10746302 60.0
+86.11069097 31.0
+86.11391898 24.0
+124.9947737 82.0
+124.9986628 121.0
+125.002552 83.0
+125.0064412 54.0
+125.0103305 37.0
+125.0142199 21.0
+184.0381759 26.0
+184.0523334 62.0
+184.0570527 62.0
+184.061772 462.0
+184.0664914 3608.0
+184.0712109 9535.0
+184.0759304 7454.0
+184.08065 4404.0
+184.0853696 3262.0
+184.0900893 2055.0
+184.0948091 1061.0
+184.0995289 925.0
+184.1042488 519.0
+184.1089688 335.0
+184.1136888 233.0
+184.1184088 138.0
+184.123129 197.0
+184.1278492 155.0
+184.1325694 113.0
+184.1372897 93.0
+184.1420101 37.0
+184.1467305 78.0
+184.2317087 29.0
+184.2364303 45.0
+184.2411519 30.0
+184.2458736 33.0
+184.4158952 27.0
+184.4347914 46.0
+184.4395155 47.0
+184.4442398 24.0
+184.4678619 26.0
+184.4725865 39.0
+184.4773112 71.0
+184.4820359 71.0
+184.4867607 52.0
+184.4914856 47.0
+184.4962105 27.0
+184.6616205 37.0
+184.836563 61.0
+184.8412923 45.0
+184.8696696 58.0
+184.8743993 83.0
+184.8791291 57.0
+184.883859 25.0
+185.0731034 72.0
+185.0778358 64.0
+185.0825682 21.0
+185.1488283 22.0
+185.3050599 44.0
+185.3097952 23.0
+185.4234609 23.0
+191.9070035 22.0
+219.5218692 30.0
+219.5270232 22.0
+313.2659073 120.0
+313.2720641 104.0
+313.2782211 58.0
+313.284378 39.0
+313.2905351 44.0
+504.3464519 47.0
+504.3542639 31.0
+758.4902225 40.0
+758.4998027 21.0
+758.5477047 37.0
+758.5572852 147.0
+758.5668659 284.0
+758.5764465 208.0
+758.5860273 135.0
+758.5956081 84.0
+758.605189 45.0
+758.6339319 28.0
+758.643513 36.0
+758.6530942 25.0
+758.9022259 26.0
+759.3718544 51.0
+759.3814402 30.0
+759.391026 25.0
+759.5444075 22.0
+759.5539943 120.0
+759.5635813 144.0
+759.5731682 106.0
+759.5827553 62.0
+759.5923424 33.0
+759.6019296 23.0
+759.6594538 23.0
+END IONS
+BEGIN IONS
+TITLE=scan=986 centroided 200 most intense (50 total peaks)
+RTINSECONDS=297.916
+PEPMASS=758.571517944336 12066.720502853394
+CHARGE=1+
+86.09455183 405.0
+86.12037518 14.0
+86.13651674 13.0
+124.9986628 121.0
+126.9586411 12.0
+126.9625606 12.0
+182.8838192 12.0
+183.8117302 10.0
+184.0381759 26.0
+184.0523334 62.0
+184.0712109 9535.0
+184.123129 197.0
+184.1467305 78.0
+184.1608922 20.0
+184.2364303 45.0
+184.2458736 33.0
+184.3167064 20.0
+184.3261518 17.0
+184.3544895 20.0
+184.3828293 18.0
+184.4158952 27.0
+184.4395155 47.0
+184.4773112 71.0
+184.4820359 71.0
+184.5245612 14.0
+184.6096264 17.0
+184.6616205 37.0
+184.6852565 13.0
+184.836563 61.0
+184.8507512 18.0
+184.8743993 83.0
+185.0731034 72.0
+185.1488283 22.0
+185.3050599 44.0
+185.3666237 18.0
+185.4234609 23.0
+191.9070035 22.0
+219.5218692 30.0
+313.2659073 120.0
+313.2905351 44.0
+313.3397938 11.0
+504.3464519 47.0
+504.3777005 16.0
+758.4902225 40.0
+758.5285437 16.0
+758.5668659 284.0
+758.643513 36.0
+758.9022259 26.0
+759.3718544 51.0
+759.5635813 144.0
+759.6594538 23.0
+760.2060426 16.0
+END IONS
b
diff -r 000000000000 -r de3c2c88e710 test-data/demo_2.mgf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/demo_2.mgf Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,290 @@
+BEGIN IONS
+TITLE=scan=986 centroid data (stick data)
+RTINSECONDS=297.916
+PEPMASS=758.571517944336 12066.720502853394
+CHARGE=1+
+37.05708507 1.0
+38.08264425 1.0
+42.1891818 1.0
+46.14368796 1.0
+48.07514101 1.0
+49.33508131 2.0
+52.6205571 1.0
+56.00151781 1.0
+57.0870461 1.0
+58.30777063 1.0
+60.39263327 1.0
+61.56610754 1.0
+62.39865419 1.0
+63.99422731 1.0
+64.03597531 1.0
+64.5380131 1.0
+65.52825667 1.0
+66.15204831 1.0
+66.93807779 1.0
+67.68867639 1.0
+68.49239211 1.0
+69.19085355 1.0
+69.60524622 1.0
+73.18497548 1.0
+73.3100153 1.0
+80.12409709 5.0
+81.12359532 8.0
+83.09994922 1.0
+86.09455183 405.0
+86.12037518 14.0
+86.13005994 9.0
+86.13651674 13.0
+86.1462024 11.0
+90.43425642 1.0
+90.69909187 1.0
+91.2531837 1.0
+94.22783258 1.0
+95.25035276 1.0
+97.70353213 1.0
+98.63756141 1.0
+107.9546139 1.0
+109.8167024 1.0
+110.2874522 1.0
+112.2689611 1.0
+112.5861633 1.0
+112.6969205 1.0
+114.6290884 1.0
+119.963407 1.0
+120.4057758 1.0
+121.040237 1.0
+124.9986628 121.0
+125.0414471 1.0
+126.9586411 12.0
+126.9625606 12.0
+126.9703999 5.0
+132.5773556 1.0
+134.8338603 1.0
+134.9469833 1.0
+137.5945461 1.0
+144.5015506 1.0
+144.5893767 1.0
+148.2386341 1.0
+152.405389 1.0
+161.4067478 1.0
+171.6584713 1.0
+180.132849 4.0
+182.8838192 12.0
+183.8117302 10.0
+184.0381759 26.0
+184.0523334 62.0
+184.0712109 9535.0
+184.123129 197.0
+184.1467305 78.0
+184.1608922 20.0
+184.1703336 4.0
+184.2364303 45.0
+184.2458736 33.0
+184.3167064 20.0
+184.3261518 17.0
+184.3544895 20.0
+184.3828293 18.0
+184.4158952 27.0
+184.4395155 47.0
+184.4773112 71.0
+184.4820359 71.0
+184.5245612 14.0
+184.6096264 17.0
+184.6190794 5.0
+184.6616205 37.0
+184.6758019 9.0
+184.6852565 13.0
+184.7183495 3.0
+184.836563 61.0
+184.8507512 18.0
+184.8743993 83.0
+184.9075093 14.0
+185.0541746 6.0
+185.0731034 72.0
+185.1488283 22.0
+185.3050599 44.0
+185.3666237 18.0
+185.4234609 23.0
+186.2770649 9.0
+186.2865604 6.0
+186.4337716 6.0
+186.4385213 6.0
+191.9070035 22.0
+191.9455566 1.0
+192.3505984 2.0
+192.8961495 2.0
+194.9549179 1.0
+203.8501932 1.0
+204.0190921 1.0
+207.0612222 1.0
+207.18638 1.0
+212.7256813 1.0
+219.5218692 30.0
+219.5373314 5.0
+220.9983775 1.0
+222.5369126 1.0
+226.7076635 1.0
+227.787901 1.0
+227.8614084 1.0
+232.3783878 1.0
+232.9408182 5.0
+257.2437034 1.0
+268.4205851 2.0
+274.2709535 1.0
+275.5224984 1.0
+277.083698 1.0
+277.6282618 1.0
+280.5338624 1.0
+289.004242 1.0
+290.5201142 1.0
+291.5526969 1.0
+292.3669962 1.0
+292.837072 1.0
+299.9395434 1.0
+300.6629156 1.0
+301.1215018 1.0
+304.4202865 5.0
+307.2368586 1.0
+313.2659073 120.0
+313.2905351 44.0
+313.3397938 11.0
+313.3828983 2.0
+333.1886927 1.0
+333.7667574 1.0
+346.7339992 1.0
+347.900909 1.0
+348.0112184 1.0
+355.0483988 1.0
+361.0050763 1.0
+368.7460158 1.0
+369.0399867 1.0
+378.7999658 1.0
+379.1656488 1.0
+379.687391 1.0
+385.2385454 1.0
+392.1652496 1.0
+392.5717868 1.0
+394.4279899 1.0
+394.9532122 1.0
+413.5207801 1.0
+413.7896263 1.0
+416.9302525 1.0
+418.5156926 1.0
+423.2685945 1.0
+425.3465631 1.0
+430.9391654 1.0
+434.8836997 1.0
+437.1426706 1.0
+443.5077112 1.0
+445.5098919 1.0
+446.347302 1.0
+447.722651 1.0
+449.4245325 1.0
+449.9630279 1.0
+458.7792544 1.0
+471.6538918 1.0
+485.9404752 2.0
+495.9137427 10.0
+495.9292358 2.0
+504.3464519 47.0
+504.3777005 16.0
+504.3933252 10.0
+522.3549152 1.0
+523.2695983 1.0
+542.7113937 1.0
+544.1223564 1.0
+548.6269323 1.0
+562.2933137 2.0
+567.2782288 1.0
+568.6460936 1.0
+568.9281613 1.0
+573.8756678 2.0
+579.0287286 1.0
+579.8995841 1.0
+584.5411814 1.0
+585.4835048 1.0
+602.7458921 1.0
+610.0097083 1.0
+611.5915635 1.0
+613.1668534 1.0
+622.956299 1.0
+625.6680787 1.0
+631.7473992 1.0
+639.3417041 2.0
+653.9634901 1.0
+657.8655703 1.0
+662.2357148 1.0
+662.9251745 1.0
+667.1593117 1.0
+685.2956588 1.0
+696.7440527 1.0
+696.8634233 1.0
+714.2710857 2.0
+725.7143418 1.0
+727.3927023 1.0
+758.4902225 40.0
+758.5285437 16.0
+758.5668659 284.0
+758.643513 36.0
+758.9022259 26.0
+758.9980566 2.0
+759.3718544 51.0
+759.5635813 144.0
+759.6211041 10.0
+759.6594538 23.0
+760.2060426 16.0
+760.2252247 4.0
+760.6185116 4.0
+769.5667261 1.0
+777.0732402 1.0
+784.3044168 1.0
+791.9606048 1.0
+806.5940053 1.0
+823.9554289 1.0
+833.3881817 1.0
+835.2570465 1.0
+838.2958981 1.0
+839.6964291 1.0
+840.2710856 1.0
+842.3596489 1.0
+864.3796032 1.0
+867.2762797 1.0
+880.7583746 1.0
+881.1610364 1.0
+881.8839936 1.0
+887.1083977 1.0
+902.4561422 1.0
+911.6439447 1.0
+921.2688933 1.0
+921.3533611 1.0
+921.7546358 1.0
+923.5297393 1.0
+930.5729479 1.0
+937.2488424 1.0
+938.2821191 1.0
+938.9215443 1.0
+948.9354938 1.0
+973.383205 1.0
+984.8337738 1.0
+986.6795085 1.0
+989.9164383 1.0
+990.474688 1.0
+996.2854206 1.0
+1025.917093 1.0
+1029.195386 1.0
+1048.524363 1.0
+1050.676863 1.0
+1057.498248 1.0
+1082.290631 1.0
+1084.592055 1.0
+1122.79606 1.0
+1127.054519 1.0
+1133.943388 1.0
+1136.146631 1.0
+1153.81411 1.0
+1177.519128 1.0
+1183.518947 1.0
+1190.650031 1.0
+1191.526413 1.0
+1191.898672 1.0
+END IONS
b
diff -r 000000000000 -r de3c2c88e710 test-data/fasta_batch_0.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fasta_batch_0.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,6 @@
+>seq1
+PROTEIN0
+>seq2
+PROTEIN
+>seq3
+ANOTHERPROTEIN
b
diff -r 000000000000 -r de3c2c88e710 test-data/fasta_batch_1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fasta_batch_1.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,8 @@
+>seq4
+ASFWEFOIN
+>seq5
+DUNEDIN
+FELLOWSHIP
+NAZGUL
+>seq6
+NOTAPROTEIN
b
diff -r 000000000000 -r de3c2c88e710 test-data/file1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/file1.tab Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,53 @@\n+\tProtein(s)\tSequence\tAAs Before\tAAs After\tPosition\tModified Sequence\tVariable Modifications\tFixed Modifications\tSpectrum File\tSpectrum Title\tSpectrum Scan Number\tRT\tm/z\tMeasured Charge\tIdentification Charge\tTheoretical Mass\tIsotope Number\tPrecursor m/z Error [ppm]\tLocalization Confidence\tProbabilistic PTM score\tD-score\tConfidence [%]\tValidation\n+290\taact1954_c_51_2237, aact_c_1_381, aact_c_1_625, hhae2076_c_35_2415, hhae2076_c_48_2527, hhae2076_c_50_2535, hinf_c_1_1270, hot851_c_32_1760, hpar1239_c_1_453, hpar_c_26_2006\tILELANHLDTYIPEPER\tEK; EK; EK; EK; EK; EK; EK; EK; EK; EK\tAI; AI; AI; AI; AI; AI; AI; AI; AI; AI\t188; 189; 189; 189; 189; 136; 189; 189; 189; 162\tNH2-ILELANHLDTYIPEPER-COOH\t\tNA\tfile1.mgf\t\tNA\t3531.2049\t1012.03259277344\t2+\t2+\t2022.04220566365\t0\t4.16339589573139\t\t\t\t100\tDoubtful\n+952\tNCBIABZW_c_1_1765, NCBIACFE_c_3_1141, NCBIACIK_c_3_1174, agem_c_25_1303, amin_c_3_1453, aomn_c_21_1471, aot199_c_2_1386, aot810_c_19_1178, aoti_c_21_1564, apar_c_1_190, apre_c_1_353, atet_c_26_1636, avag_c_1_488, bot274_c_2_449, ccurt_c_1_995, cot876_c_9_1574, dinv_c_1_735, dmic_c_17_1155, elen_c_1_956, elim_c_1_1015, eton_c_4_1650, eyur_c_18_1215, falo_c_1_1561, lgas_c_1_227, llac1719_c_1_1649, llac_c_1_1622, mmic_c_17_1645, oot809_c_1_190, opro_c_4_727, ouli_c_1_201, pden2021_c_1_660, pden_c_1_144, plac2505_c_1_224, plac_c_5_667, pot192_c_1_101, pot786_c_27_1616, pot836_c_4_394, saga_c_1_980, sang2334_c_4_518, sang_c_65_1793, saus_c_1_473, scon_c_4_1863, scri_c_1_88, sdow_c_2_674, sexi_c_2_767, sgor_c_1_1119, sinf_c_2_522, sinfantis_c_7_1791, sint2361_c_1_968, sint_c_7_1733, smit1067_c_1_1339, smit1998_c_1_334, smit2_c_3_376, smit_c_1_736, smut_c_1_979, soli_c_1_916, sora2005_c_1_1065, sora_c_2_492, sot056_c_1_137, sot058_c_1_77, sot066_c_4_1684, sot066_c_4_1687, sot070_c_1_557, sot071_c_13_1894, spar_c_11_1951, spara_c_1_496, sper_c_2_396, spne_c_1_1459, spyo1356_c_1_1018, spyo_c_1_953, ssal_c_16_1859, ssan_c_1_1127, ssob_c_76_1349, sves_c_2_1296, swig_c_1_297, tden_c_1_1683, vaty_c_3_446, vot158_c_1_258, vot780_c_1_155, vpardsm_c_1_187\tQPFPGPGIAIR\tWR; YR; WR; WR; YR; WR; YR; YR; WR; YR; WR; WR; YR; WR; HR; WR; NR; NR; HR; WR; NR; HR; WR; WR; WR; WR; WR; YR; YR; WR; WR; WR; DR; DR; WR; WR; DR; WR; WR; WR; WR; WR; WR; WR; HR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; HR; WR; WR; WR; WR\tII; II; VM; VM; II; IV; II; II; VL; II; VI; VI; II; II; II; VL; II; IV; II; VM; IL; VM; VM; VL; VL; VL; VM; II; II; II; II; II; IM; IM; VI; VL; IM; VM; VM; VM; VM; IM; VM; VM; II; VM; VM; VM; IM; IM; VM; VM; VM; VM; VM; VM; VM; VM; VM; IM; VM; VM; VM; VM; VM; VM; VM; VM; VM; VM; VM; VM; VM; VM; II; IM; VM; VM; VM; VM\t392; 397; 387; 387; 402; 395; 397; 395; 394; 394; 386; 386; 403; 387; 395; 385; 387; 387; 400; 388; 386; 385; 386; 393; 389; 389; 387; 395; 395; 394; 395; 388; 380; 380; 390; 388; 380; 396; 395; 395; 397; 395; 395; 393; 395; 394; 396; 396; 395; 395; 396; 396; 396; 396; 393; 395; 396; 396; 394; 396; 34; 397; 396; 396; 397; 397; 396; 396; 396; 396; 396; 396; 393; 396; 395; 402; 387; 387; 320; 387\tNH2-QPFPGPGIAIR-COOH\t\tNA\tfile1.mgf\t\tNA\t2999.9615\t576.825256347656\t2+\t2+\t1151.64512785223\t0\t-7.94696277832691\t\t\t\t100\tDoubtful\n+513\tfnuc420_c_5_1120, fnucp_c_1_320, fot370_c_39_1069\tIADAPLVEGLIAGVAVNDEK\tIK; IK; IK\tAD; AD; AD\t94; 94; 94\tNH2-IADAPLVEGLIAGVAVNDEK-COOH\t\tNA\tfile1.mgf\t\tNA\t4459.3129\t665.36767578125\t3+\t3+\t1993.07317143876\t0\t4.02110347944937\t\t\t\t100\tDoubtful\n+914\tgadi_c_7_1297, gele_c_8_1129\tNWVVIDATDVPLGR\tER; ER\tLS; LS\t15; 15\tNH2-NWVVIDATDVPLGR-COOH\t\tNA\tfile1.mgf\t\tNA\t3760.3681\t777.919799804688\t2+\t2+\t1553.82019166173\t0\t3.12052037560668\t\t\t\t100\tDoubtful\n+657\tfnuc2539_c_1_1682, fnuc420_c_4_894, fnuc_c_1_2009, fnuc_c_1_427, fnucp_c_10_2292, fnucv_c_1_39, fnucv_c_70_1442\tLQAYVTQAINTDKR\tYK; YK; YK; YK; YK; YK; YK\tDL; DL; DL; DL; DL; DL; DL\t939; 994; 945; 943; 985; 944; 978\tNH2-LQAYVTQAINTDKR-COOH\t\tNA\tfile1.mgf\t\tNA\t2188.3115\t810.94091796875\t2+\t2+\t1619.86311'..b'03; 203; 203; 203; 203; 203; 203; 194\tNH2-IIARPYVGEPGNFT-COOH\t\tNA\tfile1.mgf\t\tNA\t2764.3174\t767.406066894531\t2+\t2+\t1532.79872794116\t0\t-0.747378027423135\t\t\t\t100\tDoubtful\n+222\tsgor_c_1_1259\tIGLGNIERPVPLK\tAK\tTV\t56\tNH2-IGLGNIERPVPLK-COOH\t\tNA\tfile1.mgf\t\tNA\t2848.9136\t703.430358886719\t2+\t2+\t1404.84528421076\t0\t0.625953652526985\t\t\t\t100\tDoubtful\n+683\tbot272_c_15_1813, bpyo_c_2_301, cot329_c_19_2762, pbar_c_12_1943, pbiv2380_c_1_591, pbue_c_20_868, pbus_c_5_644, pfus_c_11_1555, phis_c_13_1911, pint2554_c_4_928, pmel_c_34_1529, pmulx_c_7_2247, pnig_c_2_331, pori2510_c_17_2191, pot299_c_7_1653, pot302_c_17_1682, pot306_c_11_1442, poul2684_c_22_1641, pple_c_7_1031, psac_c_53_1787, psal_c_1_105, psco_c_8_761, ptan_c_1_377, pver2688_c_13_1760\tIGMTSVFSADGK\tKK; KK; KK; RK; KK; RK; RK; KK; KK; KK; KK; RK; KK; KK; RK; KK; KK; KK; RK; KK; KK; KK; KK; KK\tNV; NV; NV; NV; NV; NV; NI; NV; NV; NV; NV; NV; NV; NV; NI; NV; NV; NV; NI; NV; NV; NV; NI; NV\t9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9; 9\tNH2-IGMTSVFSADGK-COOH\t\tNA\tfile1.mgf\t\tNA\t2818.1738\t606.800964355469\t2+\t2+\t1211.58562394043\t0\t1.44350414310133\t\t\t\t100\tDoubtful\n+317\tNCBIABWM_c_9_2966, aact1954_c_13_1423, aaph_c_1_1906, aot458_c_17_1189, aseg_c_10_1785, ecan2604_c_5_3961, ecol_c_1_3601, ehor_c_8_1690, esak_c_1_3710, falo_c_1_849, haeg_c_5_763, hhae2076_c_26_2208, hinf_c_1_1119, hot851_c_11_1293, hpar1239_c_1_572, hpar_c_7_1476, kpne1249_c_1_5306, kpne_c_1_4892, lbuc_c_1_678, lhof2581_c_3_1199, lot215_c_6_769, lot879_c_10_653, lsha_c_13_1992, lwad_c_20_1683, pmir1289_c_1_3059, ypes1054_c_1_4288\tQIASLGIYPAVDPLDSTSR\tSR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR; SR\tQL; QL; QL; QL; QL; QL; QL; QL; QL; IL; QL; QL; QL; QL; QL; QL; QL; QL; IL; IL; IL; IL; IL; IL; QL; QL\t325; 322; 322; 322; 322; 325; 325; 325; 325; 329; 322; 322; 322; 322; 322; 322; 325; 325; 327; 327; 327; 327; 327; 327; 325; 325\tNH2-QIASLGIYPAVDPLDSTSR-COOH\t\tNA\tfile1.mgf\t\tNA\t3803.7238\t1002.02740478516\t2+\t2+\t2002.03712028321\t0\t1.56500629190384\t\t\t\t100\tDoubtful\n+842\thpar_c_3_810\tEQLTEVEDQEIAK\tSR\tLV\t37\tNH2-EQLTEVEDQEIAK-COOH\t\tNA\tfile1.mgf\t\tNA\t2170.1834\t766.379638671875\t2+\t2+\t1530.74133220434\t0\t2.21314158255407\t\t\t\t100\tDoubtful\n+128\tfnuc2539_c_1_832, fnuc420_c_1_196, fnucp_c_1_703, fnucv_c_31_884, fot370_c_10_424, fper2555_c_4_909, llac1719_c_1_954, llac_c_1_977\tSVLPVVLDAGTNR\tPK; PK; PK; PK; PK; PK; PV; PA\tET; ET; EA; ET; ET; ET; KE; KE\t179; 179; 179; 179; 13; 179; 177; 177\tNH2-SVLPVVLDAGTNR-COOH\t\tNA\tfile1.mgf\t\tNA\t3159.2544\t670.881164550781\t2+\t2+\t1339.74596409231\t0\t1.35052090508984\t\t\t\t100\tDoubtful\n+620\tfper2555_c_7_1237, fper_c_16_1269\tYDLVVVGGGPAGLAAAVEAK\tMK; MK\tKN; KN\t5; 5\tNH2-YDLVVVGGGPAGLAAAVEAK-COOH\t\tNA\tfile1.mgf\t\tNA\t3961.0842\t929.012634277344\t2+\t2+\t1856.00436360295\t0\t3.41870475946953\t\t\t\t100\tDoubtful\n+646\tNCBIABIX_c_1_766, NCBIACDZ_c_4_1178, aomn_c_10_1022, aot181_c_3_612, bani2464_c_1_1526, bant_c_1_4466, bbre2426_c_1_136, bbre_c_13_1405, bdim1892_c_23_1434, bdim_c_30_1168, blon2249_c_1_150, blon_c_2_281, bsub2577_c_2_446, fgon2550_c_17_1107, fgon_c_30_1589, fnec_c_10_2402, fnuc420_c_20_2211, fnuc_c_1_711, fnucp_c_1_20, fnucv_c_21_690, fot370_c_38_1059, fper2555_c_2_625, fper_c_2_241, gber_c_3_139, ghae2070_c_5_719, gvag_c_1_257, pden_c_10_1473, sino_c_10_1488, swig_c_2_670\tIINEPTAAALAYGLEK\tLR; ER; LR; LR; LR; ER; LR; LR; LR; LR; LR; LR; LR; KR; KR; KR; KR; KR; KR; KR; KR; KR; KR; ER; ER; LR; LR; LR; LR\tGK; TD; GK; GK; SK; QD; GK; GK; ND; ND; GK; GK; GK; KK; KK; KK; KK; KK; KK; KK; KK; KK; KK; TD; TD; GK; GK; GK; GK\t144; 142; 144; 144; 144; 142; 144; 144; 168; 168; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 142; 142; 144; 144; 144; 144\tNH2-IINEPTAAALAYGLEK-COOH\t\tNA\tfile1.mgf\t\tNA\t3443.8712\t837.460571289063\t2+\t2+\t1672.90358693252\t0\t1.79275148425641\t\t\t\t100\tDoubtful\n+797\tfnucp_c_8_2165\tKIIDEDENDEGEGYSQK\tIR\tNN\t88\tNH2-KIIDEDENDEGEGYSQK-COOH\t\tNA\tfile1.mgf\t\tNA\t1431.7089\t984.935913085938\t2+\t2+\t1967.85960941371\t0\t-1.18595162243177\t\t\t\t100\tDoubtful\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/file2.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/file2.tab Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,55 @@\n+\tProtein(s)\tSequence\tAAs Before\tAAs After\tPosition\tModified Sequence\tVariable Modifications\tFixed Modifications\tSpectrum File\tSpectrum Title\tSpectrum Scan Number\tRT\tm/z\tMeasured Charge\tIdentification Charge\tTheoretical Mass\tIsotope Number\tPrecursor m/z Error [ppm]\tLocalization Confidence\tProbabilistic PTM score\tD-score\tConfidence [%]\tValidation\n+347\tfnucp_c_1_738\tYSNEDVKEEDLNK\tRR\tIL\t16\tNH2-YSNEDVKEEDLNK-COOH\t\tNA\tfile2.mgf\t\tNA\t1301.235\t791.8662109375\t2+\t2+\t1581.71584573249\t0\t1.27749577022674\t\t\t\t100\tDoubtful\n+425\taaph_c_1_2183, hhae2076_c_16_1782, hinf_c_1_1334, hot851_c_11_1302, hpar1239_c_1_755, hpar_c_10_1735\tSGATGVFTDFPDTGVEFLK\tNK; NK; NK; NK; NK; NK\tKQ; GK; GI; GK; KQ; KQ\t339; 343; 343; 343; 340; 340\tNH2-SGATGVFTDFPDTGVEFLK-COOH\t\tNA\tfile2.mgf\t\tNA\t4254.5871\t994.487915039063\t2+\t2+\t1986.95747298018\t0\t1.91262836858352\t\t\t\t100\tDoubtful\n+598\tfnucp_c_6_1952, fper2555_c_23_2106, fper_c_9_903\tVIAVLVGENLDEVAK\tKK; KK; KK\tKC; KC; KC\t38; 38; 38\tNH2-VIAVLVGENLDEVAK-COOH\t\tNA\tfile2.mgf\t\tNA\t3565.4679\t784.951843261719\t2+\t2+\t1567.88212321195\t0\t4.46550271095854\t\t\t\t100\tDoubtful\n+229\tfnuc420_c_1_102, fnucp_c_2_1111, fnucv_c_162_2140, fot370_c_75_1534, fper2555_c_1_145, fper_c_53_2217\tDDVDAMSMEK\tIK; IK; IK; IK; IK; IK\tVV; VV; VA; VV; VV; VV\t288; 288; 205; 288; 288; 288\tNH2-DDVDAMSMEK-COOH\t\tNA\tfile2.mgf\t\tNA\t1743.2385\t570.732238769531\t2+\t2+\t1139.44747578511\t0\t2.14533665243431\t\t\t\t100\tDoubtful\n+944\tfnucp_c_2_1031\tTGTTTTTNTER\tYK\tGN\t37\tNH2-TGTTTTTNTER-COOH\t\tNA\tfile2.mgf\t\tNA\t704.243\t591.783935546875\t2+\t2+\t1181.55240923585\t0\t0.767953402397693\t\t\t\t100\tDoubtful\n+412\thaeg_c_2_393, hhae2076_c_9_1257, hinf_c_1_1726, hot851_c_3_439, hpar1239_c_1_197, hpar_c_3_696\tNVDGHDAEQIR\tIR; IR; IR; IR; IR; IR\tAA; QA; AA; QA; AA; AA\t215; 215; 215; 215; 215; 215\tNH2-NVDGHDAEQIR-COOH\t\tNA\tfile2.mgf\t\tNA\t1118.4025\t627.297668457031\t2+\t2+\t1252.5796270432\t0\t0.922160533025422\t\t\t\t100\tDoubtful\n+63\tNCBIABQV_c_5_729, ecas_c_7_1300, edur2534_c_1_31, edur_c_5_1611, efae1080_c_1_20, eita_c_2_200, esac_c_6_1331, lcas_c_1_2988, lfer_c_1_451, lgas_c_1_1751, line_c_5_884, ljoh_c_1_1822, lmon1053_c_1_2954, lpen_c_23_2249, lpla2113_c_1_489, lrha_c_1_2760, lsal_c_1_699, sang_c_11_577, saus_c_10_1729, scon_c_1_21, scri_c_2_523, sdow_c_5_1507, sgor_c_1_1678, sinf_c_7_1407, sint2361_c_1_321, sint_c_4_1285, smut_c_1_1723, soli_c_1_1747, sot056_c_1_770, sot066_c_2_929, spar_c_10_1829, spara_c_1_1957, ssan_c_1_1864, ssob_c_112_1703\tSTFIQGSWNYER\tWR; WR; WR; WR; WR; WR; WR; WR; MR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR; WR\tMQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ\t19; 19; 20; 20; 19; 19; 19; 19; 20; 23; 23; 23; 19; 25; 25; 19; 20; 19; 19; 19; 19; 19; 19; 19; 19; 19; 19; 19; 19; 19; 19; 19; 29; 19\tNH2-STFIQGSWNYER-COOH\t\tNA\tfile2.mgf\t\tNA\t3079.8075\t744.351318359375\t2+\t2+\t1486.68409211174\t0\t2.68131726920278\t\t\t\t100\tDoubtful\n+578\taden2573_c_9_902, ager2575_c_7_1667, agra_c_4_1097, aisr_c_35_2609, ajoh_c_11_799, amas_c_24_1219, anae_c_1_2178, aot171_c_23_540, aot448_c_13_1487\tTNTALADLVFSDVPGR\tRR; RR; RL; RR; RR; RR; RR; RR; RR\tVA; VA; VA; VA; VA; VA; VA; VA; VA\t135; 135; 135; 135; 135; 135; 135; 135; 135\tNH2-TNTALADLVFSDVPGR-COOH\t\tNA\tfile2.mgf\t\tNA\t3997.9022\t838.437805175781\t2+\t2+\t1674.85769936926\t0\t2.00256678651046\t\t\t\t100\tDoubtful\n+928\tfnucp_c_6_2015, fnucp_c_6_2016\tTGVAYGLIYSR\tGK; GK\tKG; KG\t872; 968\tNH2-TGVAYGLIYSR-COOH\t\tNA\tfile2.mgf\t\tNA\t2831.2973\t600.324829101563\t2+\t2+\t1198.63462273818\t0\t0.401892019334039\t\t\t\t100\tDoubtful\n+447\tfgon2550_c_23_1318, fper2555_c_21_2030, fper_c_3_364\tEAAPKEEAEAIKEK\tIK; IK; IK\tLT; LT; LT\t97; 97; 97\tNH2-EAAPKEEAEAIKEK-COOH\t\tNA\tfile2.mgf\t\tNA\t1213.1991\t771.903625488281\t2+\t2+\t1541.79370213037\t0\t-0.650396465740847\t\t\t\t100\tDoubtful\n+930\taseg_c_1_362\tTVGTQIDDETLEER\tPR\tVK\t44\tNH2-TVGTQIDDETLEER-COOH\t\tNA\tfile2.mgf\t\tNA\t2213.534\t803.385986328125\t2+\t2+\t1604.7529595172\t0\t2.775887233883\t\t\t\t100\tDoubtful\n+719\taseg_c_5_1296\tAHAVQSFLTAK\t'..b'K; EK; TK; TK; TK; TK\tAA; AQ; AQ; AQ; AA; AA; AA; AA; AQ; AQ; AQ; AQ; AA; AA; AS; AA\t86; 86; 86; 86; 86; 86; 86; 86; 86; 86; 86; 98; 86; 86; 86; 86\tNH2-KLQLVGVGYR-COOH\t\tNA\tfile2.mgf\t\tNA\t2387.6002\t566.846740722656\t2+\t2+\t1131.67642798051\t0\t2.20565499752494\t\t\t\t100\tDoubtful\n+108\tfgon2550_c_17_1135, fnec_c_10_2443, fnuc420_c_3_743, fnuc_c_1_125, fnucp_c_1_218, fot370_c_28_874, fper2555_c_17_1857, fper_c_17_1307\tIIVNMGVGEATQNSK\tEK; EK; EK; EK; EK; EK; EK; EK\tLM; LM; LI; LI; LM; LI; LI; LM\t38; 38; 38; 38; 38; 38; 38; 38\tNH2-IIVNM<ox>GVGEATQNSK-COOH\tOxidation of M(5)\tNA\tfile2.mgf\t\tNA\t1736.8934\t788.906433105469\t2+\t2+\t1575.79265658455\t0\t3.58516093070578\tOxidation of M (5: Very Confident)\tOxidation of M (5: 100.0)\tOxidation of M (5: 100.0)\t100\tDoubtful\n+866\tvpardsm_c_1_54\tVSDNQNNTTQTTAK\tVK\tGV\t3006\tNH2-VSDNQNNTTQTTAK-COOH\t\tNA\tfile2.mgf\t\tNA\t825.5121\t761.359741210938\t2+\t2+\t1520.70667803112\t0\t-1.14830136555834\t\t\t\t100\tDoubtful\n+829\tgsan_c_16_1098\tIVEAIELDKPLIDKDITVGGR\tKR\tVH\t230\tNH2-IVEAIELDKPLIDKDITVGGR-COOH\t\tNA\tfile2.mgf\t\tNA\t3411.733\t765.440002441406\t3+\t3+\t2293.2893122146\t0\t3.86084839328096\t\t\t\t100\tDoubtful\n+921\tfnucp_c_6_2058\tEYLLNVPVPR\tMK\tSF\t3\tNH2-EYLLNVPVPR-COOH\t\tNA\tfile2.mgf\t\tNA\t3352.6729\t600.345703125\t2+\t2+\t1198.6710082469\t0\t4.86811007372071\t\t\t\t100\tDoubtful\n+354\taact1954_c_22_1863, aact_c_1_2025, aaph_c_1_111, hpar1239_c_1_597, hpar_c_9_1606\tEATQEEYIEHR\tLK; LK; LK; LK; LK\tVK; VK; VK; VK; VK\t309; 129; 309; 309; 309\tNH2-EATQEEYIEHR-COOH\t\tNA\tfile2.mgf\t\tNA\t1367.6752\t702.823852539063\t2+\t2+\t1403.63172218571\t0\t1.01729632612114\t\t\t\t100\tDoubtful\n+216\tNCBIACEA_c_25_1646\tITAEEGGSSGPEK\tHK\tAE\t64\tNH2-ITAEEGGSSGPEK-COOH\t\tNA\tfile2.mgf\t\tNA\t953.7822\t631.299438476563\t2+\t2+\t1260.58337501096\t0\t0.751631632293137\t\t\t\t100\tDoubtful\n+813\tfnuc420_c_3_732, fnuc_c_1_137, fnucp_c_1_207, fnucv_c_123_1931, fot370_c_28_863, fper_c_17_1318\tMVGGGVTFGPHPR\tPH; PH; PH; ; PH; PH\tSY; SY; SY; SY; SY; SY\t83; 83; 83; 1; 83; 83\tNH2-MVGGGVTFGPHPR-COOH\t\tNA\tfile2.mgf\t\tNA\t2086.4944\t656.335876464844\t2+\t2+\t1310.6553752661\t0\t1.39009047484093\t\t\t\t100\tDoubtful\n+209\tfnucp_c_1_83, fnucv_c_19_633\tVDDEVEGTVTK\tFK; FK\tVL; VL\t561; 561\tNH2-VDDEVEGTVTK-COOH\t\tNA\tfile2.mgf\t\tNA\t1385.3612\t596.292053222656\t2+\t2+\t1190.56666231766\t0\t2.42431625672414\t\t\t\t100\tDoubtful\n+329\tfot370_c_3_181, fper2555_c_16_1790, fper_c_24_1587\tYTIDIFELGVDK\tGK; GK; GK\tKL; KL; KL\t102; 102; 102\tNH2-YTIDIFELGVDK-COOH\t\tNA\tfile2.mgf\t\tNA\t4197.1977\t706.871459960938\t2+\t2+\t1411.72349731223\t0\t3.44453912132075\t\t\t\t100\tDoubtful\n+625\tvaty_c_5_598, vpardsm_c_1_987\tMNIINVLEQEQLR\t\tTD; TD\t1; 1\tNH2-M<ox>NIINVLEQEQLR-COOH\tOxidation of M(1)\tNA\tfile2.mgf\t\tNA\t3727.3337\t808.429992675781\t2+\t2+\t1614.83994113014\t0\t3.39627827848994\tOxidation of M (1: Very Confident)\tOxidation of M (1: 100.0)\tOxidation of M (1: 100.0)\t100\tDoubtful\n+407\tfper2555_c_6_1098, fper_c_56_2262\tALEGLEFLGVDLDKEVNSVR\tEK; EK\tKK; KK\t343; 343\tNH2-ALEGLEFLGVDLDKEVNSVR-COOH\t\tNA\tfile2.mgf\t\tNA\t4566.4018\t735.060241699219\t3+\t3+\t2202.15321266461\t0\t2.57713446857005\t\t\t\t100\tDoubtful\n+81\tfnuc_c_1_198\tALSYVIPTEEEFPYTIR\tER\tVV\t419\tNH2-ALSYVIPTEEEFPYTIR-COOH\t\tNA\tfile2.mgf\t\tNA\t3994.7548\t1014.52319335938\t2+\t2+\t2027.02515861718\t0\t3.28981631425537\t\t\t\t100\tDoubtful\n+19\tfnec_c_8_2194, fnuc2539_c_1_215, fnuc420_c_19_2187, fnuc_c_1_400, fnucp_c_6_2038, fnucv_c_1_14, fot370_c_18_654, fper2555_c_9_1379, fper_c_7_740\tAVSQPVEGTILTVIR\tYQ; YK; YK; YK; YK; YK; YM; YM; YM\tKV; KV; KV; KV; RV; KV; KV; KV; KV\t127; 127; 127; 127; 127; 127; 127; 127; 127\tNH2-AVSQPVEGTILTVIR-COOH\t\tNA\tfile2.mgf\t\tNA\t3691.0492\t528.310852050781\t3+\t3+\t1581.90900666613\t0\t1.08527497709561\t\t\t\t100\tDoubtful\n+294\taact1954_c_15_1548, aact_c_1_651, aaph_c_1_1528, aot458_c_5_484, aseg_c_7_1480, haeg_c_7_994, hduc_c_1_1128, hhae2076_c_6_920, hinf_c_1_1495, hot851_c_5_726, hpar_c_4_995\tGIIDAILDGSIEK\tTR; TR; TR; TR; TR; TR; TR; TR; TR; TR; TR\tAQ; AQ; AE; AE; AE; AE; AT; AE; AE; AE; TE\t455; 455; 455; 455; 455; 455; 453; 455; 455; 455; 455\tNH2-GIIDAILDGSIEK-COOH\t\tNA\tfile2.mgf\t\tNA\t4355.5846\t672.376525878906\t2+\t2+\t1342.7343963491\t0\t3.05073678608087\t\t\t\t100\tDoubtful\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/file3.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/file3.tab Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,47 @@\n+\tProtein(s)\tSequence\tAAs Before\tAAs After\tPosition\tModified Sequence\tVariable Modifications\tFixed Modifications\tSpectrum File\tSpectrum Title\tSpectrum Scan Number\tRT\tm/z\tMeasured Charge\tIdentification Charge\tTheoretical Mass\tIsotope Number\tPrecursor m/z Error [ppm]\tLocalization Confidence\tProbabilistic PTM score\tD-score\tConfidence [%]\tValidation\n+343\tecas2549_c_6_1415, ecas_c_11_1734, edur2534_c_2_383, esac_c_2_453, laci_c_1_769, lcol_c_4_902, lcri_c_1_776, lfer_c_1_502, lreu_c_1_501, lvag_c_3_229, sang2334_c_2_202, sang_c_15_751, scon_c_1_470, scri_c_3_789, soli_c_1_620\tIMEVPVGDALIGR\tGK; GK; GK; GK; GR; GR; GR; GR; GR; GR; GK; GK; GK; GK; GK\tVV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV\t94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94\tNH2-IM<ox>EVPVGDALIGR-COOH\tOxidation of M(2)\tNA\tfile3.mgf\t\tNA\t3001.9728\t693.379821777344\t2+\t2+\t1384.73843618372\t0\t4.79857436469376\tOxidation of M (2: Very Confident)\tOxidation of M (2: 100.0)\tOxidation of M (2: 100.0)\t100\tDoubtful\n+141\tfgon2550_c_2_197, fgon_c_34_1639, fnuc420_c_4_937, fnuc_c_1_853, fnucp_c_4_1631, fnucv_c_95_1697, fot370_c_16_619, fper2555_c_5_1030, fper_c_27_1676, lbuc_c_1_1988, lgoo2629_c_1_1400, lgoo_c_5_436, lhof2581_c_7_2044, lhof_c_4_1315, lot215_c_22_1682, lot225_c_156_2290, lot879_c_16_913, lsha_c_7_1665, lwad_c_28_1936\tQTGHHLNVNVFGR\tFK; FK; FK; FK; FK; FK; FK; FK; FK; FN; FN; FN; FN; FN; FN; FN; FN; FN; FN\tEL; EL; EL; EL; EL; EL; EL; EL; EL; DL; EL; EL; EL; EL; EL; EL; EL; DL; DL\t684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684; 684\tpyro-QTGHHLNVNVFGR-COOH\tPyrolidone from Q(1)\tNA\tfile3.mgf\t\tNA\t2491.2416\t731.369995117188\t2+\t2+\t1460.7272943364\t0\t-1.26955802335559\t\tPyrolidone from Q (0: 100.0)\tPyrolidone from Q (1: 100.0)\t100\tDoubtful\n+23\tfnucp_c_3_1241\tKLGYEVIEQAIPR\tAK\tEL\t229\tNH2-KLGYEVIEQAIPR-COOH\t\tNA\tfile3.mgf\t\tNA\t3194.4363\t758.430541992188\t2+\t2+\t1514.84567813358\t0\t0.562291207815744\t\t\t\t100\tDoubtful\n+130\tsaus_c_1_540, scon_c_4_1907, sint2361_c_1_928, sot066_c_4_1620, spar_c_4_868, spara_c_1_439, ssan_c_1_1186\tELTNDRDADINDLVKPGETLELLVLR\tLR; LR; LR; LR; LR; LR; LR\tQV; QV; QV; QV; QV; QV; QV\t49; 49; 49; 49; 49; 49; 49\tNH2-ELTNDRDADINDLVKPGETLELLVLR-COOH\t\tNA\tfile3.mgf\t\tNA\t4556.4017\t984.531372070313\t3+\t3+\t2950.56112994325\t0\t3.77740100971689\t\t\t\t100\tDoubtful\n+151\tfnuc420_c_1_102, fnucp_c_2_1111, fnucv_c_162_2140, fot370_c_75_1534, fper2555_c_1_145, fper_c_53_2217\tDDVDAMSMEK\tIK; IK; IK; IK; IK; IK\tVV; VV; VA; VV; VV; VV\t288; 288; 205; 288; 288; 288\tNH2-DDVDAM<ox>SMEK-COOH\tOxidation of M(6)\tNA\tfile3.mgf\t\tNA\t1209.0085\t578.727783203125\t2+\t2+\t1155.44239040467\t0\t-1.18961837185172\tOxidation of M (6: Very Confident)\tOxidation of M (6: 99.99874037807513, 8: 0.0012596219248667585)\tOxidation of M (6: 100.0)\t100\tDoubtful\n+577\tscri_c_6_1134, sinfantis_c_1_544, smit1067_c_1_672, smit1998_c_1_68, soli_c_1_1648, sot058_c_3_508, spne_c_1_585, ssan_c_1_1934\tDYEANEAEYDKKK\tAR; AR; AR; AR; AR; AR; AR; AR\tLF; LF; LF; LF; LF; LF; LF; LF\t249; 249; 249; 249; 249; 249; 249; 249\tNH2-DYEANEAEYDKKK-COOH\t\tNA\tfile3.mgf\t\tNA\t1057.8665\t801.868408203125\t2+\t2+\t1601.72093111293\t0\t0.830785193974707\t\t\t\t100\tDoubtful\n+588\taact1954_c_4_634, aact_c_1_1934, aot458_c_32_1600, aseg_c_5_1297, hhae2076_c_14_1658, ypes1054_c_1_619\tVLQLVSTDGR\tGK; GK; GK; GK; GK; GS\tFK; FK; FK; FK; FK; FK\t394; 394; 394; 394; 395; 400\tNH2-VLQLVSTDGR-COOH\t\tNA\tfile3.mgf\t\tNA\t2260.0972\t544.31005859375\t2+\t2+\t1086.6033226099\t0\t2.05916513586104\t\t\t\t100\tDoubtful\n+261\thaeg_c_7_962, hduc_c_1_1686, hhae2076_c_7_1005, hot851_c_5_690, hpar1239_c_1_686\tDVQGIDPVSLIAFDK\tVR; VR; VR; VR; VR\tVI; VV; VI; VI; VI\t170; 170; 170; 170; 170\tNH2-DVQGIDPVSLIAFDK-COOH\t\tNA\tfile3.mgf\t\tNA\t4209.8774\t808.932495117188\t2+\t2+\t1615.84573770323\t0\t2.90482283834541\t\t\t\t100\tDoubtful\n+177\tfper2555_c_1_321\tFAFESFTTVER\tHK\tV\t186\tNH2-FAFESFTTVER-COOH\t\tNA\tfile3.mgf\t\tNA\t3402.1876\t667.325622558594\t2+\t2+\t1332.635016661\t0\t1.25540261767359\t\t\t\t100\tDoubtful\n+36\tsaga_c_1_2168, sang2334_c_24_1785, sang_c_56_1716, saus_c_8_'..b' 483; 482; 484; 484; 476; 455; 455; 462; 466; 554; 458; 460; 523; 588; 521; 479; 479; 549; 571; 506; 456; 392; 647; 397; 586; 453; 452; 452; 453; 453; 275; 191; 202; 255; 255; 257; 257; 257; 305; 339; 341; 468; 453; 457; 468; 466; 468; 468; 486; 489; 489; 452; 452; 232; 233; 232; 623; 233; 232; 232; 232; 232; 464; 513; 484; 331; 476; 476; 476; 476; 476; 482; 483; 286; 483; 484; 510; 443; 454; 454; 457; 456; 456; 513; 659; 455; 456; 487; 108; 574; 451; 40\tNH2-IPVHMIETINK-COOH\t\tNA\tfile3.mgf\t\tNA\t2402.3243\t647.865234375\t2+\t2+\t1293.71149315989\t0\t3.4132650947819\t\t\t\t100\tDoubtful\n+87\tfper2555_c_5_967\tFNPNGSSLAIEGIISPDGK\tFR\tIF\t1188\tNH2-FNPNGSSLAIEGIISPDGK-COOH\t\tNA\tfile3.mgf\t\tNA\t3599.3863\t958.495544433594\t2+\t2+\t1914.96870637022\t0\t4.08431492849425\t\t\t\t100\tDoubtful\n+517\tfnuc2539_c_1_229, fnuc420_c_11_1765, fnuc_c_1_386, fnucp_c_6_2005, fnucv_c_1_2\tEIVEEAERDAVSK\tAK; AK; AK; AK; AK\tSR; SK; AK; AK; AK\t50; 50; 50; 50; 50\tNH2-EIVEEAERDAVSK-COOH\t\tNA\tfile3.mgf\t\tNA\t1955.8968\t737.873962402344\t2+\t2+\t1473.73110187381\t0\t1.5382035826325\t\t\t\t100\tDoubtful\n+806\tfnuc420_c_4_937, fnucp_c_4_1631, fnucv_c_95_1697, fot370_c_16_619, fper2555_c_5_1030\tNLETIVGLQTDAPLKR\tDK; DK; DK; DK; DK\tAI; AI; AI; AI; AI\t84; 84; 84; 84; 84\tNH2-NLETIVGLQTDAPLKR-COOH\t\tNA\tfile3.mgf\t\tNA\t3173.0192\t590.004333496094\t3+\t3+\t1766.98904789198\t0\t1.19953831523369\t\t\t\t100\tDoubtful\n+613\tsang2334_c_13_1287, sang_c_5_322, scon_c_1_282, sint2361_c_1_491, sint_c_4_1117, smit1998_c_1_124, smit2_c_19_1543, sora2005_c_1_1299, sot066_c_1_160, sot070_c_1_347, sot071_c_1_78, ssan_c_1_1670\tLPVIENDQLVGLVTEGTIAEASPSK\tHR; HR; HR; HR; HR; HR; HR; HR; HR; HR; HR; HR\tAT; AT; AT; AT; AT; AT; AT; AT; AT; AT; AT; AT\t35; 35; 35; 35; 35; 35; 35; 35; 35; 35; 35; 35\tNH2-LPVIENDQLVGLVTEGTIAEASPSK-COOH\t\tNA\tfile3.mgf\t\tNA\t4310.7943\t860.799438476563\t3+\t3+\t2579.3694130101\t0\t2.7389417357175\t\t\t\t100\tDoubtful\n+804\tfnucp_c_6_1953\tVVNAFDTYALEMAAR\tEK\tLK\t34\tNH2-VVNAFDTYALEMAAR-COOH\t\tNA\tfile3.mgf\t\tNA\t3774.8491\t835.921020507813\t2+\t2+\t1669.81339202913\t0\t8.43152126629325\t\t\t\t100\tDoubtful\n+552\tfnuc420_c_6_1175, fnuc_c_1_946, fnucp_c_1_857, fnucv_c_62_1350, fper2555_c_2_413, fper_c_35_1882\tNIASLGIYPAVDPLDSTSK\tSR; SR; SR; SR; SR; SR\tAL; AL; AL; AL; AL; AL\t325; 325; 325; 325; 325; 325\tNH2-NIASLGIYPAVDPLDSTSK-COOH\t\tNA\tfile3.mgf\t\tNA\t3837.4534\t981.017822265625\t2+\t2+\t1960.01532220947\t0\t2.94052003411273\t\t\t\t100\tDoubtful\n+750\taact1954_c_51_2237, aact_c_1_381, aact_c_1_625, hhae2076_c_35_2415, hhae2076_c_48_2527, hhae2076_c_50_2535, hinf_c_1_1270, hot851_c_32_1760, hpar1239_c_1_453, hpar_c_26_2006\tILELANHLDTYIPEPER\tEK; EK; EK; EK; EK; EK; EK; EK; EK; EK\tAI; AI; AI; AI; AI; AI; AI; AI; AI; AI\t188; 189; 189; 189; 189; 136; 189; 189; 189; 162\tNH2-ILELANHLDTYIPEPER-COOH\t\tNA\tfile3.mgf\t\tNA\t3525.6141\t675.024719238281\t3+\t3+\t2022.04220566365\t0\t4.99868181030832\t\t\t\t100\tDoubtful\n+191\tfot370_c_65_1427, fper2555_c_39_2409\tIDSEEDEIADIR\tKK; KK\tSI; SI\t313; 31\tNH2-IDSEEDEIADIR-COOH\t\tNA\tfile3.mgf\t\tNA\t2416.1655\t702.829406738281\t2+\t2+\t1403.64161816307\t0\t1.87981949071119\t\t\t\t100\tDoubtful\n+171\tscri_c_1_378, sgor_c_1_1334, sinfantis_c_7_1757, smit1067_c_1_989, smit1998_c_1_311, smit2_c_2_348, soli_c_1_1420, sora2005_c_1_1081, sot066_c_3_1332, spar_c_4_1052, sper_c_2_367, spne_c_1_921\tYRPNADILAITFDELTER\tSK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK\tGL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL\t419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419\tNH2-YRPNADILAITFDELTER-COOH\t\tNA\tfile3.mgf\t\tNA\t4639.1163\t713.037719726563\t3+\t3+\t2136.08513310479\t0\t2.89685114918266\t\t\t\t100\tDoubtful\n+93\tscri_c_1_378, sgor_c_1_1334, sinfantis_c_7_1757, smit1067_c_1_989, smit1998_c_1_311, smit2_c_2_348, soli_c_1_1420, sora2005_c_1_1081, sot066_c_3_1332, spar_c_4_1052, sper_c_2_367, spne_c_1_921\tYRPNADILAITFDELTER\tSK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK\tGL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL\t419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419\tNH2-YRPNADILAITFDELTER-COOH\t\tNA\tfile3.mgf\t\tNA\t4671.2378\t713.037353515625\t3+\t3+\t2136.08513310479\t0\t2.38325700306405\t\t\t\t100\tDoubtful\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/file4.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/file4.tab Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,49 @@\n+\tProtein(s)\tSequence\tAAs Before\tAAs After\tPosition\tModified Sequence\tVariable Modifications\tFixed Modifications\tSpectrum File\tSpectrum Title\tSpectrum Scan Number\tRT\tm/z\tMeasured Charge\tIdentification Charge\tTheoretical Mass\tIsotope Number\tPrecursor m/z Error [ppm]\tLocalization Confidence\tProbabilistic PTM score\tD-score\tConfidence [%]\tValidation\n+121\tgadi_c_1_154, gele_c_1_97\tIVINMGVGDATSNAK\tEK; EK\tNL; NL\t34; 34\tNH2-IVINMGVGDATSNAK-COOH\t\tNA\tfile4.mgf\t\tNA\t2594.8197\t745.389038085938\t2+\t2+\t1488.76062818028\t0\t1.94198160017953\t\t\t\t100\tDoubtful\n+851\tfnucp_c_6_2022\tDFLSSLPTGR\tQK\tAI\t919\tNH2-DFLSSLPTGR-COOH\t\tNA\tfile4.mgf\t\tNA\t3174.7574\t546.788940429688\t2+\t2+\t1091.56112344475\t0\t2.01584677607999\t\t\t\t100\tDoubtful\n+697\tNCBIACIK_c_2_609, agem_c_39_1680, cmor_c_3_774, dinv_c_1_598, dmic_c_7_729, ecas2549_c_8_1846, ecas_c_6_1136, edur2534_c_23_2497, edur_c_4_1338, efae1080_c_1_2532, eita_c_18_1332, esac_c_28_2751, eyur_c_4_382, fgon2550_c_11_894, fgon_c_5_579, fnec_c_11_2541, fnuc420_c_2_488, fnuc_c_1_1255, fnucp_c_2_1187, fot370_c_124_1922, fper2555_c_5_1014, fper_c_51_2186, gadi_c_1_52, gele_c_4_669, mmic_c_12_1496, mtim_c_11_1209, pot786_c_90_3255, saga_c_1_2078, sang2334_c_23_1773, sang_c_1_19, saus_c_5_1179, scon_c_2_1256, scri_c_5_1026, sdow_c_5_1582, sgor_c_1_1874, sinf_c_5_1205, sinfantis_c_1_214, sint2361_c_1_1626, sint_c_2_530, smit1067_c_1_480, smit1998_c_9_1635, smit2_c_33_1903, smit_c_1_1003, smit_c_1_1004, smut_c_1_1789, soli_c_1_1960, sora2005_c_1_367, sora_c_13_1710, sot056_c_1_1033, sot058_c_8_1067, sot066_c_2_706, sot070_c_2_1111, sot071_c_10_1808, spar_c_2_419, spara_c_1_1682, sper_c_3_557, spne_c_1_1899, spyo1356_c_1_1802, spyo_c_1_1707, ssal1367_c_1_185, ssal_c_7_1357, ssan_c_1_221, ssob_c_31_757, sspu_c_31_2220, sves_c_5_1706, vaty_c_40_1877, vot158_c_7_1619, vot780_c_10_985, vpardsm_c_1_1047\tLRIEDALNATR\tKK; KK; RK; KR; KR; LK; LK; LK; LK; LK; LK; LK; KK; RK; RK; RK; KK; KK; KK; KK; KK; KK; KK; KK; KK; KK; RK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; KK; MK; KK; KK; KK; KK\tAA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA\t392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 263; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 70; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392\tNH2-LRIEDALNATR-COOH\t\tNA\tfile4.mgf\t\tNA\t2563.4706\t636.358520507813\t2+\t2+\t1270.69934825306\t0\t2.46703437346327\t\t\t\t100\tDoubtful\n+176\tfnuc2539_c_1_1681, fnuc420_c_4_895, fnuc_c_1_2008, fnucp_c_10_2293, fnucv_c_70_1443, fot370_c_132_1968, fper2555_c_22_2079, fper_c_36_1909\tTTEEHEALR\tFK; FK; FK; FK; FK; FK; FK; FK\tMQ; MQ; MQ; MQ; MQ; MQ; MQ; MQ\t5; 5; 5; 5; 5; 5; 5; 5\tNH2-TTEEHEALR-COOH\t\tNA\tfile4.mgf\t\tNA\t891.2402\t543.264770507813\t2+\t2+\t1084.51490152832\t0\t0.0796606858260743\t\t\t\t100\tDoubtful\n+509\tfnuc_c_1_996, fnucp_c_7_2080, fper2555_c_9_1371, fper_c_7_732\tLHDIVLVAEGVGNVLDIEEK\tGK; GK; GK; GK\tLK; LR; LR; LR\t216; 216; 216; 232\tNH2-LHDIVLVAEGVGNVLDIEEK-COOH\t\tNA\tfile4.mgf\t\tNA\t4283.4975\t721.396789550781\t3+\t3+\t2161.16304907232\t0\t2.53683483367292\t\t\t\t100\tDoubtful\n+932\tedur2534_c_19_2239, edur_c_6_1841, efae1080_c_1_3101, eita_c_17_1244, llac_c_1_2453, lpen_c_13_1722, lpla2113_c_1_875, lsal_c_1_1464, saga_c_1_220, sang_c_1_80, saus_c_6_1355, scon_c_2_1185, sdow_c_13_2197, sinf_c_13_1877, sint2361_c_1_1535, smit1998_c_4_1191, sora_c_4_873, sot056_c_1_1603, sot058_c_14_1337, spyo1356_c_1_1696, ssal_c_11_1697, ssob_c_221_2192\tWYVVDATDVPLGR\tRK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK; RK\tLS; LS; LS; LS; LS; LS; LS;'..b'TLR-COOH\t\tNA\tfile4.mgf\t\tNA\t3569.2449\t740.931091308594\t2+\t2+\t1479.84092710631\t0\t4.5230977944508\t\t\t\t100\tDoubtful\n+923\tfot370_c_97_1746, fper2555_c_3_703, fper_c_2_320\tDLGLLTANEPFKR\tLR; LR; LR\tLL; LL; LL\t552; 552; 552\tNH2-DLGLLTANEPFKR-COOH\t\tNA\tfile4.mgf\t\tNA\t3195.3317\t491.940399169922\t3+\t3+\t1472.79872794116\t0\t0.433771007261775\t\t\t\t100\tDoubtful\n+139\taact1954_c_15_1548, aact_c_1_651, aaph_c_1_1528, aot458_c_5_484, aseg_c_7_1480, hhae2076_c_6_920, hot851_c_5_726, hpar1239_c_1_371, hpar_c_4_995, pmir1289_c_1_3008\tADGSVDFDDGSKTENTR\tVR; VR; VR; VR; VR; VR; VR; VR; VR; VL\tVS; VS; VS; VS; VS; VS; VS; VS; VS; VS\t315; 315; 315; 315; 315; 315; 315; 315; 315; 316\tNH2-ADGSVDFDDGSKTENTR-COOH\t\tNA\tfile4.mgf\t\tNA\t1412.5964\t907.396301269531\t2+\t2+\t1812.77621414292\t0\t1.01139070724747\t\t\t\t100\tDoubtful\n+926\tNCBIACIK_c_2_609, agem_c_39_1680, cmor_c_3_774, dinv_c_1_598, dmic_c_7_729, ecas2549_c_8_1846, ecas_c_6_1136, edur2534_c_23_2497, edur_c_4_1338, efae1080_c_1_2532, eita_c_18_1332, esac_c_28_2751, eyur_c_4_382, fgon2550_c_11_894, fgon_c_5_579, fnec_c_11_2541, fnuc420_c_2_488, fnuc_c_1_1255, fnucp_c_2_1187, fot370_c_124_1922, fper2555_c_5_1014, fper_c_51_2186, gadi_c_1_52, gele_c_4_669, mmic_c_12_1496, mtim_c_11_1209, pot786_c_90_3255, saga_c_1_2078, sang2334_c_23_1773, sang_c_1_19, saus_c_5_1179, scon_c_2_1256, scri_c_5_1026, sdow_c_5_1582, sgor_c_1_1874, sinf_c_5_1205, sinfantis_c_1_214, sint2361_c_1_1626, sint_c_2_530, smit1067_c_1_480, smit1998_c_9_1635, smit2_c_33_1903, smit_c_1_1003, smit_c_1_1004, smut_c_1_1789, soli_c_1_1960, sora2005_c_1_367, sora_c_13_1710, sot056_c_1_1033, sot058_c_8_1067, sot066_c_2_706, sot070_c_2_1111, sot071_c_10_1808, spar_c_2_419, spara_c_1_1682, sper_c_3_557, spne_c_1_1899, spyo1356_c_1_1802, spyo_c_1_1707, ssal1367_c_1_185, ssal_c_7_1357, ssan_c_1_221, ssob_c_31_757, sspu_c_31_2220, sves_c_5_1706, vaty_c_40_1877, vot158_c_7_1619, vot780_c_10_985, vpardsm_c_1_1047\tLRIEDALNATR\tKK; KK; RK; KR; KR; LK; LK; LK; LK; LK; LK; LK; KK; RK; RK; RK; KK; KK; KK; KK; KK; KK; KK; KK; KK; KK; RK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; MK; KK; MK; KK; KK; KK; KK\tAA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA; AA\t392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 263; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 70; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392; 392\tNH2-LRIEDALNATR-COOH\t\tNA\tfile4.mgf\t\tNA\t2532.9446\t636.359741210938\t2+\t2+\t1270.69934825306\t0\t4.38530229504692\t\t\t\t100\tDoubtful\n+225\tfnucp_c_3_1414\tGPYVLISSQTYPNIEDIEKDPIITR\tEK\tNT\t164\tNH2-GPYVLISSQTYPNIEDIEKDPIITR-COOH\t\tNA\tfile4.mgf\t\tNA\t4009.7696\t954.502807617188\t3+\t3+\t2860.48583974467\t0\t0.263210909356316\t\t\t\t100\tDoubtful\n+213\tsang2334_c_29_2011, sang_c_8_469, saus_c_5_1217, scon_c_2_1318, scri_c_13_1684, sgor_c_1_1915, sinfantis_c_6_1677, sint2361_c_1_1680, sint_c_2_463, sot056_c_1_1072, sot058_c_9_1077, sot066_c_2_665, spar_c_2_381, spara_c_1_1645, ssan_c_1_174\tGEVTAIEEDASTR\tVK; VK; VK; VK; VK; VK; VK; VK; VK; VK; VK; VK; VK; VK; VK\tTK; TK; TK; TK; TK; TK; TK; TK; TK; TK; TK; TK; TK; TK; TK\t977; 977; 977; 977; 968; 977; 977; 977; 977; 977; 977; 977; 977; 977; 968\tNH2-GEVTAIEEDASTR-COOH\t\tNA\tfile4.mgf\t\tNA\t2035.4643\t689.3291015625\t2+\t2+\t1376.64195251624\t0\t1.23139819734881\t\t\t\t100\tDoubtful\n+61\taaph_c_1_298, aot458_c_6_608, hhae2076_c_3_426, hot851_c_9_1191, hpar1239_c_1_1408\tDAVNNTPFVLLTSNDK\tVK; VK; VK; VK; VK\tSH; SH; SH; TH; SH\t105; 105; 105; 105; 106\tNH2-DAVNNTPFVLLTSNDK-COOH\t\tNA\tfile4.mgf\t\tNA\t3686.4352\t874.44873046875\t2+\t2+\t1746.87882873666\t0\t2.33248479208811\t\t\t\t100\tDoubtful\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/foo.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/foo.tab Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,4 @@
+#This is a file
+#file   data
+foo.mgf bar
+foo.mgf bar4
b
diff -r 000000000000 -r de3c2c88e710 test-data/foo2.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/foo2.tab Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,3 @@
+#This is a file
+#file   data
+foo2.mgf bar2
b
diff -r 000000000000 -r de3c2c88e710 test-data/foo3.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/foo3.tab Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,3 @@
+#This is a file
+#file   data
+foo3.mgf bar3
b
diff -r 000000000000 -r de3c2c88e710 test-data/psm.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/psm.tabular Tue Jul 17 14:37:13 2018 -0400
[
b'@@ -0,0 +1,201 @@\n+\tProtein(s)\tSequence\tAAs Before\tAAs After\tPosition\tModified Sequence\tVariable Modifications\tFixed Modifications\tSpectrum File\tSpectrum Title\tSpectrum Scan Number\tRT\tm/z\tMeasured Charge\tIdentification Charge\tTheoretical Mass\tIsotope Number\tPrecursor m/z Error [ppm]\tLocalization Confidence\tProbabilistic PTM score\tD-score\tConfidence [%]\tValidation\n+347\tfnucp_c_1_738\tYSNEDVKEEDLNK\tRR\tIL\t16\tNH2-YSNEDVKEEDLNK-COOH\t\tNA\tfile2.mgf\t\tNA\t1301.235\t791.8662109375\t2+\t2+\t1581.71584573249\t0\t1.27749577022674\t\t\t\t100\tDoubtful\n+425\taaph_c_1_2183, hhae2076_c_16_1782, hinf_c_1_1334, hot851_c_11_1302, hpar1239_c_1_755, hpar_c_10_1735\tSGATGVFTDFPDTGVEFLK\tNK; NK; NK; NK; NK; NK\tKQ; GK; GI; GK; KQ; KQ\t339; 343; 343; 343; 340; 340\tNH2-SGATGVFTDFPDTGVEFLK-COOH\t\tNA\tfile2.mgf\t\tNA\t4254.5871\t994.487915039063\t2+\t2+\t1986.95747298018\t0\t1.91262836858352\t\t\t\t100\tDoubtful\n+121\tgadi_c_1_154, gele_c_1_97\tIVINMGVGDATSNAK\tEK; EK\tNL; NL\t34; 34\tNH2-IVINMGVGDATSNAK-COOH\t\tNA\tfile4.mgf\t\tNA\t2594.8197\t745.389038085938\t2+\t2+\t1488.76062818028\t0\t1.94198160017953\t\t\t\t100\tDoubtful\n+598\tfnucp_c_6_1952, fper2555_c_23_2106, fper_c_9_903\tVIAVLVGENLDEVAK\tKK; KK; KK\tKC; KC; KC\t38; 38; 38\tNH2-VIAVLVGENLDEVAK-COOH\t\tNA\tfile2.mgf\t\tNA\t3565.4679\t784.951843261719\t2+\t2+\t1567.88212321195\t0\t4.46550271095854\t\t\t\t100\tDoubtful\n+290\taact1954_c_51_2237, aact_c_1_381, aact_c_1_625, hhae2076_c_35_2415, hhae2076_c_48_2527, hhae2076_c_50_2535, hinf_c_1_1270, hot851_c_32_1760, hpar1239_c_1_453, hpar_c_26_2006\tILELANHLDTYIPEPER\tEK; EK; EK; EK; EK; EK; EK; EK; EK; EK\tAI; AI; AI; AI; AI; AI; AI; AI; AI; AI\t188; 189; 189; 189; 189; 136; 189; 189; 189; 162\tNH2-ILELANHLDTYIPEPER-COOH\t\tNA\tfile1.mgf\t\tNA\t3531.2049\t1012.03259277344\t2+\t2+\t2022.04220566365\t0\t4.16339589573139\t\t\t\t100\tDoubtful\n+229\tfnuc420_c_1_102, fnucp_c_2_1111, fnucv_c_162_2140, fot370_c_75_1534, fper2555_c_1_145, fper_c_53_2217\tDDVDAMSMEK\tIK; IK; IK; IK; IK; IK\tVV; VV; VA; VV; VV; VV\t288; 288; 205; 288; 288; 288\tNH2-DDVDAMSMEK-COOH\t\tNA\tfile2.mgf\t\tNA\t1743.2385\t570.732238769531\t2+\t2+\t1139.44747578511\t0\t2.14533665243431\t\t\t\t100\tDoubtful\n+343\tecas2549_c_6_1415, ecas_c_11_1734, edur2534_c_2_383, esac_c_2_453, laci_c_1_769, lcol_c_4_902, lcri_c_1_776, lfer_c_1_502, lreu_c_1_501, lvag_c_3_229, sang2334_c_2_202, sang_c_15_751, scon_c_1_470, scri_c_3_789, soli_c_1_620\tIMEVPVGDALIGR\tGK; GK; GK; GK; GR; GR; GR; GR; GR; GR; GK; GK; GK; GK; GK\tVV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV; VV\t94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94; 94\tNH2-IM<ox>EVPVGDALIGR-COOH\tOxidation of M(2)\tNA\tfile3.mgf\t\tNA\t3001.9728\t693.379821777344\t2+\t2+\t1384.73843618372\t0\t4.79857436469376\tOxidation of M (2: Very Confident)\tOxidation of M (2: 100.0)\tOxidation of M (2: 100.0)\t100\tDoubtful\n+851\tfnucp_c_6_2022\tDFLSSLPTGR\tQK\tAI\t919\tNH2-DFLSSLPTGR-COOH\t\tNA\tfile4.mgf\t\tNA\t3174.7574\t546.788940429688\t2+\t2+\t1091.56112344475\t0\t2.01584677607999\t\t\t\t100\tDoubtful\n+944\tfnucp_c_2_1031\tTGTTTTTNTER\tYK\tGN\t37\tNH2-TGTTTTTNTER-COOH\t\tNA\tfile2.mgf\t\tNA\t704.243\t591.783935546875\t2+\t2+\t1181.55240923585\t0\t0.767953402397693\t\t\t\t100\tDoubtful\n+697\tNCBIACIK_c_2_609, agem_c_39_1680, cmor_c_3_774, dinv_c_1_598, dmic_c_7_729, ecas2549_c_8_1846, ecas_c_6_1136, edur2534_c_23_2497, edur_c_4_1338, efae1080_c_1_2532, eita_c_18_1332, esac_c_28_2751, eyur_c_4_382, fgon2550_c_11_894, fgon_c_5_579, fnec_c_11_2541, fnuc420_c_2_488, fnuc_c_1_1255, fnucp_c_2_1187, fot370_c_124_1922, fper2555_c_5_1014, fper_c_51_2186, gadi_c_1_52, gele_c_4_669, mmic_c_12_1496, mtim_c_11_1209, pot786_c_90_3255, saga_c_1_2078, sang2334_c_23_1773, sang_c_1_19, saus_c_5_1179, scon_c_2_1256, scri_c_5_1026, sdow_c_5_1582, sgor_c_1_1874, sinf_c_5_1205, sinfantis_c_1_214, sint2361_c_1_1626, sint_c_2_530, smit1067_c_1_480, smit1998_c_9_1635, smit2_c_33_1903, smit_c_1_1003, smit_c_1_1004, smut_c_1_1789, soli_c_1_1960, sora2005_c_1_367, sora_c_13_1710, sot056_c_1_1033, sot058_c_8_1067, sot066_c_2_706, sot070_c_2_1111, sot071_c_10_1808, spar_c_2_419, spara_c_1_1682, sper_c_3_557, spne_c_1_1899, spyo1356_c_1_1802, spyo_c_1_1707,'..b', fnucv_c_21_690, fot370_c_38_1059, fper2555_c_2_625, fper_c_2_241, gber_c_3_139, ghae2070_c_5_719, gvag_c_1_257, pden_c_10_1473, sino_c_10_1488, swig_c_2_670\tIINEPTAAALAYGLEK\tLR; ER; LR; LR; LR; ER; LR; LR; LR; LR; LR; LR; LR; KR; KR; KR; KR; KR; KR; KR; KR; KR; KR; ER; ER; LR; LR; LR; LR\tGK; TD; GK; GK; SK; QD; GK; GK; ND; ND; GK; GK; GK; KK; KK; KK; KK; KK; KK; KK; KK; KK; KK; TD; TD; GK; GK; GK; GK\t144; 142; 144; 144; 144; 142; 144; 144; 168; 168; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 144; 142; 142; 144; 144; 144; 144\tNH2-IINEPTAAALAYGLEK-COOH\t\tNA\tfile1.mgf\t\tNA\t3443.8712\t837.460571289063\t2+\t2+\t1672.90358693252\t0\t1.79275148425641\t\t\t\t100\tDoubtful\n+61\taaph_c_1_298, aot458_c_6_608, hhae2076_c_3_426, hot851_c_9_1191, hpar1239_c_1_1408\tDAVNNTPFVLLTSNDK\tVK; VK; VK; VK; VK\tSH; SH; SH; TH; SH\t105; 105; 105; 105; 106\tNH2-DAVNNTPFVLLTSNDK-COOH\t\tNA\tfile4.mgf\t\tNA\t3686.4352\t874.44873046875\t2+\t2+\t1746.87882873666\t0\t2.33248479208811\t\t\t\t100\tDoubtful\n+552\tfnuc420_c_6_1175, fnuc_c_1_946, fnucp_c_1_857, fnucv_c_62_1350, fper2555_c_2_413, fper_c_35_1882\tNIASLGIYPAVDPLDSTSK\tSR; SR; SR; SR; SR; SR\tAL; AL; AL; AL; AL; AL\t325; 325; 325; 325; 325; 325\tNH2-NIASLGIYPAVDPLDSTSK-COOH\t\tNA\tfile3.mgf\t\tNA\t3837.4534\t981.017822265625\t2+\t2+\t1960.01532220947\t0\t2.94052003411273\t\t\t\t100\tDoubtful\n+797\tfnucp_c_8_2165\tKIIDEDENDEGEGYSQK\tIR\tNN\t88\tNH2-KIIDEDENDEGEGYSQK-COOH\t\tNA\tfile1.mgf\t\tNA\t1431.7089\t984.935913085938\t2+\t2+\t1967.85960941371\t0\t-1.18595162243177\t\t\t\t100\tDoubtful\n+750\taact1954_c_51_2237, aact_c_1_381, aact_c_1_625, hhae2076_c_35_2415, hhae2076_c_48_2527, hhae2076_c_50_2535, hinf_c_1_1270, hot851_c_32_1760, hpar1239_c_1_453, hpar_c_26_2006\tILELANHLDTYIPEPER\tEK; EK; EK; EK; EK; EK; EK; EK; EK; EK\tAI; AI; AI; AI; AI; AI; AI; AI; AI; AI\t188; 189; 189; 189; 189; 136; 189; 189; 189; 162\tNH2-ILELANHLDTYIPEPER-COOH\t\tNA\tfile3.mgf\t\tNA\t3525.6141\t675.024719238281\t3+\t3+\t2022.04220566365\t0\t4.99868181030832\t\t\t\t100\tDoubtful\n+191\tfot370_c_65_1427, fper2555_c_39_2409\tIDSEEDEIADIR\tKK; KK\tSI; SI\t313; 31\tNH2-IDSEEDEIADIR-COOH\t\tNA\tfile3.mgf\t\tNA\t2416.1655\t702.829406738281\t2+\t2+\t1403.64161816307\t0\t1.87981949071119\t\t\t\t100\tDoubtful\n+19\tfnec_c_8_2194, fnuc2539_c_1_215, fnuc420_c_19_2187, fnuc_c_1_400, fnucp_c_6_2038, fnucv_c_1_14, fot370_c_18_654, fper2555_c_9_1379, fper_c_7_740\tAVSQPVEGTILTVIR\tYQ; YK; YK; YK; YK; YK; YM; YM; YM\tKV; KV; KV; KV; RV; KV; KV; KV; KV\t127; 127; 127; 127; 127; 127; 127; 127; 127\tNH2-AVSQPVEGTILTVIR-COOH\t\tNA\tfile2.mgf\t\tNA\t3691.0492\t528.310852050781\t3+\t3+\t1581.90900666613\t0\t1.08527497709561\t\t\t\t100\tDoubtful\n+171\tscri_c_1_378, sgor_c_1_1334, sinfantis_c_7_1757, smit1067_c_1_989, smit1998_c_1_311, smit2_c_2_348, soli_c_1_1420, sora2005_c_1_1081, sot066_c_3_1332, spar_c_4_1052, sper_c_2_367, spne_c_1_921\tYRPNADILAITFDELTER\tSK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK\tGL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL\t419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419\tNH2-YRPNADILAITFDELTER-COOH\t\tNA\tfile3.mgf\t\tNA\t4639.1163\t713.037719726563\t3+\t3+\t2136.08513310479\t0\t2.89685114918266\t\t\t\t100\tDoubtful\n+93\tscri_c_1_378, sgor_c_1_1334, sinfantis_c_7_1757, smit1067_c_1_989, smit1998_c_1_311, smit2_c_2_348, soli_c_1_1420, sora2005_c_1_1081, sot066_c_3_1332, spar_c_4_1052, sper_c_2_367, spne_c_1_921\tYRPNADILAITFDELTER\tSK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK; SK\tGL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL; GL\t419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419; 419\tNH2-YRPNADILAITFDELTER-COOH\t\tNA\tfile3.mgf\t\tNA\t4671.2378\t713.037353515625\t3+\t3+\t2136.08513310479\t0\t2.38325700306405\t\t\t\t100\tDoubtful\n+294\taact1954_c_15_1548, aact_c_1_651, aaph_c_1_1528, aot458_c_5_484, aseg_c_7_1480, haeg_c_7_994, hduc_c_1_1128, hhae2076_c_6_920, hinf_c_1_1495, hot851_c_5_726, hpar_c_4_995\tGIIDAILDGSIEK\tTR; TR; TR; TR; TR; TR; TR; TR; TR; TR; TR\tAQ; AQ; AE; AE; AE; AE; AT; AE; AE; AE; TE\t455; 455; 455; 455; 455; 455; 453; 455; 455; 455; 455\tNH2-GIIDAILDGSIEK-COOH\t\tNA\tfile2.mgf\t\tNA\t4355.5846\t672.376525878906\t2+\t2+\t1342.7343963491\t0\t3.05073678608087\t\t\t\t100\tDoubtful\n'
b
diff -r 000000000000 -r de3c2c88e710 test-data/rand_0.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rand_0.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,10 @@
+>seq1
+PROTEIN0
+>seq4
+ASFWEFOIN
+>seq5
+DUNEDIN
+FELLOWSHIP
+NAZGUL
+>seq6
+NOTAPROTEIN
b
diff -r 000000000000 -r de3c2c88e710 test-data/rand_1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/rand_1.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,4 @@
+>seq2
+PROTEIN
+>seq3
+ANOTHERPROTEIN
b
diff -r 000000000000 -r de3c2c88e710 test-data/test.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,14 @@
+>seq1
+PROTEIN0
+>seq2
+PROTEIN
+>seq3
+ANOTHERPROTEIN
+>seq4
+ASFWEFOIN
+>seq5
+DUNEDIN
+FELLOWSHIP
+NAZGUL
+>seq6
+NOTAPROTEIN
b
diff -r 000000000000 -r de3c2c88e710 test-data/test.fastq
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test.fastq Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,16 @@
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC1
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC1
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC2
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC2
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC3
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC3
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC4
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC4
b
diff -r 000000000000 -r de3c2c88e710 test-data/test.mgf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test.mgf Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,14 @@
+BEGIN IONS
+1011.11 1.0
+1012.11 1.0
+END IONS
+BEGIN IONS
+5 1.0
+10 0
+END IONS
+BEGIN IONS
+15 1.0
+108 1.0
+101111 1.0
+8088 1.0
+END IONS
b
diff -r 000000000000 -r de3c2c88e710 test-data/test.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test.tabular Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,6 @@
+#This is a file
+#file   data
+foo.mgf bar
+foo2.mgf bar2
+foo3.mgf bar3
+foo.mgf bar4
b
diff -r 000000000000 -r de3c2c88e710 test-data/test_0.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_0.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,8 @@
+>seq1
+PROTEIN0
+>seq3
+ANOTHERPROTEIN
+>seq5
+DUNEDIN
+FELLOWSHIP
+NAZGUL
b
diff -r 000000000000 -r de3c2c88e710 test-data/test_0.fastq
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_0.fastq Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,8 @@
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC1
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC1
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC3
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC3
b
diff -r 000000000000 -r de3c2c88e710 test-data/test_0.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_0.tabular Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,4 @@
+#This is a file
+#file   data
+foo.mgf bar
+foo3.mgf bar3
b
diff -r 000000000000 -r de3c2c88e710 test-data/test_1.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_1.fasta Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,6 @@
+>seq2
+PROTEIN
+>seq4
+ASFWEFOIN
+>seq6
+NOTAPROTEIN
b
diff -r 000000000000 -r de3c2c88e710 test-data/test_1.fastq
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_1.fastq Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,8 @@
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC2
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC2
+@SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+GGGTGATGGCCGCTGCCGATGGCGTCAAATCCCACC4
++SRR001666.1 071112_SLXA-EAS1_s_7:5:1:817:345 length=36
+IIIIIIIIIIIIIIIIIIIIIIIIIIIIII9IG9IC4
b
diff -r 000000000000 -r de3c2c88e710 test-data/test_1.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test_1.tabular Tue Jul 17 14:37:13 2018 -0400
b
@@ -0,0 +1,4 @@
+#This is a file
+#file   data
+foo2.mgf bar2
+foo.mgf bar4