Exemplo n.º 1
0
def test_ar_modeling():
    # Compare against standard routines
    rng = np.random.RandomState(20110903)
    N = 10
    Y = rng.normal(size=(N,1)) * 10 + 100
    X = np.c_[np.linspace(-1,1,N), np.ones((N,))]
    my_model = OLSModel(X)
    results = my_model.fit(Y)
    # fmristat wrapper
    rhos = estimateAR(results.resid, my_model.design, order=2)
    assert_equal(rhos.shape, (2,))
    assert_true(np.all(np.abs(rhos <= 1)))
    # standard routine
    rhos2 = ar_bias_correct(results, 2)
    assert_array_almost_equal(rhos, rhos2, 8)
    # Make 2D and 3D Y
    Y = rng.normal(size=(N,4)) * 10 + 100
    results = my_model.fit(Y)
    rhos = estimateAR(results.resid, my_model.design, order=2)
    assert_equal(rhos.shape, (2,4))
    assert_true(np.all(np.abs(rhos <= 1)))
    rhos2 = ar_bias_correct(results, 2)
    assert_array_almost_equal(rhos, rhos2, 8)
    # 3D
    results.resid = np.reshape(results.resid, (N,2,2))
    rhos = estimateAR(results.resid, my_model.design, order=2)
    assert_equal(rhos.shape, (2,2,2))
    assert_true(np.all(np.abs(rhos <= 1)))
    rhos2 = ar_bias_correct(results, 2)
    assert_array_almost_equal(rhos, rhos2, 8)
Exemplo n.º 2
0
def test_ar_modeling():
    # Compare against standard routines
    rng = np.random.RandomState(20110903)
    N = 10
    Y = rng.normal(size=(N, 1)) * 10 + 100
    X = np.c_[np.linspace(-1, 1, N), np.ones((N, ))]
    my_model = OLSModel(X)
    results = my_model.fit(Y)
    # fmristat wrapper
    rhos = estimateAR(results.resid, my_model.design, order=2)
    assert_equal(rhos.shape, (2, ))
    assert_true(np.all(np.abs(rhos <= 1)))
    # standard routine
    rhos2 = ar_bias_correct(results, 2)
    assert_array_almost_equal(rhos, rhos2, 8)
    # Make 2D and 3D Y
    Y = rng.normal(size=(N, 4)) * 10 + 100
    results = my_model.fit(Y)
    rhos = estimateAR(results.resid, my_model.design, order=2)
    assert_equal(rhos.shape, (2, 4))
    assert_true(np.all(np.abs(rhos <= 1)))
    rhos2 = ar_bias_correct(results, 2)
    assert_array_almost_equal(rhos, rhos2, 8)
    # 3D
    results.resid = np.reshape(results.resid, (N, 2, 2))
    rhos = estimateAR(results.resid, my_model.design, order=2)
    assert_equal(rhos.shape, (2, 2, 2))
    assert_true(np.all(np.abs(rhos <= 1)))
    rhos2 = ar_bias_correct(results, 2)
    assert_array_almost_equal(rhos, rhos2, 8)
Exemplo n.º 3
0
def test_altprotocol():
    block, bT, bF = protocol(descriptions['block'], 'block', *delay.spectral)
    event, eT, eF = protocol(descriptions['event'], 'event', *delay.spectral)

    blocka, baT, baF = altprotocol(altdescr['block'], 'block', *delay.spectral)
    eventa, eaT, eaF = altprotocol(altdescr['event'], 'event', *delay.spectral)

    for c in bT.keys():
        baf = baT[c]
        if not isinstance(baf, formulae.Formula):
            baf = formulae.Formula([baf])

        bf = bT[c]
        if not isinstance(bf, formulae.Formula):
            bf = formulae.Formula([bf])

    X = baf.design(t, return_float=True)
    Y = bf.design(t, return_float=True)
    if X.ndim == 1:
        X.shape = (X.shape[0], 1)
    m = OLSModel(X)
    r = m.fit(Y)
    remaining = (r.resid**2).sum() / (Y**2).sum()
    assert_almost_equal(remaining, 0)

    for c in bF.keys():
        baf = baF[c]
        if not isinstance(baf, formulae.Formula):
            baf = formulae.Formula([baf])

        bf = bF[c]
        if not isinstance(bf, formulae.Formula):
            bf = formulae.Formula([bf])

    X = baf.design(t, return_float=True)
    Y = bf.design(t, return_float=True)
    if X.ndim == 1:
        X.shape = (X.shape[0], 1)
    m = OLSModel(X)
    r = m.fit(Y)
    remaining = (r.resid**2).sum() / (Y**2).sum()
    assert_almost_equal(remaining, 0)
Exemplo n.º 4
0
def test_altprotocol():
    block, bT, bF = protocol(descriptions['block'], 'block', *delay.spectral)
    event, eT, eF = protocol(descriptions['event'], 'event', *delay.spectral)

    blocka, baT, baF = altprotocol(altdescr['block'], 'block', *delay.spectral)
    eventa, eaT, eaF = altprotocol(altdescr['event'], 'event', *delay.spectral)

    for c in bT.keys():
        baf = baT[c]
        if not isinstance(baf, formulae.Formula):
            baf = formulae.Formula([baf])

        bf = bT[c]
        if not isinstance(bf, formulae.Formula):
            bf = formulae.Formula([bf])

    X = baf.design(t, return_float=True)
    Y = bf.design(t, return_float=True)
    if X.ndim == 1:
        X.shape = (X.shape[0], 1)
    m = OLSModel(X)
    r = m.fit(Y)
    remaining = (r.resid**2).sum() / (Y**2).sum()
    assert_almost_equal(remaining, 0)

    for c in bF.keys():
        baf = baF[c]
        if not isinstance(baf, formulae.Formula):
            baf = formulae.Formula([baf])

        bf = bF[c]
        if not isinstance(bf, formulae.Formula):
            bf = formulae.Formula([bf])

    X = baf.design(t, return_float=True)
    Y = bf.design(t, return_float=True)
    if X.ndim == 1:
        X.shape = (X.shape[0], 1)
    m = OLSModel(X)
    r = m.fit(Y)
    remaining = (r.resid**2).sum() / (Y**2).sum()
    assert_almost_equal(remaining, 0)
Exemplo n.º 5
0
        tempdict[v] = np.zeros(mask_array.sum())
    output[contrast_id] = tempdict


########################################
# Perform a GLM analysis
########################################

print 'Fitting a GLM (this takes time)...'
fmri_image = load(data_path)
Y = fmri_image.get_data()[mask_array]
X = design_matrix.matrix

m = OLSModel(X)
# Fit the model, storing an estimate of an AR(1) parameter at each voxel
result = m.fit(Y.T)
ar1 = ((result.resid[1:] * result.resid[:-1]).sum(0) /
          (result.resid ** 2).sum(0))
ar1 *= 100
ar1 = ar1.astype(np.int) / 100.


for val in np.unique(ar1):
    armask = np.equal(ar1, val)
    m = ARModel(X, val)
    d = Y[armask]
    results = m.fit(d.T)
    
    # Output the results for each contrast
    for (contrast_id, contrast_val) in contrasts.items():
        resT = results.Tcontrast(contrast_val)