Next Article in Journal
Normalized Laplacian Diffusion for Robust Cancer Pathway Extension and Critical Gene Identification from Limited Data
Previous Article in Journal
Digging SiC Semiconductor Efficiency for Trapping Main Group Metals in Cell Batteries: Application of Computational Chemistry by Mastering the Density Functional Theory Study
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

pyMKM: An Open-Source Python Package for Microdosimetric Kinetic Model Calculation in Research and Clinical Applications

by
Giuseppe Magro
1,*,
Vittoria Pavanello
1,2,
Yihan Jia
3,4,
Loïc Grevillot
4,
Lars Glimelius
5 and
Andrea Mairani
1,6
1
National Center for Oncological Hadrontherapy (CNAO Foundation), Via E. Borloni 1, 27100 Pavia, Italy
2
University School for Advanced Studies (IUSS), Piazza Della Vittoria 15, 27100 Pavia, Italy
3
Department of Radiation Oncology, Medical University of Vienna, Währinger Gürtel 18-20, 1090 Vienna, Austria
4
MedAustron Ion Therapy Center, Marie Curie-Strasse 5, 2700 Wiener Neustadt, Austria
5
RaySearch Laboratories AB, SE-104 30 Stockholm, Sweden
6
Heidelberg Ion-Beam Therapy Center (HIT), Im Neuenheimer Feld 450, 69120 Heidelberg, Germany
*
Author to whom correspondence should be addressed.
Computation 2025, 13(11), 264; https://doi.org/10.3390/computation13110264
Submission received: 2 October 2025 / Revised: 29 October 2025 / Accepted: 4 November 2025 / Published: 9 November 2025
(This article belongs to the Section Computational Biology)

Abstract

Among existing radiobiological models, the MKM and its extensions (SMK and OSMK) have demonstrated strong predictive capabilities but remain computationally demanding. To address this, we present pyMKM v0.1.0, an open-source Python package for the generation of microdosimetric tables and radiobiological quantities based on these models. The package includes modules for track structure integration, saturation and stochastic corrections, oxygen modulation, and survival fraction computation. Validation was conducted against multiple published datasets across various ion species, LET values, and cell lines under both normoxic and hypoxic conditions. Quantitative comparisons showed high agreement with reference data, with average log errors typically below 0.06 and symmetric mean absolute percentage errors under 2%. The software achieved full unit test coverage and successful execution across multiple Python versions through continuous integration workflows. These results confirm the numerical accuracy, structural robustness, and reproducibility of pyMKM. The package provides a transparent, modular, and extensible tool for microdosimetric modeling in support of radiobiological studies, Monte Carlo-based dose calculation, and biologically guided treatment planning.

1. Introduction

Cancer treatment has witnessed remarkable advancements over the years, with radiotherapy standing out as one of the most effective modalities. Among these, hadrontherapy has emerged as a cutting-edge approach, leveraging the unique physical and biological properties of ions to deliver high-dose with exceptional precision. Unlike conventional photon-based radiotherapy, hadrontherapy mitigates damage to healthy tissues while enhancing tumor targeting due to its increased LET, resulting in superior therapeutic outcomes.
The growing interest in hadrontherapy is driven by advancements in accelerator and beam delivery technologies, the development of efficient and comprehensive TPSs, and its increasing clinical adoption. These innovations have consistently demonstrated the efficacy of hadrontherapy, making it a promising alternative to conventional methods. However, realizing its full potential requires the precise assessment of beam quality and the reliable inclusion of the biological effectiveness of different radiation types—key factors that ensure optimal treatment outcomes.
Despite the availability of several models to predict biological effectiveness [1], the MKM [2,3] (hereinafter referring to its modified version [3], also denoted as mMKM) has demonstrated superior accuracy in predicting cell survival fractions in vitro, in vivo, and in patients [4]. Its stochastic extension, the SMK model [5,6], was developed to correct for deviations observed at high doses and high LET values. More recently, the OSMK model [7,8] has been proposed to further extend this framework to hypoxic environments, a critical factor in the treatment of radioresistant tumors.
The MKM formalism currently represents the reference radiobiological model implemented in the TPSs used for carbon ion therapy in Japan, where it has been clinically employed for more than two decades. The SMK and OSMK extensions have been subsequently introduced to improve predictive accuracy at high LET and under hypoxic conditions. In particular, the OSMK model has recently been adopted in advanced research and early clinical applications of multi-ion therapy at NIRS/QST [9,10], where it is used for dose-averaged LET-prescribed treatment optimization in head-and-neck cancers. These developments demonstrate that the MKM and its extensions are not limited to theoretical investigations, but form the core of the radiobiological modeling currently applied in both research and treatment planning contexts.
However, their practical application can be challenging due to the complexity and high computational demands of microdosimetric calculations. To address these challenges, we introduce pyMKM, an open-source Python package specifically designed to streamline the generation of microdosimetric tables required by these models. The package is conceived as a research-oriented but clinically consistent implementation, reproducing the same equations and parameter definitions used in the treatment planning frameworks and providing a transparent environment for numerical validation, model comparison, and methodological extension. By providing user-friendly scriptable functions for these calculations, pyMKM facilitates the use of MKM, SMK, and OSMK, making them accessible to researchers and clinicians alike.
The development of pyMKM is motivated by the increasing need for centralized and reliable microdosimetric research and clinical platforms, as well as MC codes, such as Geant4 [11], PHITS [12] and FLUKA [13], which have incorporated MKM-related functionalities [5,14,15,16]. The open-source nature of pyMKM promotes collaboration and iterative improvement, enhancing its utility for studies focusing on RBE of ions.
In this paper, we validate pyMKM against published data, including benchmarks from the NIRS/QST, where the models were originally developed as part of their computational framework, and other institutions, to demonstrate its reliability and accuracy. We also outline the key concepts and formulas underpinning MKM, SMK, and OSMK, emphasizing their practical applications within the package.

2. Materials and Methods

This section provides an overview of the MKM and its stochastic extension (SMK model), as well as the OSMK model, focusing on key concepts and formulas necessary for understanding the implementation of the classes within the pyMKM package. These concepts are directly connected to practical examples within pyMKM, including the calculation of survival curves, modeling of specific energy deposition, and the application of both stochastic and oxygen-related corrections for high-LET scenarios.
The structure of this section is twofold. In Section 2.1, Section 2.2, Section 2.3 and Section 2.4, we consolidate and unify the core formalism that has emerged over the past two decades, gathering in a single place all variables and equations needed for accurate computation. This harmonized presentation facilitates reproducibility and model validation. Detailed discussions of the mathematical formalism and physical-biological principles underpinning these models are provided in the referenced publications and review papers, such as [17]. In Section 2.5, we describe how these theoretical components are mapped onto a modular and test-driven software architecture.

2.1. MKM

