def test_isc_output():

    logger.info("Testing ISC outputs")

    data = correlated_timeseries(20, 60, noise=0,
                                 random_state=42)
    iscs = isc(data, pairwise=False)
    assert np.allclose(iscs[:, :2], 1., rtol=1e-05)
    assert np.all(iscs[:, -1] < 1.)

    iscs = isc(data, pairwise=True)
    assert np.allclose(iscs[:, :2], 1., rtol=1e-05)
    assert np.all(iscs[:, -1] < 1.)

    logger.info("Finished testing ISC outputs")
def test_isc_input():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30
    random_state = 42

    logger.info("Testing ISC inputs")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=None, data_type='list',
                                random_state=random_state)
    iscs_list = isc(data, pairwise=False, summary_statistic=None)

    # Array of subjects with one voxel/ROI
    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=None, data_type='array',
                                random_state=random_state)
    iscs_array = isc(data, pairwise=False, summary_statistic=None)

    # Check they're the same
    assert np.array_equal(iscs_list, iscs_array)

    # List of subjects with multiple voxels/ROIs
    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='list',
                                random_state=random_state)
    iscs_list = isc(data, pairwise=False, summary_statistic=None)

    # Array of subjects with multiple voxels/ROIs
    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)
    iscs_array = isc(data, pairwise=False, summary_statistic=None)

    # Check they're the same
    assert np.array_equal(iscs_list, iscs_array)

    logger.info("Finished testing ISC inputs")
def test_phaseshift_isc():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30

    logger.info("Testing phase randomization")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array')
    observed, p, distribution = phaseshift_isc(data, pairwise=True,
                                               summary_statistic='median',
                                               n_shifts=200)

    # Phase randomization one-sample test, leave-one-out
    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array')
    observed, p, distribution = phaseshift_isc(data, pairwise=False,
                                               summary_statistic='mean',
                                               n_shifts=200)

    # Check output p-values
    data = correlated_timeseries(20, 60, noise=.5,
                                 random_state=42)
    iscs = isc(data, pairwise=False)
    observed, p, distribution = phaseshift_isc(data, pairwise=False)
    assert np.all(iscs[:, :2] > .5)
    assert np.all(iscs[:, -1] < .5)
    assert p[0] < .05 and p[1] < .05
    assert p[2] > .01

    iscs = isc(data, pairwise=True)
    observed, p, distribution = phaseshift_isc(data, pairwise=True)
    assert np.all(iscs[:, :2] > .5)
    assert np.all(iscs[:, -1] < .5)
    assert p[0] < .05 and p[1] < .05
    assert p[2] > .01

    # Check that ISC computation and permutation observed are same
    iscs = isc(data, pairwise=False)
    observed, p, distribution = phaseshift_isc(data, pairwise=False,
                                               summary_statistic='median')
    assert np.allclose(observed, isc(data, pairwise=False,
                                     summary_statistic='median'),
                       rtol=1e-03)

    # Check that ISC computation and permuation observed are same
    iscs = isc(data, pairwise=True)
    observed, p, distribution = phaseshift_isc(data, pairwise=True,
                                               summary_statistic='mean')
    assert np.allclose(observed, isc(data, pairwise=True,
                                     summary_statistic='mean'),
                       rtol=1e-03)

    logger.info("Finished testing phase randomization")
def test_squareform_isfc():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30
    random_state = 42

    logger.info("Testing ISC options")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)

    # Generate square redundant ISFCs
    isfcs_r = isfc(data, vectorize_isfcs=False)
    assert isfcs_r.shape == (n_subjects, n_voxels, n_voxels)

    # Squareform these into condensed ISFCs and ISCs
    isfcs_c, iscs_c = squareform_isfc(isfcs_r)
    assert isfcs_c.shape == (n_subjects, n_voxels * (n_voxels - 1) / 2)
    assert iscs_c.shape == (n_subjects, n_voxels)

    # Go back the other way and check it's the same
    isfcs_new = squareform_isfc(isfcs_c, iscs_c)
    assert np.array_equal(isfcs_r, isfcs_new)

    # Check against ISC function
    assert np.allclose(isc(data), iscs_c, rtol=1e-03)

    # Check for two subjects
    isfcs_r = isfc(data[..., :2], vectorize_isfcs=False)
    assert isfcs_r.shape == (n_voxels, n_voxels)
    isfcs_c, iscs_c = squareform_isfc(isfcs_r)
    assert isfcs_c.shape == (n_voxels * (n_voxels - 1) / 2,)
    assert iscs_c.shape == (n_voxels,)
    assert np.array_equal(isfcs_r, squareform_isfc(isfcs_c, iscs_c))
