Skip to main content

Simulations of the average Hamiltonian.

Project description

FrameDynamics

FrameDynamics is a python package that provides numerical simulations for the field of pulse sequence development in magnetic resonance.

A coupling Hamiltonian is modulated in the toggling or interaction frame according to the specified pulse sequence and offset frequencies.

The trajectory of the time-dependent Hamiltonian can be plotted or used to calculate the zeroth order average Hamiltonian (higher order terms might be available in following versions of FrameDynamics).

Theoretical background can be found in the publication (coming soon...).

Installation

The python package can be installed via PyPI:

pip install FrameDynamics

Simulations

Two examples shall be given: the WAHUHA sequence and a heteronuclear echo consisting of a shaped pulse and a hard 180° pulse.

More examples can be found in the FrameDynamics github-repository (link).

Example #1: WAHUHA sequence

Initialize frame:

from FrameDynamics.Frame import Frame
frame = Frame(["I", "J"]) 

Specify the interaction:

interaction = frame.set_interaction("I", "J", "Dstrong")

Define the pulse sequence:

tau = 5 * 10**(-5)
frame.delay(tau)
frame.pulse(["I", "J"], 90, 10**(5), 0)
frame.delay(tau)
frame.pulse(["I", "J"], 90, 10**(5), 3)
frame.delay(2*tau)
frame.pulse(["I", "J"], 90, 10**(5), 1)
frame.delay(tau)
frame.pulse(["I", "J"], 90, 10**(5), 2)
frame.delay(tau)

Start the simulations and plot trajectories. Using multiprocessing, the scope has to be resolved in Windows.

if __name__ == "__main__":
    frame.start(traject=True)
    frame.plot_traject(interaction, save="WAHUHA.png")

Example #2: Reburp pulse

Load Frame and Block class. Block class is used to align different blocks in the pulse sequence (e.g. Reburp pulse and 180° hard pulse in heteronuclear echo)

import numpy as np
from FrameDynamics.Frame import Frame
from FrameDynamics.Block import Block
frame = Frame(["I", "S"])

Specify the interaction:

interaction = frame.set_interaction("I", "S", "Jweak")

Specify offset frequencies:

off = 5000
offsetsI = np.linspace(-off, off, 61)
offsetsS = np.linspace(-off, off, 61)
frame.set_offset("I", offsetsI)
frame.set_offset("S", offsetsS)

Load pulse shape to array:

Reburp = frame.load_shape("Reburp.1000")

After the interaction and offsets are set for the Frame object, one can now initialize the Block class for each block. The frame-object has to be passed to the Block() class:

block1 = Block(frame, ["I"])
block2 = Block(frame, ["S"])

Define a Reburp pulse on "I" and hard pulse on "S":

block1.shape(["I"], Reburp, 1000*10**(-6), 6264.8, 1)
block2.pulse(["S"], 180, 10**(5), 1)

Align Reburp ("I") and hard pulse ("S") and start simulation without multiprocessing (MP=False):

frame.align(block1, block2, alignment="center")
frame.start(MP=False, traject=True)

Create offset-dependent 2D graph that is plotted against both offsets:

frame.plot_H0_2D(interaction)

Create offset-dependent 1D graph that is plotted against specified offsets ("S"):

frame.plot_H0_1D(interaction, "S", offset=0.)

Plot trajectories for specified interaction and operators (the given operators are default values).

frame.plot_traject(interaction, operators=["x1","y1","z1","xx","yy","zz"])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

FrameDynamics-0.1.6.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

FrameDynamics-0.1.6-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file FrameDynamics-0.1.6.tar.gz.

File metadata

  • Download URL: FrameDynamics-0.1.6.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.0

File hashes

Hashes for FrameDynamics-0.1.6.tar.gz
Algorithm Hash digest
SHA256 e117b45958e2527aae0adbf2578eed71d699fb16d248b5143a9f7e185c3c1871
MD5 2b41f0a191d1ab1724487723c2817ff6
BLAKE2b-256 c7950d06591d77fc5b6fc06fc123fa2600b1332cd7fe9e80497a88da8b1411a9

See more details on using hashes here.

File details

Details for the file FrameDynamics-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: FrameDynamics-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.0

File hashes

Hashes for FrameDynamics-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 af2167dae705c126a78882c2b7404c5293032cd51b39b97c74e056629c1dda80
MD5 8c7207a20ef2058319283c4cfcc77d59
BLAKE2b-256 6ac2c309a2a13a0b1a8a763c20037052a54b70bb9b5753d372ecaa42d386108f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page