Foreword

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

P.V. Shliaha, S. Gibb, V. Gorshkov, M.S. Jespersen, G.R. Andersen, D. Bailey, J. Schwartz, S. Eliuk, V. Schwämmle, and O.N. Jensen. 2018. Maximizing Sequence Coverage in Top-Down Proteomics By Automated Multi-modal Gas-phase Protein Fragmentation. Analytical Chemistry. DOI: 10.1021/acs.analchem.8b02344

Questions and bugs

For bugs, typos, suggestions or other questions, please file an issue in our tracking system (https://github.com/sgibb/topdownr/issues) 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: https://support.bioconductor.org/.

1 Introduction

1.1 The topdownr Data Generation Workflow

Data Generation Workflow

Data Generation Workflow

2 Installation of Additional Software

2.1 Setup the Thermo Software

To create methods the user will have to install and modify Orbitrap Fusion LUMOS workstation first:

  1. Request OrbitrapFusionLumosWorkstation.exe from Thermo Scientific.
  2. Install the workstation by running OrbitrapFusionLumosWorkstation.exe.
  3. Run C:\Thermo\Instruments\TNG\OrbitrapFusionLumos\2.1\System\programs\TNGInstrumentConfigControl.exe, set Optional Ion Source to ETD and Internal Calibration, click Apply and OK (you could ignore the restart your instrument message).
  4. Replace C:\Thermo\Instruments\TNG\OrbitrapFusionLumos\2.1\System\programs\Thermo.TNG.Calcium.MethodXML.dll by Thermo.TNG.Calcium.MethodXML.dll.

2.2 Setup XMLMethodChanger

XMLMethodChanger is needed to convert the xml methods into .meth files. It could be found at https://github.com/thermofisherlsms/meth-modifications The user has to download and compile it himself (or request it from Thermo Scientific as well).

2.3 Setup Operating System

In order to use XMLMethodChanger the operating system has to use the . (dot) as decimal mark and the , (comma) as digit group separator (one thousand dot two should be formated as 1,000.2).

In Windows 7 the settings are located at Windows Control Panel > Region and Language > Formats. Choose English (USA) here or use the Additional settings button to change it manually.

2.4 Setup ScanHeadsman

After data aquisition topdownr would need the header information from the .raw files. Therefore the ScanHeadsman software is used. It could be downloaded from https://bitbucket.org/caetera/scanheadsman

It requires Microsoft .NET 4.5 or later (it is often preinstalled on a typical modern Windows or could be found in Microsoft’s Download Center, e.g. https://www.microsoft.com/en-us/download/details.aspx?id=30653). Additionally you would need Thermo’s MS File Reader which could be downloaded free of charge (but you have to register) from the Thermo FlexNet website: https://thermo.flexnetoperations.com/

ScanHeadsman was created by Vladimir Gorshkov [email protected].

3 Creating Methods

Importantly, XMLmethodChanger does not create methods de novo, but modifies pre-existing methods (supplied with XMLMethodChanger) using modifications described in XML files. Thus the whole process of creating user specified methods consists of 2 parts:

  1. Construction of XML files with all possible combination of fragmentation parameters (see topdownr::writeMethodXmls below).
  2. Submitting the constructed XML files together with a template .meth file to XMLmethodChanger.

We choose to use targeted MS2 scans (TMS2) as a way to store the fragmentation parameters. Each TMS2 is stored in a separate experiment. Experiments do not overlap.

Method Editor - Experiment 21

Method Editor - Experiment 21

4 Data preparation with topdownr

Shown below is the process of creating XML files and using them to modify the TMS2IndependentTemplateForTD.meth template file.

library("topdownr")

## MS1 parameters (you could also use and modify
## the output of `defaultMs1Settings()`)
parMS1 <- list(
    FirstMass = 400,
    LastMass = 1600,
    Microscans = 10
)

## MS2 parameters (you could also use and modify
## the output of `defaultMs2Settings()`)
parMS2  <- list(
    OrbitrapResolution = "R120K",
    IsolationWindow = 1,
    MaxITTimeInMS = 200,
    ETDSupplementalActivation = c("ETciD", "EThcD"),
    ActivationType = "ETD",
    Microscans = 40,
    ETDSupplementalActivationEnergy = seq (0, 35, 7),
    ETDReactionTime = c (0, 2.5, 5, 10, 15, 30, 50),
    ETDReagentTarget = c(1e6, 5e6, 1e7),
    AgcTarget = c(1e5, 5e5, 1e6)
)

## Create the XML files for mz == 707
writeMethodXmls(ms1Settings = parMS1,
                ms2Settings = parMS2,
                replications = 1,
                groupBy = "ETDReagentTarget",
                mz = cbind(mass=707.3, z=1),
                massLabeling = TRUE,
                nMs2perMs1 = 1000,
                duration = 0.5,
                randomise = FALSE,
                pattern = "method707_%s.xml")

## Create the XML files for mz == 893
writeMethodXmls(ms1Settings = parMS1,
                ms2Settings = parMS2,
                replications = 1,
                groupBy = "ETDReagentTarget",
                mz = cbind(mass=893.1, z=1),
                massLabeling = TRUE,
                nMs2perMs1 = 1000,
                duration = 0.5,
                randomise = FALSE,
                pattern = "method893_%s.xml")

## Create the XML files for mz == 1211
writeMethodXmls(ms1Settings = parMS1,
                ms2Settings = parMS2,
                replications = 1,
                groupBy = "ETDReagentTarget",
                mz = cbind(mass=1211.7, z=1),
                massLabeling = TRUE,
                nMs2perMs1 = 1000,
                duration = 0.5,
                randomise = FALSE,
                pattern = "method1211_%s.xml")

## Run XMLMethodChanger
runXmlMethodChanger(
    modificationXml=list.files(pattern="^method.*\\.xml$"),
    templateMeth="TMS2IndependentTemplateForTD.meth",
    executable="path\\to\\XmlMethodChanger.exe"
)

5 Data Acquisition

After setting up direct infusion make sure that MS1 spectrum produces expected protein mass after deconvolution by Xtract. Shown below is a deconvoluted MS1 spectrum for myoglobin. The dominant mass corresponds to myoglobin with Met removed.

Xtract myoglobin

Xtract myoglobin

6 Data Preparation

Prior to R analysis of protein fragmentation data we have to convert the .raw files.

6.1 Extracting Header Information

Some of the information (SpectrumId, Ion Injection Time (ms), Orbitrap Resolution, targeted Mz, ETD reaction time, CID activation and HCD activation) is stored in scan headers, while other (ETD reagent target and AGC target) is only available in method table.

You can run ScanHeadsman from the commandline (ScanHeadsman.exe --noMS --methods:CSV) or use the function provided by topdownr:

runScanHeadsman(
    path="path\\to\\raw-files",
    executable="path\\to\\ScanHeadsman.exe"
)

ScanHeadsman will generate a .txt (scan header table) and a .csv (method table) file for each .raw file.

6.2 Convert .raw files into mzML

The spectra have to be charge state deconvoluted with Xtract node in Proteome Discoverer 2.1. The software returns deconvoluted spectra in mzML format.

Proteome Discoverer

Proteome Discoverer

Once a .csv, .txt, and .mzML file for each .raw have been produced we can start the analysis using topdownr. Please see analysis vignette (vignette("analysis", package="topdownr")) for an example.

7 Session Info

sessionInfo()
## R version 3.5.2 (2018-12-20)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 16.04.5 LTS
## 
## Matrix products: default
## BLAS: /home/biocbuild/bbs-3.8-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.8-bioc/R/lib/libRlapack.so
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats4    parallel  stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] ggplot2_3.1.0       ranger_0.10.1       topdownrdata_1.4.0 
##  [4] topdownr_1.4.1      Biostrings_2.50.2   XVector_0.22.0     
##  [7] IRanges_2.16.0      S4Vectors_0.20.1    ProtGenerics_1.14.0
## [10] BiocGenerics_0.28.0 BiocStyle_2.10.0   
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.0            lattice_0.20-38       assertthat_0.2.0     
##  [4] digest_0.6.18         foreach_1.4.4         R6_2.3.0             
##  [7] plyr_1.8.4            mzID_1.20.1           evaluate_0.12        
## [10] highr_0.7             pillar_1.3.1          zlibbioc_1.28.0      
## [13] rlang_0.3.0.1         lazyeval_0.2.1        Matrix_1.2-15        
## [16] preprocessCore_1.44.0 rmarkdown_1.11        mzR_2.16.1           
## [19] labeling_0.3          BiocParallel_1.16.5   stringr_1.3.1        
## [22] munsell_0.5.0         compiler_3.5.2        xfun_0.4             
## [25] pkgconfig_2.0.2       pcaMethods_1.74.0     htmltools_0.3.6      
## [28] tidyselect_0.2.5      tibble_2.0.0          bookdown_0.9         
## [31] codetools_0.2-16      XML_3.98-1.16         crayon_1.3.4         
## [34] dplyr_0.7.8           withr_2.1.2           MASS_7.3-51.1        
## [37] grid_3.5.2            gtable_0.2.0          affy_1.60.0          
## [40] magrittr_1.5          scales_1.0.0          ncdf4_1.16           
## [43] stringi_1.2.4         impute_1.56.0         reshape2_1.4.3       
## [46] affyio_1.52.0         doParallel_1.0.14     bindrcpp_0.2.2       
## [49] limma_3.38.3          iterators_1.0.10      tools_3.5.2          
## [52] Biobase_2.42.0        MSnbase_2.8.3         glue_1.3.0           
## [55] purrr_0.2.5           yaml_2.2.0            colorspace_1.3-2     
## [58] BiocManager_1.30.4    vsn_3.50.0            MALDIquant_1.18      
## [61] knitr_1.21            bindr_0.1.1

8 References