Skip to main content

Quantitative proteomics data toolkit — convert, transform, query, and validate QPX Parquet datasets

Project description

QPX

Python application Upload Python Package Codacy Badge Codacy Badge PyPI version

A Python package for working with mass spectrometry data in the QPX format.

QPX Architecture

Features

  • Convert data from DIA-NN, MaxQuant, Spectronaut, FragPipe, QuantMS (mzTab), mzIdentML, and SDRF to QPX Parquet format
  • Transform QPX data: gene mapping, protein quantification (DirectLFQ, MaxLFQ, iBAQ, TopN, …), accession normalization, metadata updates
  • Query datasets with SQL, filter rows, or preview with head
  • Inspect dataset summaries, Arrow schemas, and Parquet metadata
  • Validate datasets against the canonical QPX schema
  • Ontology management for PSI-MS and PRIDE CV terms

MuData Export (quantification results only)

QPX datasets can be exported to MuData — the multi-modal container from the scverse ecosystem. This export is available only for quantification results (precursor/protein intensities and, optionally, protein expression and differential expression results).

QPX MuData Structure

ds = Dataset("path/to/PXD000000/")
mdata = ds.to_mudata()              # auto-detects label & available modalities
mdata.write("PXD000000.h5mu")       # serialize to HDF5

Requires the optional mudata dependency: pip install "qpx[mudata]"

Performance

QPX Benchmark

Installation

Install from PyPI

pip install qpx

# With optional extras
pip install "qpx[quantify]"    # protein quantification (mokume + DirectLFQ)
pip install "qpx[all]"         # all optional dependencies

Install from GitHub (latest dev)

pip install git+https://github.com/bigbio/qpx.git

Install from Source

# Clone the repository
git clone https://github.com/bigbio/qpx.git
cd qpx

# Install the package locally
pip install .

Install and build with uv

uv is a fast Python package installer and resolver. The project supports PEP 621 and can be installed, built, and published with uv.

