def copyinputs(self, copier): if not self.num_pcs == 0: for i in xrange(self.chrom_count): pc_fn = PrecomputeLocoPcs.create_out_fn(self.pc_prefix, i) copier.input(pc_fn) copier.input(self.pheno_fn) copier.input(self.snp_reader)
def dowork(self, i, train_snp_idx, test_snp_idx, result, G, y): logging.info("{0}, {1}".format(len(train_snp_idx), len(test_snp_idx))) # intersect selected SNPs with train snps if not self.selected_snps is None: # intersect snp names logging.info("intersecting train snps with selected snps for LOCO") int_snp_idx = argintersect_left(self.snp_reader.rs[train_snp_idx], self.selected_snps) sim_keeper_idx = np.array(train_snp_idx)[int_snp_idx] else: sim_keeper_idx = train_snp_idx # subset data # fast indexing (needs to be C-order) assert np.isfortran(G) == False #G_train = G.take(train_snp_idx, axis=1) G_sim = G.take(sim_keeper_idx, axis=1) G_test = G.take(test_snp_idx, axis=1) t0 = time.time() if self.num_pcs == 0: pcs = None else: if not self.pc_prefix is None: out_fn = PrecomputeLocoPcs.create_out_fn(self.pc_prefix, i) logging.info("loading pc from file: %s" % out_fn) pcs = load(out_fn)[:, 0:self.num_pcs] logging.info("..done") else: assert False, "please precompute PCs" logging.info("done after %.4f seconds" % (time.time() - t0)) # only use PCs if self.pcs_only: G_sim = None logging.info("Using PCs only in LocoGWAS") gwas = FastGwas(G_sim, G_test, y, self.delta, train_pcs=pcs, mixing=self.mixing) gwas.run_gwas() assert len(gwas.p_values) == len(test_snp_idx) # wrap up results return test_snp_idx, gwas.p_values, result
def dowork(self, i, train_snp_idx, test_snp_idx, result, G, y): logging.info("{0}, {1}".format(len(train_snp_idx), len(test_snp_idx))) # intersect selected SNPs with train snps if not self.selected_snps is None: # intersect snp names logging.info("intersecting train snps with selected snps for LOCO") int_snp_idx = argintersect_left(self.snp_reader.rs[train_snp_idx], self.selected_snps) sim_keeper_idx = np.array(train_snp_idx)[int_snp_idx] else: sim_keeper_idx = train_snp_idx # subset data # fast indexing (needs to be C-order) assert np.isfortran(G) == False #G_train = G.take(train_snp_idx, axis=1) G_sim = G.take(sim_keeper_idx, axis=1) G_test = G.take(test_snp_idx, axis=1) t0 = time.time() if self.num_pcs == 0: pcs = None else: if not self.pc_prefix is None: out_fn = PrecomputeLocoPcs.create_out_fn(self.pc_prefix, i) logging.info("loading pc from file: %s" % out_fn) pcs = load(out_fn)[:,0:self.num_pcs] logging.info("..done") else: assert False, "please precompute PCs" logging.info("done after %.4f seconds" % (time.time() - t0)) # only use PCs if self.pcs_only: G_sim = None logging.info("Using PCs only in LocoGWAS") gwas = FastGwas(G_sim, G_test, y, self.delta, train_pcs=pcs, mixing=self.mixing) gwas.run_gwas() assert len(gwas.p_values) == len(test_snp_idx) # wrap up results return test_snp_idx, gwas.p_values, result