All Projects → lamyj → sycomore

lamyj / sycomore

Licence: MIT License
MRI simulation toolkit

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
matlab
3953 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to sycomore

MRSignalsSeqs
Stanford University Rad229 Class Code: MRI Signals and Sequences
Stars: ✭ 72 (+453.85%)
Mutual labels:  mri, epg
ls1-mardyn
ls1-MarDyn is a massively parallel Molecular Dynamics (MD) code for large systems. Its main target is the simulation of thermodynamics and nanofluidics. ls1-MarDyn is designed with a focus on performance and easy extensibility.
Stars: ✭ 17 (+30.77%)
Mutual labels:  simulation
PROSTATEx masks
Lesion and prostate masks for the PROSTATEx training dataset, after a lesion-by-lesion quality check.
Stars: ✭ 42 (+223.08%)
Mutual labels:  mri
Black-Scholes-Option-Pricing-Model
Black Scholes Option Pricing calculator with Greeks and implied volatility computations. Geometric Brownian Motion simulator with payoff value diagram and volatility smile plots. Java GUI.
Stars: ✭ 25 (+92.31%)
Mutual labels:  simulation
Lithography-Simulation
Github repository to share some insights about lithography simulation.
Stars: ✭ 27 (+107.69%)
Mutual labels:  simulation
osparc-simcore
osparc-simcore simulation framework
Stars: ✭ 18 (+38.46%)
Mutual labels:  simulation
Virtual-Robot-Challenge
How-to on simulating a robot with V-REP and controlling it with ROS
Stars: ✭ 83 (+538.46%)
Mutual labels:  simulation
orbital-sim
A simple physics engine build over a PyGame simulation to accurately model planetary orbits in space
Stars: ✭ 31 (+138.46%)
Mutual labels:  simulation
iptvx
IPTV player and streamer for Linux that allows to play any stream that LibVLC can play, offers an overlay based on WebKit using HTML5, JavaScript and CSS and uses XMLTV data for EPG information. It allows the playback of URLs, files and can grab URLs from shell scripts. XMLTV EPG data can be downloaded from URLs or grabbed from shell scripts.
Stars: ✭ 65 (+400%)
Mutual labels:  epg
pypuf
Cryptanalysis of Physically Unclonable Functions
Stars: ✭ 39 (+200%)
Mutual labels:  simulation
mdtoolbox
MDToolbox: A MATLAB/Octave toolbox for statistical analysis of molecular dynamics trajectories
Stars: ✭ 21 (+61.54%)
Mutual labels:  simulation
GPU-Cloth-Simulation
GPU Mass-Spring Simulation Cloth in Unity
Stars: ✭ 133 (+923.08%)
Mutual labels:  simulation
BuildingSystems
Modelica BuildingSystems library
Stars: ✭ 52 (+300%)
Mutual labels:  simulation
reina-model
Agent-based simulation model for COVID-19 spread in society and patient outcomes
Stars: ✭ 30 (+130.77%)
Mutual labels:  simulation
QuadrotorFly
This is a dynamic simulation for quadrotor UAV
Stars: ✭ 61 (+369.23%)
Mutual labels:  simulation
COMOKIT-Model
A GAMA (http://gama-platform.org) model on the assessment and comparisons of intervention policies against the CoVid19 pandemics
Stars: ✭ 23 (+76.92%)
Mutual labels:  simulation
GarlicSim
Pythonic framework for working with simulations.
Stars: ✭ 67 (+415.38%)
Mutual labels:  simulation
voting
A simulator for voting systems.
Stars: ✭ 24 (+84.62%)
Mutual labels:  simulation
qecsim
qecsim is a Python 3 package for simulating quantum error correction using stabilizer codes.
Stars: ✭ 34 (+161.54%)
Mutual labels:  simulation
sigmanet
Sigmanet: Systematic Evaluation of Iterative Deep Neural Networks for Fast Parallel MR Image Reconstruction,
Stars: ✭ 45 (+246.15%)
Mutual labels:  mri

Sycomore — an MRI simulation toolkit

PyPI - Wheel Conda Version

Sycomore is an MRI simulation toolkit providing Bloch simulation, Extended Phase Graph (EPG) (both regular and discrete, including 3D), and Configuration Model. Sycomore is a Python packge in which all computationnaly-intensive operations are run by a C++ backend, providing a very fast runtime.

Sycomore is free software, released under the MIT license, and its source code is available on GitHub.

A sample web application, using Sycomore paired with Bokeh is available on Heroku: it presents classical MRI experiments (RARE, RF-spoiling, slice profile with a selective sinc pulse), using the different simulation models of Sycomore.

Installation

Packaged versions of Sycomore are available on pypi and Anaconda for Linux, macOS and Windows.

To install from Anaconda, type conda install -c conda-forge sycomore. To install from pypi, type pip3 install sycomore (or pip install sycomore). If you are installing from pypi and no pre-compiled version is available for your platform, pip will try to install from the source archive.

If you need to install Sycomore from source, you will need a C++11 compiler, CMake, xsimd and pybind11 to successfully build Sycomore. If you want to validate your build of Sycomore, you should run the unit tests, which require Boost.Test.

Additional details are provided in the documentation.

Usage

The following code simulates a single repetition of a simple RARE sequence using regular EPG and plots the transverse magnetization of each echo.

import matplotlib.pyplot
import numpy
import sycomore
from sycomore.units import *

species = sycomore.Species(1000*ms, 100*ms, 1*um**2/ms)
TE = 4*ms
train_length = 40

model = sycomore.epg.Regular(species)
data = numpy.zeros(train_length, dtype=[("time", sycomore.Quantity), ("signal", complex)])

model.apply_pulse(90*deg)
for echo in range(train_length):
    model.apply_time_interval(TE/2)
    model.apply_pulse(180*deg)
    model.apply_time_interval(TE/2)
    
    data[echo] = (((1+echo)*TE), model.echo)

times = [x.convert_to(ms) for x in data["time"]]
magnitude = numpy.abs(data["signal"])
matplotlib.pyplot.plot(times, magnitude, ".", label="Simulated")
matplotlib.pyplot.plot(
    times, [numpy.exp(-(x*species.R2).magnitude) for x in data["time"]],
    label="$T_2$ decay")

matplotlib.pyplot.ylim(0,1)
matplotlib.pyplot.xlabel("Time (ms)")
matplotlib.pyplot.ylabel("Magnitude")
matplotlib.pyplot.legend()
matplotlib.pyplot.show()

T2 decay in RARE

The features and data structures are described in the documentation:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].