Diff of /readme.md [000000] .. [cb5984]

Switch to side-by-side view

--- a
+++ b/readme.md
@@ -0,0 +1,199 @@
+# HD-GLIO
+
+## Introduction
+
+This repository provides easy to use access to our HD-GLIO brain tumor segmentation tool. HD-GLIO is the result of a 
+joint project between the Department of Neuroradiology at the Heidelberg University Hospital, Germany and the 
+Division of Medical Image Computing at the German Cancer Research Center (DKFZ) Heidelberg, Germany. If you are using 
+HD-GLIO, please cite the following two publications:
+
+- Kickingereder P, Isensee F, Tursunova I, Petersen J, Neuberger U, Bonekamp D, Brugnara G, Schell M, Kessler T, 
+Foltyn M, Harting I, Sahm F, Prager M, Nowosielski M, Wick A, Nolden M, Radbruch A, Debus J, Schlemmer HP, Heiland S, 
+Platten M, von Deimling A, van den Bent MJ, Gorlia T, Wick W, Bendszus M, Maier-Hein KH. Automated quantitative tumour 
+response assessment of MRI in neuro-oncology with artificial neural networks: a multicentre, retrospective study. 
+Lancet Oncol. 2019 May;20(5):728-740. (https://doi.org/10.1016/S1470-2045(19)30098-1)
+- Isensee F, Petersen J, Kohl SAA, Jaeger PF, Maier-Hein KH. nnU-Net: Breaking the Spell on 
+Successful Medical Image Segmentation. arXiv preprint 2019 arXiv:1904.08128. (https://arxiv.org/abs/1904.08128)
+
+HD-GLIO was developed with 3220 MRI examinations from 1450 brain tumor patients (80% for training and 20% for testing). 
+Specifically the data included:
+1) a single-institutional retrospective dataset with 694 MRI examinations from 495 patients acquired at the 
+Department of Neuroradiology, Heidelberg University Hospital, Germany (corresponding to the “Heidelberg training 
+dataset and Heidelberg test dataset” described in Kickingereder et al. Lancet Oncol. 2019)
+2) a multicentric clinical trial dataset with 2034 MRI examinations from 532 patients acquired across 34 institutions 
+in Europe  (corresponding to the “EORTC-26101 test dataset” described in Kickingereder et al. Lancet Oncol. 2019)
+3) a single-institutional retrospective dataset with 492 MRI examinations from 423 patients (80% glial brain tumors, 
+20% other histological entities) undergoing routine MRI at different stages of the disease (including 79 early 
+postoperative MRI scans acquired <72h after surgery) at the Department of Neuroradiology, Heidelberg University 
+Hospital, Germany 
+ 
+Specifically, each MRI examination included precontrast T1-weighted, postcontrast T1-weighted, T2-weighted and FLAIR 
+sequences (all sequences brain extracted and co-registered) as well as corresponding ground-truth tumor segmentation 
+masks. HD-GLIO performs brain tumor segmentation for contrast-enhancing tumor and non-enhancing T2/FLAIR signal 
+abnormality. We applied a variant of the nnU-Net ('no-new-Net') framework (as described in Isensee et al. arXiv preprint 2019) 
+for training the HD-GLIO algorithm.
+
+HD-GLIO is very fast on GPU with <10s run time per MRI examination. 
+
+## Installation Instructions
+
+###  Installation Requirements
+Unlike HD-BET, HD-GLIO requires a GPU to perform brain tumor segmentation. Any GPU with 4 GB of VRAM and cuda/pytorch 
+support will do. 
+Running the prediction on CPU is not supported.
+
+### Installation with Pip
+Installation with pip is quick an easy, just run the following command and everything will be done for you:
+
+`pip install hd_glio`
+
+### Manual installation
+If you intend to modify HD-GLIO, you can also install is manually:
+
+1) Clone this repository:
+    
+    `git clone https://github.com/MIC-DKFZ/HD-GLIO`
+
+2) Go into the repository (the folder with the setup.py file) and install:
+
+    `cd HD-GLIO`
+
+    `pip install -e .`
+
+Per default, model parameters will be downloaded to ~/.hd_glio_params. If you wish to use a different folder, open 
+hd_glio/paths.py in a text editor and modify folder_with_parameter_files.
+
+
+Both manual and pip installation will install two commands with which you can use HD-GLIO from anywhere in your 
+system: `hd_glio_predict` and `hd_glio_predict_folder`.
+
+## How to use it
+Using HD_GLIO is straightforward. You can use it in any terminal on your linux system. The `hd_glio_predict` and 
+`hd_glio_predict_folder` commands were installed automatically. HD-GLIO requires a GPU with at least 4 GB of VRAM to run. 
+
+### Prerequisites
+HD-GLIO was trained with four MRI modalities: T1, constrast-enhanced T1, T2 and FLAIR. All these modalities must be present
+in order to run HD-GLIO. 
+
+All input files must be provided as nifti (.nii.gz) files containing 2D or 3D MRI image data. Sequences with 
+multiple temporal volumes (i.e. 4D sequences) are not supported (however can be splitted upfront into the individual 
+temporal volumes using fslsplit1). 
+
+- INPUT_T1 must be a T1-weighted sequence before contrast-agent administration (T1-w) acquired as 2D with axial 
+orientation (e.g. TSE) or as 3D (e.g. MPRAGE)
+- INPUT_CT1 must be a T1-weighted sequence after contrast-agent administration (cT1-w) acquired as 2D with axial 
+orientation (e.g. TSE) or as 3D (e.g. MPRAGE)
+- INPUT_T2 must be a T2-weighted sequence (T2-w) acquired as 2D 
+- INPUT_FLAIR must be a fluid attenuated inversion recovery (FLAIR) sequence acquired as 2D with axial orientation
+ (e.g. TSE). A 3D acquisition (e.g. 3D TSE/FSE) may work as well.
+ 
+(These specifications are in line with the consensus recommendations for a standardized brain tumor imaging protocol 
+in clinical trials - see Ellingson et al. Neuro Oncol. 2015 Sep;17(9):1188-98 - www.ncbi.nlm.nih.gov/pubmed/26250565)
+
+Input files must contain 3D images; Sequences with multiple temporal volumes (i.e. 4D sequences) are not supported 
+(however can be splitted upfront into the individual temporal volumes using fslsplit<sup>1</sup>).
+
+All input files must match the orientation of standard MNI152 template and must be brain extracted and co-registered. 
+All non-brain voxels must be 0.
+To ensure that these pre-processing steps are performed correctly you may adhere to the following example:
+
+##### Reorient MRI sequences to standard space
+
+```
+fslreorient2std T1.nii.gz T1_reorient.nii.gz
+fslreorient2std CT1.nii.gz CT1_reorient.nii.gz
+fslreorient2std T2.nii.gz T2_reorient.nii.gz
+fslreorient2std FLAIR.nii.gz FLAIR_reorient.nii.gz
+```
+
+##### The following is the recommended workflow for FSL5. There is a better way to do this but this requires FSL6 (see below)
+```
+# perform brain extraction using HD-BET (https://github.com/MIC-DKFZ/HD-BET)
+hd-bet -i T1_reorient.nii.gz
+hd-bet -i CT1_reorient.nii.gz
+hd-bet -i T2_reorient.nii.gz
+hd-bet -i FLAIR_reorient.nii.gz 
+
+# register all sequences to T1
+fsl5.0-flirt -in CT1_reorient_bet.nii.gz -ref T1_reorient_bet.nii.gz -out CT1_reorient_bet_reg.nii.gz -dof 6 -interp spline
+fsl5.0-flirt -in T2_reorient_bet.nii.gz -ref T1_reorient.nii.gz -out T2_reorient_bet_reg.nii.gz -dof 6 -interp spline
+fsl5.0-flirt -in FLAIR_reorient_bet.nii.gz -ref T1_reorient.nii.gz -out FLAIR_reorient_bet_reg.nii.gz -dof 6 -interp spline
+
+# reapply T1 brain mask (this is important because HD-GLIO expects non-brain voxels to be 0 and the registration 
+process can introduce nonzero values
+# T1_BRAIN_MASK.nii.gz is the mask (not the brain extracted image!) as obtained from HD-Bet
+fsl5.0-fslmaths CT1_reorient_bet_reg.nii.gz -mas T1_BRAIN_MASK.nii.gz CT1_reorient_bet_reg.nii.gz
+fsl5.0-fslmaths T2_reorient_bet_reg.nii.gz -mas T1_BRAIN_MASK.nii.gz T2_reorient_bet_reg.nii.gz
+fsl5.0-fslmaths FLAIR_reorient_bet_reg.nii.gz -mas T1_BRAIN_MASK.nii.gz FLAIR_reorient_bet_reg.nii.gz
+```
+
+##### This is how to do it with FSL6:
+```
+# run hd bet
+hd-bet -i T1_reorient.nii.gz -o t1_bet.nii.gz -s 1
+hd-bet -i CT1_reorient.nii.gz -o ct1_bet.nii.gz
+hd-bet -i T2_reorient.nii.gz -o t2_bet.nii.gz
+hd-bet -i FLAIR_reorient.nii.gz -o flair_bet.nii.gz
+
+# register brain extracted images to t1, save matrix
+flirt -in ct1_bet.nii.gz -out ct1_bet_reg.nii.gz -ref t1_bet.nii.gz -omat ct1_to_t1.mat -interp spline -dof 6 &
+flirt -in t2_bet.nii.gz -out t2_bet_reg.nii.gz -ref t1_bet.nii.gz -omat t2_to_t1.mat -interp spline -dof 6 &
+flirt -in flair_bet.nii.gz -out flair_bet_reg.nii.gz -ref t1_bet.nii.gz -omat flair_to_t1.mat -interp spline -dof 6 &
+wait
+
+# we are only interested in the matrices, delete the other output images
+rm ct1_bet.nii.gz t2_bet.nii.gz flair_bet.nii.gz
+rm ct1_bet_reg.nii.gz t2_bet_reg.nii.gz flair_bet_reg.nii.gz
+
+# now apply the transformation matrices to the original images (pre hd-bet)
+flirt -in CT1_reorient.nii.gz -out ct1_reg.nii.gz -ref t1_bet.nii.gz -applyxfm -init ct1_to_t1.mat -interp spline &
+flirt -in T2_reorient.nii.gz -out t2_reg.nii.gz -ref t1_bet.nii.gz -applyxfm -init t2_to_t1.mat -interp spline &
+flirt -in FLAIR_reorient.nii.gz -out flair_reg.nii.gz -ref t1_bet.nii.gz -applyxfm -init flair_to_t1.mat -interp spline &
+wait
+
+# now apply t1 brain mask to all registered images
+fslmaths ct1_reg.nii.gz -mas t1_bet_mask.nii.gz CT1_reorient_reg_bet.nii.gz & # t1_bet_mask.nii.gz was generated by hd-bet (see above)
+fslmaths t2_reg.nii.gz -mas t1_bet_mask.nii.gz T2_reorient_reg_bet.nii.gz & # t1_bet_mask.nii.gz was generated by hd-bet (see above)
+fslmaths flair_reg.nii.gz -mas t1_bet_mask.nii.gz FLAIR_reorient_reg_bet.nii.gz & # t1_bet_mask.nii.gz was generated by hd-bet (see above)
+wait
+
+# done
+```
+
+After applying this example you would use `T1_reorient.nii.gz`, `CT1_reorient_reg_bet.nii.gz`, `T2_reorient_reg_bet.nii.gz` 
+and `FLAIR_reorient_reg_bet.nii.gz` to proceed.
+
+
+### Run HD-GLIO
+HD-GLIO provides two main scripts: `hd_glio_predict` and `hd_glio_predict_folder`.
+
+#### Predicting a single case
+`hd_glio_predict` can be used to predict a single case. It is useful for exploration or if the number of cases to be 
+procesed is low. Here is how to use it:
+
+`hd_glio_predict -t1 T1_FILE -t1c CT1_FILE -t2 T2_FILE -flair FLAIR_FILE -o OUTPUT_FILE`
+
+T1_FILE, CT1_FILE, T2_FILE, FLAIR_FILE and OUTPUT_FILE must all be niftis (end with .nii.gz). The four input files must 
+be preprocesed as specified in *How to use it - Prerequisites* (ses above). 
+
+#### Predicting multiple cases
+`hd_glio_predict_folder` is useful for batch processing, especially if the number of cases to be processed is large. By 
+interleaving preprocessing, inference and segmentation export we can speed up the prediction significantly. Furthermore, 
+the pipeline is initialized only once for all cases, again saving a lot of computation time.  Here is how to use it:
+
+`hd_glio_predict_folder -i INPUT_FOLDER -o OUTPUT_FOLDER`
+
+INPUT_FOLDER hereby contains the T1, T1c, T2 and FLAIR images. In order to ensure that HD-GLIO correctly assigns 
+filenames to modalities, you **must** apply the following naming convention to your data
+
+- INPUT_T1: PATIENT_IDENTIFIER_0000.nii.gz
+- INPUT_CT1: PATIENT_IDENTIFIER_0001.nii.gz
+- INPUT_T2: PATIENT_IDENTIFIER_0002.nii.gz
+- INPUT_FLAIR: PATIENT_IDENTIFIER_0003.nii.gz
+
+Hereby, PATIENT_IDENTIFIER can be anything. You can use an arbitrary number of patients (by using a different 
+PATIENT_IDENTIFIER for each patient). Predicted segmentations will be saved as `PATIENT_IDENTIFIER.nii.gz` in the 
+OUTPUT_FOLDER
+
+
+<sup>1</sup>https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Fslutils