Example #1
0
    def test_manual_combination_no_precomputed(self, adata):
        density_normalize = False

        vk = VelocityKernel(adata).compute_transition_matrix(
            density_normalize=density_normalize
        )
        ck = ConnectivityKernel(adata).compute_transition_matrix(
            density_normalize=density_normalize
        )

        T_vk = vk.transition_matrix
        T_ck = ck.transition_matrix
        T_comb_manual = 0.8 * T_vk + 0.2 * T_ck

        vk = VelocityKernel(adata).compute_transition_matrix(
            density_normalize=density_normalize
        )
        ck = ConnectivityKernel(adata).compute_transition_matrix(
            density_normalize=density_normalize
        )
        comb_kernel = 0.8 * vk + 0.2 * ck
        comb_kernel.compute_transition_matrix()
        T_comb_kernel = comb_kernel.transition_matrix

        np.testing.assert_allclose(T_comb_manual.A, T_comb_kernel.A, rtol=_rtol)
Example #2
0
    def test_adaptive_kernel_constants(self, adata):
        k = (3 * ConnectivityKernel(adata).compute_transition_matrix()) ^ (
            1 * ConnectivityKernel(adata).compute_transition_matrix()
        )
        k.compute_transition_matrix()

        assert k[0][0]._value == 3 / 4
        assert k[1][0]._value == 1 / 4
Example #3
0
    def test_constant_wrong_parentheses(self, adata):
        k = VelocityKernel(adata).compute_transition_matrix() + (
            ConnectivityKernel(adata).compute_transition_matrix() +
            ConnectivityKernel(adata).compute_transition_matrix())
        k.compute_transition_matrix()
        c1, c2, c3 = _is_bin_mult(k[0]), _is_bin_mult(k[1]), _is_bin_mult(k[2])

        assert c1.transition_matrix == 1 / 3
        assert c2.transition_matrix == 1 / 3
        assert c3.transition_matrix == 1 / 3
Example #4
0
    def test_constant_normalize_3(self, adata):
        k = (VelocityKernel(adata).compute_transition_matrix() +
             ConnectivityKernel(adata).compute_transition_matrix() +
             ConnectivityKernel(adata).compute_transition_matrix())
        k.compute_transition_matrix()
        c1, c2, c3 = _is_bin_mult(k[0]), _is_bin_mult(k[1]), _is_bin_mult(k[2])

        assert c1.transition_matrix == 1 / 3
        assert c2.transition_matrix == 1 / 3
        assert c3.transition_matrix == 1 / 3
Example #5
0
    def test_inversion_preservation_of_constants(self, adata):
        c = ConnectivityKernel(adata).compute_transition_matrix()
        a = (3 * c + 1 * c).compute_transition_matrix()
        b = ~a
        c.compute_transition_matrix()

        assert a[0][0].transition_matrix == 3 / 4
        assert b[0][0].transition_matrix == 3 / 4
        assert a[1][0].transition_matrix == 1 / 4
        assert b[1][0].transition_matrix == 1 / 4
Example #6
0
    def test_adaptive_kernel_complex(self, adata):
        k = (4 *
             ((3 * ConnectivityKernel(adata, var_key="connectivity_variances").
               compute_transition_matrix()) ^
              (1 * ConnectivityKernel(adata, var_key="connectivity_variances").
               compute_transition_matrix())) +
             2 * ConnectivityKernel(adata).compute_transition_matrix())
        k.compute_transition_matrix()

        assert k[0][0].transition_matrix == 4 / 6
        assert k[1][0].transition_matrix == 2 / 6
        assert k[0][1][0][0]._value == 3 / 4
        assert k[0][1][1][0]._value == 1 / 4
