View on GitHub

MSFragger

Ultrafast and comprehensive peptide identification in mass spectrometry–based proteomics

Running a FragPipe-equivalent workflow on Linux

For most desktop users, we recommend using FragPipe. To analyze your data in a server/HPC environment, we recommend Philosopher pipeline. For quantitative analysis of Bruker ion mobility data on a server, use the ‘TIMS-TOF data’ script below (ID-only workflows for TIMS-TOF data can also be done with pipeline).

Example shell scripts for TIMS-TOF PASEF data (with IonQuant) and non-ion mobility data are shown below, modify them to suit your configuration.

TIMS-TOF data:

#!/bin/bash

set -xe

# Specify paths of tools and files to be analyzed.
dataDirPath="data/"
fastaPath="2020-01-22-decoys-reviewed-contam-UP000005640.fas"
msfraggerPath="MSFragger.jar" # download from https://msfragger.arsci.com/upgrader/
fraggerParamsPath="fragger.params"
philosopherPath="philosopher" # download from https://github.com/Nesvilab/philosopher/releases/latest
crystalcPath="CrystalC.jar" # download from https://github.com/Nesvilab/Crystal-C/releases/latest
crystalcParameterPath="crystalc.params"
ionquantPath="IonQuant.jar" # download from https://github.com/Nesvilab/IonQuant/releases/latest
decoyPrefix="rev_"

# Run MSFragger. Change the -Xmx value according to your computer's memory.
java -Xmx64G -jar $msfraggerPath $fraggerParamsPath $dataDirPath/<spectral files ending with .d>

# Move pepXML files to current directory.
mv $dataDirPath/*.pepXML ./

# Move MSFragger tsv files to current directory.
mv $dataDirPath/*.tsv ./ # Comment this line if localize_delta_mass = 0 in your fragger.params file.

# For open searches, run Crystal-C. Otherwise, don't run Crystal-C (comment this for-loop).
for myFile in ./*.pepXML
do
	java -Xmx64G -jar $crystalcPath $crystalcParameterPath $myFile
done

# Run PeptideProphet, ProteinProphet, and FDR filtering with Philosopher
$philosopherPath workspace --clean
$philosopherPath workspace --init
$philosopherPath database --annotate $fastaPath --prefix $decoyPrefix

# Pick one from the following three commands and comment the other two.
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --ppm --accmass --decoy $decoyPrefix --database $fastaPath ./*.pepXML # Closed search
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --masswidth 1000.0 --clevel -2 --decoy $decoyPrefix --combine --database $fastaPath ./*_c.pepXML # Open search if you ran Crystal-C
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --masswidth 1000.0 --clevel -2 --decoy $decoyPrefix --combine --database $fastaPath ./*.pepXML # Open search if you did NOT ran Crystal-C
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --ppm --accmass --nontt --decoy $decoyPrefix --database $fastaPath ./*.pepXML # Non-specific closed search

$philosopherPath proteinprophet --maxppmdiff 2000000 --output combined ./*.pep.xml

# Pick one from the following two commands and comment the other one.
$philosopherPath filter --sequential --razor --mapmods --tag $decoyPrefix --pepxml ./ --protxml ./combined.prot.xml # closed or non-specific closed search
$philosopherPath filter --sequential --razor --mapmods --tag $decoyPrefix --pepxml ./interact.pep.xml --protxml ./combined.prot.xml # Open search

# Generate reports.
$philosopherPath report
$philosopherPath workspace --clean

# Run IonQuant. Change the -Xmx value according to your computer's memory.
java -Xmx64G -jar $ionquantPath <options> <path to .d> <path to .pepXML>

Please note: The IonQuant.jar file must be in the same directory as the ext folder. To see the IonQuant help, run java -jar IonQuant.jar.


Non-ion mobility data:

#!/bin/bash

set -xe

# Specify paths of tools and files to be analyzed.
dataDirPath="data/"
fastaPath="2020-01-22-decoys-reviewed-contam-UP000005640.fas"
msfraggerPath="MSFragger.jar" # download from https://msfragger.arsci.com/upgrader/
fraggerParamsPath="fragger.params"
philosopherPath="philosopher" # download from https://github.com/Nesvilab/philosopher/releases/latest
crystalcPath="CrystalC.jar" # download from https://github.com/Nesvilab/Crystal-C/releases/latest
crystalcParameterPath="crystalc.params"
ionquantPath="IonQuant.jar" # download from https://github.com/Nesvilab/IonQuant/releases/latest
decoyPrefix="rev_"

# Run MSFragger. Change the -Xmx value according to your computer's memory.
java -Xmx64G -jar $msfraggerPath $fraggerParamsPath $dataDirPath/<spectral files ending with .mzML (required for quantification) or .raw>

# Move pepXML files to current directory.
mv $dataDirPath/*.pepXML ./

# Move MSFragger tsv files to current directory.
mv $dataDirPath/*.tsv ./ # Comment this line if localize_delta_mass = 0 in your fragger.params file.

# For open searches, run Crystal-C. Otherwise, don't run Crystal-C (comment this for-loop).
for myFile in ./*.pepXML
do
	java -Xmx64G -cp $crystalcPath Main $crystalcParameterPath $myFile
done

# Run PeptideProphet, ProteinProphet, and FDR filtering with Philosopher
$philosopherPath workspace --clean
$philosopherPath workspace --init
$philosopherPath database --annotate $fastaPath --prefix $decoyPrefix

# Pick one from the following three commands and comment the other two.
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --ppm --accmass --decoy $decoyPrefix --database $fastaPath ./*.pepXML # Closed search
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --masswidth 1000.0 --clevel -2 --decoy $decoyPrefix --combine --database $fastaPath ./*_c.pepXML # Open search if you ran Crystal-C
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --masswidth 1000.0 --clevel -2 --decoy $decoyPrefix --combine --database $fastaPath ./*.pepXML # Open search if you did NOT ran Crystal-C
$philosopherPath peptideprophet --nonparam --expectscore --decoyprobs --ppm --accmass --nontt --decoy $decoyPrefix --database $fastaPath ./*.pepXML # Non-specific closed search

$philosopherPath proteinprophet --maxppmdiff 2000000 --output combined ./*.pep.xml

# Pick one from the following two commands and comment the other one.
$philosopherPath filter --sequential --razor --mapmods --tag $decoyPrefix --pepxml ./ --protxml ./combined.prot.xml # closed or non-specific closed search
$philosopherPath filter --sequential --razor --mapmods --tag $decoyPrefix --pepxml ./interact.pep.xml --protxml ./combined.prot.xml # Open search

# Perform quantification.
$philosopherPath freequant --dir $dataDirPath

# Make reports.
$philosopherPath report
$philosopherPath workspace --clean