The MKM predicts cell survival fractions by modeling the effects of radiation at a microscopic scale, where specific energy deposition in sub-nuclear domains determines the biological outcome. In the context of MKM, domains refer to sub-nuclear microscopic volumes where energy deposition occurs. The nucleus represents the larger cellular structure composed of multiple domains, and its specific energy aggregates the contributions from individual domains to predict the overall survival fraction of the cell. A domain is to be considered dead when a lethal lesion is formed at the site and a cell is to be considered dead when a domain in its nucleus has died [5].
The model assumes that the average number of lethal lesions in the domain follows a linear-quadratic dependence on the specific-energy ( z d ). The specific energy of the domain is the sum of the single-event specific energy ( z d , 1 ). Assuming a Poisson distribution of lethal lesions among the irradiated cells, the survival fraction of a cell ( S ) is equal to the probability that the number of lethal lesions is zero in the cell nucleus:
S = e x p L n ,
where L n is the average number of lethal lesions in a nucleus. When the Poisson distribution is assumed for the event number of the domain, L n is calculated as follows:
L n = l n S D = α M K M D + β M K M D 2 ,
α M K M α 0 + β 0 z ¯ d β M K M β 0 ,
where α 0 represents the initial slope of the surviving fraction curve at the limit of vanishing LET, D is the absorbed (macroscopic) dose and β 0 is a constant independent of the radiation type [2]. In the case of high LET irradiation, α 0 and β 0 can be approximated with the experimental α x and β x of the reference photon radiation [17]. In the original MKM formulation [2,18], α 0 and β 0 were directly approximated using experimental photon parameters (typically from 200 kVp X-rays under aerobic conditions). However, in the clinically adopted modified MKM (mMKM) [3], α 0 is treated as a free parameter and fitted—along with the domain radius r d and the cell nucleus radius R n —to reproduce survival data from HSG cells. Consequently, α 0 = 0.172   Gy 1 in mMKM, compared to α x = 0.313   Gy 1 , highlighting conceptual and numerical differences. Despite this, the use of experimental α x and β x values remains a valid approximation strategy when coupled with appropriate tuning of other model parameters [19], particularly r d , which is not directly measurable and conceptually represents the scale at which energy deposition leads to lethal damage. This flexibility allows researchers to preserve fixed reference radiation parameters while adapting the model to different biological settings.
The variable z ¯ d is the dose-mean specific energy of the domain:
z ¯ d = 0 z d , 1 2 f d , 1 z d , 1 d z d , 1 0 z d , 1 f d , 1 z d , 1 d z d , 1 ,
where f d , 1 z d , 1 is the probability density of z d , 1 deposited by a single energy-deposition event of the domain [18].
To address the saturation effects observed in high-LET radiation, modifications to the MKM introduced a saturation-corrected specific energy per event ( z d , 1 , s a t , also named z d , 1 ) to account for the overkill effect [2,3]:
z d , 1 , s a t = z 0 2 z d , 1 1 e x p z d , 1 2 z 0 2 ,
where z 0 is the saturation parameter indicating the specific energy above which the correction for the saturation due to the overkill effect becomes significant. The numerical value of z 0 is determined based on the assumption of a spherical geometry for the domain as follows:
z 0 = R n / r d 2 β 0 1 + R n / r d 2 ,
where R n and r d are the radii of the cell nucleus and the domain, respectively [3].
Then, z ¯ d in the linear term of dose in Equation (2b) was replaced by the saturation-corrected dose-mean specific energy of the domain ( z ¯ d * , also referred to as z 1 D * ) [3,5]:
l n S D = α M K M * D + β M K M D 2 ,
α M K M * α 0 + β 0 z ¯ d * β M K M β 0 ,
where
z ¯ d * = 0 z d , 1 , s a t z d , 1 f d , 1 z d , 1 d z d , 1 0 z d , 1 f d , 1 z d , 1 d z d , 1 .
Equation (6) corresponds to the base implementation of MKM in the pyMKM codebase. Since this modified version, including the saturation correction, is the most commonly adopted, it is not unusual to encounter the expression α M K M α 0 + β 0 z ¯ d * , directly, without explicitly referencing the transition from Equations (2b) to (6b).
It is worth mentioning that some authors, such as [7], define the saturation-corrected specific energy differently, using the following quantity:
z d , 1 = z 0 1 e x p z d , 1 2 z 0 2 ,
so that Equation (7) becomes
z ¯ d * = 0 z d , 1 2 f d , 1 z d , 1 d z d , 1 0 z d , 1 f d , 1 z d , 1 d z d , 1   .
From the perspective of the pyMKM package, adopting the definition in Equation (8) instead the one in Equation (4), offers practical advantages for implementation. Specifically, the use of z = z z s a t allows for a unified approach to calculating z ¯ and z ¯ * , as their mathematical structures become identical apart from the substitution of z with z . This unification simplifies the codebase by reducing redundancy and avoids the use of the more complex fraction in the definition of z s a t and the related computational burden of handling division by zero or very small values.

2.2. SMK

The SMK model was developed to address discrepancies between MKM predictions and measured survival fractions for high-LET and high-dose irradiations. While the MKM assumes a constant specific energy for the nucleus ( z n = D ), this approximation becomes invalid at high LET due to increasing variance in z n caused by fewer energy deposition events. Consequently, the quadratic coefficient tends to decrease at very high LET, unlike the constant value predicted by the MKM [20].
The SMK incorporates stochastic fluctuations in energy deposition at both the domain ( z d ) and nucleus ( z n ) levels [5]. Despite its accuracy [21], the SMK is computationally intensive, requiring significant memory and processing time to account for stochastic variations. To address these challenges, reasonable approximations, as outlined in [7,17], have been introduced to reduce computational demands while maintaining predictive accuracy. With this modified version of the SMK model, the natural logarithm of the survival fraction is calculated as
l n S D = α S M K D + β S M K D 2 l n 1 + γ S M K D ,
α S M K α M K M * = α 0 + β 0 z ¯ d * β S M K z ¯ d * z ¯ d β M K M = z ¯ d * z ¯ d β 0 γ S M K z ¯ n 1 2 α S M K + 2 β S M K D 2 β S M K ,
where z ¯ d and z ¯ d * are the dose-mean and the dose-mean saturation-corrected specific energies absorbed by the domain, and z ¯ n is the dose-mean specific energy absorbed by the cell nucleus:
z ¯ n = 0 z n , 1 2 f n , 1 z n , 1 d z n , 1   0 z n , 1 f n , 1 z n , 1 d z n , 1 ,
f n , 1 z n , 1 being the single-event probability density of z n , 1 .
As addressed by [5], the saturation parameter z 0 , introduced in the SMK model when computing z ¯ d * (Equations (8) and (9)), represents the decrease in the number of complex DNA damages per dose, whereas in the MKM, it describes the saturation of cell killing caused by the non-Poisson distribution of lethal lesions among cell nuclei. Consequently, the numerical value of z 0 in the SMK model does not necessarily coincide with the one derived from Equation (5) in the MKM. Instead, it is a free parameter of the model.

2.3. OSMK

To extend the SMK formalism to hypoxic conditions (normoxic conditions correspond to a [pO2] of 160 mmHg, equivalent to 21% oxygen under atmospheric pressure), the OSMK model has been formulated [7]. The model incorporates hypoxia-induced radioresistance by introducing a relative radioresistance factor R , which modulates the production of sublethal lesions as a function of the local oxygen partial pressure p O 2 :
R p O 2 = p O 2 + K p O 2 + K / R m a x ,
where R m a x is the maximum R in the limit of p O 2 = 0   mmHg and K is the oxygen partial pressure at which R = R m a x + 1 / 2 .
While lethal lesion formation is assumed to be unaffected by oxygen tension, the production rate of sublethal lesions is reduced by a factor R 1 , reflecting the higher efficiency of chemical repair mechanisms under low-oxygen conditions.
In this framework the linear term of the survival curve, in the limit of vanishing LET, is decomposed into two components, namely:
α 0 = α L + α S .
The term α L is associated with lethal lesions formed directly by ionizing radiation; the term α S is associated with sublethal lesions that may evolve into lethal outcomes via biological processes such as interaction or spontaneous conversion. Under hypoxic conditions, only the sublethal component is affected by oxygen tension, while the lethal component remains constant. Analogously, the quadratic coefficient β 0 , which scales with the square of the sublethal lesion yield, is reduced more strongly. These substitutions are applied in the SMK model, so that, in the OSMK model, the survival fraction of cells exposed to ionizing radiation under an oxygen partial pressure p O 2 becomes:
l n S D = α O S M K D + β O S M K D 2 l n 1 + γ O S M K D ,
α O S M K α L + α S / R p O 2 + z ¯ d * β 0 / R p O 2 2 β O S M K β S M K / R p O 2 2 = z ¯ d * / z ¯ d β 0 / R p O 2 2 γ O S M K z ¯ n 1 2 α O S M K + 2 β O S M K D 2 β O S M K ,
where α O S M K and β O S M K appear as α S M K and β S M K , with a prime (′) symbol used a superscript in the reference literature [7,8].

2.3.1. OSMK Version 2021

In the original formulation [7], R m a x is modeled as a function of z ¯ d , thereby incorporating LET-dependent modulation of the OER:
R m a x = z ¯ d z R γ R + R m z ¯ d z R γ R + 1 ,
where z R , γ R and R m (i.e., the value of R m a x for radiations with very low z ¯ d ) are free parameters that describe the physicochemical factors limiting the efficiency of chemical repair mechanisms.