def test_isc_options():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30
    random_state = 42

    logger.info("Testing ISC options")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)

    iscs_loo = isc(data, pairwise=False, summary_statistic=None)
    assert iscs_loo.shape == (n_subjects, n_voxels)

    # Just two subjects
    iscs_loo = isc(data[..., :2], pairwise=False, summary_statistic=None)
    assert iscs_loo.shape == (n_voxels,)

    iscs_pw = isc(data, pairwise=True, summary_statistic=None)
    assert iscs_pw.shape == (n_subjects*(n_subjects-1)/2, n_voxels)

    # Check summary statistics
    isc_mean = isc(data, pairwise=False, summary_statistic='mean')
    assert isc_mean.shape == (n_voxels,)

    isc_median = isc(data, pairwise=False, summary_statistic='median')
    assert isc_median.shape == (n_voxels,)

    try:
        isc(data, pairwise=False, summary_statistic='min')
    except ValueError:
        logger.info("Correctly caught unexpected summary statistic")

    logger.info("Finished testing ISC options")
def test_isfc_options():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30

    logger.info("Testing ISFC options")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array')
    isfcs, iscs = isfc(data, pairwise=False, summary_statistic=None)
    assert isfcs.shape == (n_subjects, n_voxels * (n_voxels - 1) / 2)
    assert iscs.shape == (n_subjects, n_voxels)

    # Without vectorized upper triangle
    isfcs = isfc(data, pairwise=False, summary_statistic=None,
                 vectorize_isfcs=False)
    assert isfcs.shape == (n_subjects, n_voxels, n_voxels)

    # Just two subjects
    isfcs, iscs = isfc(data[..., :2], pairwise=False, summary_statistic=None)
    assert isfcs.shape == (n_voxels * (n_voxels - 1) / 2,)
    assert iscs.shape == (n_voxels,)

    isfcs = isfc(data[..., :2], pairwise=False, summary_statistic=None,
                 vectorize_isfcs=False)
    assert isfcs.shape == (n_voxels, n_voxels)

    # ISFC with pairwise approach
    isfcs, iscs = isfc(data, pairwise=True, summary_statistic=None)
    assert isfcs.shape == (n_subjects * (n_subjects - 1) / 2,
                           n_voxels * (n_voxels - 1) / 2)
    assert iscs.shape == (n_subjects * (n_subjects - 1) / 2,
                          n_voxels)

    isfcs = isfc(data, pairwise=True, summary_statistic=None,
                 vectorize_isfcs=False)
    assert isfcs.shape == (n_subjects * (n_subjects - 1) / 2,
                           n_voxels, n_voxels)

    # ISFC with summary statistics
    isfcs, iscs = isfc(data, pairwise=True, summary_statistic='mean')
    isfcs, iscs = isfc(data, pairwise=True, summary_statistic='median')

    # Check output p-values
    data = correlated_timeseries(20, 60, noise=.5,
                                 random_state=42)
    isfcs = isfc(data, pairwise=False, vectorize_isfcs=False)
    assert np.all(isfcs[:, 0, 1] > .5) and np.all(isfcs[:, 1, 0] > .5)
    assert np.all(isfcs[:, :2, 2] < .5) and np.all(isfcs[:, 2, :2] < .5)

    isfcs = isfc(data, pairwise=True, vectorize_isfcs=False)
    assert np.all(isfcs[:, 0, 1] > .5) and np.all(isfcs[:, 1, 0] > .5)
    assert np.all(isfcs[:, :2, 2] < .5) and np.all(isfcs[:, 2, :2] < .5)

    # Check that ISC and ISFC diagonal are identical
    iscs = isc(data, pairwise=False)
    isfcs = isfc(data, pairwise=False, vectorize_isfcs=False)
    for s in np.arange(len(iscs)):
        assert np.allclose(isfcs[s, ...].diagonal(), iscs[s, :], rtol=1e-03)
    isfcs, iscs_v = isfc(data, pairwise=False)
    assert np.allclose(iscs, iscs_v, rtol=1e-03)

    # Check that ISC and ISFC diagonal are identical (pairwise)
    iscs = isc(data, pairwise=True)
    isfcs = isfc(data, pairwise=True, vectorize_isfcs=False)
    for s in np.arange(len(iscs)):
        assert np.allclose(isfcs[s, ...].diagonal(), iscs[s, :], rtol=1e-03)
    isfcs, iscs_v = isfc(data, pairwise=True)
    assert np.allclose(iscs, iscs_v, rtol=1e-03)

    logger.info("Finished testing ISFC options")
