In [1]:
from __future__ import division
# %pylab
import numpy as np
import epg

In [2]:
np.set_printoptions(suppress=True, precision=4, linewidth=300)

In [3]:
T1 = 1000e-3
T2 = 100e-3
TE = 5e-3

P_z = np.array([[0],[0],[1]])
P_xy = np.array([[1],[1],[0]])

def eRF(P, a, p):
    return epg.rf(P, np.pi/180 * a, np.pi/180*p)

def eTE(P, a, p):
    return epg.FSE_TE(P, a * np.pi/180, p * np.pi / 180, TE, T1, T2)

def eRelax(P, T):
    return epg.relax(P, T, T1, T2)

def eGrad(P):
    return epg.grad(P)

In [4]:
Q1 = eGrad(P_xy)
print Q1


[[0 1]
 [0 0]
 [0 0]]

In [5]:
Q2 = eRF(Q1, 120, 0)
print Q2


[[ 0.00+0.j     0.25+0.j   ]
 [ 0.00+0.j     0.75+0.j   ]
 [ 0.00+0.j     0.00-0.433j]]

In [6]:
Q3 = eGrad(Q2)
print Q3


[[ 0.75-0.j     0.00+0.j     0.25+0.j   ]
 [ 0.75+0.j     0.00+0.j     0.00+0.j   ]
 [ 0.00+0.j     0.00-0.433j  0.00+0.j   ]]

In [7]:
Q4 = eGrad(eRF(eGrad(Q3), 120, 0))
print Q4


[[ 0.9375-0.j      0.0000+0.j     -0.1875+0.j      0.0000+0.j      0.0625+0.j    ]
 [ 0.9375+0.j      0.0000+0.j      0.1875+0.j      0.0000+0.j      0.0000+0.j    ]
 [ 0.0000+0.j      0.0000-0.1083j  0.0000+0.j      0.0000-0.1083j  0.0000+0.j    ]]

In [8]:
Q5 = eGrad(eRF(eGrad(Q4), 100, 0))
print Q5


[[ 0.7342-0.j      0.0000+0.j      0.3908+0.j      0.0000+0.j     -0.1841+0.j      0.0000+0.j      0.0258+0.j    ]
 [ 0.7342+0.j      0.0000+0.j     -0.0034+0.j      0.0000+0.j      0.0367+0.j      0.0000+0.j      0.0000+0.j    ]
 [ 0.0000+0.j      0.0000-0.3505j  0.0000+0.j      0.0000+0.1111j  0.0000+0.j      0.0000-0.0308j  0.0000+0.j    ]]

In [9]:
Q6 = eGrad(eRF(eGrad(Q5), 120, 0))
print Q6


[[ 0.8534-0.j      0.0000+0.j     -0.1226+0.j      0.0000+0.j      0.2214+0.j      0.0000+0.j     -0.0727+0.j      0.0000+0.j      0.0065+0.j    ]
 [ 0.8534+0.j      0.0000+0.j      0.2060+0.j      0.0000+0.j     -0.1114+0.j      0.0000+0.j      0.0194+0.j      0.0000+0.j      0.0000+0.j    ]
 [ 0.0000+0.j      0.0000-0.1442j  0.0000+0.j      0.0000-0.2089j  0.0000+0.j      0.0000+0.0951j  0.0000+0.j      0.0000-0.0112j  0.0000+0.j    ]]

In [10]:
P1 = eRF(P_z, 90, 90)
P1


Out[10]:
array([[ 1.-0.j],
       [ 1.+0.j],
       [ 0.+0.j]])

In [11]:
P2 = eTE(P1, 120, 0)
P2


Out[11]:
array([[ 0.7134+0.j    ,  0.0000-0.0021j,  0.2378-0.j    ],
       [ 0.7134-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0013+0.j    , -0.0000-0.4213j,  0.0000+0.j    ]])

In [12]:
P3 = eTE(P2, 120, 0)
P3


Out[12]:
array([[ 0.8639-0.j    ,  0.0000-0.0032j, -0.1853+0.j    ,  0.0000-0.0005j,  0.0566-0.j    ],
       [ 0.8639+0.j    ,  0.0000-0.0015j,  0.1697-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0006+0.j    ,  0.0000-0.091j , -0.0009+0.j    , -0.0000-0.1002j,  0.0000+0.j    ]])

In [13]:
P4 = eRelax(P3, TE/2)
P4


Out[13]:
array([[ 0.8426-0.j    ,  0.0000-0.0031j, -0.1807+0.j    ,  0.0000-0.0005j,  0.0552-0.j    ],
       [ 0.8426+0.j    ,  0.0000-0.0015j,  0.1655-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0031+0.j    ,  0.0000-0.0907j, -0.0009+0.j    , -0.0000-0.0999j,  0.0000+0.j    ]])

In [14]:
P5 = eGrad(P4)
P5


Out[14]:
array([[ 0.0000+0.0015j,  0.8426-0.j    ,  0.0000-0.0031j, -0.1807+0.j    ,  0.0000-0.0005j,  0.0552-0.j    ],
       [ 0.0000-0.0015j,  0.1655-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0031+0.j    ,  0.0000-0.0907j, -0.0009+0.j    , -0.0000-0.0999j,  0.0000+0.j    ,  0.0000+0.j    ]])

In [15]:
P6 = eRF(P5, 120, 0)
P6


Out[15]:
array([[ 0.0000-0.0034j,  0.2562-0.j    ,  0.0000-0.j    , -0.1317+0.j    ,  0.0000-0.0001j,  0.0138-0.j    ],
       [ 0.0000+0.0034j,  0.7519+0.j    ,  0.0000-0.0031j, -0.0490+0.j    ,  0.0000-0.0004j,  0.0414-0.j    ],
       [-0.0003+0.j    , -0.0000-0.2478j, -0.0009+0.j    ,  0.0000+0.1282j, -0.0002+0.j    , -0.0000-0.0239j]])

In [16]:
P7 = eGrad(P6)
P7


Out[16]:
array([[ 0.7519-0.j    ,  0.0000-0.0034j,  0.2562-0.j    ,  0.0000-0.j    , -0.1317+0.j    ,  0.0000-0.0001j,  0.0138-0.j    ],
       [ 0.7519+0.j    ,  0.0000-0.0031j, -0.0490+0.j    ,  0.0000-0.0004j,  0.0414-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [-0.0003+0.j    , -0.0000-0.2478j, -0.0009+0.j    ,  0.0000+0.1282j, -0.0002+0.j    , -0.0000-0.0239j,  0.0000+0.j    ]])

In [17]:
P8 = eRelax(P7, TE/2)
P8


Out[17]:
array([[ 0.7333-0.j    ,  0.0000-0.0034j,  0.2498-0.j    ,  0.0000-0.j    , -0.1285+0.j    ,  0.0000-0.0001j,  0.0134-0.j    ],
       [ 0.7333+0.j    ,  0.0000-0.003j , -0.0478+0.j    ,  0.0000-0.0004j,  0.0403-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0022+0.j    , -0.0000-0.2472j, -0.0009+0.j    ,  0.0000+0.1279j, -0.0002+0.j    , -0.0000-0.0238j,  0.0000+0.j    ]])

In [18]:
P9 = eTE(P8, 100, 0)
P9


Out[18]:
array([[ 0.6274+0.j    ,  0.0000-0.005j ,  0.0247+0.j    ,  0.0000-0.0007j,  0.2432-0.j    ,  0.0000+0.0002j, -0.0733+0.j    ,  0.0000-0.j    ,  0.0053-0.j    ],
       [ 0.6274-0.j    ,  0.0000-0.0029j,  0.0328-0.j    ,  0.0000-0.0002j, -0.0489+0.j    ,  0.0000-0.0001j,  0.0075-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0046+0.j    , -0.0000-0.3315j, -0.0013+0.j    , -0.0000-0.1225j,  0.0000+0.j    ,  0.0000+0.0657j, -0.0001+0.j    , -0.0000-0.0064j,  0.0000+0.j    ]])

In [19]:
P10 = eTE(P9, 100, 0)
P10


Out[19]:
array([[ 0.6807+0.j    ,  0.0000-0.0072j, -0.0527+0.j    ,  0.0000-0.0009j, -0.1349+0.j    ,  0.0000-0.0003j,  0.1627-0.j    ,  0.0000+0.0001j, -0.0350+0.j    ,  0.0000-0.j    ,  0.0021-0.j    ],
       [ 0.6807-0.j    ,  0.0000-0.0041j,  0.1119-0.j    ,  0.0000-0.0004j,  0.0758-0.j    ,  0.0000+0.0001j, -0.0348+0.j    ,  0.0000-0.j    ,  0.0030-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0040+0.j    ,  0.0000-0.2276j, -0.0021+0.j    ,  0.0000-0.0141j, -0.0003+0.j    , -0.0000-0.1243j,  0.0001+0.j    ,  0.0000+0.0362j, -0.0000+0.j    , -0.0000-0.0025j,  0.0000+0.j    ]])

In [20]:
P11 = eTE(P10, 100, 0)
P11


Out[20]:
array([[ 0.6420-0.j    ,  0.0000-0.0069j,  0.1119-0.j    ,  0.0000-0.0011j,  0.0081-0.j    ,  0.0000-0.j    , -0.1915+0.j    ,  0.0000-0.0002j,  0.1003-0.j    ,  0.0000+0.0001j, -0.0162+0.j    ,  0.0000-0.j    ,  0.0008-0.j    ],
       [ 0.6420+0.j    ,  0.0000-0.0062j,  0.0139+0.j    ,  0.0000-0.0007j,  0.0301+0.j    ,  0.0000-0.0001j,  0.0573-0.j    ,  0.0000+0.0001j, -0.0171+0.j    ,  0.0000-0.j    ,  0.0012-0.j    ,  0.0000+0.j    ,  0.0000+0.j    ],
       [ 0.0053+0.j    ,  0.0000-0.2332j, -0.0029+0.j    ,  0.0000+0.064j , -0.0004+0.j    ,  0.0000+0.0695j, -0.0002+0.j    , -0.0000-0.0828j,  0.0001+0.j    ,  0.0000+0.0172j, -0.0000+0.j    , -0.0000-0.001j ,  0.0000+0.j    ]])

In [ ]:


In [ ]:


In [ ]:


In [ ]: