def test_dmtx0b(): # test design matrix creation when no paradigm is provided # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) X, names = dmtx_light(frametimes, drift_model="Polynomial", drift_order=3) assert_almost_equal(X[:, 0], np.linspace(0, 1.0, 128))
def test_dmtx0(): # test design matrix creation when no paradigm is provided # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) X, names = dmtx_light(frametimes, drift_model="Polynomial", drift_order=3) print names assert_true(len(names) == 4)
def test_dmtx0d(): # test design matrix creation when regressors are provided manually # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) ax = np.random.randn(128, 4) X, names = dmtx_light(frametimes, drift_model="Polynomial", drift_order=3, add_regs=ax) assert_true((len(names) == 8) & (X.shape[1] == 8))
def test_dmtx0c(): # test design matrix creation when regressors are provided manually # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) ax = np.random.randn(128, 4) X, names = dmtx_light(frametimes, drift_model="Polynomial", drift_order=3, add_regs=ax) assert_almost_equal(X[:, 0], ax[:, 0])
def test_dmtx1(): # basic test based on basic_paradigm and canonical hrf tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "Canonical" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) print names assert_true(len(names) == 7)
def test_dmtx6(): # idem test_dmtx1 with a block paradigm and the hrf derivative # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = block_paradigm() hrf_model = "Canonical With Derivative" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) assert_true(len(names) == 10)
def test_dmtx1d(): # idem test_dmtx1, but different test # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "Canonical" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) assert_true((np.isnan(X) == 0).all())
def test_dmtx3(): # idem test_dmtx1 with a different drift term # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "Canonical" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Blank") print names assert_true(len(names) == 4)
def test_dmtx12(): # check that the 11th column of a FIR design matrix is indeed OK tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "FIR" X, names = dmtx_light( frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3, fir_delays=range(1, 5) ) assert_true(np.all(X[paradigm[paradigm[:, 0] == 2, 1] + 5, 11] == 1))
def test_dmtx1b(): # idem test_dmtx1, but different test # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "Canonical" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) print np.shape(X) assert_true(X.shape == (128, 7))
def test_dmtx5(): # idem test_dmtx1 with a block paradigm # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = block_paradigm() hrf_model = "Canonical" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) print names assert_true(len(names) == 7)
def test_dmtx4(): # idem test_dmtx1 with a different hrf model # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "Canonical With Derivative" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) print names assert_true(len(names) == 10)
def test_dmtx14(): # Check that the first column o FIR design matrix is OK after a 1/2 # time shift tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) + tr / 2 paradigm = basic_paradigm() hrf_model = "FIR" X, names = dmtx_light( frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3, fir_delays=range(1, 5) ) assert_true(np.all(X[paradigm[paradigm[:, 0] == 0, 1] + 1, 0] == 1))
def test_dmtx18(): """ Test the effect of scaling on the blocks """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = modulated_block_paradigm() hrf_model='Canonical' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3) assert_true((X[paradigm.onset[paradigm.index==0].astype(np.int)+3,0]>0).all())
def test_dmtx1(): """ basic test based on basic_paradigm and canonical hrf """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model='Canonical' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3) assert_true(len(names)==7)
def test_dmtx1c(): """ idem test_dmtx1, but different test """ tr = 1.0 frametimes = np.linspace(0,127*tr,128) paradigm = basic_paradigm() hrf_model='Canonical' X,names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3) assert_true((X[:,-1]==1).all())
def test_dmtx9(): """ basic test based on basic_paradigm and FIR """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model='FIR' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, fir_delays=range(1,5)) print names assert_true(len(names)==16)
def test_dmtx2(): """ idem test_dmtx1 with a different drift term """ tr = 1.0 frametimes = np.linspace(0,127*tr,128) paradigm = basic_paradigm() hrf_model='Canonical' X,names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Cosine', hfcut=63) print names assert_true(len(names)==8)
def test_dmtx13(): """ Check that the fir_duration is well taken into account """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model='FIR' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, fir_delays=range(1,5), fir_duration=2*tr) assert_true(np.all(X[paradigm.onset[paradigm.index==0]+2, 0]==1))
def test_dmtx15(): """ basic test based on basic_paradigm, plus user supplied regressors """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model='Canonical' ax = np.random.randn(128,4) X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, add_regs=ax) assert_true((len(names)==11)&(X.shape[1]==11))
def test_dmtx16(): """ check that additional regressors are put at the reight place """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model ='Canonical' ax = np.random.randn(128,4) X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, add_regs=ax) assert_almost_equal(X[:,3:7],ax)
def test_dmtx12(): """ check that the 11th column of a FIR design matrix is indeed OK """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model='FIR' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, fir_delays=range(1,5)) assert_true(np.all(X[paradigm.onset[paradigm.index==2]+4, 11]==1))
def test_dmtx17(): """ Test the effect of scaling on the events """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = modulated_event_paradigm() hrf_model = 'Canonical' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3) assert_true((X[paradigm.onset[paradigm.con_id=='c0'].astype(np.int)+1,0]\ > 0).all())
def test_dmtx7(): # idem test_dmtx1, but odd paradigm # tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) conditions = [0, 0, 0, 1, 1, 1, 3, 3, 3] # no condition '2' onsets = [30, 70, 100, 10, 30, 90, 30, 40, 60] paradigm = np.vstack(([conditions, onsets])).T return paradigm hrf_model = "Canonical" X, names = dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3) assert_true(len(names) == 7)
def test_dmtx19(): """ Test the effect of scaling on a FIR model """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = modulated_event_paradigm() hrf_model='FIR' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, fir_delays=range(1,5)) idx = paradigm.onset[paradigm.index==0].astype(np.int) assert_true((X[idx+1,0]==X[idx+2,1]).all())
def test_dmtx11(): """ check that the second column of the FIR design matrix is OK indeed """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128) paradigm = basic_paradigm() hrf_model='FIR' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, fir_delays=range(1,5)) onset = paradigm.onset[paradigm.con_id=='c0'].astype(np.int) assert_true(np.all(X[onset+3, 2]==1))
def test_dmtx14(): """ Check that the first column o FIR design matrix is OK after a 1/2 time shift """ tr = 1.0 frametimes = np.linspace(0, 127*tr,128)+tr/2 paradigm = basic_paradigm() hrf_model='FIR' X, names= dm.dmtx_light(frametimes, paradigm, hrf_model=hrf_model, drift_model='Polynomial', drift_order=3, fir_delays=range(1,5)) assert_true(np.all(X[paradigm.onset[paradigm.index==0]+1,0]==1))
def test_dmtx13(): # Check that the fir_duration is well taken into account tr = 1.0 frametimes = np.linspace(0, 127 * tr, 128) paradigm = basic_paradigm() hrf_model = "FIR" X, names = dmtx_light( frametimes, paradigm, hrf_model=hrf_model, drift_model="Polynomial", drift_order=3, fir_delays=range(1, 5), fir_duration=2 * tr, ) assert_true(np.all(X[paradigm[paradigm[:, 0] == 0, 1] + 3, 0] == 1))
""" import numpy as np from nipy.neurospin.utils.design_matrix import dmtx_light tr = 1.0 frametimes = np.linspace(0,127*tr,128) conditions = [0,0,0,1,1,1,3,3,3] onsets=[30,70,100,10,30,90,30,40,60] hrf_model = 'Canonical' motion = np.cumsum(np.random.randn(128,6),0) add_reg_names = ['tx','ty','tz','rx','ry','rz'] #event-related design matrix paradigm = np.vstack(([conditions, onsets])).T x1,name1 = dmtx_light(frametimes, paradigm, drift_model='Polynomial', drift_order=3, add_regs=motion, add_reg_names=add_reg_names) # block design matrix duration = 7*np.ones(9) paradigm = np.vstack(([conditions, onsets, duration])).T x2,name2 = dmtx_light(frametimes, paradigm, drift_model='Polynomial', drift_order=3) # FIR model paradigm = np.vstack(([conditions, onsets])).T hrf_model = 'FIR' x3,name3 = dmtx_light(frametimes, paradigm, hrf_model = 'FIR', drift_model='Polynomial', drift_order=3, fir_delays = range(1,6)) import matplotlib.pylab as mp mp.figure()
frametimes = np.linspace(0, (n_scans-1)*tr, n_scans) conditions = np.arange(20)%2 onsets = np.linspace(5, (n_scans-1)*tr-10, 20) # in seconds hrf_model = 'Canonical' motion = np.cumsum(np.random.randn(n_scans, 6),0) add_reg_names = ['tx','ty','tz','rx','ry','rz'] # write directory swd = tempfile.mkdtemp() ######################################## # Design matrix ######################################## paradigm = dm.EventRelatedParadigm(conditions, onsets) X, names = dm.dmtx_light(frametimes, drift_model='Cosine', hfcut=128, hrf_model=hrf_model, paradigm=paradigm, add_regs=motion, add_reg_names=add_reg_names) ####################################### # Get the FMRI data ####################################### fmri_data = surrogate_4d_dataset(shape=shape, n_scans=n_scans)[0] # if you want to save it as an image data_file = op.join(swd,'fmri_data.nii') save(fmri_data, data_file) ######################################## # Perform a GLM analysis ########################################
hrf_model = 'Canonical' motion = np.cumsum(np.random.randn(n_scans, 6), 0) add_reg_names = ['tx', 'ty', 'tz', 'rx', 'ry', 'rz'] # write directory swd = tempfile.mkdtemp() ######################################## # Design matrix ######################################## paradigm = dm.EventRelatedParadigm(conditions, onsets) X, names = dm.dmtx_light(frametimes, drift_model='Cosine', hfcut=128, hrf_model=hrf_model, paradigm=paradigm, add_regs=motion, add_reg_names=add_reg_names) ####################################### # Get the FMRI data ####################################### fmri_data = surrogate_4d_dataset(shape=shape, n_scans=n_scans)[0] # if you want to save it as an image data_file = op.join(swd, 'fmri_data.nii') save(fmri_data, data_file) ########################################