This program is intended as an educational tool for magnetic resonance experiments (NMR, NQR, ...). Its focus lies on modular behavior depending on what nqrduck modules are installed. The core of the program is the nqrduck. It provides a central interface for communication between the different modules. The nqrduck core loads all the installed modules in your python environment.
The focus for spectrometers currently lies on LimeSDR based spectrometers (LimeSDR USB, LimeSDR Mini 2.0).
Installation instructions can be found in the nqrduck repository. Different modules can be installed to your liking and depending on what functionality you need.
The nqrduck module is the core application. It loads all the installed modules in your python environment. It also provides a central interface for communication between modules.
The spectrometer module provides a unified interface for different modules to communicate with spectrometers. The actual spectrometers are then implemented as submodules of this spectrometer module.
The LimeNQR module is a submodule of the spectrometer module. It uses the LimeSDR based spectrometer. It provides a Graphical User Interface (GUI) for the control of the LimeSDR based spectrometer. The module uses the LimeDriver project for the control of the LimeSDR based spectrometer [1].
The Simulator module is a submodule of the spectrometer module.The Simulator module is used to simulate magnetic resonance experiments. It is based on the bloch simulator by C. Graf [2].
The pulseprogrammer module is used to create pulse sequences with a user interface for magnetic resonance experiments.
The autotm module is used for automatic tuning and matching of the spectrometer. It uses the hardware design and software from the ATM. It can also be used to perform S11 measurements probe coils.
The measurement module is used to perform single frequency measurements with the spectrometer. It also provides signal processing for the measurements.
The broadband module is used to perform broadband measurements with the spectrometer.
This module is a template for the creation of new modules. It provides a basic structure for the creation of new modules.
This repository contains the Bloch simulator for the NQRduck project. It is based on the simulation of Bloch equations using symmetric operator splitting by C. Graf [2].
The LimeDriver project is used to control the LimeSDR based spectrometer. It is used by the LimeNQR module. The original code for the control of the LimeSDR based spectrometer was part of the paper by A. Doll [1].
This repository contains the python bindings for the LimeDriver project. It is used by the NQRduck LimeNQR module.
This repository contains the hardware design and software for the automatic tuning and matching (ATM) unit.
This repository contains the hardware design for the LimeSDR based spectrometer.
If you're interested in contributing to the project, start by checking out our nqrduck-module template. To contribute to existing modules, please first open an issue in the respective module repository to discuss your ideas or report bugs.
The Contribution guidelines can be found in the nqrduck-module repository.
The code of conduct can be found in the nqrduck-module repository.
Modules are generally licensed under the MIT License, and hardware projects are under the CERN Open Hardware License. For specifics, please refer to the license file in each individual repository.
-
Why is the project called NQRduck?
- The project was initially developed for NQR (Nuclear Quadrupole Resonance) experiments. The 'duck' part is just because ducks are very cool 🦆. This project was totally not actually developed by a duck doing NQR experiments.
-
Can I use the project for pulsed NMR (Nuclear Magnetic Resonance) experiments?
- Yes, the project is designed to be used for NMR experiments as well. It was also tested with NMR experiments.
-
What future spectrometers are planned to be supported?
- A RedPitaya based spectrometer is planned to be supported in the future.
-
What future modules are planned? (I'm primarily writing down some ideas here)
- A module for management of different samples (T1, T2 library ...).
- A module for magnet spoiling.
- A module for temperature control of the experiments.
- Future ideas are always welcome; please share them as issues in the main repository!
-
Is this also useful for research?
- Yes, especially the Bloch simulation could be used for easy preparation of experiments because of the graphical interface for pulse sequence design. Additionally the open source nature of the project allows for easy integration of self-built hard- and software.
-
Wait - your Logo is scientifically inaccurate!
- Yes, the atom depicted in the Logo is Helium-4, which has two protons and two neutrons.So the nuclear spin would be zero, which would mean you could neither do NMR nor NQR experiments with it. Probably also the representation of the orbitals is questionable. But it looks cool, doesn't it? 🦆
This project originated as a Master's thesis at Graz University of Technology and has since evolved. The original thesis can be accessed here, but note that it might not reflect the current state of the project. Releases of the project that coincide with the thesis submission are tagged as "Masterproject" for reference.