def _create_gpcca(*, backward: bool = False) -> Tuple[AnnData, GPCCA]: adata = _adata_medium.copy() sc.tl.paga(adata, groups="clusters") vk = VelocityKernel( adata, backward=backward).compute_transition_matrix(softmax_scale=4) ck = ConnectivityKernel(adata, backward=backward).compute_transition_matrix() final_kernel = 0.8 * vk + 0.2 * ck mc = GPCCA(final_kernel) mc.compute_partition() mc.compute_eigendecomposition() mc.compute_schur(method="krylov") mc.compute_macrostates(n_states=2) mc.set_terminal_states_from_macrostates() mc.compute_absorption_probabilities() mc.compute_lineage_drivers(cluster_key="clusters", use_raw=False) assert adata is mc.adata if backward: assert str(AbsProbKey.BACKWARD) in adata.obsm else: assert str(AbsProbKey.FORWARD) in adata.obsm np.testing.assert_allclose(mc.absorption_probabilities.X.sum(1), 1.0, rtol=1e-6) return adata, mc
scv.tl.velocity_graph(samples[key], mode_neighbors='connectivities', compute_uncertainties=True) # Forward direction (final states) outdir = 'results/trajectory/cellrank/forward' if not os.path.exists(outdir): os.makedirs(outdir) scv.settings.figdir = outdir for key in samples: vk = VelocityKernel(samples[key]) vk.compute_transition_matrix(softmax_scale=None) g = GPCCA(vk) g.compute_schur(n_components=20) g.plot_spectrum(real_only=False, save="{}_eigenvalues.png".format(key)) if key == "H508_EV" or key == "HT29_EV": g.plot_schur(use=4, cluster_key=clusters, show=False, dpi=300, save='{}_schur.png'.format(key)) g.compute_metastable_states(n_states=4, cluster_key=clusters) g.plot_metastable_states(show=False, dpi=300, save='{}_metastable.png'.format(key)) g.plot_metastable_states( same_plot=False, show=False, dpi=300,