DOI: 10.14278/rodare.4526
title: PHITS simulations of neutron and gamma-ray production from and transport of 70–250 MeV protons in heterogeneous 1D tissue phantoms

description: <strong>PHITS simulations of neutron and gamma-ray production from and transport of 70--250 MeV protons in heterogeneous 1D tissue phantoms</strong>

Hunter N. Ratliff¹, Francesco Blangiardi², Toni Kögler³˒⁴

¹Department of Computer science, Electrical engineering and Mathematical sciences, Western Norway University of Applied Sciences, Inndalsveien 28, Bergen, 5063, Vestland, Norway ORCID

²Technology Methods and Systems Data Based Methods, Fraunhofer ENAS, Technologie Campus 3, Chemnitz, 09126, Saxony, Germany ORCID

³Helmholtz-Zentrum Dresden — Rossendorf, Institute of Radiooncology — OncoRay, Dresden, Germany; ⁴OncoRay — National Center for Radiation Research in Oncology, Faculty of Medicine and University Hospital Carl Gustav Carus, Technische Universität Dresden, Helmholtz-Zentrum Dresden — Rossendorf, Dresden, Germany ORCID

<strong>Introduction</strong>

This dataset corresponds to the PHITS simulation data used in <em>"Fast proton transport and neutron production in proton therapy using Fourier neural operators"</em> [1]. A concise description of the simulation setup is provided here; please refer to the paper for detailed discussion, description, analysis, and further results derived from this dataset, along with additional references.

<strong>Description of simulations</strong>

This dataset consists of PHITS [2] simulations for 47 different proton energies from 70 MeV to 250 MeV incident upon different "1D" heterogeneous cylindrical phantoms (varied materials every 0.5 mm in length, uniform radially and rotationally) whose composition (materials and sequence along length) are taken from randomly sampled rays cast through a 3D CT phantom with CT number mapped to material composition and density via the <code>HumanVoxelTable-KumamotoUniv.data</code> conversion table within the RT-PHITS utility distributed with PHITS. Included tallies score spatial distributions of energy deposition, LET, proton current (with an additional angular dimension), neutron production, gamma-ray production, and a variety of diagnostic tallies. Event-by-event "list-mode" data is scored for neutron and gamma-ray production, called "dump" tallies in PHITS.

Given the objective of these simulations was for AI model development, the 47 energies are divided into 37 <strong>training</strong> energies (70 MeV to 250 MeV in 5 MeV steps) and 10 <strong>testing</strong> energies (73 MeV to 245.8 MeV in 19.2 MeV steps). For each energy, two simulations were ran: (1) a simulation with <strong>1E8</strong> (one hundred million) protons simulated where all <strong>tallies</strong> (including <strong>dump</strong> tallies) were included/enabled and (2) a simulation with <strong>1E9</strong> (one billion) protons simulated but with only <strong>dump</strong> tallies enabled (other tallies disabled to reduce memory consumption and increase simulation speed). Furthermore, all of the above was actually performed twice: (1) initially with purely <strong>monoenergetic</strong> beam energies and with a spatial spread of 2.5 mm and (2) a second "more realistic" set with <strong>Gaussian-distributed</strong> energies (with energy-dependent FWHM) and slightly wider 4.0 mm beam spread.

All simulation outputs were automatically processed from the plaintext and binary files produced by PHITS into compressed pickle file objects (NumPy arrays, Pandas DataFrames, dictionaries) using the PHITS Tools [3] Python utility. These Python objects were then utilized in the subsequent analysis of the paper this simulation set was generated for. The corresponding data repository used for AI model development can be found at [4].

<strong>Structure of this repository</strong>

The volume of data present in this repository is quite substantial (~700 GB available here / some TB including files only available upon request). Therefore, the repository has been structured in a way to allow flexibility in only downloading data of interest.