Prerequisites: Install uv (e.g. curl -LsSf https://astral.sh/uv/install.sh | sh or pip install uv).

# Install from GitHub
uv pip install "qpx @ git+https://github.com/bigbio/qpx.git"

# With optional extras (transforms, plotting)
uv pip install "qpx[transforms,plotting] @ git+https://github.com/bigbio/qpx.git"

From a local clone:

git clone https://github.com/bigbio/qpx.git
cd qpx

# Create a venv, install the project and its dependencies (recommended)
uv sync

# Or install in editable mode with optional dev dependencies
uv sync --extra dev

# Run the CLI without installing globally
uv run qpxc --help

Build distributable packages (sdist and wheel in dist/):

uv build

Publish to PyPI (after configuring credentials or trusted publishing):

uv build
uv publish

The pyproject.toml uses PEP 621 metadata with Hatchling as the build backend.

Development Installation

For development with all dependencies:

# Using uv (recommended for fast installs)
uv sync --extra dev

# Or using pip
pip install -e ".[dev]"

System Dependencies

QPX depends on pyOpenMS, which requires certain system libraries. If you encounter errors related to missing shared libraries (e.g., libglib-2.0.so.0), install the required system dependencies:

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install -y libglib2.0-0

macOS:

brew install glib

Using Conda/Mamba (Recommended for pyOpenMS):

Using mamba (faster dependency resolution):

mamba env create -f environment.yml
conda activate qpx
pip install git+https://github.com/bigbio/qpx.git

Or with conda:

conda env create -f environment.yml
conda activate qpx
pip install git+https://github.com/bigbio/qpx.git

Usage

The package provides a command-line interface (qpxc) with the following command groups:

qpxc [OPTIONS] COMMAND [ARGS]...

Commands:
  convert    Convert external tool outputs to QPX format.
  transform  Transform QPX data into derived representations.
  query      Query and inspect QPX datasets.
  info       Show information about a QPX dataset.
  validate   Validate a QPX dataset or structure against the canonical schema.
  ontology   Manage CV ontology data (PSI-MS, PRIDE CV).

Convert

qpxc convert [diann | maxquant | spectronaut | quantms | fragpipe | mzidentml | sdrf] [OPTIONS]

Transform

qpxc transform [gene-map | quantify | normalize-accessions | update-metadata] [OPTIONS]

Query

# Run SQL against a dataset
qpxc query sql --dataset-path ./PXD014414 --sql "SELECT anchor_protein, COUNT(*) FROM feature GROUP BY 1"

# Filter rows
qpxc query filter --dataset-path ./PXD014414 --structure feature --condition "charge >= 3"

# Preview first N rows
qpxc query head --dataset-path ./PXD014414 --structure feature -n 20

Info & Validate

# Dataset summary
qpxc info --dataset-path ./PXD014414

# Validate against canonical schema
qpxc validate --dataset-path ./PXD014414

Configuration

Most commands support a --verbose flag that enables more detailed logging to stdout. The CLI uses standard logging configuration and does not require environment variables.

Development

Project Structure

qpx/
├── cli/                    # Click CLI (entry point: qpx.cli.main:main)
│   ├── main.py             # Top-level CLI group
│   └── convert.py          # convert subcommands (maxquant, diann, spectronaut, quantms, fragpipe, mzidentml, sdrf)
├── converters/             # Tool-specific converters
│   ├── quantms/            # QuantMS (mzTab) converter
│   ├── diann/              # DIA-NN converter
│   ├── maxquant/           # MaxQuant converter
│   ├── spectronaut/        # Spectronaut converter
│   ├── fragpipe/           # FragPipe converter
│   ├── mzidentml/          # mzIdentML converter
│   └── sdrf.py             # Shared SDRF converter
├── core/                   # Core logic & formats
│   ├── data/               # Schema definitions (YAML + Python)
│   │   └── schemas/        # YAML schema files for all structures
│   ├── engine.py           # DuckDB engine wrapper
│   ├── scores.py           # Score normalization & ontology
│   └── ontology/           # OBO ontology registry
├── writers/                # Parquet writers (one per structure)
├── views/                  # Analytical views (protein, peptide, QC)
└── dataset.py              # Main Dataset class entry point

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests
  5. Submit a pull request

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

Core contributors and collaborators

The project is run by different groups:

  • Yasset Perez-Riverol (PRIDE Team, European Bioinformatics Institute - EMBL-EBI, U.K.)
  • Ping Zheng (Chongqing Key Laboratory of Big Data for Bio Intelligence, Chongqing University of Posts and Telecommunications, Chongqing, China)

IMPORTANT: If you contribute with the following specification, please make sure to add your name to the list of contributors.

Code of Conduct

As part of our efforts toward delivering open and inclusive science, we follow the Contributor Covenant Code of Conduct for Open Source Projects.

How to cite

Copyright notice

Copyright 2025 BigBio

Licensed under the Apache License, Version 2.0.
See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qpx-1.0.2.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qpx-1.0.2-py3-none-any.whl (529.6 kB view details)

Uploaded Python 3

File details

Details for the file qpx-1.0.2.tar.gz.

File metadata

  • Download URL: qpx-1.0.2.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qpx-1.0.2.tar.gz
Algorithm Hash digest
SHA256 80afef9d60e395126d3eac5e7bddfd2b04178a7540ddba40b9af7cf45dc5923e
MD5 28291596080b5efe162669eb44d1c11f
BLAKE2b-256 da58de6a4cc0a4c2b2084a744c3665b189cb0c5b377cb6c119fe1a543159ffc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for qpx-1.0.2.tar.gz:

Publisher: python-publish.yml on bigbio/qpx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qpx-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: qpx-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 529.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qpx-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5ac37feb781c255e9b36b09d83b4d1932cc6ed8f00a2e6baf7b127c4e92f006d
MD5 7d8c9c420685c04e8afc364a121d9859
BLAKE2b-256 49c079fce31e257e55f61eab189d3b4a636c3b13a4132d6560e8982e45bc3e6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for qpx-1.0.2-py3-none-any.whl:

Publisher: python-publish.yml on bigbio/qpx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page