Creating motion artifacts on an anatomical EPI with SNAKE-fMRI#

This examples walks through the elementary components of SNAKE and demonstrates how to add motion artifacts to the simulation.

# Imports
import numpy as np
import matplotlib.pyplot as plt

from snake.core.phantom import Phantom
from snake.core.sampling import EPI3dAcquisitionSampler
from snake.core.simulation import GreConfig, SimConfig, default_hardware

Setting up the base simulation Config. This configuration holds all key parameters for the simulation, describing the scanner parameters.

sim_conf = SimConfig(
    max_sim_time=6,
    seq=GreConfig(TR=50, TE=30, FA=3),
    hardware=default_hardware,
)
sim_conf.hardware.n_coils = 8
sim_conf.fov.res_mm = (3, 3, 3)
sim_conf
SimConfig
max_sim_time(float)6
seq(GreConfig)
GreConfig
TR (float)TE (float)FA (float)
50303
hardware(HardwareConfig)
HardwareConfig
gmax (float)smax (float)n_coils (int)dwell_time_ms (float)raster_time_ms (float)field (float)
4020080.0010.0053.0
fov(FOVConfig)
FOVConfig
size (ThreeFloats)offset (ThreeFloats)angles (ThreeFloats)res_mm (ThreeFloats)
(181, 217, 181)(-90.25, -126.25, -72.25)(0, 0, 0)(3, 3, 3)
rng_seed(int)19290506


Creating the base Phantom#

The simulation acquires the data describe in a phantom. A phantom consists of fuzzy segmentation of head tissue, and their MR intrinsic parameters (density, T1, T2, T2*, magnetic susceptibilities)

Here we use Brainweb reference mask and values for convenience.

phantom = Phantom.from_brainweb(
    sub_id=4, sim_conf=sim_conf, output_res=1, tissue_file="tissue_7T"
)

# Here are the tissue availables and their parameters
phantom.affine
No matrix size found in the header. The header is probably missing.

array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]], dtype=float32)

Adding motion to the Phantom#

The motion is added to the phantom by applying a transformation to the simulation’s FOV configuration (as if the phantom was moving in the scanner).

from snake.core.handlers import RandomMotionImageHandler

motion = RandomMotionImageHandler(
    ts_std_mms=[1, 1, 1],
    rs_std_degs=[0.1, 0.1, 0.1],
)

motion2 = RandomMotionImageHandler(
    ts_std_mms=[3, 3, 3],
    rs_std_degs=[0.5, 0.5, 0.5],
)

Setting up Acquisition Pattern and Initializing Result file.#

# The next piece of simulation is the acquisition trajectory.
# Here nothing fancy, we are using a EPI (fully sampled), that samples a 3D
# k-space (this akin to the 3D EPI sequence of XXXX)

sampler = EPI3dAcquisitionSampler(accelz=1, acsz=0.1, orderz="top-down")

Acquisition with Cartesian Engine#

We acquire the three setup separately.

from snake.core.engine import EPIAcquisitionEngine

engine = EPIAcquisitionEngine(model="simple")

engine(
    "example_nomotion.mrd",
    sampler=sampler,
    phantom=phantom,
    handlers=[],
    sim_conf=sim_conf,
    worker_chunk_size=16,
    n_workers=4,
)

engine(
    "example_motion.mrd",
    sampler=sampler,
    phantom=phantom,
    handlers=[motion],
    sim_conf=sim_conf,
    worker_chunk_size=16,
    n_workers=4,
)

