Massively parallel Monte Carlo diffusion MR simulator written in Python.

Overview

Disimpy

Disimpy is a Python package for generating simulated diffusion-weighted MR signals that can be useful in the development and validation of data acquisition and analysis methods. The data is generated by Monte Carlo random walk simulations that run in massively parallel on Nvidia CUDA-capable GPUs. If you use Disimpy in work that leads to a scientific publication, please cite [1], where the details about signal generation can also be found.

Requirements and installation

Follow the installation instructions.

Usage example

Read the tutorial to learn how to use Disimpy.

Validation

Disimpy's functionality has been validated by comparing its results to analytical solutions and to results from other simulators (e.g., Camino and MISST), and by automated testing (disimpy.tests). Examples of simulations used for validation are provided here. However, Disimpy is research software and some bugs undoubtedly remain. If you find any of them or encounter unexpected behaviour, please open an issue on GitHub.

Contribute

If you want to contribute to the development of Disimpy, start by reading the contributing guidelines.

Support

If you have questions or need help, open an issue on Github.

References

[1] Kerkelä et al., (2020). Disimpy: A massively parallel Monte Carlo simulator for generating diffusion-weighted MRI data in Python. Journal of Open Source Software, 5(52), 2527. https://doi.org/10.21105/joss.02527
You might also like...
Official code of our work, AVATAR: A Parallel Corpus for Java-Python Program Translation.

AVATAR Official code of our work, AVATAR: A Parallel Corpus for Java-Python Program Translation. AVATAR stands for jAVA-pyThon progrAm tRanslation. AV

A lightweight Python-based 3D network multi-agent simulator. Uses a cell-based congestion model. Calculates risk, loudness and battery capacities of the agents. Suitable for 3D network optimization tasks.
A lightweight Python-based 3D network multi-agent simulator. Uses a cell-based congestion model. Calculates risk, loudness and battery capacities of the agents. Suitable for 3D network optimization tasks.

AMAZ3DSim AMAZ3DSim is a lightweight python-based 3D network multi-agent simulator. It uses a cell-based congestion model. It calculates risk, battery

UAV-Networks-Routing is a Python simulator for experimenting routing algorithms and mac protocols on unmanned aerial vehicle networks.

UAV-Networks Simulator - Autonomous Networking - A.A. 20/21 UAV-Networks-Routing is a Python simulator for experimenting routing algorithms and mac pr

Space Ship Simulator using python

FlyOver Basic space-ship simulator using python How to run? Just double click run.py What modules do i need? All modules that i currently using is bui

Enigma-Plus - Python based Enigma machine simulator with some extra features

Enigma-Plus Python based Enigma machine simulator with some extra features Examp

Compute execution plan: A DAG representation of work that you want to get done. Individual nodes of the DAG could be simple python or shell tasks or complex deeply nested parallel branches or embedded DAGs themselves.

Hello from magnus Magnus provides four capabilities for data teams: Compute execution plan: A DAG representation of work that you want to get done. In

API for RL algorithm design & testing of BCA (Building Control Agent) HVAC on EnergyPlus building energy simulator by wrapping their EMS Python API
API for RL algorithm design & testing of BCA (Building Control Agent) HVAC on EnergyPlus building energy simulator by wrapping their EMS Python API

RL - EmsPy (work In Progress...) The EmsPy Python package was made to facilitate Reinforcement Learning (RL) algorithm research for developing and tes

Code for
Code for "Diffusion is All You Need for Learning on Surfaces"

Source code for "Diffusion is All You Need for Learning on Surfaces", by Nicholas Sharp Souhaib Attaiki Keenan Crane Maks Ovsjanikov NOTE: the linked

 Learning Energy-Based Models by Diffusion Recovery Likelihood
Learning Energy-Based Models by Diffusion Recovery Likelihood

Learning Energy-Based Models by Diffusion Recovery Likelihood Ruiqi Gao, Yang Song, Ben Poole, Ying Nian Wu, Diederik P. Kingma Paper: https://arxiv.o

Comments
  • Importing .ply files into disimpy

    Importing .ply files into disimpy

    Dear disimpy creators/collaborators,

    I'm trying to simulate a geometry that was originally run in Camino, however, when I try to import the .ply using meshio, I get this geometry:

    image

    I then converted the .ply into .stl file using an free online tool, which apparently fixed the problem:

    image

    However, when I simulate it, I get something close to free water diffusion, even though I set the structure as periodic.

    image

    Please let me know if you have any recommendations or suggestions.

    Thanks, T

    opened by tsantini 8
  • Simulation for multiple substrates

    Simulation for multiple substrates

    Hi,

    I want to know if it is possible to define multiple substrates in a single simulation ? ( say having multiple spheres and ellipsoids in the same simulation environment)

    opened by alpha027 3
  • Development

    Development

    The recent commits in the development branch include improvements in the documentation, periodic boundary conditions, and new parameters in the main simulation function.

    opened by kerkelae 0
Owner
Leevi
Scientist and Python developer
Leevi
Code to go with the paper "Decentralized Bayesian Learning with Metropolis-Adjusted Hamiltonian Monte Carlo"

dblmahmc Code to go with the paper "Decentralized Bayesian Learning with Metropolis-Adjusted Hamiltonian Monte Carlo" Requirements: https://github.com

null 1 Dec 17, 2021
Finite-temperature variational Monte Carlo calculation of uniform electron gas using neural canonical transformation.

CoulombGas This code implements the neural canonical transformation approach to the thermodynamic properties of uniform electron gas. Building on JAX,

FermiFlow 9 Mar 3, 2022
Clustering with variational Bayes and population Monte Carlo

pypmc pypmc is a python package focusing on adaptive importance sampling. It can be used for integration and sampling from a user-defined target densi

null 45 Feb 6, 2022
Mini-hmc-jax - A simple implementation of Hamiltonian Monte Carlo in JAX

mini-hmc-jax This is a simple implementation of Hamiltonian Monte Carlo in JAX t

Martin Marek 6 Mar 3, 2022
PyElecCL - Electron Monte Carlo Second Checks

PyElecCL Python program to perform second checks for electron Monte Carlo radiat

Reese Haywood 3 Feb 22, 2022
Minimal diffusion models - Minimal code and simple experiments to play with Denoising Diffusion Probabilistic Models (DDPMs)

Minimal code and simple experiments to play with Denoising Diffusion Probabilist

Rithesh Kumar 16 Oct 6, 2022
Pytorch-diffusion - A basic PyTorch implementation of 'Denoising Diffusion Probabilistic Models'

PyTorch implementation of 'Denoising Diffusion Probabilistic Models' This reposi

Arthur Juliani 76 Jan 7, 2023
NAS Benchmark in "Prioritized Architecture Sampling with Monto-Carlo Tree Search", CVPR2021

NAS-Bench-Macro This repository includes the benchmark and code for NAS-Bench-Macro in paper "Prioritized Architecture Sampling with Monto-Carlo Tree

null 35 Jan 3, 2023
JumpDiff: Non-parametric estimator for Jump-diffusion processes for Python

jumpdiff jumpdiff is a python library with non-parametric Nadaraya─Watson estimators to extract the parameters of jump-diffusion processes. With jumpd

Rydin 28 Dec 10, 2022