The root directory of this repository consists of 39 top-level directories whose names indicate their contents; each has been <code>.tar</code> archived and has either undergone <code>.xz</code> compression via <code>xz</code> on the tarball or with Python's LZMA compression on the tarball's contents prior to archiving. Within each are two directories: <code>training</code> and <code>testing</code>. Within each of these are directories of the format <code>???_MeV</code>, where <code>???</code> is replaced by three digits specifying the nominal beam energy in MeV. (This is <code>???p?</code> for the energies of the testing dataset, with <code>p</code> in place of a decimal point.) Thus, each <code>training</code> directory contains 37 subdirectories, and each <code>testing</code> directory contains 10 subdirectories. (One should note that there are no setup differences between <code>training</code> and <code>testing</code> data; they are simply divided here in the same way as in the paper.) Each <code>???_MeV</code>/<code>???p?_MeV</code> directory contains simulation input/output and/or PHITS Tools processed output, depending on the top-level directory it is contained within. Input and output file names do not differ between different energies; directory structure is used to keep them distinguished/separated.

PHITS input information

One top-level directory differs from all of the others, and this is <code>common_inputs</code>. As the name suggests, this directory contains all PHITS input information used in generating all of the simulation outputs.

The core two PHITS input files used are <code>beam-on-target_phits-input_MonoE.inp</code> for the monoenergetic beam simulation set and <code>beam-on-target_phits-input_GaussE.inp</code> for the Gaussian-distributed beam energy simulation set. Within these inputs are lines using the PHITS insert file function <code>infl:{*}</code>; all inserted files used in the PHITS simulations are also contained within this <code>common_inputs</code> directory. The single exception to this is <code>PARAMETERS_files-1-and-7.txt</code>, which is simply the <code>file(1)</code> and <code>file(7)</code> PHITS <code>[Parameters]</code> arguments and will be system-specific paths to PHITS installation/data files. Also note that relative paths are used in the <code>infl:{*}</code> commands; these relative paths differ to how this repository is structured given the repository has been restructured in post for distribution convenience. File names are still unique and can be found in this <code>common_inputs</code> directory. The <code>CELL</code> subdirectory contains the <code>[Cell]</code> sections used for the varied phantom compositions, and the <code>MAPPINGS_OF_ENERGY_TO_CELL_FILES.csv</code> file details how these files are paired with the 47 different beam energies.

<strong>PHITS outputs (raw and processed)</strong>

The remaining 38 top-level directories contain simulation/processed output. When these simulations were ran, all output was contained in each <code>???_MeV</code> directory. As detailed earlier, these have been split into various top-level directories here to allow more convenient download of only desired files. Nominally, each of these <code>???_MeV</code> directories contained the following before being split:


 a <code>beam-on-target_phits-input.inp</code> PHITS input file (and a simple <code>phits.in</code> pointing to this input file, needed for parallel running of PHITS); note that these inputs have all specific source energy information populated within this file
 a <code>phantom_composition_info.csv</code> file also detailing the phantom composition used for that beam energy
 <code>phits*.out</code> file(s), <strong>raw</strong> summary output files generated by PHITS
 <code>*.out</code> <strong>raw</strong> plaintext tally output files from PHITS
 <code>*.eps</code> <strong>graphical</strong> visualizations of tally output, generated by PHITS
 <code>*_dmp.out*</code> <strong>raw</strong> binary tally <strong>dump</strong> files from PHITS
 <code>*.pickle.xz</code> <strong>processed</strong> tally output (and <code>phits.out</code> metadata) from PHITS Tools, LZMA-compressed pickle files
 <code>*_dmp_namedtuple_list.pickle.xz</code> <strong>processed</strong> tally <strong>dump</strong> output from PHITS Tools, formatted as a NumPy record array (np.recarray)
 <code>*_dmp_Pandas_df.pickle.xz</code> <strong>processed</strong> tally <strong>dump</strong> output from PHITS Tools, formatted as a Pandas DataFrame (same numerical data as in NumPy recarray)
 <code>*.png</code> and <code>*.pdf</code> <strong>graphical</strong> visualizations of tally output, generated by PHITS Tools


