Skip to main content

MERLIN - Machine Enhanced Reconstruction Learning and Interpretation Networks

MERLIN logo

This repository contains machine learning (ML) tools for PyTorch, TensorFlow and Python in three modules:

  • merlinth: ML extensions to PyTorch
  • merlintf: ML extensions to TensorFlow
  • merlinpy: ML extensions to Python

If you use this code, please cite

@inproceedings{HammernikKuestner2022,
  title={Machine Enhanced Reconstruction Learning and Interpretation Networks (MERLIN)},
  author={Hammernik, K. and K{\"u}stner, T.},
  booktitle={Proceedings of the International Society for Magnetic Resonance in Medicine (ISMRM)},
  year={2022}
}

Requirements

git clone https://github.com/midas-tum/optox.git
cd optox
python3 install.py

follow build instructions on the github.

Installation

PyPi

pip3 install merlinpy-mri merlinth-mri merlintf-mri

In case you want to use the sampling codes (C++), please use the direct way installation below for direct compilation according to your system setup.

Direct way

git clone https://github.com/midas-tum/merlin.git
python3 install.py

Verification

Run unittests to ensure proper working of sub-modules

python3 -m unittest discover -s merlinpy.test
python3 -m unittest discover -s merlinth.test
python3 -m unittest discover -s merlintf.test

Contents

!!! Attention !!! This package is work in progress and still under construction. Major changes in structure will appear. If you experience any issues, if you have any feature requests or if you found any bugs, please let us know and raise an issue and/or pull request in github :)

Please watch the Issues space and look for the latest updates regularly! :)

merlinth

merlinth
    |--- layers     # Data-driven regularizer following (https://github.com/VLOGroup/tdv), extended to complex-valued layers and similar setup as layers in `merlintf.keras`
        |-- Complex-valued convolutions
        |-- Complex-valued activations
        |-- Complex-valued pooling
        |-- Complex-valued normalization
        |-- FFT operations
        |-- Data consistency
        |-- ...
    |-- losses     # Common and custom loss functions
    |-- models     # Model zoo
        |-- Fields-of-Experts (FOE) regularizer
        |-- Total deep variation (TDV) regularizer
        |-- UNet
    |-- optim      # Custom optimizers such as BlockAdam

merlintf

merlintf
    |-- keras
        |-- layers      # basic building blocks, focusing on complex valued operations
            |-- Complex-valued convolutions
            |-- Complex-valued activations
            |-- Complex-valued pooling
            |-- Complex-valued normalization
            |-- FFT operations
            |-- Data consistency
            |-- ...
        |-- models      # several layers are put together into networks for complex-valued processing (2-channel-real networks, complex networks)
            |-- Convolutional Neural Network
            |-- Fields-of-Experts (FOE) regularizer
            |-- Total deep variation (TDV) regularizer
            |-- UNet
        |-- optimizers       # custom optimizers    
    |-- optim                # custom optimizers

merlinpy

merlinpy
    |-- datapipeline        # collection of datapipelines and transform functions
        |-- sampling        # subsampling codes and sampling trajectories
    |-- fastmri             # dataloader and processing related to fastMRI database
    |-- losses              # losses/metrics
    |-- recon               # conventional reconstructions
    |-- wandb               # logging via wandb.ai

Common mistakes and best practices

writing own keras modules and layers

  • tf.keras.Model cannot hold any trainable parameters. All trainable weights have to be defined in tf.keras.layers.Layers. Wrong implementation will cause weird behaviour when saving and re-loading the model weights!
  • Do not define weights in the __init__ function. Weights should be only created and initialized in the def build(self, input_shape) function of the Layer. Wrong implementation will cause weird behaviour when saving and re-loading the model weights!
  • The online documentation is a good orientation point to write own modules. Make use of keras Constraints and Initializers.

Metadata

Release files for merlintf-mri 0.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for merlintf-mri 0.4.3
File Size Uploaded
merlintf_mri-0.4.3.tar.gz 78.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for merlintf-mri 0.4.3
File Interpreter ABI Platform
merlintf_mri-0.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 182.3 kB

Release files / merlintf_mri-0.4.3.tar.gz

Download URL merlintf_mri-0.4.3.tar.gz
Size 78.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5d1f8200685e4acd2b3f0c209aec2247d44692f66637f2d955dd7e583e1dc467
BLAKE2b-256 checksum
How to use checksums
8be748904560ca6e2dc5e3b67e538c5e2ed4995b3db7c5c323da70e38938366e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.19

Release files / merlintf_mri-0.4.3-py3-none-any.whl

Download URL merlintf_mri-0.4.3-py3-none-any.whl
Size 103.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9966acc572403292b5b43deb5cace3d5ef6baf54d6552855d0b0cefca62d951a
BLAKE2b-256 checksum
How to use checksums
9caee565bcf8f1c6f9a80d4b8101333d643b712fb2f97f8212e79848ce245ff2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.19

Release history Release notifications | RSS feed

This release

0.4.3 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page