2.3.2. Version 2023

To improve theoretical accuracy in cases of broad LET distributions—such as those found in therapeutic spread-out Bragg peaks—a refined “event-by-event” formulation has been proposed in 2023 [8]. In this version, the hypoxia correction is applied to each individual energy-deposition event rather than to an averaged value. While the same principle of oxygen-dependent reduction in sublethal lesion formation is maintained, key modifications include treating R m a x as a cell-specific constant and incorporating direct modulation of the domain radius r d and saturation parameter z 0 with decreasing oxygen pressure. This refinement reflects the hypothesis that hypoxia reduces the effective target volume and diminishes saturation effects even at high LET, leading to:
r d = r d / f r d z 0 = z 0 f z 0   ,
where f r d and f z 0 are two oxygen-dependent modulation factors, functions of the relative radioresistance R p O 2 :
f r d p O 2 = 1 + f r d m a x 1 R m a x 1 R p O 2 1   f z 0 p O 2 = 1 + f z 0 m a x 1 R m a x 1 R p O 2 1 2 ,
with f r d m a x and f z 0 m a x 2 representing the maximal hypoxia-induced corrections to domain size and saturation energy, respectively.

2.4. Track Structure Models

The calculation of the specific energy per event in the nucleus ( z n , 1 ) and the domain ( z d , 1 ) for MKM applications can be achieved through amorphous track structure models [18] for the single-event specific energy density d 1 = ϵ 1 / ρ ( ρ being the mass density of the traversed target region with mass m and volume V ), which provide a numerical approach to theoretically derive the microdosimetric quantities. In this framework, the track structure from an ionizing particle is characterized by radial distributions   d 1 r , which are integrated over the target volume (either the nucleus or domain). The local dose contributions are considered nonzero only within a finite range, extending up to the penumbra radius R p :
R p = γ E δ
depending on the ion’s initial kinetic energy E , via two empirical parameters γ (which varies based on the track structure model) and a fixed exponent δ = 1.7 . Consequently, the single-event specific energy z 1 is defined as the ratio of the imparted energy ϵ 1   to the mass m :
z 1 = ϵ 1 m = 1 V V d 1 r d r
Following the computational approach outlined by [3], the sensitive volumes are modeled as cylinders of water ( ρ = 10 12 g   μ m 1 ) with radius R and height 2 R ; the incident ions traverse the sensitive volume with uniform probability; the ion trajectory is assumed to travel parallel to the cylinder’s axis, i.e., d 1 r = d 1 r , with an impact parameter b , while any changes in its path or velocity during passage are considered negligible. The single-event specific energy is determined by weighting the deposited local dose according to the overlap between the ion track and the target region, so that Equation (19) becomes:
z 1 b = 1 π R 2 R m i n R m a x d 1 r d A r , R , b
where A r , R ,   b is the intersection area function quantifying this overlap and the integral is evaluated within limits that account for the possible cases of full, partial or no intersection between the ion track and the target region:
R m i n = m a x 0 , b R ,   R m a x = m i n b + R , R p
The intersection area function A defines the fraction of the local dose contributing to the region, based on the ion’s relative position, incorporating only the portion of the local dose profile that intersects with the target region:
A r , R ,   b = 0 , b r + R π m i n r , R 2 , b r R r 2 c o s 1 Δ + 2 r 2 2 b r + R 2 c o s 1 Δ + 2 R 2 2 b R 1 2 Σ Σ 2 r Σ 2 R Σ 2 b o / w ,
where Σ = r + R + b and Δ = b 2 r 2 R 2 .
In pyMKM, two amorphous track structure models were implemented [18]. For both models, it turns out that a fundamental constant can be defined as λ 0 = 1 / π ρ :
  • Kiefer–Chatterjee model [22], d 1 r = d K C r
    d K C r = λ 0 R c 2 L E T 2 π ρ K p l n R p / R c , r R c K p / r 2 , R c < r R p 0 r > R p ,
    R c = R 0 β r e l ,   K p = K 0 Z e f f / β r e l 2 ,
    where R 0 = 11.6 10 3   μ m is the initial core radius constant parameters, LET is the unrestricted LET in water, K 0 = 1.25 10 4   Gy   μ m 2 , Z e f f = Z 1 e x p 125 β r e l Z 2 3 is the effective charge given by the Barkas expression and β r e l = 1 1 1 + E / m 0 2 1 / 2 is the particle’s velocity relative to the speed of light, with m 0 = 931.5   MeV / u being the atomic rest mass unit. For d K C , R p in Equation (18) is calculated with γ = 6.16 10 2   μ m   M e V / u δ .
  • Scholz–Kraft model [23], d 1 r = d S K r
    d S K r = λ L E T / R c 2 , r R c λ L E T / r 2 , R c < r R p 0 r > R p ,
    λ = λ 0 1 + 2 l n R p / R c .
  • In pyMKM, different historical parametrizations of this model are supported: R c = 1.0 10 2   μ m (Scholz–Kraft, [23]), R c = 3.0 10 4   μ m (Elsässer–Sholz, [24]) and R c = 6.5 10 2   μ m (Friedrich, [25]), with the corresponding coefficient γ in Equation (18) set to γ = 5.0 10 2   μ m   M e V / u δ (Scholz–Kraft, [23]) or γ = 6.2 10 2   μ m   M e V / u δ (Elsässer-Sholz [24], or Friedrich [25]).
Both the Scholz–Kraft and Kiefer–Chatterjee track-structure formulations are implemented in pyMKM for completeness and reproducibility of historical datasets. However, following the refinements introduced by [3] and subsequent works, the Kiefer–Chatterjee model represents the default and recommended option within the MKM formalism.
Independently of the chosen track structure, pyMKM applies a lower bound on the penumbra radius by enforcing R p R c . This condition prevents the penumbra from becoming smaller than the high-dose core and ensures numerical stability of the radial dose integration. In practice, the cutoff becomes effective only at very low kinetic energies, typically below ~0.1 MeV/u, while in the clinically relevant range the calculated values of R p remain unaffected.

2.5. Calculation of Dose-Averaged Quantities

Dose-mean saturation-corrected and uncorrected quantities are computed by weighting the corresponding specific energy per event according to its probability of occurrence, f 1 , as described in Equations (3), (9) and (11), which share the same functional form.
When considering a monoenergetic ion beam, the specific energy per event follows the deterministic relationship z 1 = z 1 b , dictated by the track structure model (Equation (19)). In this case, the dose-averaged integrals can be rewritten in terms of the impact parameter b :
z ¯ = 0 z 1 2 f 1 b d b   0 z 1 f 1 b d b
The justification for this transformation lies in the uniform transverse distribution of fluence assumed. In a parallel ion beam, ion trajectories are uniformly distributed in the transverse plane, meaning that the probability of an ion having an impact parameter in the range b ,   b + d b is proportional to the area of the annular region at radius b , i.e., f 1 b d b 2 π b d b . As a result, the integral for z ¯ can be rewritten in terms of b [3], incorporating the weighting factor b that naturally arises from the cylindrical geometry of the ion fluence distribution:
z ¯ = 0 b m a x z 1 2 b b d b   0 b m a x z 1 b b d b ,
where
b m a x = R p + R .
Here, b m a x represents the maximum impact for which a non-negligible energy deposition occurs in the target region. It is given by the sum of the penumbra radius of the track R p and the radius of the sensitive volume R .

2.6. Software Implementation

The pyMKM package is implemented in Python using a modular architecture (Figure 1), systematically mirroring the theoretical structure of MKM, SMK, and OSMK models presented in Section 2.1, Section 2.2, Section 2.3 and Section 2.4. Its design separates concerns between radiobiological modeling, particle transport and geometry, microdosimetric computation, and I/O data. The following describes the internal structure and the main classes available in each module. The version of the package used for all results and validations reported in this study corresponds to pyMKM v0.1.0, publicly available in the official GitHub repository https://github.com/BeppeMagro/pymkm (accessed on 2 October 2025) and distributed through TestPyPI at https://test.pypi.org/project/pymkm/ (accessed on 2 October 2025).

2.6.1. Microdosimetric Table Generation (pymkm.mktable)

