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.
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.
|
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.
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 |
.mzML (from msconvert) |
.mzlite |
|
Build the search space |
FASTA |
.db (SQLite) |
|
Identify spectra |
.mzlite, .db |
.psm |
|
Control the FDR |
.psm, .db |
.qpsm |
|
Quantify identified peptide ions |
.mzlite, .qpsm, .db |
.quant |
|
Infer proteins |
.qpsm, .db |
.prot |
|
Join peptides and proteins |
.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 |
.quant of all runs |
.align, .alignmetric |
|
Quantify transferred peptide ions |
.mzlite, .align, .alignmetric, .quant, .db |
.quant |
|
Score the transfers |
.quant, .align |
.quant |
|
Reassign protein groups |
.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 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.
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.
Please refer to the CSB Contribution guidelines
Want to get in touch with us? We recently joined the twitter crowd:
When using ProteomIQon in scientific or commercial releases, please cite us using the DOI 10.5281/zenodo.6335068.