def test_permutation_isc():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30
    random_state = 42
    group_assignment = [1] * 10 + [2] * 10

    logger.info("Testing permutation test")

    # Create dataset with two groups in pairwise approach
    data = np.dstack((simulated_timeseries(10, n_TRs, n_voxels=n_voxels,
                                           noise=1, data_type='array',
                                           random_state=3),
                      simulated_timeseries(10, n_TRs, n_voxels=n_voxels,
                                           noise=5, data_type='array',
                                           random_state=4)))
    iscs = isc(data, pairwise=True, summary_statistic=None)

    observed, p, distribution = permutation_isc(
                                            iscs,
                                            group_assignment=group_assignment,
                                            pairwise=True,
                                            summary_statistic='mean',
                                            n_permutations=200)

    # Create data with two groups in leave-one-out approach
    data_1 = simulated_timeseries(10, n_TRs, n_voxels=n_voxels,
                                  noise=1, data_type='array',
                                  random_state=3)
    data_2 = simulated_timeseries(10, n_TRs, n_voxels=n_voxels,
                                  noise=10, data_type='array',
                                  random_state=4)
    iscs = np.vstack((isc(data_1, pairwise=False, summary_statistic=None),
                      isc(data_2, pairwise=False, summary_statistic=None)))

    observed, p, distribution = permutation_isc(
                                            iscs,
                                            group_assignment=group_assignment,
                                            pairwise=False,
                                            summary_statistic='mean',
                                            n_permutations=200)

    # One-sample leave-one-out permutation test
    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)
    iscs = isc(data, pairwise=False, summary_statistic=None)

    observed, p, distribution = permutation_isc(iscs,
                                                pairwise=False,
                                                summary_statistic='median',
                                                n_permutations=200)

    # One-sample pairwise permutation test
    iscs = isc(data, pairwise=True, summary_statistic=None)

    observed, p, distribution = permutation_isc(iscs,
                                                pairwise=True,
                                                summary_statistic='median',
                                                n_permutations=200)

    # Small one-sample pairwise exact test
    data = simulated_timeseries(12, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)
    iscs = isc(data, pairwise=False, summary_statistic=None)

    observed, p, distribution = permutation_isc(iscs, pairwise=False,
                                                summary_statistic='median',
                                                n_permutations=10000)

    # Small two-sample pairwise exact test (and unequal groups)
    data = np.dstack((simulated_timeseries(3, n_TRs, n_voxels=n_voxels,
                                           noise=1, data_type='array',
                                           random_state=3),
                      simulated_timeseries(4, n_TRs, n_voxels=n_voxels,
                                           noise=50, data_type='array',
                                           random_state=4)))
    iscs = isc(data, pairwise=True, summary_statistic=None)
    group_assignment = [1, 1, 1, 2, 2, 2, 2]

    observed, p, distribution = permutation_isc(
                                            iscs,
                                            group_assignment=group_assignment,
                                            pairwise=True,
                                            summary_statistic='mean',
                                            n_permutations=10000)

    # Small two-sample leave-one-out exact test (and unequal groups)
    data_1 = simulated_timeseries(3, n_TRs, n_voxels=n_voxels,
                                  noise=1, data_type='array',
                                  random_state=3)
    data_2 = simulated_timeseries(4, n_TRs, n_voxels=n_voxels,
                                  noise=50, data_type='array',
                                  random_state=4)
    iscs = np.vstack((isc(data_1, pairwise=False, summary_statistic=None),
                      isc(data_2, pairwise=False, summary_statistic=None)))
    group_assignment = [1, 1, 1, 2, 2, 2, 2]

    observed, p, distribution = permutation_isc(
                                            iscs,
                                            group_assignment=group_assignment,
                                            pairwise=False,
                                            summary_statistic='mean',
                                            n_permutations=10000)

    # Check output p-values
    data = correlated_timeseries(20, 60, noise=.5,
                                 random_state=42)
    iscs = isc(data, pairwise=False)
    observed, p, distribution = permutation_isc(iscs, pairwise=False)
    assert np.all(iscs[:, :2] > .5)
    assert np.all(iscs[:, -1] < .5)
    assert p[0] < .05 and p[1] < .05
    assert p[2] > .01

    iscs = isc(data, pairwise=True)
    observed, p, distribution = permutation_isc(iscs, pairwise=True)
    assert np.all(iscs[:, :2] > .5)
    assert np.all(iscs[:, -1] < .5)
    assert p[0] < .05 and p[1] < .05
    assert p[2] > .01

    # Check that ISC computation and permutation observed are same
    iscs = isc(data, pairwise=False)
    observed, p, distribution = permutation_isc(iscs, pairwise=False,
                                                summary_statistic='median')
    assert np.allclose(observed, isc(data, pairwise=False,
                                     summary_statistic='median'),
                       rtol=1e-03)

    # Check that ISC computation and permuation observed are same
    iscs = isc(data, pairwise=True)
    observed, p, distribution = permutation_isc(iscs, pairwise=True,
                                                summary_statistic='mean')
    assert np.allclose(observed, isc(data, pairwise=True,
                                     summary_statistic='mean'),
                       rtol=1e-03)

    logger.info("Finished testing permutaton test")