The generation of microdosimetric tables is managed through the MKTable class, located in pymkm.mktable.core. It encapsulates the model version, an MKTableParameters object, and a reference to the corresponding StoppingPowerTableSet. The MKTableParameters class stores all user-defined inputs, such as the radiobiological model, domain and nucleus radii, number of sampling points, and flags for stochastic and oxygen effect corrections. The compute submodule integrates track structure calculations with biologically relevant quantities such as dose-averaged specific energies and saturation-corrected values. It communicates with the particle_track and specific_energy modules from pymkm.physics, and supports parallelization through the parallel utility.

2.6.2. Survival Table Computation (pymkm.sftable)

Survival curve generation is handled by the SFTable class within pymkm.sftable.core, which uses inputs defined in a SFTableParameters instance. It requires a pre-computed MKTable object and computes the natural logarithm of the survival fraction over a configurable dose grid. The table structure supports multi-ion mixtures and stochastic corrections (SMK) by reusing modules from mktable.compute. The class hierarchy ensures that SFTableParameters maintains a reference to the corresponding MKTable, facilitating consistent parameter propagation. The results can be visualized using the plot module.

2.6.3. Track Structure and Energy Deposition (pymkm.physics)

Two fundamental components enable microdosimetric calculations:
  • ParticleTrack: Encapsulates the radial dose distribution model, LET, particle energy, and stopping power information. It provides access to initial local dose and penumbra radius calculations, serving as the primary physical abstraction for energy deposition events;
  • SpecificEnergy: Computes single-event and dose-averaged specific energy distributions, with or without saturation correction. It interfaces with ParticleTrack to perform event-based computations, supporting MKM, SMK, and OSMK formalisms.
These components also interact with the geometry_tools module for evaluating dose contributions as a function of the impact parameter and radial geometry (Equation (22)).

2.6.4. Oxygen Effect Modeling (pymkm.biology.oxygen_effect)

To enable modeling under hypoxic conditions, the oxygen_effect module provides implementations of the 2021 and 2023 versions of the OSMK model. It supports LET-dependent modulation of α and   β , as well as event-level correction of domain radius and saturation parameters in the latest formulation. These are automatically applied when relevant flags are activated in MKTableParameters or SFTableParameters.

2.6.5. Stopping Power and Data Management (pymkm.io and pymkm.data)

The StoppingPowerTable and StoppingPowerTableSet classes manage the import, interpolation, and organization of stopping power datasets. These are extracted from MSTAR (v3.12) https://nds.iaea.org/stopping-legacy/MstarWWW/MSTARInstr.html (accessed on 23 June 2025), FLUKA or Geant4 simulations and are accessible from multiple submodules across the package.
StoppingPowerTable supports I/O in *.json, *.txt, and internal formats, and provides energy and stopping power values for arbitrary ion species up to atomic number Z = 10 in the current version. StoppingPowerTableSet aggregates multiple tables and performs batch operations such as interpolation, filtering, and energy range extraction. It also acts as the key data source within MKTable. The class additionally provides from_dict(), from_json() and from_directory() constructors that allows users to import and register any external stopping power dataset, ensuring full compatibility with custom or institution-specific MC data. The data.defaults submodules provide preloaded datasets for reproducibility and rapid prototyping.

2.6.6. Utilities and Shared Components (pymkm.utils)

  • GeometryTools offers static methods for sampling radial positions, computing overlapping areas, and generating resolution-optimized radii.
  • Interpolation is used across modules to resample LET and energy distributions, with support for linear and log-log interpolation.
  • Parallel streamlines multiprocessing routines, ensuring efficient computation of event-specific microdosimetric quantities.

2.7. Testing, Validation, and Continuous Integration

The pyMKM package is developed following principles of test-driven development and reproducible science. A comprehensive suite of automated unit and integration tests covers all core functionalities. These tests can be executed locally using standard pytest invocation.
In addition to the testing infrastructure, the package includes a collection of example scripts and model-specific validation scripts used to benchmark pyMKM against published data. These scripts serve both as usage demonstrations and as tools for verifying consistency with theoretical and experimental results from the literature. In total, the validation suite comprises over 150 reference datasets spanning different ion species, energies, LET values, and experimental conditions, with comparisons against published benchmarks from NIRS/QST.
The package has been validated only within the energy range of 0.1 MeV/u to 1000 MeV/u, which covers the scope of currently available reference data and encompasses the energies of clinical relevance in ion beam therapy.
Each validation script reproduces key reference figures or tables from the literature and verifies that pyMKM reproduces the expected trends in local dose, specific energy, MKM/SMK/OSMK survival predictions, and table generation workflows. All comparisons are accompanied by quantitative error metrics—such as absolute or logarithmic deviations—adapted to the physical scale and domain of the reference data.
The validation datasets were derived from the computational data available in the referenced literature, ultimately based on the experimental measurements of [26,27]. All benchmark curves—such as cell-survival fractions, radial dose profiles, and specific-energy distributions—were digitalized from published computational results to ensure full consistency with the mathematical and numerical formalisms currently adopted in clinical MKM implementations. The original formulations of these models relied on numerical calculations for radial dose distributions, as direct measurements in condensed media are not feasible; their parameterizations were historically guided by gas-chamber experiments in hydrogen and tissue-equivalent gases performed in the late 1970s, as referenced in the cited literature.
To ensure long-term reliability, all tests and benchmarks are also continuously executed in clean environments via GitHub Actions. This continuous integration setup automatically verifies the integrity of the codebase upon each commit or pull request, ensuring platform-independent reproducibility and robustness of the computational results. Tests are executed in clean environments using multiple Python versions, guaranteeing cross-platform stability and maintainability of the package.

3. Results

The reference values for assessing the accuracy of pyMKM were retrieved using a semi-automatic data digitization pipeline based on the GSYS graphical data grabber https://www.jcprg.org/gsys/2.4/gsys-e.html (accessed on 23 June 2025). As a result, all comparisons inherently include uncertainties associated with graphical data extraction, which may contribute to small systematic or localized deviations when evaluating the numerical agreement.
While selected cases are presented in this section to illustrate representative outcomes, the validation relies on quantitative metrics computed over a benchmark suite comprising approximately 150 datasets. Complete results—including all validation figures and corresponding numerical error tables—are available in the official GitHub repository at https://github.com/BeppeMagro/pymkm (accessed on 2 October 2025).

3.1. Validation of Local Dose and Specific Energy Distributions

The validation campaign covered ion beams from hydrogen to carbon (Z = 1 to 6), with LET values ranging from ~10 to over 500 keV/μm. For each test case, pyMKM outputs were compared against reference values via interpolation and error analysis.
For initial local dose (Figure 2), quantitative agreement with the digitized reference data was consistently good across all tested ion species and LET values. The mean logarithmic error was 0.20 ± 0.06 log10 units, with RMS deviations of 0.40 ± 0.09 and maximum localized deviations up to 1.48 log10 units. Despite these outliers, the overall relative error remained low, with an average SMAPE (see Appendix A) of 2.8% (range: 1.7–3.4%).
For specific energy distributions (Figure 3), accuracy improved further. The mean logarithmic error was reduced to 0.083 ± 0.034, with RMS errors of 0.17 ± 0.08 and maxima typically below 0.6. The corresponding SMAPE averaged 8.4%, although with a broader spread (0.7–17%).
Finally, for saturation-corrected specific energy, the results were comparable to the uncorrected case. The mean log error remained at 0.083 ± 0.023, with RMS values of 0.17 ± 0.05 and maxima around 0.55. The SMAPE averaged 7.9% (range: 1.8–17.2%), confirming the numerical stability of the overkill formalism even in high-LET regimes. The similarity of the error statistics between the corrected and uncorrected distributions indicates that the saturation modification is propagated consistently through the integration routines, without introducing additional systematic bias.
To illustrate the overall agreement, Figure 2, Figure 3 and Figure 4 show three representative cases: (a) radial dose distribution comparison for a high-LET carbon ion using both track structure models; (b) specific energy as a function of impact parameter for different sensitive region sizes; and (c) saturation-corrected profiles across three domain/nucleus configurations. These examples were selected to reflect both the physical range of configurations tested and the structural accuracy of the implementation.
In all cases, pyMKM predictions (dashed lines) show excellent agreement with the digitized reference data (solid lines), demonstrating the numerical accuracy of the radial dose integration and microdosimetric kernel generation modules.

