https://github.com/rusteomics/mzcore
A Rust library for parsing ProForma peptides and matching them against MS spectra, formally known as rustyms
https://github.com/rusteomics/mzcore
chemistry mass-spectrometry proforma proteomics rust
Last synced: 6 months ago
JSON representation
A Rust library for parsing ProForma peptides and matching them against MS spectra, formally known as rustyms
- Host: GitHub
- URL: https://github.com/rusteomics/mzcore
- Owner: rusteomics
- License: apache-2.0
- Created: 2023-02-21T21:58:24.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-10T11:13:47.000Z (8 months ago)
- Last Synced: 2025-02-13T09:11:14.163Z (8 months ago)
- Topics: chemistry, mass-spectrometry, proforma, proteomics, rust
- Language: Rust
- Homepage:
- Size: 130 MB
- Stars: 23
- Watchers: 1
- Forks: 7
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
Awesome Lists containing this project
README
🦀 Rust: [](https://crates.io/crates/rustyms) [](https://docs.rs/rustyms)
🐍 Python: [](https://badge.fury.io/py/rustyms) [](https://rustyms.readthedocs.io/)# Match those fragments!
A peptide fragmentation matching library for Rust. Built to handle very complex peptidoforms in a sensible way.
## Features
- Read [ProForma](https://github.com/HUPO-PSI/ProForma) sequences (complete 2.0 specification supported: 'level 2-ProForma + top-down compliant + cross-linking compliant + glycans compliant + mass spectrum compliant')
- Generate theoretical fragments with control over the fragmentation model from any ProForma peptidoform
- Generate theoretical fragments for chimeric spectra
- Generate theoretical fragments for cross-links (also disulfides)
- Generate theoretical fragments for modifications of unknown position
- Generate peptide backbone (a, b, c, x, y, and z) and satellite ion fragments (d, v, and w)
- Generate glycan fragments (B, Y, and internal fragments)
- Integrated with [mzdata](https://crates.io/crates/mzdata) for reading raw data files
- Match spectra to the generated fragments
- [Align peptides based on mass](https://pubs.acs.org/doi/10.1021/acs.jproteome.4c00188)
- Fast access to the IMGT database of antibody germlines
- Reading of multiple identified peptide file formats (among others: Fasta, MaxQuant, MSFragger, Novor, OPair, Peaks, and Sage)
- Exhaustively fuzz tested for reliability (using [cargo-afl](https://crates.io/crates/cargo-afl))
- Extensive use of [uom](https://docs.rs/uom/latest/uom/) for compile time unit checking
- Python bindings are provided to several core components of the rustyms library. Go to the [Python documentation](https://rustyms.readthedocs.io/) for more information.# Folder organisation
## rustyms
This is the main library. This contains all source code, databases (Unimod etc) and example data to run the rustyms library.
## examples
Some examples on how to use the rustyms library are provided here, see the readme file in the examples themselves for more details.
## fuzz
The harness to fuzz test the library for increased stability, see the readme for more details.
## rustyms-py
This Rust library provides python bindings (using pyO3) for rustyms.
## rustyms-generate-databases
Using the `rustyms-generate-databases` the definitions for the databases can be updated. See the readme on the download locations for all databases. Then run `cargo run -p rustyms-generate-databases` (from the root folder of this repository).
## rustyms-generate-imgt
Using the `rustyms-generate-imgt` the definitions for the germlines can be updated. Put the imgt.dat.Z file in the `rustyms-generate-imgt/data` directory and unpack it (this can be downloaded from https://www.imgt.org/download/LIGM-DB/imgt.dat.Z). Then run `cargo run -p rustyms-generate-imgt` (from the root folder of this repository).
# Contributing
Any contribution is welcome (especially adding/fixing documentation as that is very hard to do as main developer).