Ejemplo n.º 1
0
def ttest_stats(group1, group2, dst, cond):
    """t-Test on differences between the individual voxels in group1 and group2, group is a array of voxelizations"""

    #make sure destination dir exists
    if not os.path.exists(dst): os.mkdir(dst)

    g1 = stat.readDataGroup(group1)
    g2 = stat.readDataGroup(group2)

    tvals, pvals = stats.ttest_ind(g1, g2, axis=0, equal_var=False)

    np.save(os.path.join(dst, "tvals_%s.npy" % cond), tvals)
    np.save(os.path.join(dst, "pvals_%s.npy" % cond), pvals)

    print(
        "\nsaved t-statistics and p-values corresponding to registered voxels as numpy arrays \n\n."
    )

    pvals_flat = np.ravel(pvals)
    tvals_flat = np.ravel(tvals)
    pvals_flat = pvals_flat[~np.isnan(pvals_flat)]
    tvals_flat = tvals_flat[~np.isnan(tvals_flat)]

    pvals_flat.shape
    df = pd.DataFrame()
    df['tvalues'] = tvals_flat
    df['pvalues'] = pvals_flat

    df.to_csv(os.path.join(dst, "tstats_no_nans_%s.csv" % cond))

    return
Ejemplo n.º 2
0
        xx +
        "/cell_region_assignment_99percentile_no_erosion_20190313/cells_heatmap.tif"
        for xx in control_dorsal_up
    ]
    obv_du_heatmaps = [
        xx +
        "/cell_region_assignment_99percentile_no_erosion_20190313/cells_heatmap.tif"
        for xx in observers_dorsal_up
    ]
    dmn_du_heatmaps = [
        xx +
        "/cell_region_assignment_99percentile_no_erosion_20190313/cells_heatmap.tif"
        for xx in demonstrator_dorsal_up
    ]

    c = stat.readDataGroup(ctrl_du_heatmaps)
    o = stat.readDataGroup(obv_du_heatmaps)
    d = stat.readDataGroup(dmn_du_heatmaps)

    #comparisons
    conds = [
        "observer_v_control", "demonstrator_v_observer",
        "demonstrator_v_control"
    ]
    comparisons = [[o.astype("float"), c.astype("float")],
                   [d.astype("float"), o.astype("float")],
                   [d.astype("float"), c.astype("float")]]
    final_dst = pvaldst + "/dorsal_up"

    for i, comp in enumerate(comparisons):
        print(conds[i])
