numpy>=2.0.0,<3.0.0
pandas>=2.1.4,<3.0.0
pyensembl>=2.6.4,<3.0.0
# Varcode 7 supplies splice outcome sets unconditionally and defaults to fast
# annotation. Vaxrank uses its keyword-free effect API and outcome selection.
varcode>=7.0.0,<8.0.0
# 1.8.0 derives RNA context from peptide size and balances useful mutation
# windows against compatible read-name support and an independent coverage floor.
isovar>=1.8.0,<2.0.0
# 3.33.5 makes bundled YAML loading independent of the host locale.
mhcgnomes>=3.33.5,<4.0.0
mhctools>=3.13.3,<4.0.0
# 5.10.0 adds EvalContext(default_methods=...) and apply_filter(default_methods=...)
# which vaxrank uses to score multi-model inputs (e.g. LENS with mhcflurry +
# netmhcpan) without pre-subsetting the frame.
# 5.52.0 preserves pVACtools presentation metrics as native prediction rows,
# completing Vaxrank's presentation-aware coverage path.
topiary>=5.52.0,<6.0.0
roman
jinja2>=3.1
weasyprint>=62.0
pdfkit  # legacy: needs wkhtmltopdf, use --pdf-backend=pdfkit to enable
openpyxl
xvfbwrapper  # legacy: only needed with --pdf-backend=pdfkit on headless Linux
astropy>=6.1
platformdirs
msgspec>=0.18.6,<1.0.0
dnachisel>=3.2.0,<4.0.0
serializable>=1.1.0,<2.0.0
# oncoref is the direct authority for HPA-backed CTA identity and the full
# candidate CTA universe. Keep this reference pin aligned with PirlyGenes.
oncoref==1.8.194
# vaxrank.peptide_context imports packaging.version for PEP 440 ordering
# of predictor_version strings. Always pulled in transitively via setuptools
# / pip, but pinned explicitly so minimal / --no-deps installs don't break
# at import time.
packaging>=21.0
