Lewis-Kitchingman / VIC-HACK-2024

Repository for VIC-HACK 2024 projects
0 stars 1 forks source link

[Project] MicroTorch: a software package for self-supervised microstructure model fitting #3

Open snigdha-sen opened 5 months ago

snigdha-sen commented 5 months ago

Title: Microtorch – a software package for self-supervised microstructure model fitting

Project Leader: Snigdha Sen

Description: Traditionally, diffusion MRI microstructural models are fit using a non-linear least squared based curve fitting approach, but this computationally expensive and prone to estimation errors. Machine learning has emerged as a powerful technique for model fitting, but the majority of approaches use supervised learning, where biases may arise due to the distribution of the training data. Self-supervised learning circumvents this issue by removing the need for training data – this technique has been used widely to fit the IVIM model and also for VERDICT. In this project, we aim to develop a software package called Microtorch, which has some pre-existing functionality for self-supervised model fitting. We would like to expand the range of models and neural network architectures included and adhere to software development best practices by adding features such as documentation and unit tests.

Participant Requirements: Both knowledge of microstructure modelling and Python programming would be useful but not essential. The codebase utilises PyTorch.

Some First Issues:

  1. Adapt the command line statement to require fewer manual inputs
    • Write a function to merge the compartments of common multi-compartment models e.g. VERDICT will automatically call BallSphereAstrosticks
  2. Work out how to incorporate a spherical convolution for models such as the standard model for white matter
  3. Trial some different functions e.g. sigmoid to replace torch.clamp for parameter range boundaries
  4. Unit tests and validation
    • Compare with dmipy, camino, MD-dMRI, dipy
    • Create small test dataset with a wide range of parameters, maybe using DiffSimGen
  5. Trial using GPT to convert models (e.g. from dmipy) to PyTorch differentiable format
  6. Documentation
  7. Develop a CNN fitting architecture

Useful Links: