Skip to main content

Porting Status

Status Overview​

This document provides information about which libamtrack functions have been ported to the pyamtrack Python wrapper. Not all libamtrack functions are currently available in pyamtrack, as the porting process is ongoing.

info

The tables below show the status of various function groups:

  • ✅ Fully Ported: Function is available and tested in pyamtrack
  • 🚧 During Porting: Function is being implemented or tested
  • ❌ Not Ported: Function is available in libamtrack but not yet ported to pyamtrack

Particle Data​

Functions for accessing and manipulating particle data.

Python ModuleStatusC/C++ Source
particle❌ Not PortedAT_ParticleData.h

Material Data​

Functions for accessing and manipulating material properties.

Python ModuleStatusC/C++ Source
materials✅ Fully PortedAT_MaterialData.h

Converters​

Functions for converting between different physical quantities.

Python FunctionStatusC/C++ Source
converters.beta_from_energy✅ Fully PortedAT_PhysicsRoutines.h
converters.energy_from_beta✅ Fully PortedAT_PhysicsRoutines.h
converters.gamma_from_energy❌ Not PortedAT_PhysicsRoutines.h
converters.energy_from_gamma❌ Not PortedAT_PhysicsRoutines.h
converters.energy_from_momentum❌ Not PortedAT_PhysicsRoutines.h
converters.momentum_from_energy❌ Not PortedAT_PhysicsRoutines.h
converters.dose_from_fluence❌ Not PortedAT_PhysicsRoutines.h
converters.fluence_from_dose❌ Not PortedAT_PhysicsRoutines.h
converters.energy_per_amu_from_energy❌ Not PortedAT_PhysicsRoutines.h
converters.energy_from_energy_per_amu❌ Not PortedAT_PhysicsRoutines.h

Stopping Power​

Functions for calculating stopping power of ions and protons and range of particles in materials.

Python FunctionStatusC/C++ Source
stopping.mass_stopping_power❌ Not PortedAT_StoppingPower.h
stopping.electron_range✅ Fully PortedAT_ElectronRange.h
stopping.csda_range❌ Not PortedAT_StoppingPower.h
stopping.bortfeld_proton_range❌ Not PortedAT_ProtonAnalyticalBeamParameters.h

Energy Loss Straggling​

Functions for energy loss straggling calculations.

Python FunctionStatusC/C++ Source
straggling.energy_loss_distribution❌ Not PortedAT_EnergyLoss.c

Scattering​

Functions for particle scattering calculations.

Python FunctionStatusC/C++ Source
scattering.angle_distribution❌ Not PortedAT_MultipleCoulombScattering.h

Proton Pencil Beam Models​

Functions for proton pencil beam dose and LET calculations.

Python FunctionStatusC/C++ Source
proton_models.dose_bortfeld✅ Fully PortedAT_ProtonAnalyticalModels.h
proton_models.let_wilkens✅ Fully PortedAT_ProtonAnalyticalModels.h

Track Structure Models​

Functions for track structure calculations.

Python FunctionStatusC/C++ Source
track.radial_dose❌ Not PortedAT_RDD.h
track.track_width❌ Not PortedAT_RDD.h

Detector Response Models​

Functions for calculating detector response using various models.

Python FunctionStatusC/C++ Source
detector.hcp_response❌ Not PortedAT_SuccessiveConvolutions.h
detector.gamma_response❌ Not PortedAT_GammaResponse.h

Cell Survival Models​

Functions for calculating cell survival.

Python FunctionStatusC/C++ Source
survival.katz_cell_survival❌ Not PortedAT_KatzModel.h
survival.katz_inact_cross_sect❌ Not PortedAT_KatzModel.h

Contributing to Function Porting​

If you're interested in helping port more functions from libamtrack to pyamtrack, please visit the pyamtrack GitHub repository for more information on how to contribute.

The porting process typically involves:

  1. Adding C++ wrapper functions in the pyamtrack source code
  2. Binding these functions to Python using pybind11
  3. Adding proper type handling for different input types (scalars, lists, numpy arrays)
  4. Writing tests to ensure the ported functions work correctly
  5. Documenting the new functions

Your contributions would be greatly appreciated!