def test_adaptive_kernel_constants(self, adata: AnnData): ck1 = ConnectivityKernel(adata).compute_transition_matrix() ck1._mat_scaler = np.random.normal(size=(adata.n_obs, adata.n_obs)) ck2 = ConnectivityKernel(adata).compute_transition_matrix() ck2._mat_scaler = np.random.normal(size=(adata.n_obs, adata.n_obs)) k = (3 * ck1) ^ (1 * ck2) k.compute_transition_matrix() assert k[0][0]._value == 3 / 4 assert k[1][0]._value == 1 / 4
def create_kernels( adata: AnnData, velocity_variances: Optional[str] = None, connectivity_variances: Optional[str] = None, ) -> Tuple[VelocityKernel, ConnectivityKernel]: vk = VelocityKernel(adata) vk._mat_scaler = adata.uns.get( velocity_variances, np.random.normal(size=(adata.n_obs, adata.n_obs)) ) ck = ConnectivityKernel(adata) ck._mat_scaler = adata.uns.get( connectivity_variances, np.random.normal(size=(adata.n_obs, adata.n_obs)) ) vk._transition_matrix = csr_matrix(np.eye(adata.n_obs)) ck._transition_matrix = np.eye(adata.n_obs, k=1) / 2 + np.eye(adata.n_obs) / 2 ck._transition_matrix[-1, -1] = 1 ck._transition_matrix = csr_matrix(ck._transition_matrix) np.testing.assert_allclose( np.sum(ck._transition_matrix.A, axis=1), 1 ) # sanity check return vk, ck
def test_adaptive_kernel_complex(self, adata: AnnData): ck1 = ConnectivityKernel(adata).compute_transition_matrix() ck1._mat_scaler = np.random.normal(size=(adata.n_obs, adata.n_obs)) ck2 = ConnectivityKernel(adata).compute_transition_matrix() ck2._mat_scaler = np.random.normal(size=(adata.n_obs, adata.n_obs)) ck3 = ConnectivityKernel(adata).compute_transition_matrix() ck3._mat_scaler = np.random.normal(size=(adata.n_obs, adata.n_obs)) k = 4 * ((3 * ck1) ^ (1 * ck2)) + 2 * ck3 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