3.2. Validation of Microdosimetric Table Generation

To validate the MKTable implementation in pyMKM, we benchmarked the computed dose-averaged domain-specific energy z ¯ d , the saturation-corrected dose-averaged domain-specific energy z ¯ d * , and the dose-averaged nucleus-specific energy z ¯ n against digitized reference values extracted from published literature.
For the saturation-corrected dose-averaged domain-specific energy, the agreement with reference values was excellent across the entire energy range. The mean absolute error was 0.29 ± 0.05 Gy, with maximum deviations of 1.6 ± 0.7 Gy. Relative differences remained consistently below 2%, with an average SMAPE of 1.4% (range: 1.2–1.7%).
The stochastic implementation was evaluated across multiple combinations of ion species and geometrical configurations. The overall mean absolute error was 4.0 ± 7.5 Gy, with maximum deviations occasionally exceeding 20 Gy, while the average SMAPE remained low at 2.5% ± 1.2% (range: 1.1–5.4%). A more detailed inspection of the three fundamental microdosimetric quantities highlighted the following:
  • z ¯ d * : showed the best agreement, with mean absolute errors in the range 0.2–0.5 Gy, maximum deviations below 3 Gy, and SMAPE values of 1–2% across all species;
  • z ¯ d : absolute deviations increased with Z, with mean errors rising from ~1 Gy (Z = 1) to ~24 Gy (Z = 10) and maxima up to ~88 Gy. Despite these large absolute numbers, relative differences remained low, with SMAPE values between 1.8% and 4.6%;
  • z ¯ n : absolute values were much smaller (<1 Gy), so errors also remained on the order of 0.001–0.03 Gy. In this narrow scale, relative errors appeared slightly larger (SMAPE 2–5%), but overall agreement with reference data remained excellent.
When stratified by atomic number, light ions (H, He) showed somewhat higher fluctuations, while heavier ions (C, Ne) maintained smoother agreement.
Finally, the validation of the survival-relevant D 10 dose confirmed the robustness of pyMKM. The mean absolute error was 0.014 ± 0.005 Gy, with maxima below 0.08 Gy. Relative differences were consistently <0.6%.
Figure 5 and Figure 6 exemplify these comparisons and demonstrate that both the magnitude and shape of microdosimetric trends are faithfully reproduced by pyMKM. This supports the internal consistency of track structure models, saturation correction logic, and table computation workflows.

3.3. Validation of Survival Fraction Tables

The accuracy of the SFTable module in pyMKM was evaluated across a comprehensive set of survival curves generated under various conditions, including different ion types, LET values, and radiobiological models (MKM, SMK, OSMK). A total of 96 cases were benchmarked against digitized reference data, covering normoxic and hypoxic conditions.
For MKM, validation included 18 survival curves across HSG and V79 cells (Figure 7). In HSG cells, agreement with reference data was excellent, with mean log errors typically below 0.03 log10 units, maxima ≤0.10, and SMAPE values consistently <1.2%. In contrast, V79 cells exhibited systematically larger deviations, with mean log errors up to 0.12, maxima around 0.27, and SMAPE values between 2–3.5%. Overall, errors remained below 0.1 log10 units and ~2% SMAPE for carbon and neon in HSG cells, while deviations in V79 cells were higher but still within acceptable limits for survival modeling.
The stochastic extension improved accuracy across all conditions (Figure 8). Mean log errors were reduced to ~0.016 ± 0.008 log10 units, with maximum deviations never exceeding 0.06. SMAPE values remained below 2% in all cases and often <1%. The improvement was most pronounced at high LET. Importantly, the largest discrepancies observed in V79 cells under MKM were significantly reduced in SMK, with maximum deviations dropping below 0.06 log units and relative differences ≤ 2%. HSG and CHO results were uniformly accurate.
Validation under hypoxic conditions was carried out using two complementary approaches:
  • Direct survival curves at p O 2 = 0   mmHg (Figure 9). Across 42 benchmarked cases, the mean log error was 0.024 ± 0.013 and SMAPE 1.9% ± 0.8%, with maxima <0.16 log10 units. The agreement held across ions and cell types, although H and He again showed slightly higher fluctuations in V79 cells.
  • OER vs. LET at 10% survival (Figure 10). For 18 benchmark cases, the mean absolute error was 0.025 ± 0.018, maxima <0.07, and SMAPE values below 1%. The characteristic reduction in OER with increasing LET was faithfully reproduced for all cell lines.
Across 96 benchmarked cases, pyMKM reproduced survival data with excellent accuracy: MKM within ~2%, SMK within ~1%, and OSMK within ~2% for hypoxic conditions, with OER predictions accurate to better than 1%.
Figure 7, Figure 8, Figure 9 and Figure 10 provide representative examples of the validation campaign. In particular, Figure 7 shows MKM survival curves for carbon ions across increasing LET; Figure 8 presents SMK-based curves for neon ions; Figure 9 highlights survival under hypoxia using the OSMK model; and Figure 10 illustrates the agreement in OER behavior. Although the figures illustrate representative cases, the main validation rests on the consistent quantitative agreement observed across all tested scenarios.

3.4. Software Validation and Test Coverage

In addition to model-specific validation against reference biological data, the internal consistency and structural robustness of pyMKM were assessed through a complete suite of unit and integration tests.
At the time of this release, the testing infrastructure included 273 individual test cases. All tests were executed using the pytest 8.3.4 framework on a Windows 10 platform with Python 3.9.23 and completed successfully with zero failures. Test coverage analysis reported 100% statement coverage across ~1500 lines of code, with no uncovered branches or functions. This level of coverage reflects not only the completeness of the testing infrastructure, but also the modular design of pyMKM, which facilitates precise targeting of each computational component.
To ensure long-term reproducibility and platform independence, all tests were also executed via continuous integration on GitHub Actions, as part of an automated testing workflow. The CI pipeline verified that all test cases pass consistently across multiple Python versions, specifically 3.9, 3.10, 3.11, and 3.12, with execution times below one minute per environment. This cross-version compatibility further strengthens confidence in the package’s maintainability and future extensibility.
These results confirm that pyMKM is not only numerically accurate in reproducing radiobiological outcomes, but also structurally sound and robust. The automated test suite provides continuous verification of code correctness and guards against unintended side effects during development or model extension.

4. Discussion

