Esempio n. 1
0
 def test_twosample(self):
     data, vardata, XYZ = make_data(n=20)
     data1,vardata1,data2,vardata2 = data[:10],vardata[:10],data[10:],vardata[10:]
     # rfx calibration
     P = PT.permutation_test_twosample(data1, data2, XYZ, ndraws=ndraws)
     c = [(P.random_Tvalues[P.ndraws*(0.95)],None),(P.random_Tvalues[P.ndraws*(0.5)],10)]
     r = [np.zeros(data.shape[1])]
     r[data.shape[1]/2:] *= 10
     #p_values, cluster_results, region_results=P.calibrate(nperms=100, clusters=c, regions=r)
     # mfx calibration
     P = PT.permutation_test_twosample(data1, data2, XYZ, vardata1=vardata1, vardata2=vardata2, stat_id="student_mfx", ndraws=ndraws)
     p_values, cluster_results, region_results = P.calibrate(nperms=nperms, clusters=c, regions=r)
Esempio n. 2
0
def twosample_test(data_images, vardata_images, mask_images, labels, stat_id, permutations=0, cluster_forming_th=0.01):
    """
    Helper function for permutation-based mass univariate twosample group 
    analysis. Labels is a binary vector (1-2). Regions more active for group 
    1 than group 2 are inferred.
    """

    # Prepare arrays
    data, vardata, xyz, mask = prepare_arrays(data_images, vardata_images, mask_images)

    # Create two-sample permutation test instance
    if vardata_images == None:
        ptest = permutation_test_twosample(data[labels == 1], data[labels == 2], xyz, stat_id=stat_id)
    else:
        ptest = permutation_test_twosample(
            data[labels == 1],
            data[labels == 2],
            xyz,
            vardata1=vardata[labels == 1],
            vardata2=vardata[labels == 2],
            stat_id=stat_id,
        )

    # Compute z-map image
    zmap = np.zeros(data_images[0].get_shape()).squeeze()
    zmap[list(xyz)] = ptest.zscore()
    zimg = Image(zmap, data_images[0].get_affine())

    # Compute mask image
    maskimg = Image(mask, data_images[0].get_affine())

    # Multiple comparisons
    if permutations <= 0:
        return zimg, maskimg
    else:
        # Cluster definition: (threshold, diameter)
        cluster_def = (ptest.height_threshold(cluster_forming_th), None)

        # Calibration
        voxel_res, cluster_res, region_res = ptest.calibrate(nperms=permutations, clusters=[cluster_def])
        nulls = {}
        nulls["zmax"] = ptest.zscore(voxel_res["perm_maxT_values"])
        nulls["s"] = cluster_res[0]["perm_size_values"]
        nulls["smax"] = cluster_res[0]["perm_maxsize_values"]

        # Return z-map image, mask image and dictionary of null
        # distribution for cluster sizes (s), max cluster size (smax)
        # and max z-score (zmax)
        return zimg, maskimg, nulls
r = np.ones(data.shape[1], int)
r[data.shape[1]/2.:] *= 10
voxel_results, cluster_results, region_results = \
                P.calibrate(nperms=100, clusters=c, regions=[r])
# mfx calibration
P = PT.permutation_test_onesample(data, XYZ, vardata=vardata,
                                  stat_id="student_mfx")
voxel_results, cluster_results, region_results = \
                P.calibrate(nperms=100, clusters=c, regions=[r])

################################################################################
# Example for using permutation_test_twosample class
data, vardata, XYZ = make_data(n=20)
data1, vardata1, data2, vardata2 = data[:10], vardata[:10], data[10:], vardata[10:]
# rfx calibration
P = PT.permutation_test_twosample(data1,data2,XYZ)
# clusters definition (height threshold / max diameter)
c = [(P.random_Tvalues[P.ndraws * (0.95)], None), 
     (P.random_Tvalues[P.ndraws * (0.5)], 10)]
# regions definition (label vector)
r = [np.zeros(data.shape[1])]
r[data.shape[1]/2:] *= 10
voxel_results, cluster_results, region_results = \
            P.calibrate(nperms=100, clusters=c, regions = r)
# mfx calibration
P = PT.permutation_test_twosample(data1, data2, XYZ, vardata1=vardata1, 
            vardata2=vardata2, stat_id="student_mfx")
voxel_results, cluster_results, region_results = \
            P.calibrate(nperms=100, clusters=c, regions=r)

################################################################################