def test_mdmr_with_connectir_distances(): """uses the distances from output of connectir to specifically test the mdmr portion of things""" import os os.chdir("../C-PAC") from CPAC.cwas.mdmr import mdmr import numpy as np from os import path as op import rpy2.robjects as robjects from rpy2.robjects.numpy2ri import numpy2ri from rpy2.robjects.packages import importr robjects.conversion.py2ri = numpy2ri from pandas import read_csv bigmemory = importr("bigmemory") base = importr("base") sdir = "/home/data/Projects/CPAC_Regression_Test/2013-05-30_cwas/results_adhd04.r" sfile = op.join(sdir, "subdist.desc") dmats = np.array(robjects.r("as.matrix(attach.big.matrix('%s'))" % sfile)) n = np.sqrt(dmats.shape[0]) rfile = "/home2/data/Projects/CPAC_Regression_Test/2013-05-30_cwas/configs/adhd04_regressors.txt" regressors = np.loadtxt(rfile) ps, Fs, _, _ = mdmr(dmats[:, :10], regressors, [1], 1000)
def mdmr_for_rois(rois, func_list, mask_inds, regressors, cols_of_interest, nperms=14999): print "Computing Distances" Ds = distances_for_rois(rois, func_list, mask_inds) print "Computing MDMR" p_set, F_set, F_perms, _ = mdmr(Ds, regressors, cols_of_interest, nperms) return (p_set, F_set, F_perms)
def calc_mdmrs(D, regressor, cols, permutations): from CPAC.cwas.mdmr import mdmr voxels = D.shape[0] subjects = D.shape[1] F_set = np.zeros(voxels) p_set = np.zeros(voxels) cols = np.array(cols, dtype=np.int32) for i in range(voxels): F_set[i], p_set[i] = mdmr(D[i].reshape(subjects**2, 1), regressor, cols, permutations) return F_set, p_set
def calc_mdmrs(D, regressor, cols, permutations): cols = np.array(cols, dtype=np.int32) F_set, p_set = mdmr(D, regressor, cols, permutations) return F_set, p_set
import numpy as np from CPAC.cwas.mdmr import mdmr # Basics nsubjs = 68 nperms = 5000 pvals = np.zeros((2,3)) fstats = np.zeros((2,3)) cpaste for i in range(2): # Loadup model python starts at 0, so column 2 should be indicated using 1 model = np.loadtxt("/home/data/Projects/workingMemory/gRAICARAnalysis/modelTest.txt") for ji,j in enumerate([1,2,3]): cols = [j] # Setup Distance Matrix dmat = np.loadtxt("/home/data/Projects/workingMemory/gRAICARAnalysis/testDistMatrix%i.txt" % (i+1)) nsubjs = dmat.shape[0] # Compute MDMR # Since there is only one distance matrix: pvals and fstats should be length 1 pvals[i,ji], fstats[i,ji], _, _ = mdmr(dmat.reshape(nsubjs**2,1), model, cols, nperms) -- np.savetxt('/home/data/Projects/workingMemory/gRAICARAnalysis/pvals.txt', pvals, fmt='%f')
nsubs = len(funcs) ntpts = funcs[0].shape[0] nparcels = funcs[0].shape[1] # Everything should get the same permutations nperms = 4999 perms = gen_perms(nperms, nsubs, strata) # Compute distances # Compute MDMR # mdmr here runs in 6 seconds ## convert to z-scores D = calc_subdists(funcs, [0,nparcels]) ps, Fs, _,_ = mdmr(D.reshape(nparcels, nsubs**2).T, dmat, cols, perms, strata) zs = scipy.stats.norm.isf(ps) save_rois_image(zs, rois, mask, mask_file, op.join(odir, "10_mdmr_standard.nii.gz")) our_zs = rois2voxels(zs, rois) ref_zs = nb.load("/home2/data/Projects/CWAS/ldopa/cwas/rois_random_k0800_only/ldopa_subjects+meanFD.mdmr/cluster_correct_v05_c05/easythresh/zstat_conditions.nii.gz").get_data()[mask_inds] ### # Positive Values (0.79) ### D = calc_subdists_enhanced(funcs, [0,nparcels], compute_distances_pos) ps, Fs, _,_ = mdmr(D.reshape(nparcels, nsubs**2).T, dmat, cols, perms, strata)
func_list = read_table(list_file, header=None).ix[:, 0].tolist() funcs = load_subjects(func_list) nsubs = len(funcs) ntpts = funcs[0].shape[0] nparcels = funcs[0].shape[1] # Everything should get the same permutations nperms = 4999 perms = gen_perms(nperms, nsubs, strata) # Compute distances # Compute MDMR # mdmr here runs in 6 seconds ## convert to z-scores D = calc_subdists(funcs, [0, nparcels]) ps, Fs, _, _ = mdmr(D.reshape(nparcels, nsubs**2).T, dmat, cols, perms, strata) zs = scipy.stats.norm.isf(ps) save_rois_image(zs, rois, mask, mask_file, op.join(odir, "10_mdmr_standard.nii.gz")) our_zs = rois2voxels(zs, rois) ref_zs = nb.load( "/home2/data/Projects/CWAS/ldopa/cwas/rois_random_k0800_only/ldopa_subjects+meanFD.mdmr/cluster_correct_v05_c05/easythresh/zstat_conditions.nii.gz" ).get_data()[mask_inds] ### # Positive Values (0.79) ### D = calc_subdists_enhanced(funcs, [0, nparcels], compute_distances_pos)