Ejemplo n.º 3
0
    #set up heatmaps per condition
    mm_du_heatmaps = [
        os.path.join(src, os.path.join(xx, "cells_heatmap.tif"))
        for xx in os.listdir(src) if "mm" in xx
    ]
    fm_du_heatmaps = [
        os.path.join(src, os.path.join(xx, "cells_heatmap.tif"))
        for xx in os.listdir(src) if "fm" in xx
    ]
    mf_du_heatmaps = [
        os.path.join(src, os.path.join(xx, "cells_heatmap.tif"))
        for xx in os.listdir(src) if "mf" in xx
    ]

    #read all the heatmaps belonging to each group
    mm = stat.readDataGroup(mm_du_heatmaps)
    fm = stat.readDataGroup(fm_du_heatmaps)
    mf = stat.readDataGroup(mf_du_heatmaps)

    #find mean and standard deviation of heatmap in each group
    mm_mean = np.mean(mm, axis=0)
    mm_std = np.std(mm, axis=0)

    fm_mean = np.mean(fm, axis=0)
    fm_std = np.std(fm, axis=0)

    mf_mean = np.mean(mf, axis=0)
    mf_std = np.std(mf, axis=0)

    #write mean and standard dev maps to destination
    tifffile.imsave(os.path.join(pvaldst, "mm_mean.tif"),
Ejemplo n.º 4
0
# Voxel-based statistics:
#########################

#Load the data (heat maps generated previously )
group1 = ['/home/yourname/experiment/sample1/cells_heatmap.tif',
          '/home/yourname/experiment/sample2/cells_heatmap.tif',
          '/home/yourname/experiment/sample3/cells_heatmap.tif',
          '/home/yourname/experiment/sample4/cells_heatmap.tif']

group2 = ['/home/yourname/experiment/sample5/cells_heatmap.tif',
          '/home/yourname/experiment/sample6/cells_heatmap.tif',
          '/home/yourname/experiment/sample7/cells_heatmap.tif',
          '/home/yourname/experiment/sample8/cells_heatmap.tif']
 

g1 = stat.readDataGroup(group1);
g2 = stat.readDataGroup(group2);



#Generated average and standard deviation maps
##############################################
g1a = numpy.mean(g1,axis = 0);
g1s = numpy.std(g1,axis = 0);

g2a = numpy.mean(g2,axis = 0);
g2s = numpy.std(g2,axis = 0);

io.writeData(os.path.join(baseDirectory, 'group1_mean.raw'), rsp.sagittalToCoronalData(g1a));
io.writeData(os.path.join(baseDirectory, 'group1_std.raw'), rsp.sagittalToCoronalData(g1s));
Ejemplo n.º 5
0
#Load the data (heat maps generated previously )
group1 = [
    '/home/yourname/experiment/sample1/cells_heatmap.tif',
    '/home/yourname/experiment/sample2/cells_heatmap.tif',
    '/home/yourname/experiment/sample3/cells_heatmap.tif',
    '/home/yourname/experiment/sample4/cells_heatmap.tif'
]

group2 = [
    '/home/yourname/experiment/sample5/cells_heatmap.tif',
    '/home/yourname/experiment/sample6/cells_heatmap.tif',
    '/home/yourname/experiment/sample7/cells_heatmap.tif',
    '/home/yourname/experiment/sample8/cells_heatmap.tif'
]

g1 = stat.readDataGroup(group1)
g2 = stat.readDataGroup(group2)

#Generated average and standard deviation maps
##############################################
g1a = numpy.mean(g1, axis=0)
g1s = numpy.std(g1, axis=0)

g2a = numpy.mean(g2, axis=0)
g2s = numpy.std(g2, axis=0)

io.writeData(os.path.join(baseDirectory, 'group1_mean.raw'),
             rsp.sagittalToCoronalData(g1a))
io.writeData(os.path.join(baseDirectory, 'group1_std.raw'),
             rsp.sagittalToCoronalData(g1s))
def generate_p_value_maps(src):
    """ 
    generates p-value maps as per ClearMap/analysis.py
    #TODO: generalise function
    """
    #Load the data (heat maps generated previously )
    #make groups
    groupA = [
        os.path.join(flds, fld) for fld in os.listdir(flds)
        if conditions[os.path.basename(fld)] == "homecage_control"
    ]
    groupA.sort()
    groupB = [
        os.path.join(flds, fld) for fld in os.listdir(flds)
        if conditions[os.path.basename(fld)] == "CNO_control_no_reversal"
    ]
    groupB.sort()
    groupC = [
        os.path.join(flds, fld) for fld in os.listdir(flds)
        if conditions[os.path.basename(fld)] == "CNO_control_reversal"
    ]
    groupC.sort()
    groupD = [
        os.path.join(flds, fld) for fld in os.listdir(flds)
        if conditions[os.path.basename(fld)] == "DREADDs"
    ]
    groupC.sort()

    group_a = [xx + "/cells_heatmap_60um_erosion.tif" for xx in groupA]
    group_b = [xx + "/cells_heatmap_60um_erosion.tif" for xx in groupB]
    group_c = [xx + "/cells_heatmap_60um_erosion.tif" for xx in groupC]
    group_d = [xx + "/cells_heatmap_60um_erosion.tif" for xx in groupD]

    grp_a = stat.readDataGroup(group_a)
    grp_b = stat.readDataGroup(group_b)
    grp_c = stat.readDataGroup(group_c)
    grp_d = stat.readDataGroup(group_d)

    #Generated average and standard deviation maps
    ##############################################
    grp_aa = np.mean(grp_a, axis=0)
    grp_as = np.std(grp_a, axis=0)

    grp_ba = np.mean(grp_b, axis=0)
    grp_bs = np.std(grp_b, axis=0)

    grp_ca = np.mean(grp_c, axis=0)
    grp_cs = np.std(grp_c, axis=0)

    grp_da = np.mean(grp_d, axis=0)
    grp_ds = np.std(grp_d, axis=0)

    io.writeData(os.path.join(src, "group_a_mean.raw"),
                 rsp.sagittalToCoronalData(grp_aa))
    io.writeData(os.path.join(src, "group_a_std.raw"),
                 rsp.sagittalToCoronalData(grp_as))

    io.writeData(os.path.join(src, "group_b_mean.raw"),
                 rsp.sagittalToCoronalData(grp_ba))
    io.writeData(os.path.join(src, "group_b_std.raw"),
                 rsp.sagittalToCoronalData(grp_bs))

    io.writeData(os.path.join(src, "group_c_mean.raw"),
                 rsp.sagittalToCoronalData(grp_ca))
    io.writeData(os.path.join(src, "group_c_std.raw"),
                 rsp.sagittalToCoronalData(grp_cs))

    io.writeData(os.path.join(src, "group_d_mean.raw"),
                 rsp.sagittalToCoronalData(grp_da))
    io.writeData(os.path.join(src, "group_d_std.raw"),
                 rsp.sagittalToCoronalData(grp_ds))

    #Generate the p-values map
    ##########################
    #first comparison
    #pcutoff: only display pixels below this level of significance
    pvals, psign = stat.tTestVoxelization(grp_a.astype("float"),
                                          grp_d.astype("float"),
                                          signed=True,
                                          pcutoff=0.05)

    #color the p-values according to their sign (defined by the sign of the difference of the means between the 2 groups)
    pvalsc = stat.colorPValues(pvals, psign, positive=[0, 1], negative=[1, 0])
    io.writeData(os.path.join(src, "pvalues_homecage_control_vs_DREADDs.tif"),
                 rsp.sagittalToCoronalData(pvalsc.astype("float32")))

    #second comparison
    pvals, psign = stat.tTestVoxelization(grp_a.astype("float"),
                                          grp_b.astype("float"),
                                          signed=True,
                                          pcutoff=0.05)
    pvalsc = stat.colorPValues(pvals, psign, positive=[0, 1], negative=[1, 0])
    io.writeData(
        os.path.join(
            src, "pvalues_homecage_control_vs_CNO_control_no_reversal.tif"),
        rsp.sagittalToCoronalData(pvalsc.astype("float32")))

    #third comparison
    pvals, psign = stat.tTestVoxelization(grp_b.astype("float"),
                                          grp_c.astype("float"),
                                          signed=True,
                                          pcutoff=0.05)
    pvalsc = stat.colorPValues(pvals, psign, positive=[0, 1], negative=[1, 0])
    io.writeData(
        os.path.join(
            src,
            "pvalues_CNO_control_no_reversal_vs_CNO_control_reversal.tif"),
        rsp.sagittalToCoronalData(pvalsc.astype("float32")))

    #fourth comparison
    pvals, psign = stat.tTestVoxelization(grp_c.astype("float"),
                                          grp_d.astype("float"),
                                          signed=True,
                                          pcutoff=0.05)
    pvalsc = stat.colorPValues(pvals, psign, positive=[0, 1], negative=[1, 0])
    io.writeData(
        os.path.join(src, "pvalues_CNO_control_reversal_vs_DREADDs.tif"),
        rsp.sagittalToCoronalData(pvalsc.astype("float32")))
        os.path.join(pth, os.path.join(xx, subdir + "/cells_heatmap.tif"))
        for xx in os.listdir(pth) if "647" in xx and "mouse" in xx
    ]
    ctrl_du_heatmaps.sort()
    obv_du_heatmaps = [
        os.path.join(pth, os.path.join(xx, subdir + "/cells_heatmap.tif"))
        for xx in os.listdir(pth) if "647" in xx and "observ" in xx
    ]
    obv_du_heatmaps.sort()
    dmn_du_heatmaps = [
        os.path.join(pth, os.path.join(xx, subdir + "/cells_heatmap.tif"))
        for xx in os.listdir(pth) if "647" in xx and "demons" in xx
    ]
    dmn_du_heatmaps.sort()

    c = stat.readDataGroup(ctrl_du_heatmaps)
    o = stat.readDataGroup(obv_du_heatmaps)
    d = stat.readDataGroup(dmn_du_heatmaps)

    ca = np.mean(c, axis=0)
    cstd = np.std(c, axis=0)

    oa = np.mean(o, axis=0)
    ostd = np.std(o, axis=0)

    da = np.mean(d, axis=0)
    dstd = np.std(d, axis=0)

    #write
    io.writeData(os.path.join(pvaldst, "dorsal_up/control_mean.raw"),
                 rsp.sagittalToCoronalData(ca))