def test_unaligned_regression_genes(self): tfs = ['tf1', 'tf2', 'tf3'] targets = ['gene1', 'gene2', 'gene3'] targets1 = ['gene1', 'gene2'] targets2 = ['gene1', 'gene3'] des = [InferelatorData(pd.DataFrame(np.array([[1, 1, 3], [0, 0, 2], [0, 0, 1]]).astype(float), columns=tfs)), InferelatorData(pd.DataFrame(np.array([[1, 1, 3], [0, 0, 2], [0, 0, 1]]).astype(float), columns=tfs))] res = [InferelatorData(pd.DataFrame(np.array([[1, 1], [2, 2], [3, 3]]).astype(float), columns=targets1)), InferelatorData(pd.DataFrame(np.array([[1, 1], [2, 2], [3, 3]]).astype(float), columns=targets2))] priors = pd.DataFrame([[0, 1, 1], [1, 0, 1], [1, 0, 1]], index=targets, columns=tfs) r = amusr_regression.AMuSR_regression(des, res, tfs=tfs, genes=targets, priors=priors, use_numba=self.use_numba) out = [pd.DataFrame([['tf3', 'gene1', -1, 1], ['tf3', 'gene1', -1, 1]], index=pd.MultiIndex(levels=[[0, 1], [0]], codes=[[0, 1], [0, 0]]), columns=['regulator', 'target', 'weights', 'resc_weights']), pd.DataFrame([['tf3', 'gene2', -1, 1]], index=pd.MultiIndex(levels=[[0, 1], [0]], codes=[[0], [0]]), columns=['regulator', 'target', 'weights', 'resc_weights']), pd.DataFrame([['tf3', 'gene3', -1, 1]], index=pd.MultiIndex(levels=[[0, 1], [0]], codes=[[1], [0]]), columns=['regulator', 'target', 'weights', 'resc_weights'])] regress_data = r.regress() for i in range(len(targets)): pdt.assert_frame_equal(pd.concat(regress_data[i]), out[i], check_dtype=False) weights, resc_weights = r.pileup_data(regress_data)
def test_format_priors_noweight(self): runner = amusr_regression.AMuSR_regression([pd.DataFrame()], [pd.DataFrame()], None) tfs = ['tf1', 'tf2'] priors = [ pd.DataFrame([[0, 1], [1, 0]], index=['gene1', 'gene2'], columns=tfs), pd.DataFrame([[0, 0], [1, 0]], index=['gene1', 'gene2'], columns=tfs) ] gene1_prior = amusr_regression.format_prior(priors, 'gene1', [0, 1], 1) gene2_prior = amusr_regression.format_prior(priors, 'gene2', [0, 1], 1) npt.assert_almost_equal(gene1_prior, np.array([[1., 1.], [1., 1.]])) npt.assert_almost_equal(gene2_prior, np.array([[1., 1.], [1., 1.]]))
def test_amusr_regression(self): des = [ np.array([[1, 1, 3], [0, 0, 2], [0, 0, 1]]).astype(float), np.array([[1, 1, 3], [0, 0, 2], [0, 0, 1]]).astype(float) ] res = [ np.array([1, 2, 3]).reshape(-1, 1).astype(float), np.array([1, 2, 3]).reshape(-1, 1).astype(float) ] tfs = ['tf1', 'tf2', 'tf3'] targets = ['gene1', 'gene2'] priors = [ pd.DataFrame([[0, 1, 1], [1, 0, 1]], index=targets, columns=tfs), pd.DataFrame([[0, 0, 1], [1, 0, 1]], index=targets, columns=tfs) ] runner = amusr_regression.AMuSR_regression( [pd.DataFrame(des[0], columns=tfs)], [pd.DataFrame(res[0], columns=["gene1"])], None) gene1_prior = amusr_regression.format_prior(priors, 'gene1', [0, 1], 1.) gene2_prior = amusr_regression.format_prior(priors, 'gene2', [0, 1], 1.) output = [] output.append( amusr_regression.run_regression_EBIC(des, res, ['tf1', 'tf2', 'tf3'], [0, 1], 'gene1', gene1_prior)) output.append( amusr_regression.run_regression_EBIC(des, res, ['tf1', 'tf2', 'tf3'], [0, 1], 'gene2', gene2_prior)) out0 = pd.DataFrame( [['tf3', 'gene1', -1, 1], ['tf3', 'gene1', -1, 1]], index=pd.MultiIndex(levels=[[0, 1], [0]], labels=[[0, 1], [0, 0]]), columns=['regulator', 'target', 'weights', 'resc_weights']) out1 = pd.DataFrame( [['tf3', 'gene2', -1, 1], ['tf3', 'gene2', -1, 1]], index=pd.MultiIndex(levels=[[0, 1], [0]], labels=[[0, 1], [0, 0]]), columns=['regulator', 'target', 'weights', 'resc_weights']) pdt.assert_frame_equal(pd.concat(output[0]), out0, check_dtype=False) pdt.assert_frame_equal(pd.concat(output[1]), out1, check_dtype=False)
def test_heuristic_c(self): set_Cs = np.arange(0, 5, dtype=float) / 10 regress = amusr_regression.AMuSR_regression(self.workflow._task_design, self.workflow._task_response, priors=self.workflow.priors_data, Cs=set_Cs) def is_passed(X, Y, TFs, tasks, gene, prior, Cs=None, Ss=None, lambda_Bs=None, lambda_Ss=None, scale_data=False, **kwargs): npt.assert_array_equal(set_Cs, Cs) return amusr_regression.run_regression_EBIC(X, Y, TFs, tasks, gene, prior, Cs, Ss, lambda_Bs, lambda_Ss, scale_data) regress.regression_function = is_passed self.workflow.set_regression_parameters(heuristic_Cs=set_Cs) npt.assert_array_equal(self.workflow.heuristic_Cs, set_Cs) output = regress.run()