A Python package for statistical modelling of lymphatic metastatic spread in head & neck squamous cell carcinoma (HNSCC).
Motivation
HNSCC spreads though the lymphatic system of the neck and forms metastases in regional lymph nodes. Macroscopic metastases can be detected with imaging modalities like MRI, PET and CT scans. They are then consequently included in the target volume, when radiotherapy is chosen as part of the treatment. However, microscopic metastases are too small be diagnosed with current imaging techniques.
To account for this microscopic involvement, parts of the lymphatic system are often irradiated electively to increase tumor control. Which parts are included in this elective clinical target volume is currently decided based on guidelines [1] [2] [3] [4]. These in turn are derived from reports of the prevalence of involvement per lymph node level (LNL), i.e. the portion of patients that were diagnosed with metastases in any given LNL, stratified by primary tumor location. It is recommended to include a LNL in the elective target volume if 10 - 15% of patients showed involvement in that particular level.
However, while the prevalence of involvement has been reported in the literature [5] [6], and the general lymph drainage pathways are understood well, the detailed progression patterns of HNSCC remain poorly quantified. We believe that the risk for microscopic involvement in an LNL depends highly on the specific diagnosis of a particular patient and their treatment can hence be personalized if the progression patterns were better quantified.
Our Goal
With this Python package we want to provide a framework to accurately predict the risk for microscopic metastases in any lymph node level for the specific diagnosis a particular patient presents with.
The implemented model is highly interpretable and was developed together with clinicians to accurately represent the anatomy of the lymphatic drainage. It can be trained with data that reports the patterns of lymphatic progression in detail, like the dataset(s) we collected at our institution, the University Hospital Zurich (USZ).
The mathematical details of the models can be found in in our earlier publications [7] [8].
Get started
To learn how to use this package, head over to our documentation where we explain the API of the package and also provide a quickstart guide.
The implementation is pure-python and has only a few dependencies. However, it is intended to be used with powerful inference algorithms, e.g. the great sampling package emcee, which we used for our results.
Attribution
If you use this code in you work you may either attribute use by citing our paper [8] or by using the CITATION.cff file in this repository, which specifically cites the software.
See also
The dataset(s)
A large and detailed dataset containing the patterns of lymphatic progression of patients treated at the USZ are available in this repo on GitHub. We have also published a paper on the dataset and our interface (described below) in Radiotherapy & Oncology [9]. A preprint is available on medRxiv [10].
This data may be used to train the model.
LyProX interface
The above mentioned data can also be explored interactively using our online interface LyProX (GitHub repo).
References
Metadata
Release files for lymph-model 1.3.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lymph_model-1.3.8.tar.gz | 317.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lymph_model-1.3.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 383.9 kB
Release files / lymph_model-1.3.8.tar.gz
| Download URL | lymph_model-1.3.8.tar.gz |
|---|---|
| Size | 317.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e891c78ee06b6e607d2d13504fe225a38caf71d9523cc7740790ea58c9f98626
|
|
BLAKE2b-256 checksum How to use checksums |
afe93e6251ed2035653aa568193bd0d4e1eb88d6b19abf526865278b4dc5c2a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 17, 2026.
Transparency logRelease files / lymph_model-1.3.8-py3-none-any.whl
| Download URL | lymph_model-1.3.8-py3-none-any.whl |
|---|---|
| Size | 66.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e828239c4c8a50a2e222bc02f63c0299d6b074cab0e3506a5e3e54e0f82062dd
|
|
BLAKE2b-256 checksum How to use checksums |
9a976ae9db5080a9945f7dcf73f1252d06b4e4cdc6ba06ad62d0cbc5600f5ceb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 17, 2026.
Transparency log