From b04e2d5ef565557e019ed6aad3773bc0426c300d Mon Sep 17 00:00:00 2001 From: Miguel Lago Date: Wed, 23 Dec 2020 13:04:22 -0500 Subject: [PATCH] Update --- README.md | 108 ++++++++++++++++++++++- index.html | 3 +- latex/md_README.tex | 7 ++ latex/md_Victre_breastMass_README_bm.tex | 11 +++ latex/refman.tex | 10 ++- md_README.html | 92 +++++++++++++++++++ md_Victre_breastMass_README.html | 5 +- md_Victre_breastMass_README_bm.html | 94 ++++++++++++++++++++ pages.html | 7 +- search/all_62.js | 5 +- search/all_72.js | 2 +- search/all_76.js | 11 +-- search/files_72.js | 2 +- search/pages_62.js | 2 +- search/pages_76.html | 26 ++++++ search/pages_76.js | 4 + search/search.js | 8 +- 17 files changed, 361 insertions(+), 36 deletions(-) create mode 100644 latex/md_README.tex create mode 100644 latex/md_Victre_breastMass_README_bm.tex create mode 100644 md_README.html create mode 100644 md_Victre_breastMass_README_bm.html create mode 100644 search/pages_76.html create mode 100644 search/pages_76.js diff --git a/README.md b/README.md index 6949122..f283a9b 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,111 @@ -## VICTRE PIPELINE DOCUMENTATION +# VICTRE PIPELINE DOCUMENTATION **Author**: Miguel A. Lago -## DOCUMENTATION +## Documentation You can find the documentation in this link: https://malago86.github.io/victre_docs/annotated.html -Report your issues and requests here: https://github.com/malago86/VICTRE_PIPELINE \ No newline at end of file +Report your issues and requests here: https://github.com/malago86/VICTRE_PIPELINE + +## Introduction + +The Victre automated pipeline currently supports the following steps: +- Mass lesion generation (using [breastMass](https://github.com/DIDSR/breastMass)) +- X-Ray Projection (using [VICTRE_MCGPU](https://github.com/DIDSR/VICTRE_MCGPU)) +- DBT Reconstruction ([customized code](https://github.com/DIDSR/VICTRE/tree/master/FBP%20DBT%20reconstruction%20in%20C)) +- Region of Interest extraction + +## Example + +### Step 1: Create the pipeline object +To start a new pipeline object use this function: + +``` +import Victre +pline = Victre.Pipeline(ip={"cpu": CPU_IP, "gpu": GPU_IP}, + phantom_file=PHANTOM_FILE) +``` + +- `ip`: dictionary with the following two fields (use `localhost` if running in local machine) + - `gpu`: IP address for the GPU enabled node that will run the projection + - `cpu`: IP address for a computing node +- `phantom_file`: path to a previously generated voxelized phantom in raw format + +Optional parameters: +- `seed`: random seed used for the lesion insertion and ROI extraction +- `results_folder`: Path to folder to be used when saving the results +- `spectrum_file`: path to a previously generated spectrum file in raw format +- `lesion_file` Path to file containing the lesion to be inserted (in HDF5 format) +- `materials` Dictionary including the materials to be used during projection (see Constants for an example of this dictionary) +- `arguments_mcgpu` Arguments to be overridden for the projection in MCGPU +- `arguments_recon` Arguments to be overridden for the reconstruction algorithm +- `flatfield_file` Path to the flatfield file for projection + +### Step 2: Insert lesions + +Create the region of interest dictionary for the lesions you want to insert: + +``` +roi_sizes = {Constants.VICTRE_SPICULATED: [109, 109, 9], + Constants.VICTRE_CLUSTERCALC: [65, 65, 5]} +``` +Call the `insert_lesions` method: +``` +pline.insert_lesions(lesion_type=Constants.VICTRE_SPICULATED, + n=2, + roi_sizes=roi_sizes) +``` +- `lesion_type`: see Constants for a list of available lesion types +- `n`: number of lesions to be inserted +- `roi_sizes`: dictionary with the size of the regions of interest for each lesion + +> If the number of lesions is too high or the lesion size is too large, the insertion might not be successful. + +### Step 3: Project and reconstruct + +Simply call the following methods: +``` +pline.project() +pline.reconstruct() +``` + +The process will take several minutes, depending on the speed and number of GPUs available. + +### Step 4: Add absent regions of interest + +If you want to extract regions of interest without any lesion, call the `add_absent_ROIs` method: + +``` +pline.add_absent_ROIs(lesion_type=Constants.VICTRE_SPICULATED, + n=2, + roi_sizes=roi_sizes) +``` + +Parameters and conditions are the same as for `insert_lesions`. + +### Step 5: Extract ROIs + +To extract the ROIs and save them, use the method `save_ROIs` with the dictionary for the `roi_sizes` to be used for each type of lesion inserted. + +``` +save_ROIs(roi_sizes=roi_sizes) +``` + +## Results + +The Victre pipeline saves the results of each step this way: +- **Insertion**: Results from the lesion insertion will be saved in the `phantom` subfolder as: + - One gzip compressed raw file containing the voxelized phantom + - One text file (extension `.loc`) with the locations coordinates in the original phantom for each lesion and the lesion type (negative lesion types are for absent regions of interest) +- **Projection**: Results from the projection will be saved in the `results` folder in their corresponding seed folder: + - A number of projection raw files from `projection_0001.raw` to `projection_0025.raw` (or the number of projections requested) + - One projection corresponding to the digital mammography projection `projection_0000.raw` + - The input and output file for the MCGPU software `input_mcgpu.in` and `output_mcgpu.out` +- **Reconstruction**: Results from the reconstruction will be saved along the results from the projection: + - One file `reconstruction.raw` with the results from the reconstruction software for the DBT image + - One file `projection_3000x1500pixels_25proj.raw` that is all the stacked projection slices + - The input and output file for the reconstruction software `input_recon.in` and `output_recon.out` +- **ROI**: Results from the ROI extraction will be saved in two different ways along with the other result files: + - All the ROIs together saved as an HDF5 file `ROIs.h5` + - Each ROI saved in raw format inside the `ROIs` subfolder \ No newline at end of file diff --git a/index.html b/index.html index f418fce..f70cffa 100644 --- a/index.html +++ b/index.html @@ -38,6 +38,7 @@
diff --git a/latex/md_README.tex b/latex/md_README.tex new file mode 100644 index 0000000..c568c47 --- /dev/null +++ b/latex/md_README.tex @@ -0,0 +1,7 @@ +{\bfseries Author}\-: Miguel A. Lago + +\subsection*{D\-O\-C\-U\-M\-E\-N\-T\-A\-T\-I\-O\-N} + +You can find the documentation in this link\-: \href{https://malago86.github.io/victre_docs/annotated.html}{\tt https\-://malago86.\-github.\-io/victre\-\_\-docs/annotated.\-html} + +Report your issues and requests here\-: \href{https://github.com/malago86/VICTRE_PIPELINE}{\tt https\-://github.\-com/malago86/\-V\-I\-C\-T\-R\-E\-\_\-\-P\-I\-P\-E\-L\-I\-N\-E} \ No newline at end of file diff --git a/latex/md_Victre_breastMass_README_bm.tex b/latex/md_Victre_breastMass_README_bm.tex new file mode 100644 index 0000000..e5c5c2e --- /dev/null +++ b/latex/md_Victre_breastMass_README_bm.tex @@ -0,0 +1,11 @@ +Breast Mass Generation Software + +{\bfseries Documentation and installation instructions are available here\-:} \href{https://breastMass.readthedocs.io}{\tt breast\-Mass.\-readthedocs.\-io}. + +The project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the C\-C0 1.\-0 Universal public domain dedication. See the C\-O\-P\-Y\-I\-N\-G.\-txt file in this repository to view the entire C\-C0 dedication. + +All contributions to this project will be released under the C\-C0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest. + +\subsection*{Disclaimer} + +This software and documentation (the \char`\"{}\-Software\char`\"{}) were developed at the Food and Drug Administration (F\-D\-A) 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. F\-D\-A 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 F\-D\-A 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. \ No newline at end of file diff --git a/latex/refman.tex b/latex/refman.tex index 5429661..b3e9ee3 100644 --- a/latex/refman.tex +++ b/latex/refman.tex @@ -67,8 +67,8 @@ \fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} \fancyfoot[LE]{\fancyplain{}{}} \fancyfoot[CE]{\fancyplain{}{}} -\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Dec 11 2020 15\-:23\-:52 for Victre 2.\-0 Pipeline by Doxygen }} -\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Fri Dec 11 2020 15\-:23\-:52 for Victre 2.\-0 Pipeline by Doxygen }} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Dec 21 2020 14\-:46\-:08 for Victre 2.\-0 Pipeline by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Mon Dec 21 2020 14\-:46\-:08 for Victre 2.\-0 Pipeline by Doxygen }} \fancyfoot[CO]{\fancyplain{}{}} \fancyfoot[RO]{\fancyplain{}{}} \renewcommand{\footrulewidth}{0.4pt} @@ -120,7 +120,7 @@ \vspace*{1cm} {\large Generated by Doxygen 1.8.5}\\ \vspace*{0.5cm} -{\small Fri Dec 11 2020 15:23:52}\\ +{\small Mon Dec 21 2020 14:46:08}\\ \end{center} \end{titlepage} \clearemptydoublepage @@ -132,6 +132,10 @@ %--- Begin generated contents --- \chapter{Main Page} \label{index}\hypertarget{index}{}\input{index} +\chapter{breast\-Mass} +\label{md_Victre_breastMass_README_bm} +\hypertarget{md_Victre_breastMass_README_bm}{} +\input{md_Victre_breastMass_README_bm} %--- End generated contents --- % Index diff --git a/md_README.html b/md_README.html new file mode 100644 index 0000000..cde1bca --- /dev/null +++ b/md_README.html @@ -0,0 +1,92 @@ + + + + + + +Victre 2.0 Pipeline: VICTRE PIPELINE + + + + + + + + + +
+
+ + + + + + +
+
Victre 2.0 Pipeline +  0.0.1 +
+
+
+ + + + + + + + +
+ +
+ +
+
+
+
VICTRE PIPELINE
+
+
+

Author: Miguel A. Lago

+

DOCUMENTATION

+

You can find the documentation in this link: https://malago86.github.io/victre_docs/annotated.html

+

Report your issues and requests here: https://github.com/malago86/VICTRE_PIPELINE

+
+ + + + diff --git a/md_Victre_breastMass_README.html b/md_Victre_breastMass_README.html index b34dfa7..4b5b7c8 100644 --- a/md_Victre_breastMass_README.html +++ b/md_Victre_breastMass_README.html @@ -39,9 +39,6 @@
diff --git a/md_Victre_breastMass_README_bm.html b/md_Victre_breastMass_README_bm.html new file mode 100644 index 0000000..4b5b7c8 --- /dev/null +++ b/md_Victre_breastMass_README_bm.html @@ -0,0 +1,94 @@ + + + + + + +Victre 2.0 Pipeline: breastMass + + + + + + + + + +
+
+ + + + + + +
+
Victre 2.0 Pipeline +  0.0.1 +
+
+
+ + + + + + + + +
+ +
+ +
+
+
+
breastMass
+
+
+

Breast Mass Generation Software

+

Documentation and installation instructions are available here: breastMass.readthedocs.io.

+

The project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication. See the COPYING.txt file in this repository to view the entire CC0 dedication.

+

All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.

+

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.

+
+ + + + diff --git a/pages.html b/pages.html index f02f754..9ac3c4e 100644 --- a/pages.html +++ b/pages.html @@ -39,9 +39,6 @@
@@ -82,7 +79,7 @@
Here is a list of all related documentation pages:
diff --git a/search/all_62.js b/search/all_62.js index 2f156ec..ca4039b 100644 --- a/search/all_62.js +++ b/search/all_62.js @@ -1,7 +1,4 @@ var searchData= [ - ['backproj',['BACKPROJ',['../Aunnasha__code__read__inputfile_2FBP__DBTrecon_8h.html#ae08cb97bdcd390fc2cde9dc4595eaf3eabcb319b6fcc7bdc4d545de010cb8ab29',1,'BACKPROJ(): FBP_DBTrecon.h'],['../coneBeam_8h.html#ae08cb97bdcd390fc2cde9dc4595eaf3eabcb319b6fcc7bdc4d545de010cb8ab29',1,'BACKPROJ(): coneBeam.h'],['../FBP__DBTrecon_8h.html#ae08cb97bdcd390fc2cde9dc4595eaf3eabcb319b6fcc7bdc4d545de010cb8ab29',1,'BACKPROJ(): FBP_DBTrecon.h']]], - ['breastmass_2ecxx',['breastMass.cxx',['../breastMass_8cxx.html',1,'']]], - ['breastmass_2ehxx',['breastMass.hxx',['../breastMass_8hxx.html',1,'']]], - ['buffer',['buffer',['../olderversiondata_8c.html#a01c67d31766450ee979d1fb5af33e1bc',1,'olderversiondata.c']]] + ['breastmass',['breastMass',['../md_Victre_breastMass_README_bm.html',1,'']]] ]; diff --git a/search/all_72.js b/search/all_72.js index a1c2c04..2d07c68 100644 --- a/search/all_72.js +++ b/search/all_72.js @@ -1,5 +1,5 @@ var searchData= [ ['readme_2emd',['README.md',['../README_8md.html',1,'']]], - ['readme_2emd',['README.md',['../Victre_2breastMass_2README_8md.html',1,'']]] + ['readme_5fbm_2emd',['README_bm.md',['../README__bm_8md.html',1,'']]] ]; diff --git a/search/all_76.js b/search/all_76.js index 4ede04f..81e1473 100644 --- a/search/all_76.js +++ b/search/all_76.js @@ -1,13 +1,4 @@ var searchData= [ - ['constants',['Constants',['../namespaceVictre_1_1Constants.html',1,'Victre']]], - ['exceptions',['Exceptions',['../namespaceVictre_1_1Exceptions.html',1,'Victre']]], - ['pipeline',['Pipeline',['../namespaceVictre_1_1Pipeline.html',1,'Victre']]], - ['version',['version',['../namespaceconf.html#ade15c5b54093b64d7c428ec19ca5b1cb',1,'conf']]], - ['victre',['Victre',['../namespaceVictre.html',1,'']]], - ['victre_5fclustercalc',['VICTRE_CLUSTERCALC',['../namespaceVictre_1_1Constants.html#a77bdb782c53bfcba86298b9dbf9badf8',1,'Victre::Constants']]], - ['victre_5fdefault_5fmaterials',['VICTRE_DEFAULT_MATERIALS',['../namespaceVictre_1_1Constants.html#a2ffc77ab0e4ac3a91b60dd45022fcdf1',1,'Victre::Constants']]], - ['victre_5fspiculated',['VICTRE_SPICULATED',['../namespaceVictre_1_1Constants.html#a958697a0c4859c6af5fa5b86ca200122',1,'Victre::Constants']]], - ['victreerror',['VictreError',['../classVictre_1_1Exceptions_1_1VictreError.html',1,'Victre::Exceptions']]], - ['vx_5flocations',['vx_locations',['../namespacerun__pipeline.html#a6b679545160329ef5ae04905e0fc0f70',1,'run_pipeline.vx_locations()'],['../namespacetest__pipeline.html#a0891497d3339772fa64ecb2ef3816a8a',1,'test_pipeline.vx_locations()']]] + ['victre_20pipeline',['VICTRE PIPELINE',['../md_README.html',1,'']]] ]; diff --git a/search/files_72.js b/search/files_72.js index a1c2c04..2d07c68 100644 --- a/search/files_72.js +++ b/search/files_72.js @@ -1,5 +1,5 @@ var searchData= [ ['readme_2emd',['README.md',['../README_8md.html',1,'']]], - ['readme_2emd',['README.md',['../Victre_2breastMass_2README_8md.html',1,'']]] + ['readme_5fbm_2emd',['README_bm.md',['../README__bm_8md.html',1,'']]] ]; diff --git a/search/pages_62.js b/search/pages_62.js index dc2cf7a..ca4039b 100644 --- a/search/pages_62.js +++ b/search/pages_62.js @@ -1,4 +1,4 @@ var searchData= [ - ['breastmass',['breastMass',['../md_Victre_breastMass_README.html',1,'']]] + ['breastmass',['breastMass',['../md_Victre_breastMass_README_bm.html',1,'']]] ]; diff --git a/search/pages_76.html b/search/pages_76.html new file mode 100644 index 0000000..128ed4e --- /dev/null +++ b/search/pages_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/search/pages_76.js b/search/pages_76.js new file mode 100644 index 0000000..81e1473 --- /dev/null +++ b/search/pages_76.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['victre_20pipeline',['VICTRE PIPELINE',['../md_README.html',1,'']]] +]; diff --git a/search/search.js b/search/search.js index 1cb9061..d62b59f 100644 --- a/search/search.js +++ b/search/search.js @@ -7,14 +7,16 @@ var indexSectionsWithContent = { - 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }; var indexSectionNames = { 0: "all", - 1: "files" + 1: "files", + 2: "pages" }; function convertToId(search)