The results presented in this work validate the full computational pipeline of pyMKM across a broad spectrum of radiobiological conditions, using survival data digitized from multiple published sources. The benchmark set included different ion species, LET values, cell lines, and radiobiological models (MKM, SMK, OSMK), covering both normoxic and hypoxic environments. Microdosimetric tables and survival curves were compared against reference values using multiple metrics, confirming the high numerical accuracy of the implementation in reproducing model predictions.
All stopping power data used in this validation were derived from the MSTAR dataset, selected for practical reasons due to its reduced sampling density and faster computation. However, the pyMKM framework also supports stopping power inputs from FLUKA and Geant4 MC codes, which are available and validated internally. The consistency of results across the full radiobiological modeling chain—from stopping power to survival fraction—demonstrated the reliability of the track structure integration routines and the robustness of the numerical pipeline even when relying on a simplified input. In particular, the z ¯ d * , which uniquely characterizes the radiobiological response within the MKM formalism, exhibited deviations below 2% across MSTAR, FLUKA, and Geant4 datasets (mean SMAPE ~1.0% for FLUKA and 0.5% for Geant4), confirming the negligible influence of the chosen stopping power source on model predictions.
The validation of pyMKM against a broad set of datasets confirms the correct numerical implementation of MKM, SMK, and OSMK, but also highlights systematic features that clarify the origin of certain deviations. For local dose and specific energy distributions, the apparently inconsistent behavior of error metrics is explained by their different sensitivities. Radial dose profiles showed mean logarithmic errors around 0.20 log10, higher than for specific energy (~0.08), yet their SMAPE values were smaller (~3% versus ~8%). This inversion arises because the logarithmic metric accentuates discrepancies in the low-value tails of the radial profile, which span several orders of magnitude, while SMAPE normalizes differences against the local magnitude. Similarly, specific energy and saturation-corrected distributions occasionally exhibited SMAPE values up to 17%, even when curves overlapped visually, because small denominators in regions of very low absolute values inflate relative deviations. Importantly, these regions often correspond to asymptotic approaches to zero at low LET or in the far radial tails, where the semi-automatic digitization of reference curves is particularly prone to error. In such cases, even modest uncertainties in data extraction may generate disproportionately large deviations, reinforcing the need to interpret quantitative metrics alongside visual inspection.
For microdosimetric table generation, the behavior of the error metrics strongly reflects the magnitude of the underlying quantities. Domain-specific energies showed the largest absolute deviations, increasing from ~1 Gy for protons to more than 20 Gy for neon and argon, with maxima exceeding 80 Gy at Z = 10. Nevertheless, relative errors (SMAPE 1–4%) remained consistently low, confirming that the agreement is excellent when normalized to the large scale of these values. Saturation-corrected domain quantities were even more stable, with absolute deviations typically below 0.5 Gy and SMAPE values close to 1–2%, indicating that the overkill correction is propagated consistently through the calculation. At the nucleus scale, the opposite situation arises: absolute errors were extremely small (0.001–0.03 Gy), but SMAPE values fluctuated between 2% and 5%. This apparent deterioration is explained by the small magnitude of the reference values themselves, which remain below ~1.3 Gy even for the heaviest ion tested. In this low-value regime, tiny numerical differences are disproportionately amplified by relative metrics, although they are negligible from a biological standpoint. Thus, while the metrics appear less stable for nucleus-specific quantities, the underlying agreement remains excellent and consistent with expectations. In general, when grouped by ion species, light ions (H, He) tended to show slightly higher scatter, while heavier ions (C, Ne) exhibited smoother agreement. This behavior can be attributed to the much smaller absolute magnitude of the specific energies for H and He and to scale effects in the reference figures, where all ion species were originally plotted on common y-axes. The compression of the low-Z curves on shared scales visually amplifies minor deviations, and, because the underlying values are one to two orders of magnitude lower than for heavier ions, even small digitization or interpolation differences lead to larger relative variations. When plotted with consistent scales, as in our validation figures, the agreement for light ions appears equally smooth and fully consistent with the other species.
Importantly, pyMKM also reproduced the characteristic U-shaped dependence of the dose at 10% survival as a function of LET. This result is particularly relevant because D10 represents a macroscopic and clinically meaningful endpoint, widely used in radiobiology to compare ion species and to benchmark models against experimental survival data. The fact that pyMKM correctly reproduces this quantity confirms not only the internal consistency of the saturation correction but also the reliability of the package in capturing trends that directly impact clinical interpretation.
Survival fraction validation further confirmed the reliability of pyMKM but also exposed a systematic anomaly limited to V79 cells. The results reported here already account for a uniform scaling factor of 1.3 applied to the reference LET, without which agreement with survival curves could not be achieved. The remarkable point is that this correction seems to have propagated across all ions in the benchmark V79 datasets once it was first introduced for helium. A plausible explanation is that early measurements with He-3 beams were later reported on an He-4 LET scale, leading to a ~30% shift in LET values. When these data were subsequently used as reference, the mis-scaled LET axis appears to have been applied consistently to the entire set of V79 survival curves, not just helium. This would explain why the anomaly is exclusive to V79 but affects all ions. Importantly, the systematic nature of the shift points to a dataset-level inconsistency rather than a limitation of pyMKM’s implementation. Beyond this peculiarity, the model comparisons behaved as expected: the SMK extension performed accurately at high LET, while OSMK reproduced both hypoxic survival curves and OER–LET relationships, confirming correct incorporation of oxygen-dependent lesion modulation.
Finally, the assessment of software validation and test coverage demonstrated that pyMKM is not only numerically accurate in reproducing radiobiological outcomes, but also structurally sound and robust. The automated test suite, combined with continuous integration across Python versions, ensures continuous verification of code correctness and guards against unintended side effects during development or model extension. This level of reproducibility and platform independence provides an essential foundation for extending the package to future model formulations and clinical applications.

5. Conclusions

We have introduced pyMKM, a fully open-source Python package for the computation of microdosimetric quantities and radiobiological survival predictions based on MKM, SMK, and OSMK models. The package was validated against multiple reference datasets across different ion species, LET values, and oxygenation levels, demonstrating high numerical accuracy and model consistency.
All core modules achieved 100% test coverage and passed continuous integration checks across multiple Python versions, ensuring long-term stability and reproducibility. These results confirm pyMKM as a reliable and extensible framework for microdosimetric modeling in both research and clinical contexts.

Author Contributions

Conceptualization, G.M. and A.M.; methodology, G.M.; software, G.M.; validation, G.M., V.P., Y.J., and L.G. (Lars Glimelius); formal analysis, G.M. and V.P.; investigation, G.M.; resources, G.M.; data curation, G.M.; writing—original draft preparation, G.M.; writing—review and editing, G.M., V.P., Y.J., L.G. (Loïc Grevillot), L.G. (Lars Glimelius) and A.M.; visualization, G.M. and A.M.; supervision, G.M. and A.M.; project administration, G.M.; funding acquisition, G.M. All authors have read and agreed to the published version of the manuscript.

Funding

This research was funded by the project “PRECISION—leveraging Patient-specific multi-paRamEtriC imaging and modelling for patient StratificatIon and treatment personalizatiON in particle therapy”, funded under the cascade calls of the “Anthem—AdvaNced Technologies for Human-centrEd Medicine” project, grant code PNC0000003. The APC was funded by the same grant. This research was also supported by the Niederösterreichischen Wirtschafts- und Tourismusfonds” and European Union in form of the EFRE funds (WST3-F-5033232/002-2020) and FW774A0101 (PAIR project) of the Austrian Science Fund (FWF).

Data Availability Statement

The original data presented in the study are openly available on GitHub at: https://github.com/BeppeMagro/pymkm (accessed on 2 October 2025).

Acknowledgments

We would like to thank Peter Lysakovski (Heidelberg Ion Beam Therapy Center) for sharing the stopping power input tables from the FLUKA Monte Carlo code. During the preparation of this manuscript, the authors used ChatGPT (OpenAI, version January 2025) for the purposes of rephrasing and improving the readability of certain passages in the manuscript. The authors have reviewed and edited the output and take full responsibility for the content of this publication.

Conflicts of Interest

The authors declare no commercial or financial conflicts of interest. G.M. is the Principal Investigator (PI) of the PRECISION project. The funders had no role in the design of the study; in the collection, analyses, or interpretation of data; in the writing of the manuscript; or in the decision to publish the results.

Abbreviations

The following abbreviations are used in this manuscript:
LETLinear Energy Transfer
TPSTreatment Planning System(s)
(m)MKM(modified) Microdosimetric Kinetic Model
SMKStochastic MKM
OSMKOxygen-effect-incorporated SMK
MCMonte Carlo
RBERelative Biological Effectiveness
NIRSNational Institute of Radiological Sciences
OEROxygen Enhanced Ratio
QSTQuantum and Radiological Science and Technology
I/OInput/Output
SMAPESymmetric Mean Absolute Percentage Error

Appendix A

For each validation case, model predictions Y were interpolated onto the reference x-domain and pointwise deviations were evaluated. Among the various error metrics, we report the Symmetric Mean Absolute Percentage Error (SMAPE), as it provides a normalized and scale-independent measure of agreement. The deviation term is defined as δ i Y x i Y x i , where Y can represent either the linear values Y y or their logarithm Y log y , depending on the validation context. The SMAPE is then given by:
SMAPE = 100 N δ i Y + Y .