engine(
    "example_motion2.mrd",
    sampler=sampler,
    phantom=phantom,
    handlers=[motion2],
    sim_conf=sim_conf,
    worker_chunk_size=16,
    n_workers=4,
)
Existing example_nomotion.mrd it will be overwritten
[Errno 2] No such file or directory: 'example_nomotion.mrd'

  0%|          | 0/120 [00:00<?, ?it/s]
  1%|          | 1/120 [00:00<00:49,  2.38it/s]
  2%|▏         | 2/120 [00:00<00:27,  4.22it/s]
  2%|β–Ž         | 3/120 [00:00<00:20,  5.61it/s]
  3%|β–Ž         | 4/120 [00:00<00:17,  6.62it/s]
  4%|▍         | 5/120 [00:00<00:15,  7.37it/s]
  5%|β–Œ         | 6/120 [00:00<00:14,  7.90it/s]
  6%|β–Œ         | 7/120 [00:01<00:13,  8.31it/s]
  7%|β–‹         | 8/120 [00:01<00:13,  8.56it/s]
  8%|β–Š         | 9/120 [00:01<00:12,  8.70it/s]
  8%|β–Š         | 10/120 [00:01<00:12,  8.86it/s]
  9%|β–‰         | 11/120 [00:01<00:12,  8.89it/s]
 10%|β–ˆ         | 12/120 [00:01<00:12,  8.85it/s]
 11%|β–ˆ         | 13/120 [00:01<00:12,  8.77it/s]
 12%|β–ˆβ–        | 14/120 [00:01<00:12,  8.78it/s]
 12%|β–ˆβ–Ž        | 15/120 [00:01<00:11,  8.91it/s]
 13%|β–ˆβ–Ž        | 16/120 [00:02<00:11,  9.02it/s]
 14%|β–ˆβ–        | 17/120 [00:02<00:11,  9.05it/s]
 15%|β–ˆβ–Œ        | 18/120 [00:02<00:11,  9.09it/s]
 16%|β–ˆβ–Œ        | 19/120 [00:02<00:11,  9.08it/s]
 17%|β–ˆβ–‹        | 20/120 [00:02<00:10,  9.12it/s]
 18%|β–ˆβ–Š        | 21/120 [00:02<00:10,  9.14it/s]
 18%|β–ˆβ–Š        | 22/120 [00:02<00:10,  9.07it/s]
 19%|β–ˆβ–‰        | 23/120 [00:02<00:10,  9.11it/s]
 20%|β–ˆβ–ˆ        | 24/120 [00:02<00:10,  9.12it/s]
 21%|β–ˆβ–ˆ        | 25/120 [00:03<00:10,  9.14it/s]
 22%|β–ˆβ–ˆβ–       | 26/120 [00:03<00:10,  9.18it/s]
 22%|β–ˆβ–ˆβ–Ž       | 27/120 [00:03<00:10,  9.14it/s]
 23%|β–ˆβ–ˆβ–Ž       | 28/120 [00:03<00:10,  9.14it/s]
 24%|β–ˆβ–ˆβ–       | 29/120 [00:03<00:09,  9.13it/s]
 25%|β–ˆβ–ˆβ–Œ       | 30/120 [00:03<00:09,  9.14it/s]
 26%|β–ˆβ–ˆβ–Œ       | 31/120 [00:03<00:09,  9.12it/s]
 27%|β–ˆβ–ˆβ–‹       | 32/120 [00:03<00:09,  9.10it/s]
 28%|β–ˆβ–ˆβ–Š       | 33/120 [00:03<00:09,  8.99it/s]
 28%|β–ˆβ–ˆβ–Š       | 34/120 [00:04<00:09,  9.00it/s]
 29%|β–ˆβ–ˆβ–‰       | 35/120 [00:04<00:09,  9.03it/s]
 30%|β–ˆβ–ˆβ–ˆ       | 36/120 [00:04<00:09,  9.05it/s]
 31%|β–ˆβ–ˆβ–ˆ       | 37/120 [00:04<00:09,  8.98it/s]
 32%|β–ˆβ–ˆβ–ˆβ–      | 38/120 [00:04<00:09,  9.01it/s]
 32%|β–ˆβ–ˆβ–ˆβ–Ž      | 39/120 [00:04<00:08,  9.02it/s]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 40/120 [00:04<00:08,  9.06it/s]
 34%|β–ˆβ–ˆβ–ˆβ–      | 41/120 [00:04<00:08,  9.09it/s]
 35%|β–ˆβ–ˆβ–ˆβ–Œ      | 42/120 [00:04<00:08,  9.11it/s]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 43/120 [00:05<00:08,  9.14it/s]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 44/120 [00:05<00:08,  9.18it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 45/120 [00:05<00:08,  9.17it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 46/120 [00:05<00:08,  9.20it/s]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 47/120 [00:05<00:08,  9.12it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 48/120 [00:05<00:07,  9.19it/s]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 49/120 [00:05<00:07,  9.23it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 50/120 [00:05<00:07,  9.23it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 51/120 [00:05<00:07,  9.20it/s]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 52/120 [00:06<00:07,  9.18it/s]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 53/120 [00:06<00:07,  9.12it/s]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 54/120 [00:06<00:07,  9.15it/s]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 55/120 [00:06<00:07,  9.13it/s]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 56/120 [00:06<00:07,  9.14it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 57/120 [00:06<00:06,  9.12it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 58/120 [00:06<00:06,  9.12it/s]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 59/120 [00:06<00:06,  9.09it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 60/120 [00:06<00:06,  9.09it/s]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 61/120 [00:07<00:06,  9.11it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 62/120 [00:07<00:06,  9.12it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 63/120 [00:07<00:06,  9.09it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 64/120 [00:07<00:06,  9.10it/s]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 65/120 [00:07<00:06,  9.11it/s]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 66/120 [00:07<00:05,  9.13it/s]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 67/120 [00:07<00:05,  9.12it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 68/120 [00:07<00:05,  9.13it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 69/120 [00:07<00:05,  9.15it/s]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 70/120 [00:07<00:05,  9.15it/s]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 71/120 [00:08<00:05,  9.20it/s]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 72/120 [00:08<00:05,  9.23it/s]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 73/120 [00:08<00:05,  9.23it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 74/120 [00:08<00:04,  9.24it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 75/120 [00:08<00:04,  9.22it/s]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 76/120 [00:08<00:04,  9.26it/s]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 77/120 [00:08<00:04,  9.27it/s]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 78/120 [00:08<00:04,  9.27it/s]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 79/120 [00:08<00:04,  9.17it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 80/120 [00:09<00:04,  9.15it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 81/120 [00:09<00:04,  9.18it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 82/120 [00:09<00:04,  9.16it/s]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 83/120 [00:09<00:04,  9.18it/s]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 84/120 [00:09<00:03,  9.15it/s]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 85/120 [00:09<00:03,  9.16it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 86/120 [00:09<00:03,  9.15it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 87/120 [00:09<00:03,  9.14it/s]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 88/120 [00:09<00:03,  9.06it/s]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 89/120 [00:10<00:03,  9.07it/s]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 90/120 [00:10<00:03,  9.11it/s]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 91/120 [00:10<00:03,  9.11it/s]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 92/120 [00:10<00:03,  9.13it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 93/120 [00:10<00:02,  9.14it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 94/120 [00:10<00:02,  9.15it/s]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 95/120 [00:10<00:02,  9.19it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 96/120 [00:10<00:02,  9.22it/s]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 97/120 [00:10<00:02,  9.21it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 98/120 [00:11<00:02,  9.23it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 99/120 [00:11<00:02,  9.18it/s]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 100/120 [00:11<00:02,  9.14it/s]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 101/120 [00:11<00:02,  9.15it/s]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 102/120 [00:11<00:01,  9.15it/s]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 103/120 [00:11<00:01,  9.16it/s]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 104/120 [00:11<00:01,  9.11it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 105/120 [00:11<00:01,  9.09it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 106/120 [00:11<00:01,  9.08it/s]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 107/120 [00:12<00:01,  9.05it/s]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 108/120 [00:12<00:01,  9.07it/s]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 109/120 [00:12<00:01,  9.07it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 110/120 [00:12<00:01,  9.05it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 111/120 [00:12<00:00,  9.05it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 112/120 [00:12<00:00,  9.07it/s]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 113/120 [00:12<00:00,  9.06it/s]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 114/120 [00:12<00:00,  8.87it/s]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 115/120 [00:12<00:00,  8.90it/s]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 116/120 [00:13<00:00,  8.92it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 117/120 [00:13<00:00,  8.97it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 118/120 [00:13<00:00,  9.02it/s]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 119/120 [00:13<00:00,  9.06it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 120/120 [00:13<00:00,  9.10it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 120/120 [00:13<00:00,  8.91it/s]
No coil_cov found in the dataset.

  0%|          | 0/120 [00:00<?, ?it/s]
 13%|β–ˆβ–Ž        | 16/120 [00:06<00:41,  2.48it/s]
 27%|β–ˆβ–ˆβ–‹       | 32/120 [00:07<00:16,  5.21it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 48/120 [00:07<00:08,  8.54it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 64/120 [00:08<00:04, 12.34it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 80/120 [00:08<00:02, 16.50it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 96/120 [00:08<00:01, 20.93it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 112/120 [00:09<00:00, 24.93it/s]
128it [00:09, 28.60it/s]
128it [00:09, 12.89it/s]
Existing example_motion.mrd it will be overwritten
[Errno 2] No such file or directory: 'example_motion.mrd'

  0%|          | 0/120 [00:00<?, ?it/s]
  1%|          | 1/120 [00:00<00:13,  8.97it/s]
  2%|▏         | 2/120 [00:00<00:13,  8.95it/s]
  2%|β–Ž         | 3/120 [00:00<00:12,  9.04it/s]
  3%|β–Ž         | 4/120 [00:00<00:12,  9.09it/s]
  4%|▍         | 5/120 [00:00<00:12,  9.10it/s]
  5%|β–Œ         | 6/120 [00:00<00:12,  9.13it/s]
  6%|β–Œ         | 7/120 [00:00<00:12,  9.15it/s]
  7%|β–‹         | 8/120 [00:00<00:12,  9.11it/s]
  8%|β–Š         | 9/120 [00:00<00:12,  9.14it/s]
  8%|β–Š         | 10/120 [00:01<00:12,  9.07it/s]
  9%|β–‰         | 11/120 [00:01<00:11,  9.10it/s]
 10%|β–ˆ         | 12/120 [00:01<00:11,  9.07it/s]
 11%|β–ˆ         | 13/120 [00:01<00:11,  9.06it/s]
 12%|β–ˆβ–        | 14/120 [00:01<00:11,  9.06it/s]
 12%|β–ˆβ–Ž        | 15/120 [00:01<00:11,  9.07it/s]
 13%|β–ˆβ–Ž        | 16/120 [00:01<00:11,  9.09it/s]
 14%|β–ˆβ–        | 17/120 [00:01<00:11,  9.09it/s]
 15%|β–ˆβ–Œ        | 18/120 [00:01<00:11,  9.09it/s]
 16%|β–ˆβ–Œ        | 19/120 [00:02<00:11,  9.11it/s]
 17%|β–ˆβ–‹        | 20/120 [00:02<00:10,  9.11it/s]
 18%|β–ˆβ–Š        | 21/120 [00:02<00:10,  9.12it/s]
 18%|β–ˆβ–Š        | 22/120 [00:02<00:10,  9.10it/s]
 19%|β–ˆβ–‰        | 23/120 [00:02<00:10,  9.09it/s]
 20%|β–ˆβ–ˆ        | 24/120 [00:02<00:10,  9.10it/s]
 21%|β–ˆβ–ˆ        | 25/120 [00:02<00:10,  9.10it/s]
 22%|β–ˆβ–ˆβ–       | 26/120 [00:02<00:10,  9.10it/s]
 22%|β–ˆβ–ˆβ–Ž       | 27/120 [00:02<00:10,  9.09it/s]
 23%|β–ˆβ–ˆβ–Ž       | 28/120 [00:03<00:10,  9.06it/s]
 24%|β–ˆβ–ˆβ–       | 29/120 [00:03<00:09,  9.13it/s]
 25%|β–ˆβ–ˆβ–Œ       | 30/120 [00:03<00:09,  9.14it/s]
 26%|β–ˆβ–ˆβ–Œ       | 31/120 [00:03<00:09,  9.17it/s]
 27%|β–ˆβ–ˆβ–‹       | 32/120 [00:03<00:09,  9.17it/s]
 28%|β–ˆβ–ˆβ–Š       | 33/120 [00:03<00:09,  8.98it/s]
 28%|β–ˆβ–ˆβ–Š       | 34/120 [00:03<00:09,  8.94it/s]
 29%|β–ˆβ–ˆβ–‰       | 35/120 [00:03<00:09,  8.94it/s]
 30%|β–ˆβ–ˆβ–ˆ       | 36/120 [00:03<00:09,  8.96it/s]
 31%|β–ˆβ–ˆβ–ˆ       | 37/120 [00:04<00:09,  8.98it/s]
 32%|β–ˆβ–ˆβ–ˆβ–      | 38/120 [00:04<00:09,  8.97it/s]
 32%|β–ˆβ–ˆβ–ˆβ–Ž      | 39/120 [00:04<00:09,  8.98it/s]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 40/120 [00:04<00:08,  9.04it/s]
 34%|β–ˆβ–ˆβ–ˆβ–      | 41/120 [00:04<00:08,  9.05it/s]
 35%|β–ˆβ–ˆβ–ˆβ–Œ      | 42/120 [00:04<00:08,  9.09it/s]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 43/120 [00:04<00:08,  8.87it/s]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 44/120 [00:04<00:08,  8.92it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 45/120 [00:04<00:08,  8.94it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 46/120 [00:05<00:08,  8.97it/s]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 47/120 [00:05<00:08,  9.02it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 48/120 [00:05<00:07,  9.06it/s]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 49/120 [00:05<00:07,  9.10it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 50/120 [00:05<00:07,  9.09it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 51/120 [00:05<00:07,  9.12it/s]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 52/120 [00:05<00:07,  9.11it/s]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 53/120 [00:05<00:07,  9.06it/s]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 54/120 [00:05<00:07,  9.06it/s]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 55/120 [00:06<00:07,  9.11it/s]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 56/120 [00:06<00:06,  9.17it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 57/120 [00:06<00:06,  9.17it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 58/120 [00:06<00:06,  9.23it/s]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 59/120 [00:06<00:06,  9.21it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 60/120 [00:06<00:06,  9.24it/s]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 61/120 [00:06<00:06,  9.20it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 62/120 [00:06<00:06,  9.23it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 63/120 [00:06<00:06,  9.22it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 64/120 [00:07<00:06,  9.20it/s]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 65/120 [00:07<00:05,  9.17it/s]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 66/120 [00:07<00:05,  9.17it/s]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 67/120 [00:07<00:05,  9.16it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 68/120 [00:07<00:05,  9.09it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 69/120 [00:07<00:05,  8.97it/s]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 70/120 [00:07<00:05,  9.06it/s]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 71/120 [00:07<00:05,  9.14it/s]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 72/120 [00:07<00:05,  9.17it/s]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 73/120 [00:08<00:05,  9.20it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 74/120 [00:08<00:04,  9.22it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 75/120 [00:08<00:04,  9.22it/s]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 76/120 [00:08<00:04,  9.25it/s]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 77/120 [00:08<00:04,  9.24it/s]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 78/120 [00:08<00:04,  9.21it/s]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 79/120 [00:08<00:04,  9.18it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 80/120 [00:08<00:04,  9.19it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 81/120 [00:08<00:04,  9.21it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 82/120 [00:09<00:04,  9.21it/s]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 83/120 [00:09<00:04,  9.22it/s]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 84/120 [00:09<00:03,  9.22it/s]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 85/120 [00:09<00:03,  9.24it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 86/120 [00:09<00:03,  9.24it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 87/120 [00:09<00:03,  9.25it/s]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 88/120 [00:09<00:03,  9.23it/s]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 89/120 [00:09<00:03,  9.25it/s]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 90/120 [00:09<00:03,  9.23it/s]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 91/120 [00:09<00:03,  9.23it/s]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 92/120 [00:10<00:03,  9.21it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 93/120 [00:10<00:02,  9.24it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 94/120 [00:10<00:02,  9.21it/s]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 95/120 [00:10<00:02,  9.24it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 96/120 [00:10<00:02,  9.22it/s]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 97/120 [00:10<00:02,  9.23it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 98/120 [00:10<00:02,  9.23it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 99/120 [00:10<00:02,  9.22it/s]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 100/120 [00:10<00:02,  9.22it/s]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 101/120 [00:11<00:02,  9.24it/s]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 102/120 [00:11<00:01,  9.25it/s]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 103/120 [00:11<00:01,  9.25it/s]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 104/120 [00:11<00:01,  9.26it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 105/120 [00:11<00:01,  9.27it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 106/120 [00:11<00:01,  9.25it/s]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 107/120 [00:11<00:01,  9.26it/s]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 108/120 [00:11<00:01,  9.23it/s]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 109/120 [00:11<00:01,  9.22it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 110/120 [00:12<00:01,  9.19it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 111/120 [00:12<00:00,  9.20it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 112/120 [00:12<00:00,  9.20it/s]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 113/120 [00:12<00:00,  9.23it/s]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 114/120 [00:12<00:00,  9.21it/s]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 115/120 [00:12<00:00,  9.24it/s]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 116/120 [00:12<00:00,  9.24it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 117/120 [00:12<00:00,  9.20it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 118/120 [00:12<00:00,  9.20it/s]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 119/120 [00:13<00:00,  9.22it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 120/120 [00:13<00:00,  9.17it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 120/120 [00:13<00:00,  9.14it/s]
/volatile/github-ci-mind-inria/.local/lib/python3.10/site-packages/xsdata/formats/dataclass/parsers/utils.py:126: ConverterWarning: Failed to convert value for `waveformInformationType.waveformType`
  `41407` is not a valid `waveformInformationTypeWaveformType`
  warnings.warn(message, ConverterWarning)
No coil_cov found in the dataset.

  0%|          | 0/120 [00:00<?, ?it/s]
 13%|β–ˆβ–Ž        | 16/120 [00:06<00:40,  2.55it/s]
 27%|β–ˆβ–ˆβ–‹       | 32/120 [00:06<00:16,  5.36it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 48/120 [00:07<00:08,  8.73it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 64/120 [00:07<00:04, 12.49it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 80/120 [00:08<00:02, 16.54it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 96/120 [00:08<00:01, 20.75it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 112/120 [00:09<00:00, 24.81it/s]
128it [00:09, 28.51it/s]
128it [00:09, 13.02it/s]
Existing example_motion2.mrd it will be overwritten
[Errno 2] No such file or directory: 'example_motion2.mrd'

  0%|          | 0/120 [00:00<?, ?it/s]
  1%|          | 1/120 [00:00<00:13,  8.81it/s]
  2%|▏         | 2/120 [00:00<00:13,  8.91it/s]
  2%|β–Ž         | 3/120 [00:00<00:12,  9.01it/s]
  3%|β–Ž         | 4/120 [00:00<00:12,  9.12it/s]
  4%|▍         | 5/120 [00:00<00:12,  9.11it/s]
  5%|β–Œ         | 6/120 [00:00<00:12,  9.10it/s]
  6%|β–Œ         | 7/120 [00:00<00:12,  9.12it/s]
  7%|β–‹         | 8/120 [00:00<00:12,  9.15it/s]
  8%|β–Š         | 9/120 [00:00<00:12,  9.15it/s]
  8%|β–Š         | 10/120 [00:01<00:11,  9.17it/s]
  9%|β–‰         | 11/120 [00:01<00:12,  8.99it/s]
 10%|β–ˆ         | 12/120 [00:01<00:11,  9.05it/s]
 11%|β–ˆ         | 13/120 [00:01<00:11,  9.10it/s]
 12%|β–ˆβ–        | 14/120 [00:01<00:11,  9.14it/s]
 12%|β–ˆβ–Ž        | 15/120 [00:01<00:11,  9.13it/s]
 13%|β–ˆβ–Ž        | 16/120 [00:01<00:11,  9.16it/s]
 14%|β–ˆβ–        | 17/120 [00:01<00:11,  9.13it/s]
 15%|β–ˆβ–Œ        | 18/120 [00:01<00:11,  9.18it/s]
 16%|β–ˆβ–Œ        | 19/120 [00:02<00:10,  9.19it/s]
 17%|β–ˆβ–‹        | 20/120 [00:02<00:10,  9.17it/s]
 18%|β–ˆβ–Š        | 21/120 [00:02<00:10,  9.18it/s]
 18%|β–ˆβ–Š        | 22/120 [00:02<00:10,  9.21it/s]
 19%|β–ˆβ–‰        | 23/120 [00:02<00:10,  9.21it/s]
 20%|β–ˆβ–ˆ        | 24/120 [00:02<00:10,  9.19it/s]
 21%|β–ˆβ–ˆ        | 25/120 [00:02<00:10,  9.18it/s]
 22%|β–ˆβ–ˆβ–       | 26/120 [00:02<00:10,  9.17it/s]
 22%|β–ˆβ–ˆβ–Ž       | 27/120 [00:02<00:10,  9.18it/s]
 23%|β–ˆβ–ˆβ–Ž       | 28/120 [00:03<00:09,  9.23it/s]
 24%|β–ˆβ–ˆβ–       | 29/120 [00:03<00:09,  9.21it/s]
 25%|β–ˆβ–ˆβ–Œ       | 30/120 [00:03<00:09,  9.20it/s]
 26%|β–ˆβ–ˆβ–Œ       | 31/120 [00:03<00:09,  9.21it/s]
 27%|β–ˆβ–ˆβ–‹       | 32/120 [00:03<00:09,  9.22it/s]
 28%|β–ˆβ–ˆβ–Š       | 33/120 [00:03<00:09,  9.25it/s]
 28%|β–ˆβ–ˆβ–Š       | 34/120 [00:03<00:09,  9.22it/s]
 29%|β–ˆβ–ˆβ–‰       | 35/120 [00:03<00:09,  9.23it/s]
 30%|β–ˆβ–ˆβ–ˆ       | 36/120 [00:03<00:09,  9.25it/s]
 31%|β–ˆβ–ˆβ–ˆ       | 37/120 [00:04<00:09,  9.17it/s]
 32%|β–ˆβ–ˆβ–ˆβ–      | 38/120 [00:04<00:08,  9.17it/s]
 32%|β–ˆβ–ˆβ–ˆβ–Ž      | 39/120 [00:04<00:08,  9.21it/s]
 33%|β–ˆβ–ˆβ–ˆβ–Ž      | 40/120 [00:04<00:08,  9.20it/s]
 34%|β–ˆβ–ˆβ–ˆβ–      | 41/120 [00:04<00:08,  9.25it/s]
 35%|β–ˆβ–ˆβ–ˆβ–Œ      | 42/120 [00:04<00:08,  9.24it/s]
 36%|β–ˆβ–ˆβ–ˆβ–Œ      | 43/120 [00:04<00:08,  9.22it/s]
 37%|β–ˆβ–ˆβ–ˆβ–‹      | 44/120 [00:04<00:08,  9.21it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 45/120 [00:04<00:08,  9.22it/s]
 38%|β–ˆβ–ˆβ–ˆβ–Š      | 46/120 [00:05<00:08,  9.22it/s]
 39%|β–ˆβ–ˆβ–ˆβ–‰      | 47/120 [00:05<00:07,  9.23it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 48/120 [00:05<00:07,  9.22it/s]
 41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 49/120 [00:05<00:07,  9.21it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 50/120 [00:05<00:07,  9.22it/s]
 42%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 51/120 [00:05<00:07,  9.23it/s]
 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 52/120 [00:05<00:07,  9.19it/s]
 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–     | 53/120 [00:05<00:07,  9.21it/s]
 45%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 54/120 [00:05<00:07,  9.21it/s]
 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ     | 55/120 [00:05<00:07,  9.22it/s]
 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 56/120 [00:06<00:06,  9.21it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 57/120 [00:06<00:06,  9.23it/s]
 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š     | 58/120 [00:06<00:06,  9.23it/s]
 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 59/120 [00:06<00:06,  9.24it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 60/120 [00:06<00:06,  9.24it/s]
 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 61/120 [00:06<00:06,  9.23it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 62/120 [00:06<00:06,  9.20it/s]
 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 63/120 [00:06<00:06,  9.23it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 64/120 [00:06<00:06,  9.22it/s]
 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 65/120 [00:07<00:05,  9.21it/s]
 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 66/120 [00:07<00:05,  9.22it/s]
 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ    | 67/120 [00:07<00:05,  9.24it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹    | 68/120 [00:07<00:05,  9.24it/s]
 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 69/120 [00:07<00:05,  9.27it/s]
 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 70/120 [00:07<00:05,  9.20it/s]
 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 71/120 [00:07<00:05,  9.20it/s]
 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 72/120 [00:07<00:05,  9.20it/s]
 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ    | 73/120 [00:07<00:05,  9.22it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 74/120 [00:08<00:04,  9.22it/s]
 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 75/120 [00:08<00:04,  9.23it/s]
 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž   | 76/120 [00:08<00:04,  9.23it/s]
 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 77/120 [00:08<00:04,  9.22it/s]
 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 78/120 [00:08<00:04,  9.23it/s]
 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ   | 79/120 [00:08<00:04,  9.24it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 80/120 [00:08<00:04,  9.21it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 81/120 [00:08<00:04,  9.24it/s]
 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š   | 82/120 [00:08<00:04,  9.22it/s]
 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 83/120 [00:09<00:04,  9.25it/s]
 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 84/120 [00:09<00:03,  9.23it/s]
 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 85/120 [00:09<00:03,  9.24it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 86/120 [00:09<00:03,  9.20it/s]
 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 87/120 [00:09<00:03,  9.24it/s]
 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 88/120 [00:09<00:03,  9.22it/s]
 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–  | 89/120 [00:09<00:03,  9.22it/s]
 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 90/120 [00:09<00:03,  9.23it/s]
 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 91/120 [00:09<00:03,  9.24it/s]
 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 92/120 [00:10<00:03,  9.24it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 93/120 [00:10<00:02,  9.24it/s]
 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 94/120 [00:10<00:02,  9.22it/s]
 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 95/120 [00:10<00:02,  9.24it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 96/120 [00:10<00:02,  9.23it/s]
 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 97/120 [00:10<00:02,  9.26it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 98/120 [00:10<00:02,  9.22it/s]
 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 99/120 [00:10<00:02,  9.23it/s]
 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 100/120 [00:10<00:02,  9.23it/s]
 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 101/120 [00:10<00:02,  9.23it/s]
 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 102/120 [00:11<00:01,  9.24it/s]
 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 103/120 [00:11<00:01,  9.17it/s]
 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 104/120 [00:11<00:01,  9.18it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 105/120 [00:11<00:01,  9.19it/s]
 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 106/120 [00:11<00:01,  9.19it/s]
 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 107/120 [00:11<00:01,  9.19it/s]
 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 108/120 [00:11<00:01,  9.19it/s]
 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 109/120 [00:11<00:01,  9.20it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 110/120 [00:11<00:01,  9.19it/s]
 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 111/120 [00:12<00:00,  9.22it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 112/120 [00:12<00:00,  9.23it/s]
 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 113/120 [00:12<00:00,  9.25it/s]
 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 114/120 [00:12<00:00,  9.26it/s]
 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 115/120 [00:12<00:00,  9.27it/s]
 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 116/120 [00:12<00:00,  9.26it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 117/120 [00:12<00:00,  9.26it/s]
 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 118/120 [00:12<00:00,  9.24it/s]
 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 119/120 [00:12<00:00,  9.23it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 120/120 [00:13<00:00,  9.23it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 120/120 [00:13<00:00,  9.20it/s]
No coil_cov found in the dataset.

  0%|          | 0/120 [00:00<?, ?it/s]
 13%|β–ˆβ–Ž        | 16/120 [00:06<00:40,  2.58it/s]
 27%|β–ˆβ–ˆβ–‹       | 32/120 [00:06<00:16,  5.38it/s]
 40%|β–ˆβ–ˆβ–ˆβ–ˆ      | 48/120 [00:07<00:08,  8.78it/s]
 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 64/120 [00:07<00:04, 12.51it/s]
 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 80/120 [00:08<00:02, 16.40it/s]
 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  | 96/120 [00:08<00:01, 20.76it/s]
 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 112/120 [00:09<00:00, 24.50it/s]
128it [00:09, 27.77it/s]
128it [00:09, 12.97it/s]

Simple reconstruction#

from snake.mrd_utils import CartesianFrameDataLoader
from snake.toolkit.reconstructors import ZeroFilledReconstructor


with CartesianFrameDataLoader("example_nomotion.mrd") as data_loader:
    rec = ZeroFilledReconstructor(n_jobs=1)
    rec_nomotion = rec.reconstruct(data_loader).squeeze()

with CartesianFrameDataLoader("example_motion.mrd") as data_loader:
    rec = ZeroFilledReconstructor(n_jobs=1)
    rec_motion = rec.reconstruct(data_loader).squeeze()
    motion = data_loader.get_dynamic(0)

with CartesianFrameDataLoader("example_motion2.mrd") as data_loader:
    rec = ZeroFilledReconstructor(n_jobs=1)
    rec_motion2 = rec.reconstruct(data_loader).squeeze()
    motion2 = data_loader.get_dynamic(0)
  0%|          | 0/2 [00:00<?, ?it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 1/2 [00:00<00:00,  3.97it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00,  5.28it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00,  4.46it/s]

  0%|          | 0/2 [00:00<?, ?it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 1/2 [00:00<00:00,  4.02it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00,  5.27it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00,  4.46it/s]

  0%|          | 0/2 [00:00<?, ?it/s]
 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     | 1/2 [00:00<00:00,  3.82it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00,  5.07it/s]
100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 2/2 [00:00<00:00,  4.29it/s]
with CartesianFrameDataLoader("example_motion2.mrd") as data_loader:
    sim_conf.max_sim_time
rec_motion.shape
(2, 60, 72, 60)

Show the motion#

fig, axs = plt.subplots(2, 1, figsize=(10, 5), sharex=True)
time = np.arange(len(motion.data[0])) * sim_conf.seq.TR / 1000
TR_vol = 3  # We generated 2 frames in 6 seconds
axs[0].axvline(TR_vol, c="gray")
axs[1].axvline(TR_vol, c="gray")


axs[0].plot(time, motion.data[:3, :].T)
axs[1].plot(time, motion.data[3:, :].T)
axs[0].set_prop_cycle(None)  # reset color cycling
axs[1].set_prop_cycle(None)
axs[0].plot(time, motion2.data[:3, :].T, linestyle="dashed")
axs[1].plot(time, motion2.data[3:, :].T, linestyle="dashed")

axs[1].set_xlabel("time (s)")
axs[0].set_ylabel("Translation (mm)")
axs[1].set_ylabel("Rotation (deg)")
example anat motion EPI
Text(76.22222222222221, 0.5, 'Rotation (deg)')

Visualizing the reconstructed data#

import matplotlib.pyplot as plt

from snake.toolkit.plotting import axis3dcut

fig, axs = plt.subplots(1, 3, figsize=(26, 5))

axis3dcut(
    rec_motion[0].T,
    None,
    None,
    cbar=False,
    cuts=(0.5, 0.5, 0.5),
    ax=axs[0],
)
axis3dcut(
    rec_motion2[0].T,
    None,
    None,
    cbar=False,
    cuts=(0.5, 0.5, 0.5),
    ax=axs[1],
)
axis3dcut(rec_nomotion[0].T, None, None, cbar=False, cuts=(0.5, 0.5, 0.5), ax=axs[2])
axs[0].set_title("Small motion")
axs[1].set_title("Big motion")
axs[2].set_title("No motion")
plt.show()
Small motion, Big motion, No motion
/volatile/github-ci-mind-inria/gpu_mind_runner/_work/_tool/Python/3.10.16/x64/lib/python3.10/site-packages/numpy/lib/_function_base_impl.py:4620: RuntimeWarning: invalid value encountered in subtract
  diff_b_a = subtract(b, a)
sim_conf.seq.TR_eff
50

Total running time of the script: (1 minutes 15.219 seconds)

Gallery generated by Sphinx-Gallery