Beispiel #1
0
 def test_fs_coeff_double_sided(self):
     t = np.arange(0, 1, 1 / 1024.)
     x_rect = ss.rect(t - .1, 0.2)
     Xk, fk = ss.fs_coeff(x_rect, 25, 10)
     Xk_check, fk_check = (np.array([
         2.00195312e-01 + 0.00000000e+00j, 1.51763076e-01 - 1.09694238e-01j,
         4.74997396e-02 - 1.43783764e-01j, -3.04576408e-02 -
         9.61419900e-02j, -3.74435130e-02 - 2.77700018e-02j,
         1.95305146e-04 + 2.39687506e-06j, 2.56251893e-02 - 1.80472945e-02j,
         1.40893600e-02 - 4.09547511e-02j, -1.09682089e-02 -
         3.61573392e-02j, -1.64204592e-02 - 1.24934761e-02j,
         1.95283084e-04 + 4.79393062e-06j, 1.41580149e-02 - 9.71348931e-03j,
         8.52093529e-03 - 2.38144188e-02j, -6.47058053e-03 -
         2.23127601e-02j, -1.04138132e-02 - 8.12701956e-03j,
         1.95246305e-04 + 7.19134726e-06j, 9.85775554e-03 - 6.58674167e-03j,
         6.22804508e-03 - 1.67550994e-02j, -4.47157604e-03 -
         1.61581996e-02j, -7.56851964e-03 - 6.05743025e-03j,
         1.95194801e-04 + 9.58930569e-06j, 7.60518287e-03 - 4.94771418e-03j,
         4.97737845e-03 - 1.29033684e-02j,
         -3.34165027e-03 - 1.26784330e-02j,
         -5.90873600e-03 - 4.84917431e-03j, 1.95128558e-04 + 1.19879869e-05j
     ]),
                           np.array([
                               0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
                               110, 120, 130, 140, 150, 160, 170, 180, 190,
                               200, 210, 220, 230, 240, 250
                           ]))
     npt.assert_almost_equal(Xk, Xk_check)
     npt.assert_almost_equal(fk, fk_check)
Beispiel #2
0
 def show(self):
     if self.ui.t2_2.isChecked() and self.ui.GRE.isChecked():
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-5,5,1/fs)
         x0 = ss.rect(t-1,tau)
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t,x0+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1,x0+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2,x0+2,pen=self.Pen1[2])
         fs2 = 100
         tau2 = .15
         t2 = np.arange(-5,5,1/fs2)
         d = ss.rect(t2-1,tau2)
         self.ui.graphicsView.plot(t2,d+8)
Beispiel #3
0
 def test_conv_integral_value_error(self):
     tx = np.arange(-5, 10, 0.01)
     x = ss.rect(tx - 2, 4)
     with self.assertRaisesRegexp(
             ValueError,
             'Invalid x1 x2 extents specified or valid extent not found!'
     ) as ci_err:
         ss.conv_integral(x, tx, x, tx, extent=('v', 'v'))
Beispiel #4
0
 def test_fs_coeff_value_error(self):
     t = np.arange(0, 1, 1 / 1024.)
     x_rect = ss.rect(t - .1, 0.2)
     with self.assertRaisesRegexp(
             ValueError,
             'Number of samples in xp insufficient for requested N.'
     ) as fsc_err:
         Xk, fk = ss.fs_coeff(x_rect, 2**13, 10)
Beispiel #5
0
 def test_conv_integral(self):
     tx = np.arange(-5, 10, .5)
     x = ss.rect(tx - 2, 4)
     y, ty = ss.conv_integral(x, tx, x, tx)
     y_check = [0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 4., 3.5, 3., 2.5, 2., 1.5,1.]
     ty_check = [0., 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5, 6., 6.5, 7., 7.5]
     npt.assert_almost_equal(y[20:36], y_check)
     npt.assert_almost_equal(ty[20:36], ty_check)
Beispiel #6
0
 def test_conv_integral_fr(self):
     tx = np.arange(-5, 10, .5)
     x = ss.rect(tx - 2, 4)
     h = 4 * np.exp(-4 * tx) * ss.step(tx)
     y, ty = ss.conv_integral(x, tx, h, tx, extent=('f', 'r'))
     y_check = [2., 2.27067057, 2.30730184, 2.31225935, 2.31293027, 2.31302107, 2.31303336, 2.31303503, 2.31303525]
     ty_check = [0., 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4.]
     npt.assert_almost_equal(y[20:29], y_check)
     npt.assert_almost_equal(ty[20:29], ty_check)
