synapter is free and open-source software. If you use it, please support the project by citing it in publications:

Nicholas James Bond, Pavel Vyacheslavovich Shliaha, Kathryn S. Lilley, and Laurent Gatto. Improving qualitative and quantitative performance for MS\(^E\)-based label free proteomics. J. Proteome Res., 2013, 12 (6), pp 2340–2353

Questions and bugs

For bugs, typos, suggestions or other questions, please file an issue in our tracking system ( providing as much information as possible, a reproducible example and the output of sessionInfo().

If you don’t have a GitHub account or wish to reach a broader audience for general questions about proteomics analysis using R, you may want to use the Bioconductor support site:


This document assumes familiarity with standard synapter pipeline described in (Bond et al. 2013) and in the package synapter vignette, available online and with vignette("synapter", package = "synapter").

In this vignette we introduce a new fragment matching feature (see figures 2, 3 and 4) which improves the matching of identification and the quantitation features. After applying the usual synergise1 workflow (see ?synergise1 and ?Synapter for details) a number of multiple matches and possible false unique matches remain that can be deconvoluted by comparing common peaks in the identification fragment peaks and the quantitation spectra.

The example data synobj2 used throughout this document is available in the synapterdata package and can be directly load as follows:


In the [next section](:synergise] we describe how synobj2 was generated. The following sections then describe the new fragment matching functionality.

Running synergise1

One has to run the synergise1 workflow before fragment matching can be applied. Please read the general synapter vignette for the general use of synergise1. The additional data needed for the fragment matching procedure are a final_fragment.csv file for the identification run and a Spectrum.xml file for the quantitation run.

## Please find the raw data at:

inlist <- list(
  identpeptide = "fermentor_03_sample_01_HDMSE_01_IA_final_peptide.csv.gz",
  identfragments = "fermentor_03_sample_01_HDMSE_01_IA_final_fragment.csv.gz",
  quantpeptide = "fermentor_02_sample_01_HDMSE_01_IA_final_peptide.csv.gz",
  quantpep3d = "fermentor_02_sample_01_HDMSE_01_Pep3DAMRT.csv.gz",
  quantspectra = "fermentor_02_sample_01_HDMSE_01_Pep3D_Spectrum.xml.gz",
  fasta = "S.cerevisiae_Uniprot_reference_canonical_18_03_14.fasta")

synobj2 <- Synapter(inlist, master=FALSE)
synobj2 <- synergise1(object=synobj2,

Filtering fragments

This step is optional and allows one to remove low abundance fragments in the spectra using filterFragments. Filtering fragments can remove noise in the spectra and reduce undesired fragment matches. Prior to filtering, the plotCumulativeNumberOfFragments function can be use to visualise the intensity of all fragments. Both functions have an argument what to decide what spectra/fragments to filter/plot. Choose fragments.ident for the identification fragments and spectra.quant for the quantitation fragments.

                                what = "fragments.ident")
Cumulative Number of Fragments

Cumulative Number of Fragments

                                what = "spectra.quant")
Cumulative Number of Fragments

Cumulative Number of Fragments

                what = "fragments.ident",
                minIntensity = 70)
                what = "spectra.quant",
                minIntensity = 70)

Fragment matching

This method, named fragmentMatching, performs the matching of the identification fragments vs the quantitation spectra and counts the number of identical peaks for each combination.

Because the peaks/fragments in the spectra of one run will never be numerically identical to these in another, a tolerance parameter has to be set using the setFragmentMatchingPpmTolerance function. Peaks/Fragments within this tolerance are treated as identical.

setFragmentMatchingPpmTolerance(synobj2, 25)

The plotFragmentMatching function illustrates the details of this fragment matching procedure. If it is called without any additional argument every matched pair (fragment vs spectrum) is plotted. One can use the key argument to select a special value in a column (defined by the column argument) of the MatchedEMRTs data.frame. E.g. if one wants to select the fragment matching results with a high number of common peaks, e.g. 28 common peaks:

                     key = 28,
                     column = "FragmentMatching")