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.bortfeld_dose❌ Not PortedAT_ProtonAnalyticalModels.h
proton.wilkens_let❌ Not 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!