Made with F# GitHub contributors

The ProteomIQon

ProteomIQon is a set of command line tools for the analysis of mass spectrometry based proteomics data, written in F#. Each tool does one step and writes plain files that the next tool reads, so a pipeline is a sequence of tool calls that can be rerun from any point. Most tools append to an output file that already exists, so delete the old file before rerunning a step into the same directory. The chain covers signal detection, peptide identification, quantification, retention time alignment between runs and protein inference.

The proteomics theory behind the steps is documented in BioFSharp.Mz, the library most tools build on. The tool pages here link to it where a concept needs more than a sentence.

Installing a tool

Every tool is a .NET tool on nuget.org, package ProteomIQon.<ToolName>, command proteomiqon-<toolname>. The one exception is QuantBasedAlignment, which ships as ProteomIQon.QuantBasedAlignment_win_x64 and ProteomIQon.QuantBasedAlignment_linux_x64. The package ProteomIQon.QuantBasedAlignment is the library both wrap and installs no command.

dotnet tool install --global ProteomIQon.PeptideDB
proteomiqon-peptidedb --help

Tools that take parameters read them from a JSON file. Each tool page shows the parameters with a script that writes the file, and the command line calls.

How the tools chain

A run of a data dependent acquisition experiment goes through these steps. Each tool writes the files in its last column, and the next tool reads them.

Step

Tool

Reads

Writes

Convert raw data

MzMLToMzLite

.mzML (from msconvert)

.mzlite

Build the search space

PeptideDB

FASTA

.db (SQLite)

Identify spectra

PeptideSpectrumMatching

.mzlite, .db

.psm

Control the FDR

PSMStatistics

.psm, .db

.qpsm

Quantify identified peptide ions

PSMBasedQuantification

.mzlite, .qpsm, .db

.quant

Infer proteins

ProteinInference

.qpsm, .db

.prot

Join peptides and proteins

JoinQuantPepIonsWithProteins

.quant, .prot

.quantAndProt

Aggregate to proteins

LabelFreeProteinQuantification or LabeledProteinQuantification

.quantAndProt

LabelFreeQuant.txt or LabeledQuant.txt

With several runs, the alignment tools transfer identifications between runs before the join. They sit between PSMBasedQuantification and JoinQuantPepIonsWithProteins:

Step

Tool

Reads

Writes

Map scan times between runs

QuantBasedAlignment

.quant of all runs

.align, .alignmetric

Quantify transferred peptide ions

AlignmentBasedQuantification

.mzlite, .align, .alignmetric, .quant, .db

.quant

Score the transfers

AlignmentBasedQuantStatistics

.quant, .align

.quant

Reassign protein groups

AddDeducedPeptides

.quant, .prot

.prot

Four more tools cover other inputs. For 15N labeled samples, RatioLFQ turns the light to heavy ratios in LabeledQuant.txt into one intensity per run and protein. For timsTOF data with ion mobility, MzMLToMzLiteIonMobility converts the mzML, MsFraggerToPSM imports an MSFragger search, and PSMBasedQuantificationTIMs quantifies in retention time and ion mobility.

The core project

The ProteomIQon core is referenced by all tools. It contains mainly serializable data transfer objects such as tool results and tool parameters, as well as their mapping to domain specific types. This is also the place for any kind of code reusable across tools such as thin wrappers around data readers, logging or CLI formatting.

Documentation

The documentation is generated with fsdocs from the .fsx files in the docs folder. If you find a typo, please submit a pull request. How to document your work explains the setup.

Contributing

Please refer to the CSB Contribution guidelines

Community/Social

Want to get in touch with us? We recently joined the twitter crowd:

Twitter Follow

Citation

When using ProteomIQon in scientific or commercial releases, please cite us using the DOI 10.5281/zenodo.6335068.

DOI