Awesome
VICTRE AUTOMATIC PIPELINE
Virtual Imaging Clinical Trial for Regulatory Evaluation
Clinical trials are expensive and delay the regulatory evaluation and early patient access to novel devices. In order to demonstrate an alternative approach, a recent effort at the Division of Imaging, Diagnostics, and Software Reliability at the U.S. Food and Drug Administration (known as the VICTRE project) demonstrated the replication of one such clinical trial using completely in-silico tools and compared results in terms of imaging modality performance between the human trial and the computational trial. The VICTRE trial involved imaging approximately 3000 digital breast models in digital mammography and digital breast tomosynthesis system models. On this page we are making all the in silico components of VICTRE freely available to the community.
-
Citation: "Evaluation of Digital Breast Tomosynthesis as Replacement of Full-Field Digital Mammography Using an In Silico Imaging Trial." Aldo Badano, Ph. D., Christian G. Graff, Ph. D., Andreu Badal, Ph. D., Diksha Sharma, M. Sc., Rongping Zeng, Ph. D., Frank W. Samuelson, Ph. D., Stephen Glick, Ph. D., and Kyle J. Myers, Ph. D. JAMA Network Open. 2018;1(7):e185474; doi:10.1001/jamanetworkopen.2018.5474.
-
Documentation: Full documentation can be found here: https://didsr.github.io/VICTRE_PIPELINE/
-
Test the VICTRE Pipeline on precisionFDA: We created a sample VICTRE full pipeline app on precision FDA that you can access here (needs registration).
-
Regulatory Science Tool: Check the FDA website to see the VICTRE pipeline in the Regulatory Science Tool catalog.
-
Overview of the VICTRE project: A 1-hour summary presentation of the project and findings was given at the FDA Grand Rounds on 3/14/2019 and can be found here.
Note: All code is under CC0 (Creative Commons 1.0 Universal License) except for the FBP code that is a derivation of a GPL3 code and remains as GPL3.
VICTRE team: Aldo Badano, Ph. D., Christian G. Graff, Ph. D., Andreu Badal, Ph. D., Diksha Sharma, M. Sc., Rongping Zeng, Ph. D., Aunnasha Sengupta, Miguel A. Lago, Ph. D., Frank W. Samuelson, Ph. D., Stephen Glick, Ph. D., and Kyle J. Myers, Ph. D.
Disclaimer
This software and documentation (the "Software") were developed at the Food and Drug Administration (FDA) by employees of the Federal Government in the course of their official duties. Pursuant to Title 17, Section 105 of the United States Code, this work is not subject to copyright protection and is in the public domain. Permission is hereby granted, free of charge, to any person obtaining a copy of the Software, to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, or sell copies of the Software or derivatives, and to permit persons to whom the Software is furnished to do so. FDA assumes no responsibility whatsoever for use by other parties of the Software, its source code, documentation or compiled executables, and makes no guarantees, expressed or implied, about its quality, reliability, or any other characteristic. Further, use of this code in no way implies endorsement by the FDA or confers any advantage in regulatory decisions. Although this software can be redistributed and/or modified freely, we ask that any derivative works bear some notice that they are derived from it, and any modified versions bear some notice that they have been modified.
The VICTRE pipeline
The code included in this repository will allow you to compile and execute the full VICTRE pipeline including:
- Breast phantom generation (source, documentation)
- Breast phantom compression (source, documentation)
- Breast phantom cropping
- Mass generation (source, documentation)
- Lesion insertion
- MCGPU projection (source and documentation)
- DBT reconstruction (source, documentation)
- Lesion-absent and lesion-present ROI extraction
Documentation
Full documentation can be found here: https://didsr.github.io/VICTRE_PIPELINE/
Requirements
- For phantom generation
- cmake 3+
- gcc/g++
- VTK library
- Lapack library
- boost library
- For phantom compression
- FEBio
- gcc/g++
- cmake 3+
- VTK library
- Lapack library
- boost library
- For mass generation
- gcc/g++
- cmake 3+
- VTK library
- Lapack library
- boost library
- For MCGPU projection
- CUDA 10.4+
- NVIDIA GPU (8GB+ recommended)
- gzip
- (Optional) openMPI
- For reconstruction
- gcc/g++
- For the unified pipeline script
- Python 3.6+
Installation
Before proceeding, make sure you have all the requirements listed above. You can also install the required libraries using this:
sudo apt-get install cmake vtk7 libvtk7-dev libblas-dev liblapack-dev libopenmpi-dev libboost-dev libboost-program-options-dev libproj-dev zlib1g-dev gzip
Clone the repository
git clone https://github.com/DIDSR/VICTRE_PIPELINE
Execute the installation script:
source install.sh
Follow the instructions and compile the 5 parts. You might need to edit the install.sh
file to change the route of some libraries at the beginning.
Install the required python libraries:
pip install -r requirements.txt
You might need to use
pip3
instead ofpip
.
Download FEBio 2.x
from the official website as a standalone executable and add it to the path (replace {{{routetofebio}}}
with the path to your FEBio installation on this line):
export PATH="$PATH:{{{routetofebio}}}/FEBio-2.9.1/bin"
You can also add that line to your
.bashrc
file to make it permanent. Note the version number for FEBio on the path, it might be different.FEBio 3.x
might also work but has not been tested.
Usage
Copy the examples files to the parent folder and run them in a GPU-enabled machine with CUDA:
python example1.py
You might need to use
python3
instead ofpython
.
Each example file starts the pipeline from a different step, use example1.py
to start from the phantom generation (it will need hours to complete), use example5.py
to start from the projection step (it will finish in about ~10 minutes depending on your computer). When finished, you will find the results in the results
folder under the 1
subfolder.
File Name | Description |
---|---|
p_1.raw.gz | original phantom |
pc_1.raw.gz | compressed phantom |
pc_1_crop.raw.gz | cropped compressed phantom |
pcl_1.raw.gz | compressed original phantom with the inserted lesions |
pcl_1.loc | file containing the coordinates of the inserted lesions in the phantom (last number is the lesion type: 1 for calcification clusters, 2 for masses) |
projection_DM1.raw | contains the DM projection in raw format |
reconstruction1.raw | contains the DBT reconstruction in raw format |
ROIs.h5 | contains the lesion-present and lesion-absent regions of interest |
ROIs | subfolder will also contain the ROIs in raw format (size is specified in the code, 109 x 109 x 9 in the examples, T = 1 for calcification clusters, T = 2 for masses) |
ROIs\ROI_DM_XX_typeT | DM cropped image for lesion number XX of lesion type T (absent regions will have T < 0 ) |
ROIs\ROI_DBT_XX_typeT | DBT cropped volume for lesion number XX of lesion type T (absent regions will have T < 0 ) |
All
raw
files are acompanied by an.mhd
file that contains the size information. The.mhd
file can be opened in software like ImageJ
File list
The organization of the Victre pipeline python class is as follows:
File Name | Description |
---|---|
Pipeline.py | Main python class including all code necessary to run the Victre pipeline |
Constants.py | Helper file that includes default parameters for all the steps of the pipeline |
Exceptions.py | Helper file that defines Victre exceptions |
breastMass | Folder including the breastMass software, needs to be pre-compiled |
compression | Folder including the breastCompress software, needs to be pre-compiled |
generation | Folder including the breastPhantom software, needs to be pre-compiled |
projection | Folder including the MC-GPU software, needs to be pre-compiled |
reconstruction | Folder including the FBP software, needs to be pre-compiled |
ModelObserver | Folder including the Model Observer class |
See the examples and documentation to know more about the usage of the Victre pipeline.
This code is currently in development, use with caution.