def test_bootstrap_isc():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30
    random_state = 42
    n_bootstraps = 10

    logger.info("Testing bootstrap hypothesis test")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)

    iscs = isc(data, pairwise=False, summary_statistic=None)
    observed, ci, p, distribution = bootstrap_isc(iscs, pairwise=False,
                                                  summary_statistic='median',
                                                  n_bootstraps=n_bootstraps,
                                                  ci_percentile=95)
    assert distribution.shape == (n_bootstraps, n_voxels)

    # Test one-sample bootstrap test with pairwise approach
    n_bootstraps = 10

    iscs = isc(data, pairwise=True, summary_statistic=None)
    observed, ci, p, distribution = bootstrap_isc(iscs, pairwise=True,
                                                  summary_statistic='median',
                                                  n_bootstraps=n_bootstraps,
                                                  ci_percentile=95)
    assert distribution.shape == (n_bootstraps, n_voxels)

    # Check random seeds
    iscs = isc(data, pairwise=False, summary_statistic=None)
    distributions = []
    for random_state in [42, 42, None]:
        observed, ci, p, distribution = bootstrap_isc(
                                                iscs, pairwise=False,
                                                summary_statistic='median',
                                                n_bootstraps=n_bootstraps,
                                                ci_percentile=95,
                                                random_state=random_state)
        distributions.append(distribution)
    assert np.array_equal(distributions[0], distributions[1])
    assert not np.array_equal(distributions[1], distributions[2])

    # Check output p-values
    data = correlated_timeseries(20, 60, noise=.5,
                                 random_state=42)
    iscs = isc(data, pairwise=False)
    observed, ci, p, distribution = bootstrap_isc(iscs, pairwise=False)
    assert np.all(iscs[:, :2] > .5)
    assert np.all(iscs[:, -1] < .5)
    assert p[0] < .05 and p[1] < .05
    assert p[2] > .01

    iscs = isc(data, pairwise=True)
    observed, ci, p, distribution = bootstrap_isc(iscs, pairwise=True)
    assert np.all(iscs[:, :2] > .5)
    assert np.all(iscs[:, -1] < .5)
    assert p[0] < .05 and p[1] < .05
    assert p[2] > .01

    # Check that ISC computation and bootstrap observed are same
    iscs = isc(data, pairwise=False)
    observed, ci, p, distribution = bootstrap_isc(iscs, pairwise=False,
                                                  summary_statistic='median')
    assert np.array_equal(observed, isc(data, pairwise=False,
                                        summary_statistic='median'))

    # Check that ISC computation and bootstrap observed are same
    iscs = isc(data, pairwise=True)
    observed, ci, p, distribution = bootstrap_isc(iscs, pairwise=True,
                                                  summary_statistic='median')
    assert np.array_equal(observed, isc(data, pairwise=True,
                                        summary_statistic='median'))

    logger.info("Finished testing bootstrap hypothesis test")
