This repo is outdated and work in progress. Please use the implementation in DIPY (>=1.4.0) for the best possible implementation of Patch2Self.
Video on how to use: YouTube
Medium Article for detailed instructions: Blogpost Link
This repo demonstrates a framework (Patch2Self) for denoising Diffusion MRI, as described in the paper: NeurIPS Spotlight
The main model to perform the denoising is contained in:
model/patch2self.py
We provide support for 4 different types of regressors:
- Ordinary Least Squares ('ols')
- Ridge ('ridge')
- Lasso ('lasso')
- Multilayer Perceptron ('mlp')
# load the 4D DWI data
denoised_data = patch2self(data, model='ridge')
# one can save the denoised data in the Nifti file format using DIPY:
from dipy.io.image import save_nifti
save_nifti('filename.nii.gz', denoised data, np.eye(4))
Tutorial Notebooks:
Denoise various datasets shows how patch2self
can be used to denoise different datasets.
Denoising simulated phantom shows how patch2self
works on denoising on simulated data.
Regression Comparison shows effect of patch2self
using different regressors mentioned above. To run the MLP Regressor, make sure to run the MLP Regressor first.
Tractography Comparison shows effect of patch2self
on tractography using probabilistic tractography via CSA
and CSD
. We show comparison between different denoising algorithms using Fiber Bundle Coherency metric explaines in the paper.
Voxel-wise k-fold Crossvalidation and Box-plots: k-fold Crossvalidation shows the k-fold crossvalidation analyses.
Diffusion Kurtosis Imaging Analysis depicts the effects denoising on DKI maps.
- Links to the data used in the above tutorials are provided in the supplement.
Dependencies are in the environment.yml
file.