Skip to main content

Format-aware concordance reports for bioinformatics pipeline outputs.

Project description

PipeConcord

pipeconcord is a Python toolkit for comparing bioinformatics pipeline outputs with semantic, format-aware metrics. Instead of only checking whether files are byte-for-byte identical, it measures whether two runs agree in biologically or analytically meaningful ways.

Project website: https://qchiujunhao.github.io/pipeconcord/

Status: alpha. The core comparison model and initial comparators are usable, but APIs and metrics may change as more bioinformatics formats and workflows are validated.

Rename note: the first alpha release used the package name biocompare. Current and future releases use pipeconcord to avoid confusion with an unrelated life-science product directory.

This repository currently implements the Phase 1 vertical slice:

  • a shared ConcordanceReport model
  • comparator registry with plugin entry point support
  • file type detection for common bioinformatics and tabular formats
  • a differential expression result comparator
  • a count/expression matrix comparator
  • a normalized expression matrix comparator
  • a BED interval comparator
  • a FASTA/FASTQ sequence comparator
  • a lightweight VCF comparator with ALT splitting and minimal allele trimming
  • a samtools flagstat/samtools stats comparator
  • a generic CSV/TSV table comparator
  • JSON/text report writers
  • a command-line interface
  • automated tests with unittest

Quickstart

Install from PyPI:

python3 -m pip install pipeconcord

The package is published at https://pypi.org/project/pipeconcord/. PipeConcord requires Python 3.10 or newer.

To test unreleased changes from the default branch, install from GitHub:

python3 -m pip install git+https://github.com/qchiujunhao/pipeconcord.git

Create two small TSV files:

cat > old.tsv <<'EOF'
gene_id	value
A	1.0
B	2.0
EOF

cat > new.tsv <<'EOF'
gene_id	value
A	1.1
B	2.0
EOF

Compare them by gene_id:

pipeconcord compare old.tsv new.tsv --key gene_id

Write a report to disk:

pipeconcord compare old.tsv new.tsv \
  --key gene_id \
  --output report.json

Compare differential expression tables:

pipeconcord compare old_de.tsv new_de.tsv \
  --type deg \
  --alpha 0.05

Compare count matrices:

pipeconcord compare old_counts.tsv new_counts.tsv \
  --type counts

Compare normalized expression matrices:

pipeconcord compare old_tpm.tsv new_tpm.tsv \
  --type expression

Compare BED intervals:

pipeconcord compare old_peaks.bed new_peaks.bed \
  --type bed \
  --min-reciprocal-overlap 0.5

Compare FASTA sequences:

pipeconcord compare old_sequences.fa new_sequences.fa \
  --type fasta

Compare VCF calls:

pipeconcord compare old_calls.vcf new_calls.vcf \
  --type vcf

Optionally provide a reference FASTA for simple repeated-indel left alignment:

pipeconcord compare calls_a.vcf calls_b.vcf \
  --type vcf \
  --reference-fasta reference.fa

Compare alignment summary statistics:

pipeconcord compare old_flagstat.txt new_flagstat.txt \
  --type bam_stats

Run a batch comparison from a manifest:

pipeconcord batch manifest.tsv --format text

The manifest must contain file_a and file_b columns. Optional columns are label and type.

Use --min-concordance in CI to fail when any comparison falls below a chosen threshold:

pipeconcord batch manifest.tsv --min-concordance 0.95

Write an HTML report:

pipeconcord compare old_peaks.bed new_peaks.bed \
  --type bed \
  --format html \
  --output report.html

Batch reports also support --format html.

Development

Install the repository in editable mode with development tools:

python3 -m pip install -e ".[dev]"

Run the tests:

python3 -m unittest discover -s tests

Run lint and coverage:

python3 -m ruff check .
python3 -m coverage run -m unittest discover -s tests
python3 -m coverage report

Plugin Model

Comparators subclass pipeconcord.comparators.base.Comparator and return a pipeconcord.core.report.ConcordanceReport. Third-party packages can register comparators with the pipeconcord.comparators entry point group.

Documentation

Additional documentation is available on the project website and in docs/, including API notes, design rationale, and tutorials for regression testing, RNA-seq outputs, variant calls, and BED peak comparisons.

Citation and Paper Draft

Citation metadata is available in CITATION.cff. A draft JOSS-style paper is available under paper/.

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

pipeconcord-0.2.0.tar.gz (38.4 kB view details)

Uploaded Source

Built Distribution

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

pipeconcord-0.2.0-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file pipeconcord-0.2.0.tar.gz.

File metadata

  • Download URL: pipeconcord-0.2.0.tar.gz
  • Upload date:
  • Size: 38.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pipeconcord-0.2.0.tar.gz
Algorithm Hash digest
SHA256 07e39ff8c112da806c33a5e2a7b86a8fce91aa05645c69c00ad118819eca6193
MD5 00318efde1e12b75e4998b6c1d7b0e12
BLAKE2b-256 c3793baef4581cfdb0f27cb5ddbbe7272bda834e0b5611796f15cdb5e76a858f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pipeconcord-0.2.0.tar.gz:

Publisher: publish-pypi.yml on qchiujunhao/pipeconcord

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

File details

Details for the file pipeconcord-0.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pipeconcord-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c95d2727cf725d295269abad9b34d508eb56ed9b8962e63e7fc95eb78d67797
MD5 a4e6566df7f082dd62ef9ae9d31d787a
BLAKE2b-256 0e0c81bef41b5dc6b0996459f4b5820922a4991e22eedb358e372dbd4b675018

See more details on using hashes here.

Provenance

The following attestation bundles were made for pipeconcord-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yml on qchiujunhao/pipeconcord

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