The top-level directories of this repository are named in a way to detail (1) which simulations their contents pertain to and (2) which output files are contained within them. The directories are named using an underscore-delimited pattern whose components have the following names and meanings:


 Beam type:
 
 <strong><code>MonoE</code></strong> refers to simulations with the monoenergetic beams with 2.5 mm spread
 <strong><code>GaussE</code></strong> refers to simulations with the Gaussian-distributed energies and 4.0 mm spread
 
 
 Simulated number of protons:
 
 <strong><code>1E8</code></strong> refers to simulations with 10^8 (one hundred million) protons simulated
 <strong><code>1E9</code></strong> refers to simulations with 10^9 (one billion) protons simulated
 
 
 Output source/type:
 
 <strong><code>raw</code></strong> refers to the PHITS input and PHITS-generated output
 <strong><code>processed</code></strong> refers to the Python-formatted processed output produced by PHITS Tools
 <strong><code>plots</code></strong> refers to the <code>*.eps</code> files produced by PHITS and the <code>*.png</code> and <code>*.pdf</code> files produced by PHITS Tools, all containing graphical plots of tally output (only relevant to <strong><code>1E8</code></strong> simulations)
 
 
 Other labels:
 
 <strong><code>proton-tally</code></strong> refers to output from the huge <code>[T-Cross]</code> tally used only in <strong><code>1E8</code></strong> simulations for scoring proton phase space as a function of energy, position, and direction (separated from others owing to its considerable size)
 <strong><code>neutron-dump</code></strong> refers to the event-by-event neutron production data scored by a <code>[T-Product]</code> tally's "dump" option
 
 <strong><code>NumPy</code></strong> and <strong><code>Pandas</code></strong> to denote if <strong><code>processed</code></strong> contents are formatted as NumPy record arrays or Pandas Dataframes
 
 
 <strong><code>gamma-dump</code></strong> refers to the event-by-event gamma-ray production data scored by a <code>[T-Product]</code> tally's "dump" option
 
 <strong><code>NumPy</code></strong> and <strong><code>Pandas</code></strong> to denote if <strong><code>processed</code></strong> contents are formatted as NumPy record arrays or Pandas Dataframes
 
 
 <strong><code>other</code></strong> refers to output from all other tallies aside from the above three (energy deposition, LET, diagnostic tallies, etc.; only relevant to <strong><code>1E8</code></strong> simulations given all tallies except dump tallies were disabled for <strong><code>1E9</code></strong> simulations) along with (for <strong><code>raw</code></strong> directories) PHITS input-related files and <code>phits*.out</code> file(s).
 
 


