Exemple #1
0
def test_5d():
    # What happend to a 5d image, 
    # we should get 4d images back
    xyz_img = data_dict['fmridata']
    xyz_data = xyz_img.get_data()
    affine = xyz_img.affine
    xyz_data_5d = xyz_data.reshape(xyz_data.shape + (1,))
    fived = XYZImage(xyz_data_5d, affine, 'ijktv')
    mask_data = data_dict['mask'].get_data()
    mask_data = mask_data.reshape(mask_data.shape + (1,))
    mask4d = XYZImage(mask_data, affine, 'ijkv')
    nimages = data_dict['nimages']
    ntotal = nimages - 1
    ncomp = 5
    p = pca_image(fived, 't', mask4d, ncomp=ncomp)
    yield assert_equal, _rank(p), ntotal
    yield assert_equal, p['basis_vectors over t'].shape, (nimages, ntotal)
    yield assert_equal, p['basis_projections'].shape, xyz_data.shape[:3] + (ncomp, 1)
    yield assert_equal, p['pcnt_var'].shape, (ntotal,)
    yield assert_almost_equal, p['pcnt_var'].sum(), 100.

    yield assert_equal, p['basis_projections'].axes.coord_names, ['i','j','k','PCA components','v']
    yield assert_equal, p['basis_projections'].xyz_transform, xyz_img.xyz_transform

    xyz_data_5d = xyz_data.reshape(xyz_data.shape[:3] + (1,xyz_data.shape[3]))
    fived = XYZImage(xyz_data_5d, affine, list('ijkv') + ['group'])

    mask_data = data_dict['mask'].get_data()
    mask_data = mask_data.reshape(mask_data.shape + (1,))
    mask4d = XYZImage(mask_data, affine, 'ijkv')

    nimages = data_dict['nimages']

    ntotal = nimages - 1
    ncomp = 5
    # the axis does not have to be time
    p = pca_image(fived, mask=mask4d, ncomp=ncomp, axis='group')

    yield assert_equal, p['basis_vectors over group'].shape, (nimages, ntotal)
    yield assert_equal, p['basis_projections'].axes.coord_names, ['i','j','k','v','PCA components']
    yield assert_equal, p['basis_projections'].shape, xyz_data.shape[:3] + (1, ncomp)
Exemple #2
0
def test_PCANoMask():
    nimages = data_dict['nimages']
    ntotal = nimages - 1
    ncomp = 5
    p = pca_image(data_dict['fmridata'], ncomp=ncomp)
    yield assert_equal, _rank(p), ntotal
    yield assert_equal, p['basis_vectors over t'].shape, (nimages, ntotal)
    yield assert_equal, p['basis_projections'].shape, data_dict['mask'].shape + (ncomp,)
    yield assert_equal, p['pcnt_var'].shape, (ntotal,)
    yield assert_almost_equal, p['pcnt_var'].sum(), 100.
    yield assert_equal, p['basis_projections'].axes.coord_names, ['i','j','k','PCA components']
    yield assert_equal, p['basis_projections'].xyz_transform, data_dict['mask'].xyz_transform
Exemple #3
0
def test_PCAMask_nostandardize():
    nimages = data_dict['nimages']
    ntotal = nimages - 1
    ncomp = 5
    p = pca_image(data_dict['fmridata'], 't',
                  data_dict['mask'],
                  ncomp=ncomp, standardize=False)
    yield assert_equal(_rank(p), ntotal)
    yield assert_equal(p['basis_vectors over t'].shape, (nimages, ntotal))
    yield assert_equal(p['basis_projections'].shape, data_dict['mask'].shape + (ncomp,))
    yield assert_equal(p['pcnt_var'].shape, (ntotal,))
    yield assert_almost_equal(p['pcnt_var'].sum(), 100.)
    yield assert_equal(p['basis_projections'].axes.coord_names, ['i','j','k','PCA components'])
    yield assert_equal(p['basis_projections'].xyz_transform, data_dict['mask'].xyz_transform)
Exemple #4
0
def test_resid():
    # Data is projected onto k=10 dimensional subspace then has its mean
    # removed.  Should still have rank 10.
    k = 10
    ncomp = 5
    nimages = data_dict['nimages']
    ntotal = k
    X = np.random.standard_normal((nimages, k))
    p = pca_image(data_dict['fmridata'], ncomp=ncomp, design_resid=X)
    yield assert_equal, _rank(p), ntotal
    yield assert_equal, p['basis_vectors over t'].shape, (nimages, ntotal)
    yield assert_equal, p['basis_projections'].shape, data_dict['mask'].shape + (ncomp,)
    yield assert_equal, p['pcnt_var'].shape, (ntotal,)
    yield assert_almost_equal, p['pcnt_var'].sum(), 100.
    yield assert_equal, p['basis_projections'].axes.coord_names, ['i','j','k','PCA components']
    yield assert_equal, p['basis_projections'].xyz_transform, data_dict['mask'].xyz_transform
Exemple #5
0
def test_both():
    k1 = 10
    k2 = 8
    ncomp = 5
    nimages = data_dict['nimages']
    ntotal = k1
    X1 = np.random.standard_normal((nimages, k1))
    X2 = np.random.standard_normal((nimages, k2))
    p = pca_image(data_dict['fmridata'], ncomp=ncomp, design_resid=X2, design_keep=X1)

    yield assert_equal, _rank(p), ntotal
    yield assert_equal, p['basis_vectors over t'].shape, (nimages, ntotal)
    yield assert_equal, p['basis_projections'].shape, data_dict['mask'].shape + (ncomp,)
    yield assert_equal, p['pcnt_var'].shape, (ntotal,)
    yield assert_almost_equal, p['pcnt_var'].sum(), 100.

    yield assert_equal, p['basis_projections'].axes.coord_names, ['i','j','k','PCA components']
    yield assert_equal, p['basis_projections'].xyz_transform, data_dict['mask'].xyz_transform