def fitNullTraitByTrait(self, verbose=True, cache=False, out_dir='./cache', fname=None, rewrite=False): """ Fit null model trait by trait """ read_from_file = False if cache: assert fname is not None, 'MultiTraitSetTest:: specify fname' if not os.path.exists(out_dir): os.makedirs(out_dir) out_file = os.path.join(out_dir, fname) read_from_file = os.path.exists(out_file) and not rewrite RV = {} if read_from_file: f = h5py.File(out_file, 'r') for p in range(self.P): trait_id = self.traitID[p] g = f[trait_id] RV[trait_id] = {} for key in g.keys(): RV[trait_id][key] = g[key][:] f.close() self.nullST = RV else: """ create mtssST and fit null column by column returns all info """ if self.mtssST is None: y = SP.zeros((self.N, 1)) self.mtssST = MultiTraitSetTest(y, XX=self.XX, S_XX=self.S_XX, U_XX=self.U_XX, F=self.F) RV = {} for p in range(self.P): trait_id = self.traitID[p] y = self.Y[:, p:p + 1] self.mtssST._setY(y) RV[trait_id] = self.mtssST.fitNull() self.nullST = RV if cache: f = h5py.File(out_file, 'w') smartDumpDictHdf5(RV, f) f.close() return RV
def fitNullTraitByTrait(self,verbose=True,cache=False,out_dir='./cache',fname=None,rewrite=False): """ Fit null model trait by trait """ read_from_file = False if cache: assert fname is not None, 'MultiTraitSetTest:: specify fname' if not os.path.exists(out_dir): os.makedirs(out_dir) out_file = os.path.join(out_dir,fname) read_from_file = os.path.exists(out_file) and not rewrite RV = {} if read_from_file: f = h5py.File(out_file,'r') for p in range(self.P): trait_id = self.traitID[p] g = f[trait_id] RV[trait_id] = {} for key in g.keys(): RV[trait_id][key] = g[key][:] f.close() self.nullST=RV else: """ create mtssST and fit null column by column returns all info """ if self.mtssST is None: y = SP.zeros((self.N,1)) self.mtssST = MultiTraitSetTest(y,XX=self.XX,S_XX=self.S_XX,U_XX=self.U_XX,F=self.F) RV = {} for p in range(self.P): trait_id = self.traitID[p] y = self.Y[:,p:p+1] self.mtssST._setY(y) RV[trait_id] = self.mtssST.fitNull() self.nullST = RV if cache: f = h5py.File(out_file,'w') smartDumpDictHdf5(RV,f) f.close() return RV
ipdb.set_trace() print '.. calculate p-values' print '(for accurate estimate of pvalues either the number of windows or the number of permutations should be increased)' c2m = C2M.Chi2mixture(tol=4e-3) # obtain p-values for mtSet c2m.estimate_chi2mixture(RV['permutation_llr_mtSet']) RV['pv_mtSet'] = c2m.sf(RV['llr_mtSet']) RV['permutation_pv_mtSet'] = c2m.sf(RV['permutation_llr_mtSet']) # obtain p-values for stSet RV['pv_stSet'] = SP.zeros_like(RV['llr_stSet']) RV['permutation_pv_stSet'] = SP.zeros_like(RV['permutation_llr_stSet']) for p in range(phenotype.shape[1]): c2m.estimate_chi2mixture(RV['permutation_llr_stSet'][:,p]) RV['pv_stSet'][:,p] = c2m.sf(RV['llr_stSet'][:,p]) RV['permutation_pv_stSet'][:,p] = c2m.sf(RV['permutation_llr_stSet'][:,p]) # obtain p-values for mtSetPC c2m.estimate_chi2mixture(RV['permutation_llr_mtSetPC']) RV['pv_mtSetPC'] = c2m.sf(RV['llr_mtSetPC']) RV['permutation_pv_mtSetPC'] = c2m.sf(RV['permutation_llr_mtSetPC']) print '.. export results in %s'%files['out_file'] fout = h5py.File(files['out_file'],'w') smartDumpDictHdf5(RV,fout) fout.close()