Skip to content

akutuva21/SPARK-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Direct vs indirect effects of radiotherapy: Opposing impact of tumor proliferation saturation on minimum dose for tumor control

This file contains a brief description of each of the code files used to simulate the various conditions required for DVR (Direct Volume Reduction) and CCR (Tumor Carrying Capacity Reduction) for radiotherapy simulations at a localized tumor region. Each of the files have been organized into various folders to aid in quick accessibility. This does not require any specific environments to run as long as the requirements below are met.

Requirements

Ensure you have the following (or better) installed on your machine:

  • Java 8 or higher
  • Python 3, including the following external libraries: numpy, pandas, matplotlib

If you have any questions, please feel free to contact Achyudhan Kutuva at akutuva@ufl.edu.

Running the Code

To run the code, simply execute the "run_pipeline.sh" file using a terminal of your choice along with numbers separated by spaces indicating which figures you would like to be generated. For Windows, this may be a Bash emulator (Git Bash, Cygwin) or the Windows Subsystem for Linux (WSL). On Unix-based systems, this may be directly run within the terminal. This will compile and run the Java files, then the Python files. The output will be generated in the "Figures" folder. The "run_pipeline.sh" file can be executed by running the following command in the terminal:

./run_pipeline.sh x y z

where x, y, and z are numbers corresponding to the figures you would like to generate. For instance, to generate Figures 2, 3, and 4, you would run the following command:

./run_pipeline.sh 2 3 4

Figures

This folder contains the figures generated by the Python files after the above command is run. The figures are named according to the figure number. For instance, Figure 2 is named "Figure_2.png".

Python Files

This contains all the files needed for generating the respective figures. "Sample_Graphing.py" corresponds to Figure 2. "Death_Sweep.py" corresponds to Figure 3. "Lambda_Sweep.py" corresponds to Figure 4. Finally, "PSI_Death_Doselines.py" corresponds to Figure 5.

src

This folder contains a collection of various .java files that contain the data generation features. 'Dose.java' is a file containing a collection of functions related to generating in-silico patients with customizable dose, time, and other restrictions. 'ModelComparison.java' is the primary driver file that contains all the various settings currently available, but the generation of each figure is split into separate Java files to aid in easy customization.

  • 'ModelIntroduction.java' generates the contents of Figure 2. Panel A contains a graph of the logistic growth function, while Panel B contains a graph of the logistic growth function with the addition of either DVR or CCR to simulate RT response.
  • 'DeathParamSweep.java' generates the contents of Figure 3. Panel A contains a parameter sweep and the corresponding volume projections under DVR, while B contains the same for CCR. Here, the growth rate λ is set constant while the death rates, α and δ, are varied.
  • 'LambdaSweep.java' generates the contents of Figure 4. Panel A contains a parameter sweep and the corresponding volume projections under DVR, while B contains the same for CCR. Here, the death rates α and δ are set constant while the growth rate λ is varied.
  • 'DVR_CCR_Scatter.java' generates the contents of Figure 5. Panel B contains a scatter plot showing the relationship between the death parameter α and PSI to project the minimum dose required for DVR. Panel A highlights a few sample volume projections at quadrants of the scatter plot. Panel C shows the relationship between α and the Cumulative Dose (D) required at varying PSI values. Panel D shows the relationship between PSI and D required at varying α values. Panels E-H are the same as Panels A-D, but for CCR instead of DVR.

'Patient.java' contains the parameters for the Patient object, which contains patient-specific values along with the corresponding fractionation values.

Dose.gridSearch

This is the main function within Dose.java that is used to conduct a grid search over the given ranges of alpha, delta, lambda, psi, and fraction size based on the received inputs from "ModelComparison.extracted". This function is able to selectively employ its various for-loops based on whether a range of values is provided for each parameter, specifically alpha, delta, PSI, lambda, and fraction size. Based on these values, the function will pass the corresponding values to the doseHelper function to determine the dose required to achieve LRC, given that "lrc_filter" is enabled. If "lrc_filter" is disabled, the function will pass the corresponding values to the doseHelper function to instead forecast projected tumor volumes over a given course of treatment. The function also supports boolean restrictions based on dose (dose_filter) and time (time_filter) to aid in forecasting purposes as seen in Figures 2-4, as well as "psi-check" to test whether volume is ever projected to surpass carrying capacity.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published