Beispiel #7
0
 def test_ft_approx(self):
     f_check = [-0.9765625,  -0.95214844, -0.92773438, -0.90332031, -0.87890625, -0.85449219,
                -0.83007813, -0.80566406, -0.78125,    -0.75683594, -0.73242188, -0.70800781,
                -0.68359375, -0.65917969, -0.63476563, -0.61035156, -0.5859375,  -0.56152344,
                -0.53710938, -0.51269531, -0.48828125, -0.46386719, -0.43945313, -0.41503906,
                -0.390625,   -0.36621094, -0.34179688, -0.31738281, -0.29296875, -0.26855469,
                -0.24414063, -0.21972656, -0.1953125,  -0.17089844, -0.14648438, -0.12207031,
                -0.09765625, -0.07324219, -0.04882813, -0.02441406,  0.,          0.02441406,
                0.04882813,  0.07324219,  0.09765625,  0.12207031,  0.14648438,  0.17089844,
                0.1953125,   0.21972656,  0.24414063,  0.26855469,  0.29296875,  0.31738281,
                0.34179688,  0.36621094,  0.390625,    0.41503906,  0.43945313,  0.46386719,
                0.48828125,  0.51269531,  0.53710938,  0.56152344,  0.5859375,   0.61035156,
                0.63476563,  0.65917969,  0.68359375,  0.70800781,  0.73242188,  0.75683594,
                0.78125,     0.80566406,  0.83007813,  0.85449219,  0.87890625,  0.90332031,
                0.92773438,  0.95214844,  0.9765625]
     x0_check = [-0.0239171 +0.00176423j, -0.04951004+0.00749943j, -0.07525627+0.01738509j,
                 -0.10057869+0.03152397j, -0.12487991+0.0499405j, -0.14755292+0.07257755j,
                 -0.16799225+0.09929469j, -0.18560533+0.12986798j, -0.199824  +0.16399132j,
                 -0.21011574+0.20127937j, -0.2159946 +0.24127207j, -0.21703146+0.28344061j,
                 -0.21286354+0.32719476j, -0.20320288+0.37189165j, -0.1878436 +0.41684555j,
                 -0.16666796+0.4613387j, -0.13965075+0.50463298j, -0.10686233+0.54598217j,
                 -0.06846983+0.58464451j, -0.02473672+0.61989559j,  0.02397926+0.65104101j,
                 0.07723005+0.6774288j,  0.1344827 +0.69846136j,  0.19512652+0.71360648j,
                 0.25848156+0.72240758j,  0.32380858+0.72449264j,  0.39032004+0.71958188j,
                 0.45719214+0.70749384j,  0.52357765+0.68814999j,  0.58861928+0.66157749j,
                 0.6514633 +0.62791022j,  0.71127333+0.58738804j,  0.76724394+0.54035415j,
                 0.81861376+0.48725073j,  0.86467805+0.42861288j,  0.90480033+0.36506087j,
                 0.93842292+0.297291j,  0.96507627+0.22606507j,  0.98438673+0.15219871j,
                 0.99608288+0.07654876j,  1.        +0.j,  0.99608288-0.07654876j,
                 0.98438673-0.15219871j,  0.96507627-0.22606507j,  0.93842292-0.297291j,
                 0.90480033-0.36506087j,  0.86467805-0.42861288j,  0.81861376-0.48725073j,
                 0.76724394-0.54035415j,  0.71127333-0.58738804j,  0.6514633 -0.62791022j,
                 0.58861928-0.66157749j,  0.52357765-0.68814999j,  0.45719214-0.70749384j,
                 0.39032004-0.71958188j,  0.32380858-0.72449264j,  0.25848156-0.72240758j,
                 0.19512652-0.71360648j,  0.1344827 -0.69846136j,  0.07723005-0.6774288j,
                 0.02397926-0.65104101j, -0.02473672-0.61989559j, -0.06846983-0.58464451j,
                 -0.10686233-0.54598217j, -0.13965075-0.50463298j, -0.16666796-0.4613387j,
                 -0.1878436 -0.41684555j, -0.20320288-0.37189165j, -0.21286354-0.32719476j,
                 -0.21703146-0.28344061j, -0.2159946 -0.24127207j, -0.21011574-0.20127937j,
                 -0.199824  -0.16399132j, -0.18560533-0.12986798j, -0.16799225-0.09929469j,
                 -0.14755292-0.07257755j, -0.12487991-0.0499405j, -0.10057869-0.03152397j,
                 -0.07525627-0.01738509j, -0.04951004-0.00749943j, -0.0239171 -0.00176423j]
     fs = 100
     tau = 1
     t = np.arange(-5, 5, 1./fs)
     x0 = ss.rect(t-.5, tau)
     f,X0 = ss.ft_approx(x0, t, 4096)
     npt.assert_almost_equal(f[2008:2089], f_check)
     npt.assert_almost_equal(X0[2008:2089], x0_check)
Beispiel #8
0
 def test_rect(self):
     t = np.arange(-1, 5, .5)
     x = ss.rect(t, 1.0)
     x_check = np.array([0., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.])
     npt.assert_almost_equal(x, x_check)