References

  1. Karger, C.P.; Peschke, P. RBE and related modeling in carbon-ion therapy. Phys. Med. Biol. 2018, 63, 01TR02. [Google Scholar] [CrossRef]
  2. Kase, Y.; Kanai, T.; Matsumoto, Y.; Furusawa, Y.; Okamoto, H.; Asaba, T.; Shinoda, H. Microdosimetric measurements and estimation of human cell survival for heavy-ion beams. Radiat. Res. 2006, 166, 629–638. [Google Scholar] [CrossRef]
  3. Inaniwa, T.; Furukawa, T.; Kase, Y.; Matsufuji, N.; Toshito, T.; Matsumoto, Y.; Noda, K. Treatment planning for a scanned carbon beam with a modified microdosimetric kinetic model. Phys. Med. Biol. 2010, 55, 6721–6737. [Google Scholar] [CrossRef] [PubMed]
  4. Mein, S.; Klein, C.; Kopp, B.; Magro, G.; Harrabi, S.; Karger, C.P.; Mairani, A. Assessment of RBE-Weighted Dose Models for Carbon Ion Therapy Toward Modernization of Clinical Practice at HIT: In Vitro, in Vivo, and in Patients. Int. J. Radiat. Oncol. Biol. Phys. 2020, 108, 779–791. [Google Scholar] [CrossRef] [PubMed]
  5. Sato, T.; Furusawa, Y. Cell survival fraction estimation based on the probability densities of domain and cell nucleus specific energies using improved microdosimetric kinetic models. Radiat. Res. 2012, 178, 341–356. [Google Scholar] [CrossRef]
  6. Inaniwa, T.; Kanematsu, N. Adaptation of stochastic microdosimetric kinetic model for charged-particle therapy treatment planning. Phys. Med. Biol. 2018, 63, 095011. [Google Scholar] [CrossRef]
  7. Inaniwa, T.; Kanematsu, N.; Shinoto, M.; Koto, M.; Yamada, S. Adaptation of stochastic microdosimetric kinetic model to hypoxia for hypo-fractionated multi-ion therapy treatment planning. Phys. Med. Biol. 2021, 66, 205007. [Google Scholar] [CrossRef] [PubMed]
  8. Inaniwa, T.; Kanematsu, N. Event-by-event approach to the oxygen-effect-incorporated stochastic microdosimetric kinetic model for hypofractionated multi-ion therapy. J. Radiat. Res. 2023, 64, 685–692. [Google Scholar] [CrossRef]
  9. Masuda, T.; Koto, M.; Ikawa, H.; Takei, H.; Aoki, K.; Nakaji, T.; Inaniwa, T. Design of multi-ion therapy for head and neck cancers using carbon-, oxygen-, and neon-ion beams: Potential efficacy against tumor hypoxia. Phys. Med. Biol. 2025, 70, 085003. [Google Scholar] [CrossRef]
  10. Ikawa, H.; Shinoto, M.; Koto, M.; Masuda, T.; Inaniwa, T.; Takiyama, H.; Ishikawa, H. Dose-averaged LET escalation with ion therapy for head and neck cancers: A phase I study protocol for a prospective, open-label, single-arm, single-centre trial (MULTI-ION-HN-I). BMJ Open 2025, 15, e098151. [Google Scholar] [CrossRef]
  11. Allison, J.; Amako, K.; Apostolakis, J.; Arce, P.; Asai, M.; Aso, T.; Bagli, E.; Bagulya, A.V.; Banerjee, S.; Barrand, G.; et al. Recent developments in GEANT4. Nucl. Instrum. Methods Phys. Res. Sect. A Accel. Spectrometers Detect. Assoc. Equip. 2016, 835, 186–225. [Google Scholar] [CrossRef]
  12. Sato, T.; Iwamoto, Y.; Hashimoto, S.; Ogawa, T.; Furuta, T.; Abe, S.I.; Niita, K. Recent improvements of the particle and heavy ion transport code system–PHITS version 3.33. J. Nucl. Sci. Technol. 2024, 61, 127–135. [Google Scholar] [CrossRef]
  13. Ballarini, F.; Batkov, K.; Battistoni, G.; Bisogni, M.G.; Böhlen, T.T.; Campanella, M.; Carante, M.P.; Chen, D.; De Gregorio, A.; Degtiarenko, P.V.; et al. The FLUKA Code: Overview and New Developments. EPJ Nucl. Sci. Technol. 2024, 10, 16. [Google Scholar] [CrossRef]
  14. Sato, T.; Masunaga, S.I.; Kumada, H.; Hamada, N. Microdosimetric Modeling of Biological Effectiveness for Boron Neutron Capture Therapy Considering Intra- and Intercellular Heterogeneity in 10B Distribution. Sci. Rep. 2018, 8, 988. [Google Scholar] [CrossRef]
  15. Sato, T.; Hashimoto, S.; Inaniwa, T.; Takada, K.; Kumada, H. Implementation of simplified stochastic microdosimetric kinetic models into PHITS for application to radiation treatment planning. Int. J. Radiat. Biol. 2021, 97, 1450–1460. [Google Scholar] [CrossRef] [PubMed]
  16. Magro, G.; Dahle, T.J.; Molinelli, S.; Ciocca, M.; Fossati, P.; Ferrari, A.; Inaniwa, T.; Matsufuji, N.; Ytre-Hauge, K.S.; Mairani, A. The FLUKA Monte Carlo code coupled with the NIRS approach for clinical dose calculations in carbon ion therapy. Phys. Med. Biol. 2017, 62, 3814–3827. [Google Scholar] [CrossRef]
  17. Bellinzona, V.E.; Cordoni, F.; Missiaggia, M.; Tommasino, F.; Scifoni, E.; La Tessa, C.; Attili, A. Linking Microdosimetric Measurements to Biological Effectiveness in Ion Beam Therapy: A Review of Theoretical Aspects of MKM and Other Models. Front. Phys. 2021, 8, 578492. [Google Scholar] [CrossRef]
  18. Kase, Y.; Kanai, T.; Matsufuji, N.; Furusawa, Y.; Elsässer, T.; Scholz, M. Biophysical calculation of cell survival probabilities using amorphous track structure models for heavy-ion irradiation. Phys. Med. Biol. 2008, 53, 37–59. [Google Scholar] [CrossRef]
  19. Mairani, A.; Magro, G.; Tessonnier, T.; Böhlen, T.T.T.; Molinelli, S.; Ferrari, A.; Debus, J.; Haberer, T. Optimizing the modified microdosimetric kinetic model input parameters for proton and 4He ion beam therapy application. Phys. Med. Biol. 2017, 62, N244–N256. [Google Scholar] [CrossRef]
  20. Chen, Y.; Li, J.; Li, C.; Qiu, R.; Wu, Z. A modified microdosimetric kinetic model for relative biological effectiveness calculation. Phys. Med. Biol. 2018, 63, 015008. [Google Scholar] [CrossRef]
  21. Inaniwa, T.; Suzuki, M.; Hyun Lee, S.; Mizushima, K.; Iwata, Y.; Kanematsu, N.; Shirai, T. Experimental validation of stochastic microdosimetric kinetic model for multi-ion therapy treatment planning with helium-, carbon-, oxygen-, and neon-ion beams. Phys. Med. Biol. 2020, 65, 045005. [Google Scholar] [CrossRef]
  22. Kiefer, J.; Straaten, H. A model of ion track structure based on classical collision dynamics (radiobiology application). Phys. Med. Biol. 1986, 31, 1201–1209. [Google Scholar] [CrossRef]
  23. Scholz, M.; Kraft, G. Track structure and the calculation of biological effects of heavy charged particles. Adv. Sp. Res. 1996, 18, 5–14. [Google Scholar] [CrossRef]
  24. Elsässer, T.; Krämer, M.; Scholz, M. Accuracy of the Local Effect Model for the Prediction of Biologic Effects of Carbon Ion Beams In Vitro and In Vivo. Int. J. Radiat. Oncol. Biol. Phys. 2008, 71, 866–872. [Google Scholar] [CrossRef] [PubMed]
  25. Friedrich, T.; Grün, R.; Scholz, U.; Elsässer, T.; Durante, M.; Scholz, M. Sensitivity analysis of the relative biological effectiveness predicted by the local effect model. Phys. Med. Biol. 2013, 58, 6827–6849. [Google Scholar] [CrossRef] [PubMed]
  26. Furusawa, Y.; Fukutsu, K.; Aoki, M.; Itsukaichi, H.; Eguchi-Kasai, K.; Ohara, H.; Ando, K. Inactivation of aerobic and hypoxic cells from three different cell lines by accelerated 3He-, 12C- and 20Ne-Ion beams. Radiat. Res. 2000, 154, 485–496, Erratum in Radiat. Res. 2012, 177, 129–131. https://doi.org/10.1667/RRXX41.1. [Google Scholar] [CrossRef]
  27. Tinganelli, W.; Durante, M.; Hirayama, R.; Krämer, M.; Maier, A.; Kraft-Weyrather, W.; Furusawa, Y.; Friedrich, T.; Scifoni, E. Kill-painting of hypoxic tumours in charged particle therapy. Sci. Rep. 2015, 5, 17016. [Google Scholar] [CrossRef] [PubMed]