<em>For clarity, the dataset notation here corresponds to that used in [1] as follows: <code>GaussE_1E8</code> = <code>ES8</code> and <code>GaussE_1E9</code> = <code>ES9</code>. (The paper did not use <code>MonoE_1E8</code> and <code>MonoE_1E9</code>, but if it had they would've been designated with <code>NES8</code> and <code>NES9</code>, respectively.)</em>

And, as stated earlier, each of these top-level directories is divided into a <code>training</code> subdirectory (containing 37 <code>???_MeV</code> directories) and a <code>testing</code> subdirectory (containing 10 <code>???p?_MeV</code> directories), where the <code>???[p?]_MeV</code> directories only (1) contain particular files (2) relevant to certain simulations—as specified by the top-level directory's name.

As a note to anyone surveying the <code>raw</code> files, all <code>GaussE</code> simulations were ran with OpenMP parallelization with 10 processes. For <code>1E8</code> simulations, this was conducted as ten PHITS runs of 1E7 protons each; for <code>1E9</code> simulations, this was conducted as twenty runs of 5E7 protons each. (PHITS runs can be "chained" as "restart calculations", where one run can resume from where a previous run ended.) In these simulations, the generated <code>phits.out</code> files from each run were renamed to <code>phits-#A-#B.out</code> (where <code>#A</code> was an internal number <code>1</code> to <code>47</code> pairing with each simulated beam energy, and <code>#B</code> is the run number, <code>0</code> to <code>19</code>) and moved into a <code>phitsout</code> subdirectory after each run's completion. However, this was less uniform for the <code>MonoE</code> simulations; for those, the strategy was to complete each simulation in a single run of PHITS. This generally involved using a hybrid OpenMP + MPI parallelization with anywhere from 80 to 160 processes each, split between OMP and MPI (noting that some <code>1E9</code> runs were conducted with only MPI parallelization). None of this influences the output format of the standard tally outputs. However, the number of dump files produced is equal to the number of MPI processes utilized. This means that each <code>GaussE</code> simulation only has one dump file per dump tally owing to only using OpenMP parallelization (which merges its dump files at the end of calculation) while the <code>MonoE</code> simulations contain a varied number of dump files per dump tally owing to varriations in parallelization strategies employed in those simulations. PHITS Tools ultimately merges all dump outputs back together in its processing, meaning if looking at the <code>processed</code> output this quirk of how simulations were conducted should not be apparent at all.

Given PHITS Tools was under ongoing development as this dataset was being produced, the <code>GaussE</code> directories contain some extra output not present in the <code>MonoE</code> directories. Most notably, only for the <code>GaussE</code> simulations do the <code>plot</code> directories contain PNG and PDF plot files generated by PHITS Tools and the <code>*_processed_*</code> directories contain dictionary objects of the processed <code>phits*.out</code> files.

Note that, for convenience, the <code>phits*.out</code> file(s) for each simulation are also copied to all <code>*_raw_*</code> directories. The <code>phits*.out</code> file(s) contain the full PHITS input echo, among other information about the simulation. For the <code>GaussE</code> simulations, these are within a further <code>phitsout</code> subdirectory for each beam energy. Also for all <code>GaussE_*_processed_*</code> directories, the processed <code>phits*.out</code> file(s), <code>phits*_out.pickle.xz</code>, are included too.

<strong>References</strong>

[1] F. Blangiardi, H.N. Ratliff et al., <em>"Fast proton transport and neutron production in proton therapy using Fourier neural operators"</em>, <em>(in preparations for submission)</em> (2025)

[2] T. Sato, Y. Iwamoto, S. Hashimoto, T. Ogawa, T. Furuta, S. Abe, T. Kai, Y. Matsuya, N. Matsuda, Y. Hirata, T. Sekikawa, L. Yao, P.E. Tsai, H.N. Ratliff, H. Iwase, Y. Sakaki, K. Sugihara, N. Shigyo, L. Sihver and K. Niita, <em>"Recent improvements of the Particle and Heavy Ion Transport code System - PHITS version 3.33"</em>, Journal of Nuclear Science and Technology, 61, 127-135, (2024) doi:10.1080/00223131.2023.2275736

[3] H.N. Ratliff, <em>"The PHITS Tools Python package for parsing, organizing, and analyzing results from the PHITS radiation transport and DCHAIN activation codes"</em>, The Journal of Open Source Software, 10(113), 8311, (2025) doi:10.21105/joss.08311, github.com/Lindt8/PHITS-Tools

[4] F. Blangiardi, H.N. Ratliff and Kögler, <em>"Proton and Neutron reduced phase space for surrogate modeling of Proton Therapy from PHITS simulations"</em>, Rodare [Data set], (2025) doi:10.14278/rodare.4128

<strong>Acknowledgements</strong>

The NOVO project has received funding from the European Innovation Council (EIC) under grant agreement No. 101130979. The EIC receives support from the European Union's Horizon Europe research and innovation programme. Partners from The University of Manchester has received funding from UK Research and Innovation under grant agreement No. 10102118.