Beispiel #9
0
 def showGraphicalRep(self):
     if self.prep == 'T2prep' and self.acquisition== 'gre':
         try:
             val = int(self.prepText)
         except:
             val = 0
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5*val,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5*val,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5*val,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         self.ui.graphicsView.plot(t,d+8)
         self.ui.graphicsView.plot(t+val,-d+8)
         self.ui.graphicsView.plot(t+1.5*val,(self.FA/90)*d+8)
     elif self.prep == 'T2prep' and self.acquisition == 'ssfp':
         try:
             val = int(self.prepText)
             TE = int(self.TE*1000)
         except:
             val = 0
             TE = 1
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5*val,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+TE+1.5*val,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2*TE+1.5*val,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         self.ui.graphicsView.plot(t,d+8)
         self.ui.graphicsView.plot(t+val,-d+8)
         self.ui.graphicsView.plot(t+1.5*val,(self.FA/90)*d+8)
         self.ui.graphicsView.plot(t+1.5*val+2.5*TE,(2*self.FA/90)*d+8)
     elif self.prep == 'T2prep' and self.acquisition == 'se':
         try:
             val = int(self.prepText)
             TE = int(self.TE*1000)
         except:
             val = 0
             TE = 1
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5*val,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+TE+1.5*val,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2*TE+1.5*val,y+2,pen=self.Pen1[2])
         x = 2*TE + 1.5*val
         self.ui.graphicsView.plot(t+x+1,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+x+2,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+x+3,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         self.ui.graphicsView.plot(t,d+8)
         self.ui.graphicsView.plot(t+val,-d+8)
         self.ui.graphicsView.plot(t+1.5*val,(self.FA/90)*d+8)
         self.ui.graphicsView.plot(t+1.5*val+3*TE,(2*self.FA/90)*d+8)
     elif self.prep == 'tagging' and self.acquisition == 'gre':
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         d2 = ss.rect(t-1,0.1)
         for i in range(10):
             self.ui.graphicsView.plot(t+i/10,d2+8)
         self.ui.graphicsView.plot(t+1.5,(self.FA/90)*d+8)
     elif self.prep == 'tagging' and self.acquisition == 'ssfp':
         fs = 100    # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         d2 = ss.rect(t-1,0.1)
         for i in range(10):
             self.ui.graphicsView.plot(t+i/10,d2+8)
         self.ui.graphicsView.plot(t+1.5,(self.FA/90)*d+8)
         self.ui.graphicsView.plot(t+1.5+2.5,(2*self.FA/90)*d+8)
     elif self.prep == 'tagging' and self.acquisition == 'se':
         fs = 100    # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5,y+2,pen=self.Pen1[2])
         self.ui.graphicsView.plot(t+2.5+2,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+2.5+3,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2.5+4,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         d2 = ss.rect(t-1,0.1)
         for i in range(10):
             self.ui.graphicsView.plot(t+i/10,d2+8)
         self.ui.graphicsView.plot(t+1.5,(self.FA/90)*d+8)
         self.ui.graphicsView.plot(t+1.5+3,(2*self.FA/90)*d+8)
     if self.prep == 'ir' and self.acquisition== 'gre':
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         self.ui.graphicsView.plot(t,2*d+8)
         self.ui.graphicsView.plot(t+1.5,(self.FA/90)*d+8)
     if self.prep == 'ir' and self.acquisition== 'ssfp':
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         self.ui.graphicsView.plot(t,2*d+8)
         self.ui.graphicsView.plot(t+1.5,(self.FA/90)*d+8)
         self.ui.graphicsView.plot(t+1.5+2.5,(2*self.FA/90)*d+8)
     if self.prep == 'ir' and self.acquisition== 'se':
         fs = 100 # sampling rate in Hz
         tau = 1
         t = np.arange(-20,20,1/fs)
         y = ss.rect(t-1,tau)
         ## draw gradients
         self.ui.graphicsView.setRange(xRange=[0,10])
         self.ui.graphicsView.setRange(yRange=[0,9])
         self.ui.graphicsView.plot(t+1.5,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+1+1.5,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2+1.5,y+2,pen=self.Pen1[2])
         self.ui.graphicsView.plot(t+2.5+2,y+6,pen=self.Pen1[0])
         self.ui.graphicsView.plot(t+2.5+3,y+4,pen=self.Pen1[1])
         self.ui.graphicsView.plot(t+2.5+4,y+2,pen=self.Pen1[2])
         tau2 = .15
         d = ss.rect(t-1,tau2)
         # draw RFs 
         self.ui.graphicsView.plot(t,2*d+8)
         self.ui.graphicsView.plot(t+1.5,(self.FA/90)*d+8)
         self.ui.graphicsView.plot(t+1.5+3,(2*self.FA/90)*d+8)