def test_isc_nans():

    # Set parameters for toy time series data
    n_subjects = 20
    n_TRs = 60
    n_voxels = 30
    random_state = 42

    logger.info("Testing ISC options")

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)

    # Inject NaNs into data
    data[0, 0, 0] = np.nan

    # Don't tolerate NaNs, should lose zeroeth voxel
    iscs_loo = isc(data, pairwise=False, tolerate_nans=False)
    assert np.sum(np.isnan(iscs_loo)) == n_subjects

    # Tolerate all NaNs, only subject with NaNs yields NaN
    iscs_loo = isc(data, pairwise=False, tolerate_nans=True)
    assert np.sum(np.isnan(iscs_loo)) == 1

    # Pairwise approach shouldn't care
    iscs_pw_T = isc(data, pairwise=True, tolerate_nans=True)
    iscs_pw_F = isc(data, pairwise=True, tolerate_nans=False)
    assert np.allclose(iscs_pw_T, iscs_pw_F, equal_nan=True)

    assert (np.sum(np.isnan(iscs_pw_T)) ==
            np.sum(np.isnan(iscs_pw_F)) ==
            n_subjects - 1)

    # Set proportion of nans to reject (70% and 90% non-NaN)
    data[0, 0, :] = np.nan
    data[0, 1, :n_subjects - int(n_subjects * .7)] = np.nan
    data[0, 2, :n_subjects - int(n_subjects * .9)] = np.nan

    iscs_loo_T = isc(data, pairwise=False, tolerate_nans=True)
    iscs_loo_F = isc(data, pairwise=False, tolerate_nans=False)
    iscs_loo_95 = isc(data, pairwise=False, tolerate_nans=.95)
    iscs_loo_90 = isc(data, pairwise=False, tolerate_nans=.90)
    iscs_loo_80 = isc(data, pairwise=False, tolerate_nans=.8)
    iscs_loo_70 = isc(data, pairwise=False, tolerate_nans=.7)
    iscs_loo_60 = isc(data, pairwise=False, tolerate_nans=.6)

    assert (np.sum(np.isnan(iscs_loo_F)) ==
            np.sum(np.isnan(iscs_loo_95)) == 60)
    assert (np.sum(np.isnan(iscs_loo_80)) ==
            np.sum(np.isnan(iscs_loo_90)) == 42)
    assert (np.sum(np.isnan(iscs_loo_T)) ==
            np.sum(np.isnan(iscs_loo_60)) ==
            np.sum(np.isnan(iscs_loo_70)) == 28)
    assert np.array_equal(np.sum(np.isnan(iscs_loo_F), axis=0),
                          np.sum(np.isnan(iscs_loo_95), axis=0))
    assert np.array_equal(np.sum(np.isnan(iscs_loo_80), axis=0),
                          np.sum(np.isnan(iscs_loo_90), axis=0))
    assert np.all((np.array_equal(
                        np.sum(np.isnan(iscs_loo_T), axis=0),
                        np.sum(np.isnan(iscs_loo_60), axis=0)),
                   np.array_equal(
                        np.sum(np.isnan(iscs_loo_T), axis=0),
                        np.sum(np.isnan(iscs_loo_70), axis=0)),
                   np.array_equal(
                        np.sum(np.isnan(iscs_loo_60), axis=0),
                        np.sum(np.isnan(iscs_loo_70), axis=0))))

    data = simulated_timeseries(n_subjects, n_TRs,
                                n_voxels=n_voxels, data_type='array',
                                random_state=random_state)

    # Make sure voxel with NaNs across all subjects is always removed
    data[0, 0, :] = np.nan
    iscs_loo_T = isc(data, pairwise=False, tolerate_nans=True)
    iscs_loo_F = isc(data, pairwise=False, tolerate_nans=False)
    assert np.allclose(iscs_loo_T, iscs_loo_F, equal_nan=True)
    assert (np.sum(np.isnan(iscs_loo_T)) ==
            np.sum(np.isnan(iscs_loo_F)) ==
            n_subjects)

    iscs_pw_T = isc(data, pairwise=True, tolerate_nans=True)
    iscs_pw_F = isc(data, pairwise=True, tolerate_nans=False)
    assert np.allclose(iscs_pw_T, iscs_pw_F, equal_nan=True)

    assert (np.sum(np.isnan(iscs_pw_T)) ==
            np.sum(np.isnan(iscs_pw_F)) ==
            n_subjects * (n_subjects - 1) / 2)
            datadir + music_subjs[i] + '/ses-01/func/' + music_subjs[i] +
            fn_run2, mask)[3:3218, :])
    data = np.vstack((data_run1, data_run2))
    ## Compute mean signal
    mu = data.mean(axis=0)
    ## Apply highpass data.
    data = clean(data,
                 detrend=True,
                 standardize=False,
                 high_pass=high_pass,
                 t_r=TR)
    ## Convert to percent signal change.
    music_data[:, :, i] = data

music_data_mean = np.mean(music_data, axis=1, keepdims=True)
music_iscs = isc(music_data_mean, pairwise=False)