Figure 1. Structural representation of the pyMKM package modules and their interdependencies. Arrow directions follow logical import and data flow.
Figure 1. Structural representation of the pyMKM package modules and their interdependencies. Arrow directions follow logical import and data flow.
Computation 13 00264 g001
Figure 2. Radial local dose distributions for a 43 MeV/u carbon ion beam evaluated using the Kiefer–Chatterjee model with energy-dependent core (left) and the Scholz–Kraft model with constant core (right). The pyMKM calculations (dashed line) are compared to reference analytical data [18] (solid line).
Figure 2. Radial local dose distributions for a 43 MeV/u carbon ion beam evaluated using the Kiefer–Chatterjee model with energy-dependent core (left) and the Scholz–Kraft model with constant core (right). The pyMKM calculations (dashed line) are compared to reference analytical data [18] (solid line).
Computation 13 00264 g002
Figure 3. Specific energy deposited as a function of the impact parameter for a 43 MeV/u carbon ion beam [18] computed for two cylindrical sensitive volumes with radii of 0.3 μm (left) and 1.0 μm (right).
Figure 3. Specific energy deposited as a function of the impact parameter for a 43 MeV/u carbon ion beam [18] computed for two cylindrical sensitive volumes with radii of 0.3 μm (left) and 1.0 μm (right).
Computation 13 00264 g003
Figure 4. Saturation-corrected specific energy distributions computed with the Kiefer–Chatterjee model for a carbon ion beam, compared against benchmark curves [3]. Three configurations of domain radius and nucleus radius are shown.
Figure 4. Saturation-corrected specific energy distributions computed with the Kiefer–Chatterjee model for a carbon ion beam, compared against benchmark curves [3]. Three configurations of domain radius and nucleus radius are shown.
Computation 13 00264 g004
Figure 5. Validation of dose-averaged microdosimetric quantities computed by pyMKM for carbon ions (Z = 6), as a function of particle energy. The three panels show, respectively, the dose-averaged domain-specific energy, the saturation-corrected, and the average specific energy to the nucleus. Continuous lines represent pyMKM outputs; circular markers indicate values digitized from the referenced literature [6].
Figure 5. Validation of dose-averaged microdosimetric quantities computed by pyMKM for carbon ions (Z = 6), as a function of particle energy. The three panels show, respectively, the dose-averaged domain-specific energy, the saturation-corrected, and the average specific energy to the nucleus. Continuous lines represent pyMKM outputs; circular markers indicate values digitized from the referenced literature [6].
Computation 13 00264 g005
Figure 6. Comparison of D10 values as a function of LET for three ion species (He, C, Ne), computed with pyMKM (solid lines) and compared to the reference data [3] (dashed lines). The D10 value corresponds to the dose required to achieve 10% survival. The Kiefer–Chatterjee track structure model with energy-dependent core was used in all calculations.
Figure 6. Comparison of D10 values as a function of LET for three ion species (He, C, Ne), computed with pyMKM (solid lines) and compared to the reference data [3] (dashed lines). The D10 value corresponds to the dose required to achieve 10% survival. The Kiefer–Chatterjee track structure model with energy-dependent core was used in all calculations.
Computation 13 00264 g006
Figure 7. Validation of survival fraction predictions computed with pyMKM using the MKM model (solid brown lines) for carbon ions at three LET values: 225 MeV/cm (left), 1370 MeV/cm (center), and 3330 MeV/cm (right). The curves are compared against reference data [6] digitized from the literature (dashed lines). Calculations were performed under normoxic conditions using HSG cell parameters and the Kiefer–Chatterjee track structure model with energy-dependent core.
Figure 7. Validation of survival fraction predictions computed with pyMKM using the MKM model (solid brown lines) for carbon ions at three LET values: 225 MeV/cm (left), 1370 MeV/cm (center), and 3330 MeV/cm (right). The curves are compared against reference data [6] digitized from the literature (dashed lines). Calculations were performed under normoxic conditions using HSG cell parameters and the Kiefer–Chatterjee track structure model with energy-dependent core.
Computation 13 00264 g007
Figure 8. Survival fraction curves computed with pyMKM using the SMK model (solid cyan lines) for neon ions at three LET values: 742 MeV/cm (left), 3430 MeV/cm (center), and 6540 MeV/cm (right). Results are compared against digitized reference curves [6] (dashed lines) under normoxic conditions for HSG cells.
Figure 8. Survival fraction curves computed with pyMKM using the SMK model (solid cyan lines) for neon ions at three LET values: 742 MeV/cm (left), 3430 MeV/cm (center), and 6540 MeV/cm (right). Results are compared against digitized reference curves [6] (dashed lines) under normoxic conditions for HSG cells.
Computation 13 00264 g008
Figure 9. Survival fraction curves computed with pyMKM using the OSMK model (solid light-blue lines) for neon ions under hypoxic conditions p O 2 = 0   mmHg at two LET values: 620 MeV/cm (left) and 3606 MeV/cm (right). The simulations employ the 2021 formulation of the OSMK model. Reference data [7] are shown as dashed lines.
Figure 9. Survival fraction curves computed with pyMKM using the OSMK model (solid light-blue lines) for neon ions under hypoxic conditions p O 2 = 0   mmHg at two LET values: 620 MeV/cm (left) and 3606 MeV/cm (right). The simulations employ the 2021 formulation of the OSMK model. Reference data [7] are shown as dashed lines.
Computation 13 00264 g009
Figure 10. OER at 10% survival as a function of dose-averaged LET, computed with pyMKM using the OSMK model (solid brown line) and compared to reference data [7] (dashed line). Calculations refer to CHO cells irradiated under fully hypoxic conditions p O 2 = 0   mmHg using the 2021 version of the OSMK formalism.
Figure 10. OER at 10% survival as a function of dose-averaged LET, computed with pyMKM using the OSMK model (solid brown line) and compared to reference data [7] (dashed line). Calculations refer to CHO cells irradiated under fully hypoxic conditions p O 2 = 0   mmHg using the 2021 version of the OSMK formalism.
Computation 13 00264 g010
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Magro, G.; Pavanello, V.; Jia, Y.; Grevillot, L.; Glimelius, L.; Mairani, A. pyMKM: An Open-Source Python Package for Microdosimetric Kinetic Model Calculation in Research and Clinical Applications. Computation 2025, 13, 264. https://doi.org/10.3390/computation13110264

AMA Style

Magro G, Pavanello V, Jia Y, Grevillot L, Glimelius L, Mairani A. pyMKM: An Open-Source Python Package for Microdosimetric Kinetic Model Calculation in Research and Clinical Applications. Computation. 2025; 13(11):264. https://doi.org/10.3390/computation13110264

Chicago/Turabian Style

Magro, Giuseppe, Vittoria Pavanello, Yihan Jia, Loïc Grevillot, Lars Glimelius, and Andrea Mairani. 2025. "pyMKM: An Open-Source Python Package for Microdosimetric Kinetic Model Calculation in Research and Clinical Applications" Computation 13, no. 11: 264. https://doi.org/10.3390/computation13110264

APA Style

Magro, G., Pavanello, V., Jia, Y., Grevillot, L., Glimelius, L., & Mairani, A. (2025). pyMKM: An Open-Source Python Package for Microdosimetric Kinetic Model Calculation in Research and Clinical Applications. Computation, 13(11), 264. https://doi.org/10.3390/computation13110264

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop