dcmri.Mz_free#
- dcmri.Mz_free(R1, T, v=1, Fw=0, j=None, n0=0, me=1)[source]#
- Free longitudinal magnetization. - See section Longitudinal relaxation for more detail. - Parameters:
- R1 (array-like) – Longitudinal relaxation rates in 1/sec. For a tissue with n compartments, the first dimension of R1 must be n. For a single compartment, R1 can be scalar or a 1D time-array. 
- T (array-like) – duration of free recovery. 
- v (array-like, optional) – volume fractions of the compartments. For a one-compartment tissue this is a scalar - otherwise it is an array with one value for each compartment. Defaults to 1. 
- Fw (array-like, optional) – Water flow between the compartments and to the environment, in units of mL/sec/cm3. Generally Fw must be a nxn array, where n is the number of compartments, and the off-diagonal elements Fw[j,i] are the permeability for water moving from compartment i into j. The diagonal elements Fw[i,i] quantify the flow of water from compartment i to outside. For a closed system with equal permeabilities between all compartments, a scalar value for Fw can be provided. Defaults to 0. 
- j (array-like, optional) – normalized tissue magnetization flux. j has to have the same shape as R1. Defaults to None. 
- n0 (array-like, optional) – initial relative magnetization at T=0. If this is a scalar, all compartments are assumed to have the same initial magnetization. Defaults to 0. 
- me (array-like, optional) – equilibrium magnetization of the tissue compartments. If a scalar value is provided, all compartments are assumed to have the same equilibrium magnetization. Defaults to 1. 
 
- Returns:
- Magnetization in the compartments after a time T. 
- Return type:
- np.ndarray 
 - Example - Magnetization recovery after inversion. - >>> import numpy as np >>> import matplotlib.pyplot as plt >>> import dcmri as dc - Plot magnetization recovery for the first 10 seconds after an inversion pulse, for a closed tissue with R1 = 1 sec, and for an open tissue with equilibrium inflow and inverted inflow: - >>> TI = 0.1*np.arange(100) >>> R1 = 1 >>> f = 0.5 - >>> Mz = dc.Mz_free(R1, TI, n0=-1) >>> Mz_e = dc.Mz_free(R1, TI, n0=-1, Fw=f, j=f) >>> Mz_i = dc.Mz_free(R1, TI, n0=-1, Fw=f, j=-f) - >>> plt.plot(TI, Mz, label='No flow', linewidth=3) >>> plt.plot(TI, Mz_e, label='Equilibrium inflow', linewidth=3) >>> plt.plot(TI, Mz_i, label='Inverted inflow', linewidth=3) >>> plt.xlabel('Inversion time (sec)') >>> plt.ylabel('Magnetization (A/cm)') >>> plt.legend() >>> plt.show() - ( - Source code,- png,- hires.png,- pdf)  - Now consider a two-compartment model, with a central compartment that has in- and outflow, and a peripheral compartment that only exchanges with the central compartment: - >>> R1 = [1,2] >>> v = [0.3, 0.7] >>> PS = 0.1 >>> Fw = [[f, PS], [PS, 0]] >>> Mz = dc.Mz_free(R1, TI, v, Fw, n0=-1, j=[f, 0]) - >>> plt.plot(TI, Mz[0,:], label='Central compartment', linewidth=3) >>> plt.plot(TI, Mz[1,:], label='Peripheral compartment', linewidth=3) >>> plt.xlabel('Inversion time (sec)') >>> plt.ylabel('Magnetization (A/cm)') >>> plt.legend() >>> plt.show()   - In DC-MRI the more usual situation is one where TI is fixed and the relaxation rates are variable due to the effect of a contrast agent. As an illustration, consider the previous result again at TI=500 msec and an R1 that is linearly declining in the central compartment and constant in the peripheral compartment: - >>> TI = 0.5 >>> nt = 1000 >>> t = 0.1*np.arange(nt) >>> R1 = np.stack((1-t/np.amax(t), np.ones(nt))) >>> j = np.stack((f*np.ones(nt), np.zeros(nt))) >>> Mz = dc.Mz_free(R1, TI, v, Fw, n0=-1, j=j) - >>> plt.plot(t, Mz[0,:], label='Central compartment', linewidth=3) >>> plt.plot(t, Mz[1,:], label='Peripheral compartment', linewidth=3) >>> plt.xlabel('Time (sec)') >>> plt.ylabel('Magnetization (A/cm)') >>> plt.legend() >>> plt.show()   - The function allows for R1 and TI to be both variable. Computing the result for 10 different TI values and extracting the result corresponding to TI=0.5 gives again the same result: - >>> TI = 0.1*np.arange(10) >>> Mz = dc.Mz_free(R1, TI, v, Fw, n0=-1, j=j) - >>> plt.plot(t, Mz[0,:,5], label='Central compartment', linewidth=3) >>> plt.plot(t, Mz[1,:,5], label='Peripheral compartment', linewidth=3) >>> plt.xlabel('Time (sec)') >>> plt.ylabel('Magnetization (A/cm)') >>> plt.legend() >>> plt.show()   
