Skip to main content

Tests Coverage Status PyPI Docs

mhcgnomes: Parsing MHC nomenclature in the wild

MHCgnomes is a parsing library for multi-species MHC nomenclature which aims to correctly parse every name in IEDB, IMGT/HLA, IPD/MHC, and the allele lists for both NetMHCpan and NetMHCIIpan predictors. This allows for standardization between immune databases and tools, which often use different naming conventions.

It is the allele-naming layer of the openvax stack: mhctools, mhcflurry and mhcseqs all normalize allele names through it rather than parsing strings themselves.

Install

pip install mhcgnomes

Requires Python 3.11 or later. There are no MHC data downloads: the curated species and gene ontology ships with the package.

Quick start

>>> import mhcgnomes
>>> [mhcgnomes.parse(s).to_string() for s in ["A*02:01", "HLA-A0201", "hla-a:02:01"]]
['HLA-A*02:01', 'HLA-A*02:01', 'HLA-A*02:01']
>>> mhcgnomes.parse("DQ2.5").to_string()
'HLA-DQA1*05:01/DQB1*02:01'
>>> type(mhcgnomes.parse("HLA-A2")).__name__
'Serotype'
>>> mhcgnomes.parse("H2-Kk").to_string()
'H2-K*k'

parse returns a structured object, not a string: an Allele, Gene, Pair, Serotype, Haplotype, MhcClass or Species, depending on how much the input actually specified. to_string() gives the normalized spelling and compact_string() the short one:

>>> mhcgnomes.parse("HLA-A0201")
Allele(gene=Gene(species=Species(name='Homo sapiens', mhc_prefix='HLA'), name='A', mutations=()), allele_fields=('02', '01'), annotations=(), mutations=())
>>> mhcgnomes.parse("HLA-A0201").compact_string()
'A0201'

Pass raise_on_error=False to get None instead of a ParseError, and required_result_types= to say which of those types you will accept. Both matter when the input is not a curated allele list; see parsing untrusted input.

Command line

mhcgnomes "HLA-A*02:01" "DQ2.5"

This prints one row per input with the parsed result type, the normalized and compact forms, species, gene, MHC class, and the parsed properties from to_record(). --format tsv and --format json give machine-readable output, --strict exits non-zero on the first parse error, and mhcgnomes data manages the pinned external IMGT/IPD files. The command-line guide shows the full output of each.

Documentation

Full documentation: pirl-unc.github.io/mhcgnomes.

Development

./develop.sh   # create .venv and install the package with dev and docs extras
./format.sh    # ruff format
./lint.sh      # ruff check and ruff format --check
./test.sh      # pytest with coverage, worker count capped by free RAM and CPUs

Every pull request bumps mhcgnomes/version.py; see the release process (source) for how a merged version reaches PyPI.

Raw IPD-IMGT/HLA and IPD-MHC snapshots are not committed or bundled in releases. See External IMGT/IPD data for checksum-pinned downloads, local/CI caches, optional mirrors, offline use, and alias regeneration.

To work on the documentation site:

./develop.sh
mkdocs serve
mkdocs build --strict

License

Apache License 2.0.

Metadata

Release files for mhcgnomes 3.69.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mhcgnomes 3.69.2
File Size Uploaded Provenance Actions
mhcgnomes-3.69.2.tar.gz 272.1 kB Without provenance Details for mhcgnomes-3.69.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mhcgnomes 3.69.2
File Interpreter ABI Platform Actions
mhcgnomes-3.69.2-py3-none-any.whl Python 3 none any Details for mhcgnomes-3.69.2-py3-none-any.whl

Total release size: 570.4 kB

Release files / mhcgnomes-3.69.2.tar.gz

Download URL mhcgnomes-3.69.2.tar.gz
Size 272.1 kB
Tags Source
SHA-256 checksum
How to use checksums
246043fba3b6f54011ca4f61512297aa73607a5ddbbfdb044bed3641bd3700ec
BLAKE2b-256 checksum
How to use checksums
0423cc0905c52b3eee665f2e07c826ca7e3837e17e232c32900a60b22a7d69a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Release files / mhcgnomes-3.69.2-py3-none-any.whl

Download URL mhcgnomes-3.69.2-py3-none-any.whl
Size 298.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a526d813dbf97dadd0d1f3d67ff55fa1753e5a90d881325e4c8001d187d5a2e
BLAKE2b-256 checksum
How to use checksums
ba0e8e79e5f0f2cdfa699b9bf57b9cf03cdad1af39bd1b0b3579db7e181fc4fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Security for mhcgnomes 3.69.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.69.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page