changeset 0:ba070efb6f78 draft

planemo upload commit 13e72e84c523bda22bda792bbebf4720d28542d5-dirty
author labis-app
date Tue, 03 Jul 2018 17:34:13 -0400
parents
children f3fa21cda5f5
files cat_2.pl cat_2.xml read_util.R saida.csv selectproteinids.pl selectproteinids.xml t-test.R t-test.xml test-data/Galaxy134-[Concatenate_on_data_132_and_data_131].fasta test-data/f1.fasta test-data/f2.fasta test-data/proteinGroups.csv test-data/proteinGroups_csv_filtered_with_contaminants.tabular test-data/proteinGroups_csv_filtered_without_contaminants.tabular write_util.R
diffstat 15 files changed, 647 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cat_2.pl	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+# Developed by Flavia Vischi Winck and Mateus Bellomo_2014 (flaviavw[at]gmail.com)
+# usage : perl cat_2.pl <FASTA file1> <FASTA file2> <outputfile>
+
+open FILE1, "<", $ARGV[0] or die $!;
+my @file1 = <FILE1>;
+
+open FILE2, "<", $ARGV[1] or die $!;
+my @file2 = <FILE2>;
+
+
+open SEL, '>', $ARGV[2] or die $!;
+foreach (@file1) {
+    print SEL $_;
+}
+
+foreach (@file2){
+    print SEL $_;
+}
+
+close SEL;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cat_2.xml	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,34 @@
+<tool id="cat_2" name="Concatenate" version="0.1.0">
+    <description></description>
+  <command interpreter="perl">cat_2.pl $input1 $input2 $output</command>
+  <inputs>
+    <param format="fasta" name="input1" type="data" label="FASTA file1"/>
+    <param format="fasta" name="input2" type="data" label="FASTA file2"/>
+  </inputs>
+  <outputs>
+    <data format="fasta" name="output" />
+  </outputs>
+
+  <tests>
+    <test>
+      <param name="input1" value="f1.fasta"/>
+      <param name="input2" value="f2.fasta"/>
+      <output name="output" file="Galaxy134-[Concatenate_on_data_132_and_data_131].fasta"/>
+    </test>
+  </tests>
+
+  <help>
+This tool concatenate two FASTA files in a tail-head manner. First you must upload your FASTA files using Upload File tool in the Get Data subsection. After the uploading process is completed, you will select the FASTA files here in this Concatenate tool by selecting them as FASTA file 1 and FASTA file 2. Click on Execute to start the job. Your concatenated FASTA file will be generated and it will be available to download once you click on the name of the job in the History menu at the right side of the screen in the Download option (small disk icon). 
+  </help>
+
+  <citations>
+    <citation type="bibtex">
+      @misc{Concatenate,
+        author = {Application, Labis},
+        year = 2018,
+        title = Concatenate,
+        publisher = labisapplications
+      }
+    </citation>
+  </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/read_util.R	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,38 @@
+# auxiliar script to help with the read of all R scripts
+read_function <- function(options) {
+
+    # reads the table from input
+    table <- read.delim(options$inputfile_name, header=TRUE, fill=TRUE);
+
+    # get the defined regex from the requested type
+    if (options$type == "lfqlog2") {
+      regexpr <- "LFQ[.]intensity[.]([^[:digit:]]+)[[:digit:]]+";
+      code <- "LFQ";
+    } else if (options$type == "intensity") {
+      regexpr <- "Intensity[.]([^[:digit:]]+)[[:digit:]]+";
+      code <- "INT";
+    } else {
+      regexpr <- "MS[.]MS[.]Count[.]([^[:digit:]]+)[[:digit:]]+";
+      code <- "MS";
+    }
+    if (!(TRUE %in% grepl(regexpr, colnames(table)))) {
+      print (sprintf("Error: No columns of type %s in input table", code));
+      q(1,save="no");
+    }
+
+    # define the columns that will be taken in account for the t-test
+    columns_names <- grep(regexpr, colnames(table), value=TRUE);
+
+    # here I extract the different experiment names in an array for easier
+    # manipulation, ordering them
+    experiment_names <- mixedsort(gsub(".*[.]([^[:digit:]]+[[:digit:]]+).*", "\\1",
+                                        columns_names));
+
+    # extract from the experiment names all the different categories in the table
+    different_categories <- unique(gsub("([^[:digit:]]+).*", "\\1",
+                                        experiment_names));
+
+    read_list <- list(table=table, regex=regexpr, code=code, col_names=columns_names, ex_names=experiment_names, diff_cat=different_categories);
+
+    return(read_list);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/saida.csv	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,59 @@
+A6NGA9
+P62736
+Q15154
+A8MWY0-3
+Q01638
+P16415
+B9EGE7
+Q9Y6D9
+C9K044
+P02768-1
+Q5VVM6
+E1P506
+Q00536-3
+P47712
+Q6V1P9-4
+Q12866
+F5H5P6
+J3KNF5
+F8W0W6
+Q96JB1
+H0YCF9
+H0YET9
+Q9BTM1-2
+P00738
+H3BS82
+Q6P158
+Q13045
+J3KTH2
+Q96NJ3-2
+M0QY22
+Q6ZN19-3
+O43603
+O75132
+O94889-2
+P05141
+P0C6C1
+P0C841
+P62684
+Q01668-2
+Q13315
+Q14160-3
+Q5JTZ9
+Q5T742
+Q5T7X1
+Q5TAL2
+Q9HD45
+Q6PI48
+Q7Z5H3-3
+Q86Z20
+Q8IW50
+Q8IYF3-2
+Q8ND76
+Q8WXI9
+Q96DT5
+Q96TA1-2
+Q9BVL4
+Q9H0L4
+Q9UJY1
+S4R332
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/selectproteinids.pl	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -w
+
+use strict;
+use warnings;
+use FileHandle;
+
+
+# open file with the ids and get the lines #
+my $in = $ARGV[0];
+open INFILE, "<", $in or die $!;
+seek(INFILE, 0, 0);
+
+my @lines = <INFILE>;
+shift @lines;
+
+# flag to see wheter maintain contaminants or not
+my $maintain_contaminants = $ARGV[1];
+
+# output file with table filtered
+my $out = $ARGV[2];
+open OUTFILE, ">", $out or die $!;
+
+# select first id of first column
+foreach(@lines){
+    my @vec = split ' ', $_;
+    my @id = split ';', $vec[0];
+    if($id[0] =~ m/^CON__/ ){
+	if($maintain_contaminants eq "yes"){
+	    print OUTFILE $id[0] =~ s/^CON__//r, "\n";
+	}
+    } else{
+	print OUTFILE $id[0], "\n";
+    }
+}
+
+close INFILE;
+close OUTFILE;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/selectproteinids.xml	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<tool id="selectproteinids" name="Filter ids" version="1.0" hidden="false">
+  
+  <description></description>
+  <command interpreter="perl">
+    selectproteinids.pl $input $maintaincon $out_file
+  </command>
+
+  <inputs>
+    <param format="tabular" name="input" type="data" label="Input table"/>
+
+    <param name="maintaincon" type="select" display="radio" label="Maintain contaminants">
+      <option value="yes">Yes</option>
+      <option value="no">No</option>
+    </param>
+
+  </inputs>
+
+  <outputs>
+    <data format="tabular" name="out_file" label="${input.name} filtered"/>
+  </outputs>
+
+  <tests>
+    <test>
+      <param name="input" value="protein_ids_simple.csv"/>
+      <param name="maintaincon" value="yes"/>
+      <output name="out_file" file="proteinGroups_csv_filtered_with_contaminants.tabular"/>
+    </test>
+
+    <test>
+      <param name="input" value="protein_ids_simple.csv"/>
+      <param name="maintaincon" value="no"/>
+      <output name="out_file" file="proteinGroups_csv_filtered_without_contaminants.tabular"/>
+    </test>
+
+  </tests>
+
+  <help>
+
+    Input: Protein Groups from MaxQuant
+
+
+    Output: Table with id's got from MaxQuant Protein Groups
+
+  </help>
+
+  <citations>
+    <citation type="bibtex">
+      @misc{Concatenate,
+        author = {Application, Labis},
+        year = 2018,
+        title = Concatenate,
+        publisher = labisapplications
+      }
+    </citation>
+  </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/t-test.R	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,80 @@
+#!/usr/bin/env Rscript
+
+# t-test.R
+# AUTHOR: Daniel Travieso
+# E-mail: danielgtravieso@gmail.com
+# LAST REVISED: April 2015
+#
+# Required packages to work: (getopt", "gtools")
+# Laboratory of Mass Spectrometry at Brazilian Biosciences National Laboratory
+# http://lnbio.cnpem.br/
+# Copyright CC BY-NC-SA (c) 2014  Brazilian Center for Research in Energy and Materials
+# All rights reserved.
+require('gtools', quietly=TRUE);
+require('getopt', quietly=TRUE);
+#include and execute the read util script
+library('read_util.R');
+library('write_util.R');
+
+#define de options input that the read_util$code will have
+opt = matrix(c(
+    'inputfile_name', 'i', 1, 'character',
+    'type', 't', 1, 'character',
+    'outputfile_name', 'o', 1, 'character'
+),byrow=TRUE, ncol=4);
+
+# parse de input
+options = getopt(opt);
+
+read_util <- read_function(options);
+
+i<-1;
+columns <- list();
+aux <- c();
+for (cat in read_util$diff_cat) {
+  col <- read_util$col_names[gsub(read_util$regex, "\\1", read_util$col_names) == cat]
+  aux <- c(aux, col);
+  columns[[i]] <- col;
+  i<-i+1;
+}
+# this is a filtered read_util$table to help with calculations
+table_only_columns <- read_util$table[-1, aux]
+
+# this loop computes the ttest result for each row
+# and adds it to a vector
+i <- 2;
+ttestresult <- c("");
+ttestsignificant <- c("");
+if (length(read_util$diff_cat) < 2) {
+  print(sprintf("Can't calculate t-test. There is only one category for %s collumns", read_util$code));
+  q(1,save="no");
+}
+
+for (i in seq(2, nrow(table_only_columns)+1)) {
+  # the t-test arguments are the control values vector, the treatment values vector
+  # and some extra arguments. var.equal says it's a student t-test with stardard
+  # deviations assumed equal. mu=0 sets the hipothesis to be null.
+  ttestresult[i] <- t.test(table_only_columns[i-1, columns[[1]]],
+    table_only_columns[i-1, columns[[2]]], var.equal=TRUE, mu=0)$p.value;
+  if (is.na(ttestresult[i]))
+    ttestresult[i] = 1.0
+}
+
+# this defines if the p-value returned for each row is significant
+ttestsignificant[ttestresult <= 0.05] <- "+"
+ttestsignificant[ttestresult > 0.05] <- ""
+
+
+# create two extra rows on the read_util$table, one for p-values and other
+# for siginificance
+#TODO: ou colocar perto da intensidade que se refere ou na 3ยช coluna
+read_util$table[paste0("T.test.result.", read_util$code)] <- NA;
+read_util$table[paste0("T.test.result.", read_util$code)] <- ttestresult;
+read_util$table[paste0("T.test.significant.", read_util$code)] <- NA;
+read_util$table[paste0("T.test.significant.", read_util$code)] <- ttestsignificant;
+
+
+
+
+# write out the read_util$table
+writeout(options$outputfile_name, read_util$table);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/t-test.xml	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<tool id="t-test" name="T-Test" version="1.0" hidden="false">
+    <description>
+    </description>
+    <command interpreter="Rscript">
+        t-test.R --inputfile_name=$input --type=$t_test_type --outputfile_name=$output
+    </command>
+
+    <inputs>
+        <param format="tabular" name="input" type="data" label="Input table"/>
+        <param format="txt" name="t_test_type" type="select" label="Type of T-test">
+          <option value="lfqlog2"> Log2 of LFQ Intensity </option>
+          <option value="intensity"> Intensity </option>
+          <option value="mscount"> MS Count </option>
+        </param>
+    </inputs>
+
+    <outputs>
+        <data format="tabular" name="output" label="Complete table with p-values and significance on ${input.name}"/>
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="input" value="f1.fasta"/>
+            <param name="t_test_type" value="Intensity"/>
+            <output name="output" file="result_T_test.csv"/>
+        </test>
+    </tests>
+
+    <help>
+        ** What it does **
+        This tool executes an RScript that produces a p-values colum on the table.
+    </help>
+
+    <citations>
+        <citation type="bibtex">
+          @misc{Concatenate,
+            author = {Application, Labis},
+            year = 2018,
+            title = Concatenate,
+            publisher = labisapplications
+          }
+        </citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/Galaxy134-[Concatenate_on_data_132_and_data_131].fasta	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,46 @@
+
+>sp|P35579|MYH9_HUMAN Myosin-9 OS=Homo sapiens GN=MYH9 PE=1 SV=4
+MAQQAADKYLYVDKNFINNPLAQADWAAKKLVWVPSDKSGFEPASLKEEVGEEAIVELVE
+NGKKVKVNKDDIQKMNPPKFSKVEDMAELTCLNEASVLHNLKERYYSGLIYTYSGLFCVV
+INPYKNLPIYSEEIVEMYKGKKRHEMPPHIYAITDTAYRSMMQDREDQSILCTGESGAGK
+TENTKKVIQYLAYVASSHKSKKDQGELERQLLQANPILEAFGNAKTVKNDNSSRFGKFIR
+INFDVNGYIVGANIETYLLEKSRAIRQAKEERTFHIFYYLLSGAGEHLKTDLLLEPYNKY
+RFLSNGHVTIPGQQDKDMFQETMEAMRIMGIPEEEQMGLLRVISGVLQLGNIVFKKERNT
+DQASMPDNTAAQKVSHLLGINVTDFTRGILTPRIKVGRDYVQKAQTKEQADFAIEALAKA
+TYERMFRWLVLRINKALDKTKRQGASFIGILDIAGFEIFDLNSFEQLCINYTNEKLQQLF
+NHTMFILEQEEYQREGIEWNFIDFGLDLQPCIDLIEKPAGPPGILALLDEECWFPKATDK
+SFVEKVMQEQGTHPKFQKPKQLKDKADFCIIHYAGKVDYKADEWLMKNMDPLNDNIATLL
+HQSSDKFVSELWKDVDRIIGLDQVAGMSETALPGAFKTRKGMFRTVGQLYKEQLAKLMAT
+LRNTNPNFVRCIIPNHEKKAGKLDPHLVLDQLRCNGVLEGIRICRQGFPNRVVFQEFRQR
+YEILTPNSIPKGFMDGKQACVLMIKALELDSNLYRIGQSKVFFRAGVLAHLEEERDLKIT
+DVIIGFQACCRGYLARKAFAKRQQQLTAMKVLQRNCAAYLKLRNWQWWRLFTKVKPLLQV
+SRQEEEMMAKEEELVKVREKQLAAENRLTEMETLQSQLMAEKLQLQEQLQAETELCAEAE
+ELRARLTAKKQELEEICHDLEARVEEEEERCQHLQAEKKKMQQNIQELEEQLEEEESARQ
+KLQLEKVTTEAKLKKLEEEQIILEDQNCKLAKEKKLLEDRIAEFTTNLTEEEEKSKSLAK
+LKNKHEAMITDLEERLRREEKQRQELEKTRRKLEGDSTDLSDQIAELQAQIAELKMQLAK
+KEEELQAALARVEEEAAQKNMALKKIRELESQISELQEDLESERASRNKAEKQKRDLGEE
+LEALKTELEDTLDSTAAQQELRSKREQEVNILKKTLEEEAKTHEAQIQEMRQKHSQAVEE
+LAEQLEQTKRVKANLEKAKQTLENERGELANEVKVLLQGKGDSEHKRKKVEAQLQELQVK
+FNEGERVRTELADKVTKLQVELDNVTGLLSQSDSKSSKLTKDFSALESQLQDTQELLQEE
+NRQKLSLSTKLKQVEDEKNSFREQLEEEEEAKHNLEKQIATLHAQVADMKKKMEDSVGCL
+ETAEEVKRKLQKDLEGLSQRHEEKVAAYDKLEKTKTRLQQELDDLLVDLDHQRQSACNLE
+KKQKKFDQLLAEEKTISAKYAEERDRAEAEAREKETKALSLARALEEAMEQKAELERLNK
+QFRTEMEDLMSSKDDVGKSVHELEKSKRALEQQVEEMKTQLEELEDELQATEDAKLRLEV
+NLQAMKAQFERDLQGRDEQSEEKKKQLVRQVREMEAELEDERKQRSMAVAARKKLEMDLK
+DLEAHIDSANKNRDEAIKQLRKLQAQMKDCMRELDDTRASREEILAQAKENEKKLKSMEA
+EMIQLQEELAAAERAKRQAQQERDELADEIANSSGKGALALEEKRRLEARIAQLEEELEE
+EQGNTELINDRLKKANLQIDQINTDLNLERSHAQKNENARQQLERQNKELKVKLQEMEGT
+VKSKYKASITALEAKIAQLEEQLDNETKERQAACKQVRRTEKKLKDVLLQVDDERRNAEQ
+YKDQADKASTRLKQLKRQLEEAEEEAQRANASRRKLQRELEDATETADAMNREVSSLKNK
+LRRGDLPFVVPRRMARKGAGDGSDEEVDGKADGAEAKPAE
+
+>sp|Q99456|K1C12_HUMAN Keratin, type I cytoskeletal 12 OS=Homo sapiens GN=KRT12 PE=1 SV=1
+MDLSNNTMSLSVRTPGLSRRLSSQSVIGRPRGMSASSVGSGYGGSAFGFGASCGGGFSAA
+SMFGSSSGFGGGSGSSMAGGLGAGYGRALGGGSFGGLGMGFGGSPGGGSLGILSGNDGGL
+LSGSEKETMQNLNDRLASYLDKVRALEEANTELENKIREWYETRGTGTADASQSDYSKYY
+PLIEDLRNKIISASIGNAQLLLQIDNARLAAEDFRMKYENELALRQGVEADINGLRRVLD
+ELTLTRTDLEMQIESLNEELAYMKKNHEDELQSFRVGGPGEVSVEMDAAPGVDLTRLLND
+MRAQYETIAEQNRKDAEAWFIEKSGELRKEISTNTEQLQSSKSEVTDLRRAFQNLEIELQ
+SQLAMKKSLEDSLAEAEGDYCAQLSQVQQLISNLEAQLLQVRADAERQNVDHQRLLNVKA
+RLELEIETYRRLLDGEAQGDGLEESLFVTDSKSQAQSTDSSKDPTKTRKIKTVVQEMVNG
+EVVSSQVQEIEELM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/f1.fasta	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,35 @@
+
+>sp|P35579|MYH9_HUMAN Myosin-9 OS=Homo sapiens GN=MYH9 PE=1 SV=4
+MAQQAADKYLYVDKNFINNPLAQADWAAKKLVWVPSDKSGFEPASLKEEVGEEAIVELVE
+NGKKVKVNKDDIQKMNPPKFSKVEDMAELTCLNEASVLHNLKERYYSGLIYTYSGLFCVV
+INPYKNLPIYSEEIVEMYKGKKRHEMPPHIYAITDTAYRSMMQDREDQSILCTGESGAGK
+TENTKKVIQYLAYVASSHKSKKDQGELERQLLQANPILEAFGNAKTVKNDNSSRFGKFIR
+INFDVNGYIVGANIETYLLEKSRAIRQAKEERTFHIFYYLLSGAGEHLKTDLLLEPYNKY
+RFLSNGHVTIPGQQDKDMFQETMEAMRIMGIPEEEQMGLLRVISGVLQLGNIVFKKERNT
+DQASMPDNTAAQKVSHLLGINVTDFTRGILTPRIKVGRDYVQKAQTKEQADFAIEALAKA
+TYERMFRWLVLRINKALDKTKRQGASFIGILDIAGFEIFDLNSFEQLCINYTNEKLQQLF
+NHTMFILEQEEYQREGIEWNFIDFGLDLQPCIDLIEKPAGPPGILALLDEECWFPKATDK
+SFVEKVMQEQGTHPKFQKPKQLKDKADFCIIHYAGKVDYKADEWLMKNMDPLNDNIATLL
+HQSSDKFVSELWKDVDRIIGLDQVAGMSETALPGAFKTRKGMFRTVGQLYKEQLAKLMAT
+LRNTNPNFVRCIIPNHEKKAGKLDPHLVLDQLRCNGVLEGIRICRQGFPNRVVFQEFRQR
+YEILTPNSIPKGFMDGKQACVLMIKALELDSNLYRIGQSKVFFRAGVLAHLEEERDLKIT
+DVIIGFQACCRGYLARKAFAKRQQQLTAMKVLQRNCAAYLKLRNWQWWRLFTKVKPLLQV
+SRQEEEMMAKEEELVKVREKQLAAENRLTEMETLQSQLMAEKLQLQEQLQAETELCAEAE
+ELRARLTAKKQELEEICHDLEARVEEEEERCQHLQAEKKKMQQNIQELEEQLEEEESARQ
+KLQLEKVTTEAKLKKLEEEQIILEDQNCKLAKEKKLLEDRIAEFTTNLTEEEEKSKSLAK
+LKNKHEAMITDLEERLRREEKQRQELEKTRRKLEGDSTDLSDQIAELQAQIAELKMQLAK
+KEEELQAALARVEEEAAQKNMALKKIRELESQISELQEDLESERASRNKAEKQKRDLGEE
+LEALKTELEDTLDSTAAQQELRSKREQEVNILKKTLEEEAKTHEAQIQEMRQKHSQAVEE
+LAEQLEQTKRVKANLEKAKQTLENERGELANEVKVLLQGKGDSEHKRKKVEAQLQELQVK
+FNEGERVRTELADKVTKLQVELDNVTGLLSQSDSKSSKLTKDFSALESQLQDTQELLQEE
+NRQKLSLSTKLKQVEDEKNSFREQLEEEEEAKHNLEKQIATLHAQVADMKKKMEDSVGCL
+ETAEEVKRKLQKDLEGLSQRHEEKVAAYDKLEKTKTRLQQELDDLLVDLDHQRQSACNLE
+KKQKKFDQLLAEEKTISAKYAEERDRAEAEAREKETKALSLARALEEAMEQKAELERLNK
+QFRTEMEDLMSSKDDVGKSVHELEKSKRALEQQVEEMKTQLEELEDELQATEDAKLRLEV
+NLQAMKAQFERDLQGRDEQSEEKKKQLVRQVREMEAELEDERKQRSMAVAARKKLEMDLK
+DLEAHIDSANKNRDEAIKQLRKLQAQMKDCMRELDDTRASREEILAQAKENEKKLKSMEA
+EMIQLQEELAAAERAKRQAQQERDELADEIANSSGKGALALEEKRRLEARIAQLEEELEE
+EQGNTELINDRLKKANLQIDQINTDLNLERSHAQKNENARQQLERQNKELKVKLQEMEGT
+VKSKYKASITALEAKIAQLEEQLDNETKERQAACKQVRRTEKKLKDVLLQVDDERRNAEQ
+YKDQADKASTRLKQLKRQLEEAEEEAQRANASRRKLQRELEDATETADAMNREVSSLKNK
+LRRGDLPFVVPRRMARKGAGDGSDEEVDGKADGAEAKPAE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/f2.fasta	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,11 @@
+
+>sp|Q99456|K1C12_HUMAN Keratin, type I cytoskeletal 12 OS=Homo sapiens GN=KRT12 PE=1 SV=1
+MDLSNNTMSLSVRTPGLSRRLSSQSVIGRPRGMSASSVGSGYGGSAFGFGASCGGGFSAA
+SMFGSSSGFGGGSGSSMAGGLGAGYGRALGGGSFGGLGMGFGGSPGGGSLGILSGNDGGL
+LSGSEKETMQNLNDRLASYLDKVRALEEANTELENKIREWYETRGTGTADASQSDYSKYY
+PLIEDLRNKIISASIGNAQLLLQIDNARLAAEDFRMKYENELALRQGVEADINGLRRVLD
+ELTLTRTDLEMQIESLNEELAYMKKNHEDELQSFRVGGPGEVSVEMDAAPGVDLTRLLND
+MRAQYETIAEQNRKDAEAWFIEKSGELRKEISTNTEQLQSSKSEVTDLRRAFQNLEIELQ
+SQLAMKKSLEDSLAEAEGDYCAQLSQVQQLISNLEAQLLQVRADAERQNVDHQRLLNVKA
+RLELEIETYRRLLDGEAQGDGLEESLFVTDSKSQAQSTDSSKDPTKTRKIKTVVQEMVNG
+EVVSSQVQEIEELM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/proteinGroups.csv	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,60 @@
+Protein IDs	Majority protein IDs	Peptide counts (all)	Peptide counts (razor+unique)	Peptide counts (unique)	Protein names	Gene names	Fasta headers	Proteins	Peptides	Razor + unique peptides	Unique peptides	Peptides test2	Razor + unique peptides test2	Unique peptides test2	Sequence coverage [%]	Unique + razor sequence coverage [%]	Unique sequence coverage [%]	Mol. weight [kDa]	Sequence length	Sequence lengths	Slice average	Slice 1	Experiment test2	PEP	Sequence coverage test2 [%]	Intensity	Intensity test2	Only identified by site	Reverse	Contaminant	id	Peptide IDs	Peptide is razor	Mod. peptide IDs	Evidence IDs	MS/MS IDs	Best MS/MS	Oxidation (M) site IDs	Oxidation (M) site positions
+A6NGA9	A6NGA9	1	1	1	Transmembrane protein 202	TMEM202	>sp|A6NGA9|TM202_HUMAN Transmembrane protein 202 OS=Homo sapiens GN=TMEM202 PE=2 SV=1	1	1	1	1	1	1	1	5.5	5.5	5.5	31.352	273	273	1	1	1	0.021486	5.5	74156	74156				0	68	True	71	88	100	100		
+P62736;P68032;P68133;P63267;CON__P60712;P60709;P63261;Q5T8M7;P63267-2;A6NL76;Q5T8M8	P62736;P68032;P68133;P63267;CON__P60712;P60709;P63261;Q5T8M7;P63267-2;A6NL76;Q5T8M8	1;1;1;1;1;1;1;1;1;1;1	1;1;1;1;1;1;1;1;1;1;1	1;1;1;1;1;1;1;1;1;1;1	Actin, aortic smooth muscle;Actin, alpha cardiac muscle 1;Actin, alpha skeletal muscle;Actin, gamma-enteric smooth muscle;Actin, cytoplasmic 1;Actin, cytoplasmic 1, N-terminally processed;Actin, cytoplasmic 2;Actin, cytoplasmic 2, N-terminally processed	ACTA2;ACTC1;ACTA1;ACTG2;ACTB;ACTG1	>sp|P62736|ACTA_HUMAN Actin, aortic smooth muscle OS=Homo sapiens GN=ACTA2 PE=1 SV=1;>sp|P68032|ACTC_HUMAN Actin, alpha cardiac muscle 1 OS=Homo sapiens GN=ACTC1 PE=1 SV=1;>sp|P68133|ACTS_HUMAN Actin, alpha skeletal muscle OS=Homo sapiens GN=ACTA1 PE=1 SV=	11	1	1	1	1	1	1	2.9	2.9	2.9	42.009	377	377;377;377;376;375;375;375;342;333;289;287	1	1	1	0.0012645	2.9	0	0			+	1	14	True	16	21	28	28	0	327
+Q15154;E7ETA6;Q15154-2;H0YBA1;A6NNN6	Q15154;E7ETA6;Q15154-2;H0YBA1;A6NNN6	1;1;1;1;1	1;1;1;1;1	1;1;1;1;1	Pericentriolar material 1 protein	PCM1	>sp|Q15154|PCM1_HUMAN Pericentriolar material 1 protein OS=Homo sapiens GN=PCM1 PE=1 SV=4;>tr|E7ETA6|E7ETA6_HUMAN Pericentriolar material 1 protein OS=Homo sapiens GN=PCM1 PE=2 SV=1;>sp|Q15154-2|PCM1_HUMAN Isoform 2 of Pericentriolar material 1 protein OS=	5	1	1	1	1	1	1	0.5	0.5	0.5	228.53	2024	2024;2016;1969;764;723	1	1	1	0.022199	0.5	0	0				2	34	True	37	43	51	51		
+A8MWY0-3	A8MWY0-3	1	1	1			>sp|A8MWY0-3|K132L_HUMAN Isoform 3 of UPF0577 protein KIAA1324-like OS=Homo sapiens GN=KIAA1324L	1	1	1	1	1	1	1	3.5	3.5	3.5	95.749	862	862	1	1	1	0.0198	3.5	128350	128350				3	42	True	45	55	63	63		
+Q01638;Q01638-2;E9PC41;Q01638-3;B4E0I3	Q01638;Q01638-2;E9PC41;Q01638-3;B4E0I3	1;1;1;1;1	1;1;1;1;1	1;1;1;1;1	Interleukin-1 receptor-like 1	IL1RL1	>sp|Q01638|ILRL1_HUMAN Interleukin-1 receptor-like 1 OS=Homo sapiens GN=IL1RL1 PE=1 SV=4;>sp|Q01638-2|ILRL1_HUMAN Isoform B of Interleukin-1 receptor-like 1 OS=Homo sapiens GN=IL1RL1;>tr|E9PC41|E9PC41_HUMAN Interleukin-1 receptor-like 1 OS=Homo sapiens GN=	5	1	1	1	1	1	1	2.5	2.5	2.5	63.357	556	556;328;314;259;211	1	1	1	0.011882	2.5	0	0				4	55	True	58	71	79	79		
+P16415;B7Z8D4	P16415;B7Z8D4	1;1	1;1	1;1	Zinc finger protein 823	ZNF823	>sp|P16415|ZN823_HUMAN Zinc finger protein 823 OS=Homo sapiens GN=ZNF823 PE=2 SV=2;>tr|B7Z8D4|B7Z8D4_HUMAN Zinc finger protein 823 OS=Homo sapiens GN=ZNF823 PE=2 SV=1	2	1	1	1	1	1	1	2.8	2.8	2.8	70.27	610	610;428	1	1	1	0.021702	2.8	2500200	2500200				5	12	True	14	19	26	26		
+B9EGE7;Q8TCN5;Q8TCN5-2	B9EGE7;Q8TCN5;Q8TCN5-2	1;1;1	1;1;1	1;1;1	Zinc finger protein 507	ZNF507	>tr|B9EGE7|B9EGE7_HUMAN ZNF507 protein OS=Homo sapiens GN=ZNF507 PE=2 SV=1;>sp|Q8TCN5|ZN507_HUMAN Zinc finger protein 507 OS=Homo sapiens GN=ZNF507 PE=1 SV=2;>sp|Q8TCN5-2|ZN507_HUMAN Isoform 2 of Zinc finger protein 507 OS=Homo sapiens GN=ZNF507	3	1	1	1	1	1	1	4.2	4.2	4.2	106.33	957	957;953;764	1	1	1	0.017482	4.2	112540	112540				6	61	True	64	77	87	87		
+Q9Y6D9;C9JJ38	Q9Y6D9;C9JJ38	1;1	1;1	1;1	Mitotic spindle assembly checkpoint protein MAD1	MAD1L1	>sp|Q9Y6D9|MD1L1_HUMAN Mitotic spindle assembly checkpoint protein MAD1 OS=Homo sapiens GN=MAD1L1 PE=1 SV=2;>tr|C9JJ38|C9JJ38_HUMAN Mitotic spindle assembly checkpoint protein MAD1 (Fragment) OS=Homo sapiens GN=MAD1L1 PE=2 SV=1	2	1	1	1	1	1	1	1.5	1.5	1.5	83.066	718	718;157	1	1	1	0.018335	1.5	831420	831420				7	15	True	17	22	29	29	1	74
+C9K044;Q6GPH4;Q6GPH4-7;Q6GPH4-2;Q6GPH4-6	C9K044;Q6GPH4;Q6GPH4-7;Q6GPH4-2;Q6GPH4-6	1;1;1;1;1	1;1;1;1;1	1;1;1;1;1	XIAP-associated factor 1	XAF1	>tr|C9K044|C9K044_HUMAN XIAP-associated factor 1 OS=Homo sapiens GN=XAF1 PE=2 SV=1;>sp|Q6GPH4|XAF1_HUMAN XIAP-associated factor 1 OS=Homo sapiens GN=XAF1 PE=1 SV=1;>sp|Q6GPH4-7|XAF1_HUMAN Isoform 7 of XIAP-associated factor 1 OS=Homo sapiens GN=XAF1;>sp|Q6	5	1	1	1	1	1	1	3.3	3.3	3.3	34.457	301	301;301;301;282;199	1	1	1	0.016448	3.3	0	0				8	23	True	26	32	39	39		
+CON__P02768-1;P02768;B7WNR0;D6RHD5;H0YA55;C9JKR2;P02768-2;H7C013;CON__P02769	CON__P02768-1;P02768;B7WNR0;D6RHD5;H0YA55;C9JKR2;P02768-2	22;22;16;16;16;14;14;8;2	22;22;16;16;16;14;14;8;2	22;22;16;16;16;14;14;8;2	Serum albumin	ALB	>P02768-1 SWISS-PROT:P02768-1 Tax_Id=9606 Gene_Symbol=ALB Isoform 1 of Serum albumin precursor;>sp|P02768|ALBU_HUMAN Serum albumin OS=Homo sapiens GN=ALB PE=1 SV=2;>tr|B7WNR0|B7WNR0_HUMAN Serum albumin OS=Homo sapiens GN=ALB PE=2 SV=1;>tr|D6RHD5|D6RHD5_HUM	9	22	22	22	22	22	22	38.6	38.6	38.6	69.366	609	609;609;494;459;454;417;417;197;607	1	41	41	0	38.6	210080000	210080000			+	9	0;1;5;10;11;16;19;21;29;35;36;47;56;59;60;62;63;64;66;72;74;76	True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True;True	0;1;5;6;11;12;13;18;19;22;24;32;38;39;50;59;62;63;65;66;67;69;75;77;79	0;1;2;3;4;8;9;14;15;16;17;18;23;24;27;29;30;38;44;45;46;47;48;49;61;72;75;76;78;79;80;81;82;83;84;86;92;93;94;97;99	0;1;2;3;4;5;9;10;11;16;17;18;19;20;21;22;23;24;25;30;31;34;36;37;45;52;53;54;55;56;57;69;80;85;86;88;89;90;91;92;93;94;95;96;98;104;105;106;107;108;111;113	3;4;9;16;19;31;34;36;45;54;57;69;80;85;86;88;94;96;98;108;111;113	2;3;4;5	111;353;470;572
+Q5VVM6;Q5VVM6-2;D6RFH8	Q5VVM6;Q5VVM6-2;D6RFH8	1;1;1	1;1;1	1;1;1	Coiled-coil domain-containing protein 30	CCDC30	>sp|Q5VVM6|CCD30_HUMAN Coiled-coil domain-containing protein 30 OS=Homo sapiens GN=CCDC30 PE=2 SV=1;>sp|Q5VVM6-2|CCD30_HUMAN Isoform 2 of Coiled-coil domain-containing protein 30 OS=Homo sapiens GN=CCDC30;>tr|D6RFH8|D6RFH8_HUMAN Coiled-coil domain-containi	3	1	1	1	1	1	1	1.3	1.3	1.3	91.332	783	783;572;481	1	1	1	0.022356	1.3	0	0				10	32	True	35	41	49	49		
+E1P506	E1P506	1	1	1		C6orf163	>tr|E1P506|E1P506_HUMAN Chromosome 6 open reading frame 163, isoform CRA_a OS=Homo sapiens GN=C6orf163 PE=2 SV=1	1	1	1	1	1	1	1	4.9	4.9	4.9	23.738	203	203	1	1	1	5.8768E-05	4.9	0	0				11	53	True	56	69	77	77		
+Q00536-3;E5RGV7	Q00536-3;E5RGV7	1;1	1;1	1;1		CDK16	>sp|Q00536-3|CDK16_HUMAN Isoform 3 of Cyclin-dependent kinase 16 OS=Homo sapiens GN=CDK16;>tr|E5RGV7|E5RGV7_HUMAN Cyclin-dependent kinase 16 OS=Homo sapiens GN=CDK16 PE=2 SV=1	2	1	1	1	1	1	1	2.2	2.2	2.2	56.375	502	502;83	1	3	3	0.020248	2.2	0	0				12	49	True	52	63;64;65	71;72;73	71		
+P47712;E7EU42	P47712;E7EU42	1;1	1;1	1;1	Cytosolic phospholipase A2;Phospholipase A2;Lysophospholipase	PLA2G4A	>sp|P47712|PA24A_HUMAN Cytosolic phospholipase A2 OS=Homo sapiens GN=PLA2G4A PE=1 SV=2;>tr|E7EU42|E7EU42_HUMAN Lysophospholipase OS=Homo sapiens GN=PLA2G4A PE=2 SV=1	2	1	1	1	1	1	1	0.9	0.9	0.9	85.238	749	749;689	1	1	1	0.018805	0.9	81307	81307				13	77	True	80	100	114	114		
+Q6V1P9-4;Q6V1P9-3;E9PG03;Q6V1P8	Q6V1P9-4;Q6V1P9-3;E9PG03;Q6V1P8	1;1;1;1	1;1;1;1	1;1;1;1		DCHS2;PCDHJ	>sp|Q6V1P9-4|PCD23_HUMAN Isoform 4 of Protocadherin-23 OS=Homo sapiens GN=DCHS2;>sp|Q6V1P9-3|PCD23_HUMAN Isoform 3 of Protocadherin-23 OS=Homo sapiens GN=DCHS2;>tr|E9PG03|E9PG03_HUMAN Protocadherin-23 OS=Homo sapiens GN=DCHS2 PE=2 SV=1;>tr|Q6V1P8|Q6V1P8_HU	4	1	1	1	1	1	1	0.7	0.7	0.7	149.3	1369	1369;1366;709;702	1	1	1	0.022193	0.7	0	0				14	9	True	10	13	15	15		
+Q12866;E9PHX8;H7C3L9	Q12866;E9PHX8;H7C3L9	1;1;1	1;1;1	1;1;1	Tyrosine-protein kinase Mer	MERTK	>sp|Q12866|MERTK_HUMAN Tyrosine-protein kinase Mer OS=Homo sapiens GN=MERTK PE=1 SV=2;>tr|E9PHX8|E9PHX8_HUMAN Tyrosine-protein kinase Mer OS=Homo sapiens GN=MERTK PE=2 SV=1;>tr|H7C3L9|H7C3L9_HUMAN Tyrosine-protein kinase Mer (Fragment) OS=Homo sapiens GN=M	3	1	1	1	1	1	1	2.4	2.4	2.4	110.25	999	999;823;257	1	1	1	0.0034058	2.4	0	0				15	25	True	28	34	41	41		
+F5H5P6	F5H5P6	1	1	1		RNF10	>tr|F5H5P6|F5H5P6_HUMAN RING finger protein 10 (Fragment) OS=Homo sapiens GN=RNF10 PE=2 SV=1	1	1	1	1	1	1	1	9.7	9.7	9.7	13.984	124	124	1	1	1	0.00018821	9.7	0	0				16	44	True	47	58	66	66		
+J3KNF5;O15078;F8VS29	J3KNF5;O15078;F8VS29	1;1;1	1;1;1	1;1;1	Centrosomal protein of 290 kDa	CEP290	>tr|J3KNF5|J3KNF5_HUMAN Centrosomal protein of 290 kDa OS=Homo sapiens GN=CEP290 PE=2 SV=1;>sp|O15078|CE290_HUMAN Centrosomal protein of 290 kDa OS=Homo sapiens GN=CEP290 PE=1 SV=2;>tr|F8VS29|F8VS29_HUMAN Centrosomal protein of 290 kDa (Fragment) OS=Homo s	3	1	1	1	1	1	1	0.4	0.4	0.4	290.54	2481	2481;2479;613	1	1	1	0.019317	0.4	0	0				17	26	True	29	35	42	42	6	239
+F8W0W6;P62306	F8W0W6;P62306	1;1	1;1	1;1	Small nuclear ribonucleoprotein F	SNRPF	>tr|F8W0W6|F8W0W6_HUMAN Small nuclear ribonucleoprotein F OS=Homo sapiens GN=SNRPF PE=2 SV=1;>sp|P62306|RUXF_HUMAN Small nuclear ribonucleoprotein F OS=Homo sapiens GN=SNRPF PE=1 SV=1	2	1	1	1	1	1	1	17.3	17.3	17.3	13.747	127	127;86	1	1	1	0.0043028	17.3	0	0				18	50	True	53	66	74	74		
+Q96JB1;Q96JB1-2;H0Y7V4	Q96JB1;Q96JB1-2;H0Y7V4	1;1;1	1;1;1	1;1;1	Dynein heavy chain 8, axonemal	DNAH8	>sp|Q96JB1|DYH8_HUMAN Dynein heavy chain 8, axonemal OS=Homo sapiens GN=DNAH8 PE=1 SV=2;>sp|Q96JB1-2|DYH8_HUMAN Isoform 2 of Dynein heavy chain 8, axonemal OS=Homo sapiens GN=DNAH8;>tr|H0Y7V4|H0Y7V4_HUMAN Dynein heavy chain 8, axonemal OS=Homo sapiens GN=D	3	1	1	1	1	1	1	0.2	0.2	0.2	514.66	4490	4490;4454;4188	1	1	1	2.0465E-06	0.2	0	0				19	33	True	36	42	50	50		
+H0YCF9	H0YCF9	1	1	1		NADSYN1	>tr|H0YCF9|H0YCF9_HUMAN Glutamine-dependent NAD(+) synthetase (Fragment) OS=Homo sapiens GN=NADSYN1 PE=4 SV=1	1	1	1	1	1	1	1	16.9	16.9	16.9	8.1039	83	83	1	1	1	0.020661	16.9	4523400	4523400				20	70	True	73	90	102	102		
+H0YET9	H0YET9	1	1	1		ARRB1	>tr|H0YET9|H0YET9_HUMAN Beta-arrestin-1 (Fragment) OS=Homo sapiens GN=ARRB1 PE=4 SV=1	1	1	1	1	1	1	1	7.2	7.2	7.2	21.805	195	195	1	1	1	0.0060722	7.2	0	0				21	17	True	20	25	32	32		
+Q9BTM1-2;P16104;P04908;P0C0S8;P20671;Q7L7L0;Q8IUE6;Q93077;Q9BTM1;Q96KK5;Q99878;H0YFX9	Q9BTM1-2;P16104;P04908;P0C0S8;P20671;Q7L7L0;Q8IUE6;Q93077;Q9BTM1;Q96KK5;Q99878;H0YFX9	1;1;1;1;1;1;1;1;1;1;1;1	1;1;1;1;1;1;1;1;1;1;1;1	1;1;1;1;1;1;1;1;1;1;1;1	Histone H2A.x;Histone H2A type 1-B/E;Histone H2A type 1;Histone H2A type 1-D;Histone H2A type 3;Histone H2A type 2-B;Histone H2A type 1-C;Histone H2A.J;Histone H2A type 1-H;Histone H2A type 1-J;Histone H2A	H2AFX;HIST1H2AB;HIST1H2AG;HIST1H2AD;HIST3H2A;HIST2H2AB;HIST1H2AC;H2AFJ;HIST1H2AH;HIST1H2AJ	>sp|Q9BTM1-2|H2AJ_HUMAN Isoform 2 of Histone H2A.J OS=Homo sapiens GN=H2AFJ;>sp|P16104|H2AX_HUMAN Histone H2AX OS=Homo sapiens GN=H2AFX PE=1 SV=2;>sp|P04908|H2A1B_HUMAN Histone H2A type 1-B/E OS=Homo sapiens GN=HIST1H2AB PE=1 SV=2;>sp|P0C0S8|H2A1_HUMAN His	12	1	1	1	1	1	1	19.2	19.2	19.2	16.109	151	151;143;130;130;130;130;130;130;129;128;128;92	1	2	2	2.6728E-07	19.2	855030	855030				22	73	True	76	95;96	109;110	110		
+P00738;J3QR68;J3QLC9;H3BS21	P00738;J3QR68;J3QLC9;H3BS21	1;1;1;1	1;1;1;1	1;1;1;1	Haptoglobin;Haptoglobin alpha chain;Haptoglobin beta chain	HP	>sp|P00738|HPT_HUMAN Haptoglobin OS=Homo sapiens GN=HP PE=1 SV=1;>tr|J3QR68|J3QR68_HUMAN Haptoglobin (Fragment) OS=Homo sapiens GN=HP PE=3 SV=1;>tr|J3QLC9|J3QLC9_HUMAN Haptoglobin (Fragment) OS=Homo sapiens GN=HP PE=3 SV=1;>tr|H3BS21|H3BS21_HUMAN Haptoglob	4	1	1	1	1	1	1	3.4	3.4	3.4	45.205	406	406;404;365;222	1	1	1	9.4008E-37	3.4	0	0				23	79	True	82	102	116	116	7	300
+H3BS82	H3BS82	1	1	1			>tr|H3BS82|H3BS82_HUMAN Uncharacterized protein (Fragment) OS=Homo sapiens PE=4 SV=1	1	1	1	1	1	1	1	57.9	57.9	57.9	2.3165	19	19	1	1	1	0.015883	57.9	0	0				24	71	True	74	91	103	103		
+Q6P158;H7C109	Q6P158;H7C109	1;1	1;1	1;1	Putative ATP-dependent RNA helicase DHX57	DHX57	>sp|Q6P158|DHX57_HUMAN Putative ATP-dependent RNA helicase DHX57 OS=Homo sapiens GN=DHX57 PE=1 SV=2;>tr|H7C109|H7C109_HUMAN Putative ATP-dependent RNA helicase DHX57 (Fragment) OS=Homo sapiens GN=DHX57 PE=4 SV=1	2	1	1	1	1	1	1	1.3	1.3	1.3	155.6	1386	1386;665	1	1	1	0.012674	1.3	1952500	1952500				25	78	True	81	101	115	115		
+Q13045;Q13045-3;Q13045-2;J3KS54;K7EP27;K7EP37	Q13045;Q13045-3;Q13045-2;J3KS54;K7EP27;K7EP37	1;1;1;1;1;1	1;1;1;1;1;1	1;1;1;1;1;1	Protein flightless-1 homolog	FLII	>sp|Q13045|FLII_HUMAN Protein flightless-1 homolog OS=Homo sapiens GN=FLII PE=1 SV=2;>sp|Q13045-3|FLII_HUMAN Isoform 3 of Protein flightless-1 homolog OS=Homo sapiens GN=FLII;>sp|Q13045-2|FLII_HUMAN Isoform 2 of Protein flightless-1 homolog OS=Homo sapiens	6	1	1	1	1	1	1	1.2	1.2	1.2	144.75	1269	1269;1258;1214;700;133;99	1	1	1	0.021674	1.2	99092	99092				26	2	True	2	5	6	6		
+J3KTH2;Q92750	J3KTH2;Q92750	1;1	1;1	1;1	Transcription initiation factor TFIID subunit 4B	TAF4B	>tr|J3KTH2|J3KTH2_HUMAN HCG38478, isoform CRA_a OS=Homo sapiens GN=TAF4B PE=2 SV=1;>sp|Q92750|TAF4B_HUMAN Transcription initiation factor TFIID subunit 4B OS=Homo sapiens GN=TAF4B PE=1 SV=2	2	1	1	1	1	1	1	1.2	1.2	1.2	91.712	867	867;862	1	1	1	0.022113	1.2	0	0				27	8	True	9	12	14	14		
+Q96NJ3-2;K7ERT5	Q96NJ3-2;K7ERT5	1;1	1;1	1;1			>sp|Q96NJ3-2|ZN285_HUMAN Isoform 2 of Zinc finger protein 285 OS=Homo sapiens GN=ZNF285;>tr|K7ERT5|K7ERT5_HUMAN Zinc finger protein 285 (Fragment) OS=Homo sapiens GN=ZNF285 PE=2 SV=1	2	1	1	1	1	1	1	2.3	2.3	2.3	50.168	435	435;39	1	1	1	0.013128	2.3	0	0				28	51	True	54	67	75	75		
+M0QY22	M0QY22	1	1	1			>tr|M0QY22|M0QY22_HUMAN Protein LOC100996407 OS=Homo sapiens GN=LOC100996407 PE=4 SV=1	1	1	1	1	1	1	1	3.7	3.7	3.7	31.872	301	301	1	1	1	0.022359	3.7	332840000	332840000				29	69	True	72	89	101	101		
+Q6ZN19-3;Q6ZN19;M0R0F3;Q6ZN19-2	Q6ZN19-3;Q6ZN19;M0R0F3;Q6ZN19-2	1;1;1;1	1;1;1;1	1;1;1;1	Zinc finger protein 841	ZNF841	>sp|Q6ZN19-3|ZN841_HUMAN Isoform 3 of Zinc finger protein 841 OS=Homo sapiens GN=ZNF841;>sp|Q6ZN19|ZN841_HUMAN Zinc finger protein 841 OS=Homo sapiens GN=ZNF841 PE=2 SV=1;>tr|M0R0F3|M0R0F3_HUMAN Zinc finger protein 841 (Fragment) OS=Homo sapiens GN=ZNF841 	4	1	1	1	1	1	1	1.1	1.1	1.1	106.1	924	924;808;512;500	1	1	1	0.019385	1.1	0	0				30	6	True	7	10	12	12		
+O43603	O43603	1	1	1	Galanin receptor type 2	GALR2	>sp|O43603|GALR2_HUMAN Galanin receptor type 2 OS=Homo sapiens GN=GALR2 PE=1 SV=1	1	1	1	1	1	1	1	2.6	2.6	2.6	41.7	387	387	1	1	1	0.019585	2.6	0	0				31	3	True	3	6	7	7		
+O75132	O75132	1	1	1	Zinc finger BED domain-containing protein 4	ZBED4	>sp|O75132|ZBED4_HUMAN Zinc finger BED domain-containing protein 4 OS=Homo sapiens GN=ZBED4 PE=1 SV=2	1	1	1	1	1	1	1	1	1	1	130.32	1171	1171	1	1	1	0.0098248	1	0	0				32	28	True	31	37	44	44		
+O94889-2	O94889-2	1	1	1			>sp|O94889-2|KLH18_HUMAN Isoform 2 of Kelch-like protein 18 OS=Homo sapiens GN=KLHL18	1	1	1	1	1	1	1	2	2	2	56.357	509	509	1	1	1	0.0097008	2	0	0				33	40	True	43	53	61	61		
+P05141	P05141	1	1	1	ADP/ATP translocase 2	SLC25A5	>sp|P05141|ADT2_HUMAN ADP/ATP translocase 2 OS=Homo sapiens GN=SLC25A5 PE=1 SV=7	1	1	1	1	1	1	1	4.4	4.4	4.4	32.852	298	298	1	1	1	0.0084754	4.4	164530	164530				34	7	True	8	11	13	13		
+P0C6C1	P0C6C1	1	1	1	Ankyrin repeat domain-containing protein 34C	ANKRD34C	>sp|P0C6C1|AN34C_HUMAN Ankyrin repeat domain-containing protein 34C OS=Homo sapiens GN=ANKRD34C PE=2 SV=2	1	1	1	1	1	1	1	1.7	1.7	1.7	58.256	535	535	1	2	2	0.00010493	1.7	0	0				35	43	True	46	56;57	64;65	65		
+P0C841	P0C841	1	1	1	Putative protein FAM66E	FAM66E	>sp|P0C841|FA66E_HUMAN Putative protein FAM66E OS=Homo sapiens GN=FAM66E PE=5 SV=1	1	1	1	1	1	1	1	44.7	44.7	44.7	5.2328	47	47	1	1	1	0.020512	44.7	341210	341210				36	58	True	61	74	84	84		
+P62684;P87889	P62684;P87889	1;1	1;1	1;1	HERV-K_19p13.11 provirus ancestral Gag polyprotein;Matrix protein;Capsid protein;Nucleocapsid protein;HERV-K_5q33.3 provirus ancestral Gag polyprotein;Matrix protein;Capsid protein;Nucleocapsid protein		>sp|P62684|GAK5_HUMAN HERV-K_19p13.11 provirus ancestral Gag polyprotein OS=Homo sapiens PE=1 SV=2;>sp|P87889|GAK10_HUMAN HERV-K_5q33.3 provirus ancestral Gag polyprotein OS=Homo sapiens PE=1 SV=4	2	1	1	1	1	1	1	2.3	2.3	2.3	74.037	666	666;666	1	1	1	0.022276	2.3	96918	96918				37	30	True	33	39	46	46		
+Q01668-2;Q01668;Q01668-3;Q01668-4	Q01668-2;Q01668;Q01668-3;Q01668-4	1;1;1;1	1;1;1;1	1;1;1;1	Voltage-dependent L-type calcium channel subunit alpha-1D	CACNA1D	>sp|Q01668-2|CAC1D_HUMAN Isoform Beta-cell-type of Voltage-dependent L-type calcium channel subunit alpha-1D OS=Homo sapiens GN=CACNA1D;>sp|Q01668|CAC1D_HUMAN Voltage-dependent L-type calcium channel subunit alpha-1D OS=Homo sapiens GN=CACNA1D PE=1 SV=2;>s	4	1	1	1	1	1	1	0.6	0.6	0.6	247.56	2181	2181;2161;2137;1647	1	1	1	0.00022751	0.6	0	0				38	46	True	49	60	68	68		
+Q13315	Q13315	1	1	1	Serine-protein kinase ATM	ATM	>sp|Q13315|ATM_HUMAN Serine-protein kinase ATM OS=Homo sapiens GN=ATM PE=1 SV=4	1	1	1	1	1	1	1	1	1	1	350.68	3056	3056	1	1	1	0.021315	1	100320	100320				39	20	True	23	28	35	35		
+Q14160-3;Q14160;Q9BTT6;Q9BTT6-2;Q5T0G3	Q14160-3;Q14160;Q9BTT6;Q9BTT6-2;Q5T0G3	1;1;1;1;1	1;1;1;1;1	1;1;1;1;1	Protein scribble homolog;Leucine-rich repeat-containing protein 1	SCRIB;LRRC1	>sp|Q14160-3|SCRIB_HUMAN Isoform 3 of Protein scribble homolog OS=Homo sapiens GN=SCRIB;>sp|Q14160|SCRIB_HUMAN Protein scribble homolog OS=Homo sapiens GN=SCRIB PE=1 SV=4;>sp|Q9BTT6|LRRC1_HUMAN Leucine-rich repeat-containing protein 1 OS=Homo sapiens GN=LR	5	1	1	1	1	1	1	0.6	0.6	0.6	177.69	1655	1655;1630;524;197;154	1	1	1	0.022359	0.6	332840000	332840000				40	31	True	34	40	47;48	47		
+Q5JTZ9	Q5JTZ9	1	1	1	Alanine--tRNA ligase, mitochondrial	AARS2	>sp|Q5JTZ9|SYAM_HUMAN Alanine--tRNA ligase, mitochondrial OS=Homo sapiens GN=AARS2 PE=1 SV=1	1	1	1	1	1	1	1	1.1	1.1	1.1	107.34	985	985	1	1	1	0.016565	1.1	0	0				41	37	True	40	50	58	58		
+Q5T742	Q5T742	1	1	1	Uncharacterized protein C10orf25	C10orf25	>sp|Q5T742|CJ025_HUMAN Uncharacterized protein C10orf25 OS=Homo sapiens GN=C10orf25 PE=2 SV=3	1	1	1	1	1	1	1	9	9	9	14.441	122	122	1	1	1	0.021232	9	658770	658770				42	52	True	55	68	76	76	8	1
+Q5T7X1	Q5T7X1	1	1	1		C9orf97	>tr|Q5T7X1|Q5T7X1_HUMAN Thiosulfate sulfurtransferase/rhodanese-like domain-containing protein 2 OS=Homo sapiens GN=TSTD2 PE=2 SV=1	1	1	1	1	1	1	1	18.8	18.8	18.8	12.512	112	112	1	1	1	0.0016156	18.8	0	0				43	54	True	57	70	78	78		
+Q5TAL2	Q5TAL2	1	1	1		SNRPC	>tr|Q5TAL2|Q5TAL2_HUMAN U1 small nuclear ribonucleoprotein C OS=Homo sapiens GN=SNRPC PE=2 SV=1	1	1	1	1	1	1	1	39	39	39	12.352	118	118	1	1	1	0.013908	39	164570	164570				44	13	True	15	20	27	27		
+Q9HD45;Q5TB53	Q9HD45;Q5TB53	1;1	1;1	1;1	Transmembrane 9 superfamily member 3	TM9SF3;RP11-34E5.1	>sp|Q9HD45|TM9S3_HUMAN Transmembrane 9 superfamily member 3 OS=Homo sapiens GN=TM9SF3 PE=1 SV=2;>tr|Q5TB53|Q5TB53_HUMAN Transmembrane 9 superfamily member 3 (Fragment) OS=Homo sapiens GN=TM9SF3 PE=2 SV=1	2	1	1	1	1	1	1	6.6	6.6	6.6	67.887	589	589;254	1	1	1	0.022061	6.6	122910	122910				45	18	True	21	26	33	33		
+Q6PI48	Q6PI48	1	1	1	Aspartate--tRNA ligase, mitochondrial	DARS2	>sp|Q6PI48|SYDM_HUMAN Aspartate--tRNA ligase, mitochondrial OS=Homo sapiens GN=DARS2 PE=1 SV=1	1	1	1	1	1	1	1	2.3	2.3	2.3	73.562	645	645	1	1	1	0.016652	2.3	45097	45097				46	75	True	78	98	112	112		
+Q7Z5H3-3	Q7Z5H3-3	1	1	1			>sp|Q7Z5H3-3|RHG22_HUMAN Isoform 3 of Rho GTPase-activating protein 22 OS=Homo sapiens GN=ARHGAP22	1	1	1	1	1	1	1	1.2	1.2	1.2	66.61	608	608	1	1	1	0.019637	1.2	417420	417420				47	48	True	51	62	70	70	9	1
+Q86Z20;Q86Z20-2	Q86Z20;Q86Z20-2	1;1	1;1	1;1	Coiled-coil domain-containing protein 125	CCDC125	>sp|Q86Z20|CC125_HUMAN Coiled-coil domain-containing protein 125 OS=Homo sapiens GN=CCDC125 PE=1 SV=2;>sp|Q86Z20-2|CC125_HUMAN Isoform 2 of Coiled-coil domain-containing protein 125 OS=Homo sapiens GN=CCDC125	2	1	1	1	1	1	1	2.9	2.9	2.9	58.628	511	511;386	1	1	1	0.0075203	2.9	563670	563670				48	27	True	30	36	43	43		
+Q8IW50;Q8IW50-4;Q8IW50-6;Q8IW50-5;Q8IW50-2;Q8IW50-7;Q8IW50-3	Q8IW50;Q8IW50-4;Q8IW50-6;Q8IW50-5;Q8IW50-2;Q8IW50-7;Q8IW50-3	1;1;1;1;1;1;1	1;1;1;1;1;1;1	1;1;1;1;1;1;1	Protein FAM219A	FAM219A	>sp|Q8IW50|F219A_HUMAN Protein FAM219A OS=Homo sapiens GN=FAM219A PE=1 SV=3;>sp|Q8IW50-4|F219A_HUMAN Isoform 4 of Protein FAM219A OS=Homo sapiens GN=FAM219A;>sp|Q8IW50-6|F219A_HUMAN Isoform 6 of Protein FAM219A OS=Homo sapiens GN=FAM219A;>sp|Q8IW50-5|F219A	7	1	1	1	1	1	1	3.8	3.8	3.8	20.399	185	185;173;168;167;157;157;156	1	1	1	0.00067799	3.8	0	0				49	45	True	48	59	67	67		
+Q8IYF3-2	Q8IYF3-2	1	1	1			>sp|Q8IYF3-2|TEX11_HUMAN Isoform 2 of Testis-expressed sequence 11 protein OS=Homo sapiens GN=TEX11	1	1	1	1	1	1	1	4.1	4.1	4.1	71.283	615	615	1	1	1	0.0040995	4.1	0	0				50	39	True	42	52	60	60		
+Q8ND76;Q8ND76-2;Q8ND76-3	Q8ND76;Q8ND76-2;Q8ND76-3	1;1;1	1;1;1	1;1;1	Cyclin-Y	CCNY	>sp|Q8ND76|CCNY_HUMAN Cyclin-Y OS=Homo sapiens GN=CCNY PE=1 SV=2;>sp|Q8ND76-2|CCNY_HUMAN Isoform 2 of Cyclin-Y OS=Homo sapiens GN=CCNY;>sp|Q8ND76-3|CCNY_HUMAN Isoform 3 of Cyclin-Y OS=Homo sapiens GN=CCNY	3	1	1	1	1	1	1	3.2	3.2	3.2	39.336	341	341;316;287	1	1	1	0.022359	3.2	332840000	332840000				51	67	True	70	87	99	99		
+Q8WXI9	Q8WXI9	1	1	1	Transcriptional repressor p66-beta	GATAD2B	>sp|Q8WXI9|P66B_HUMAN Transcriptional repressor p66-beta OS=Homo sapiens GN=GATAD2B PE=1 SV=1	1	1	1	1	1	1	1	2	2	2	65.26	593	593	1	1	1	0.01708	2	715080	715080				52	65	True	68	85	97	97	10;11	34;40
+Q96DT5;U3KQJ8	Q96DT5;U3KQJ8	1;1	1;1	1;1	Dynein heavy chain 11, axonemal	DNAH11	>sp|Q96DT5|DYH11_HUMAN Dynein heavy chain 11, axonemal OS=Homo sapiens GN=DNAH11 PE=1 SV=3;>tr|U3KQJ8|U3KQJ8_HUMAN Dynein heavy chain 11, axonemal OS=Homo sapiens GN=DNAH11 PE=4 SV=1	2	1	1	1	1	1	1	0.2	0.2	0.2	521.04	4523	4523;4516	1	1	1	0.022359	0.2	332840000	332840000				53	4	True	4	7	8	8		
+Q96TA1-2	Q96TA1-2	1	1	1			>sp|Q96TA1-2|NIBL1_HUMAN Isoform 2 of Niban-like protein 1 OS=Homo sapiens GN=FAM129B	1	1	1	1	1	1	1	1.4	1.4	1.4	82.682	733	733	1	1	1	0.019411	1.4	0	0				54	41	True	44	54	62	62		
+Q9BVL4	Q9BVL4	1	1	1	Selenoprotein O	SELO	>sp|Q9BVL4|SELO_HUMAN Selenoprotein O OS=Homo sapiens GN=SELO PE=2 SV=3	1	1	1	1	1	1	1	2.2	2.2	2.2	73.506	669	669	1	1	1	0.021901	2.2	30381000	30381000				55	22	True	25	31	38	38		
+Q9H0L4	Q9H0L4	1	1	1	Cleavage stimulation factor subunit 2 tau variant	CSTF2T	>sp|Q9H0L4|CSTFT_HUMAN Cleavage stimulation factor subunit 2 tau variant OS=Homo sapiens GN=CSTF2T PE=1 SV=1	1	1	1	1	1	1	1	3.2	3.2	3.2	64.436	616	616	1	1	1	0.022136	3.2	309390	309390				56	24	True	27	33	40	40		
+Q9UJY1	Q9UJY1	1	1	1	Heat shock protein beta-8	HSPB8	>sp|Q9UJY1|HSPB8_HUMAN Heat shock protein beta-8 OS=Homo sapiens GN=HSPB8 PE=1 SV=1	1	1	1	1	1	1	1	7.7	7.7	7.7	21.604	196	196	1	1	1	0.00014865	7.7	0	0				57	38	True	41	51	59	59		
+S4R332	S4R332	1	1	1			>tr|S4R332|S4R332_HUMAN Calcium uniporter protein, mitochondrial OS=Homo sapiens GN=MCU PE=4 SV=1	1	1	1	1	1	1	1	13.6	13.6	13.6	9.4376	88	88	1	1	1	0.0074961	13.6	944210000	944210000				58	57	True	60	73	81;82;83	81		
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/proteinGroups_csv_filtered_with_contaminants.tabular	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,59 @@
+A6NGA9
+P62736
+Q15154
+A8MWY0-3
+Q01638
+P16415
+B9EGE7
+Q9Y6D9
+C9K044
+P02768-1
+Q5VVM6
+E1P506
+Q00536-3
+P47712
+Q6V1P9-4
+Q12866
+F5H5P6
+J3KNF5
+F8W0W6
+Q96JB1
+H0YCF9
+H0YET9
+Q9BTM1-2
+P00738
+H3BS82
+Q6P158
+Q13045
+J3KTH2
+Q96NJ3-2
+M0QY22
+Q6ZN19-3
+O43603
+O75132
+O94889-2
+P05141
+P0C6C1
+P0C841
+P62684
+Q01668-2
+Q13315
+Q14160-3
+Q5JTZ9
+Q5T742
+Q5T7X1
+Q5TAL2
+Q9HD45
+Q6PI48
+Q7Z5H3-3
+Q86Z20
+Q8IW50
+Q8IYF3-2
+Q8ND76
+Q8WXI9
+Q96DT5
+Q96TA1-2
+Q9BVL4
+Q9H0L4
+Q9UJY1
+S4R332
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/proteinGroups_csv_filtered_without_contaminants.tabular	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,58 @@
+A6NGA9
+P62736
+Q15154
+A8MWY0-3
+Q01638
+P16415
+B9EGE7
+Q9Y6D9
+C9K044
+Q5VVM6
+E1P506
+Q00536-3
+P47712
+Q6V1P9-4
+Q12866
+F5H5P6
+J3KNF5
+F8W0W6
+Q96JB1
+H0YCF9
+H0YET9
+Q9BTM1-2
+P00738
+H3BS82
+Q6P158
+Q13045
+J3KTH2
+Q96NJ3-2
+M0QY22
+Q6ZN19-3
+O43603
+O75132
+O94889-2
+P05141
+P0C6C1
+P0C841
+P62684
+Q01668-2
+Q13315
+Q14160-3
+Q5JTZ9
+Q5T742
+Q5T7X1
+Q5TAL2
+Q9HD45
+Q6PI48
+Q7Z5H3-3
+Q86Z20
+Q8IW50
+Q8IYF3-2
+Q8ND76
+Q8WXI9
+Q96DT5
+Q96TA1-2
+Q9BVL4
+Q9H0L4
+Q9UJY1
+S4R332
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/write_util.R	Tue Jul 03 17:34:13 2018 -0400
@@ -0,0 +1,5 @@
+writeout <- function (filename, table) {
+    output_handler <- file(filename, "w")
+    write.table(table, file=output_handler, sep="\t", row.names=FALSE);
+    close(output_handler)
+}