for i in range(len(no_music_subjs)):
    data_run1 = zscore(
        apply_mask(
            datadir + no_music_subjs[i] + '/ses-01/func/' + no_music_subjs[i] +
            fn_run1, mask)[0:3240, :])
    data_run2 = zscore(
        apply_mask(
            datadir + no_music_subjs[i] + '/ses-01/func/' + no_music_subjs[i] +
            fn_run2, mask)[3:3218, :])
    data = np.vstack((data_run1, data_run2))
    ## Compute mean signal
    mu = data.mean(axis=0)
    ## Apply highpass data.
    data = clean(data,
Ejemplo n.º 11
0
    good.append(timecourses[i])


# In[10]:


# Reverse the axes of the time courses data
bad_courses = np.transpose(bad)
good_courses = np.transpose(good)


# In[11]:


# Calculate median ISC for the "bad" group using pairwise approach
iscs_bad = isc(bad_courses, pairwise = True, summary_statistic = "median")


# In[12]:


# Calculate median ISC for the "good" group using pairwise approach
iscs_good = isc(good_courses, pairwise = True, summary_statistic = "median")


# In[13]:


# Get actual ISC values and the actual observed group difference
print(f"Actual observed group difference in ISC values "
      f"= {iscs_bad - iscs_good},"
        # Select subject-specific column containing condition labels
        subj_col = condition_data.loc[:, subjs[s]]
        # Select indices corresponding to current condition
        idx = np.where(subj_col == conds[c])[0] + 1
        # Initialize structure for storing average run data across subjects
        avgRuns = np.empty((nTR, mask_size))
        for r in range(len(idx)):
            # Load run data
            runData = nib.load(datadir + subjs[s] +
                               '/clean_data/clean_data_run' + str(idx[r]) +
                               '.nii.gz')
            # Mask data
            masked_data = apply_mask(runData, mask)
            # Average current run into existing data structure
            avgRuns += masked_data / len(idx)
        # Store average run data for each subject separately
        data[:, :, s] = avgRuns
    # Average over all voxels before feeding to ISC
    avgData = np.mean(data, axis=1, keepdims=True)
    # Run ISC!!!
    iscs = isc(avgData, pairwise=False)
    # Save ISCs
    np.save(save_dir + conds[c] + '_iscs_' + group, iscs)

    #Remove 3rd (singleton) dim and save individual time series
    avgData_tosave = np.squeeze(avgData)
    np.savetxt(save_dir + conds[c] + '_avgData_' + group + '.txt',
               avgData_tosave,
               delimiter=',')
    np.save(save_dir + conds[c] + '_avgData_' + group, avgData_tosave)
Ejemplo n.º 13
0
    'Allegro_Moderato', 'Finlandia', 'Early_Summer', 'Capriccio_Espagnole',
    'Symphony_Fantastique', 'Boogie_Stop_Shuffle', 'My_Favorite_Things',
    'Blue_Monk', 'All_Blues'
]

datadir = '/jukebox/norman/jamalw/MES/data/single_song_niftis/'

version = 'avg'

song_idx = int(sys.argv[1])

TRs = nib.load(datadir + songs[song_idx] + '/' + version +
               '/subj1.nii.gz').get_data().shape[3]

fn = glob.glob(datadir + songs[song_idx] + '/' + version + '/*')

data = np.empty((91 * 109 * 91, TRs, len(fn)))

# Structure data for brainiak isc function
for i in range(len(fn)):
    subj = nib.load(fn[i]).get_data()
    subj_reshape = np.reshape(subj, (91 * 109 * 91, TRs))
    data[:, :, i] = subj_reshape
    print('stored subj: ', i)

iscs = isc(data, pairwise=False, summary_statistic='mean')

print('Saving ISC Results')
save_dir = datadir + songs[song_idx] + '/analysis_results/'
np.save(save_dir + version + '_isc', iscs)
Ejemplo n.º 14
0
        group_assignment.append(train["final_score_binned"][i])

# In[6]:

# Reverse the axes of the time courses data
data = np.transpose(timecourses)

# In[7]:

# Check shape of the data
np.shape(data)

# In[8]:

# Compute ISC summary statistic "median" using pairwise approach
iscs_median = isc(data, pairwise=True, summary_statistic="median")
print(iscs_median)

# In[9]:

# Compute ISCs (pairwise approach) and then run two-sample permutation test on ISCs
iscs = isc(data, pairwise=True, summary_statistic=None)
observed, p, distribution = permutation_isc(
    iscs,
    group_assignment=group_assignment,
    pairwise=True,
    summary_statistic='median',
    n_permutations=1000,
)

# In[10]: