예제 #1
0
    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)
예제 #2
0
 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.]]))
예제 #3
0
 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)
예제 #4
0
    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()