Example #7
0
    def test_constant_correct_parentheses(self, adata):
        k = 1 * VelocityKernel(adata).compute_transition_matrix() + 1 * (
            ConnectivityKernel(adata).compute_transition_matrix() +
            ConnectivityKernel(adata).compute_transition_matrix())
        k.compute_transition_matrix()
        c1, c2, c3 = (
            _is_bin_mult(k[0]),
            _is_bin_mult(k[1][1][0]),
            _is_bin_mult(k[1][1][1]),
        )

        assert c1.transition_matrix == 1 / 2
        assert c2.transition_matrix == 1 / 2
        assert c3.transition_matrix == 1 / 2
Example #8
0
def _create_gpcca(n_obs: int,
                  *,
                  backward: bool = False) -> Tuple[AnnData, CFLARE]:
    adata = _create_dummy_adata(n_obs)
    sc.tl.paga(adata, groups="clusters")
    vk = VelocityKernel(adata, backward=backward).compute_transition_matrix()
    ck = ConnectivityKernel(adata,
                            backward=backward).compute_transition_matrix()
    final_kernel = 0.8 * vk + 0.2 * ck

    mc = cr.tl.GPCCA(final_kernel)

    mc.compute_partition()
    mc.compute_eig()
    mc.compute_schur(method="brandts")
    mc.compute_metastable_states(n_states=2)
    mc.set_main_states()
    mc.compute_lineage_drivers(cluster_key="clusters", use_raw=False)

    assert adata is mc.adata
    if backward:
        assert str(LinKey.BACKWARD) in adata.obsm
    else:
        assert str(LinKey.FORWARD) in adata.obsm

    return adata, mc
Example #9
0
def _create_cflare(n_obs: int,
                   *,
                   backward: bool = False) -> Tuple[AnnData, CFLARE]:
    adata = _create_dummy_adata(n_obs)
    sc.tl.paga(adata, groups="clusters")
    try:
        vk = VelocityKernel(adata,
                            backward=backward).compute_transition_matrix()
        ck = ConnectivityKernel(adata,
                                backward=backward).compute_transition_matrix()
        final_kernel = 0.8 * vk + 0.2 * ck

        mc = cr.tl.CFLARE(final_kernel)

        mc.compute_partition()
        mc.compute_eig()
        mc.compute_metastable_states(use=2)  # can fail for small #cells
        mc.compute_lin_probs()
        mc.compute_lineage_drivers(cluster_key="clusters", use_raw=False)

        assert adata is mc.adata
        if backward:
            assert str(LinKey.BACKWARD) in adata.obsm
        else:
            assert str(LinKey.FORWARD) in adata.obsm
    except:
        mc = None

    return adata, mc
Example #10
0
    def test_not_none_transition_matrix_accessor(self, adata):
        vk = VelocityKernel(adata)
        ck = ConnectivityKernel(adata)
        pk = PalantirKernel(adata, time_key="latent_time")

        assert vk.transition_matrix is not None
        assert ck.transition_matrix is not None
        assert pk.transition_matrix is not None
Example #11
0
    def test_constant_normalize_2(self, adata):
        k = (9 * VelocityKernel(adata).compute_transition_matrix() +
             1 * ConnectivityKernel(adata).compute_transition_matrix())
        k.compute_transition_matrix()
        c1, c2 = _is_bin_mult(k[0]), _is_bin_mult(k[1])

        assert c1.transition_matrix == 9 / 10
        assert c2.transition_matrix == 1 / 10
Example #12
0
    def test_inversion_propagation(self, adata):
        c = ConnectivityKernel(adata, backward=False)
        v = VelocityKernel(adata, backward=False)
        k = ~(c + v)

        assert c.backward
        assert v.backward
        assert k.backward
Example #13
0
    def test_initialized(self, adata):
        k = (
            VelocityKernel(adata).compute_transition_matrix()
            + ConnectivityKernel(adata).compute_transition_matrix()
        )
        k.compute_transition_matrix()

        assert k.transition_matrix is not None
Example #14
0
    def test_uninitialized_one(self, adata):
        k = (
            VelocityKernel(adata)
            + ConnectivityKernel(adata).compute_transition_matrix()
        )

        with pytest.raises(RuntimeError):
            k.compute_transition_matrix()