#!/usr/bin/env python # coding: utf-8 # In[ ]: # get the latest version from pypi # for other installations approaches, see https://dynamo-release.readthedocs.io/en/latest/ten_minutes_to_dynamo.html#how-to-install # !pip install dynamo-release --upgrade --quiet # In[2]: from IPython.core.display import display, HTML display(HTML("")) get_ipython().run_line_magic('matplotlib', 'inline') import dynamo as dyn dyn.get_all_dependencies_version() # In[3]: # simulate ggplot2 plotting styple with black background dyn.configuration.set_figure_params('dynamo', background='white') # In[4]: adata = dyn.sample_data.hgForebrainGlutamatergic() adata.obs.Clusters = adata.obs.Clusters.astype('str') # set Clusters to strings # In[5]: dyn.pl.show_fraction(adata) # In[6]: dyn.pp.recipe_monocle(adata, n_top_genes=1000) # In[7]: dyn.pl.variance_explained(adata) dyn.pl.feature_genes(adata) # In[8]: dyn.tl.dynamics(adata, model='deterministic') # or dyn.tl.dynamics(adata, model='stochastic') # or dyn.tl.dynamics(adata, model='stochastic', est_method='negbin') # In[9]: dyn.tl.reduceDimension(adata) # In[10]: dyn.tl.cell_velocities(adata) # In[11]: dyn.pl.phase_portraits(adata, genes=['RERE', 'ENO1', 'DHRS3'], ncols=3, figsize=(3, 3), basis='pca', show_quiver=False) # In[12]: dyn.pl.cell_wise_vectors(adata, color=['Clusters'], basis='pca', quiver_size=2, quiver_length=1, show_legend='on data') # ['GRIA3', 'LINC00982', 'AFF2'] # In[13]: dyn.pl.grid_vectors(adata, color=['Clusters'], basis='pca') # In[14]: dyn.pl.streamline_plot(adata, color=['Clusters'], basis='pca') # In[15]: dyn.vf.VectorField(adata, basis='pca', dims=[0, 1]) # In[16]: dyn.pl.topography(adata, color=['Clusters', 'RERE'], basis='pca', ncols=2) # In[17]: dyn.configuration.set_figure_params('dynamo', background='white') # In[18]: dyn.pl.phase_portraits(adata, genes=['RERE', 'ENO1', 'DHRS3'], ncols=3, figsize=(3, 3), basis='pca', show_quiver=False) dyn.pl.cell_wise_vectors(adata, color=['Clusters'], basis='pca', quiver_size=2, quiver_length=1) # ['GRIA3', 'LINC00982', 'AFF2'] dyn.pl.grid_vectors(adata, color=['Clusters'], basis='pca', method='gaussian') dyn.pl.streamline_plot(adata, color=['Clusters'], basis='pca') dyn.pl.topography(adata, color=['Clusters', 'RERE'], basis='pca', ncols=2) # In[ ]: # In[19]: dyn.vf.VectorField(adata, basis='pca', dims=[0, 1], M=adata.n_obs) # In[20]: dyn.pl.streamline_plot(adata, color=['ELAVL4'], basis='pca', show_legend='on data', background='white', show_arrowed_spines=False, save_show_or_return='save', pointsize=0.4, ncols=1, alpha = 0.7, save_kwargs={'prefix': 'hg_streamline', 'ext': 'png', "bbox_inches": None}, figsize=(3, 3)) # In[21]: dyn.pl.phase_portraits(adata, genes=['ELAVL4'], basis='pca', show_quiver=True, background='white', show_arrowed_spines=False, save_show_or_return='save', pointsize=0.4, alpha = 0.7, quiver_length=10, quiver_size=6, save_kwargs={'prefix': 'hg_phase_portrait', 'ext': 'png', "bbox_inches": None}, figsize=(6, 4)) # In[22]: dyn.pl.topography(adata, color=['ELAVL4'], basis='pca', show_legend='on data', background='white', show_arrowed_spines=False, save_show_or_return='save', pointsize=0.4, ncols=1, alpha = 0.7, save_kwargs={'prefix': 'hg_topography', 'ext': 'png', "bbox_inches": None}, figsize=(3, 3)) # In[23]: dyn.tl.cell_velocities(adata, basis='pca') dyn.vf.VectorField(adata, basis='pca', M=adata.n_obs, pot_curl_div=True) # In[24]: adata # In[25]: dyn.tl.cell_velocities(adata, basis='pca') dyn.vf.VectorField(adata, basis='pca') dyn.vf.speed(adata, basis='pca') dyn.vf.divergence(adata, basis='pca') dyn.vf.acceleration(adata, basis='pca') dyn.vf.VectorField(adata, basis='umap', M=adata.n_obs) dyn.vf.curl(adata, basis='umap') # In[26]: adata # In[27]: import matplotlib.pyplot as plt fig1, f1_axes = plt.subplots(ncols=5, nrows=1, constrained_layout=True, figsize=(15, 3)) f1_axes f1_axes[0] = dyn.pl.streamline_plot(adata, basis='pca', color='pca_ddhodge_potential', pointsize=0.1, alpha = 0.7, ax=f1_axes[0], quiver_length=6, quiver_size=6, save_show_or_return='return', show_arrowed_spines=False) f1_axes[1] = dyn.pl.streamline_plot(adata, basis='pca', color='speed_pca', ax=f1_axes[1], quiver_length=12, quiver_size=12, save_show_or_return='return', show_arrowed_spines=False) f1_axes[2] = dyn.pl.streamline_plot(adata, basis='pca', color='divergence_pca', ax=f1_axes[2], save_show_or_return='return', show_arrowed_spines=False, cmap='bwr', s_kwargs_dict= {"sym_c": True}) f1_axes[3] = dyn.pl.streamline_plot(adata, basis='pca', color='acceleration_pca', ax=f1_axes[3], save_show_or_return='return', show_arrowed_spines=False) f1_axes[4] = dyn.pl.streamline_plot(adata, basis='pca', color='curl_umap', ax=f1_axes[4], save_show_or_return='return', show_arrowed_spines=False, cmap='bwr', s_kwargs_dict= {"sym_c": True}) plt.savefig(dpi=300, fname='./hg_vector_calculus.png') # In[28]: example_genes = ['ELAVL4'] import numpy as np dyn.pl.scatters(adata, x=np.repeat('pca_ddhodge_potential', 1), y=example_genes, layer='X_spliced', color='pca_ddhodge_potential', background='white', figsize=(3, 3), save_show_or_return='save', pointsize=0.4, ncols=1, alpha = 0.7, save_kwargs={'prefix': 'hg_potential', 'ext': 'png', "bbox_inches": None}) # In[31]: # run dynamo determinstic # run dynamo to get RNA velocity dyn.configuration.set_figure_params('dynamo', background='white') adata_det = dyn.sample_data.hgForebrainGlutamatergic() dyn.pp.recipe_monocle(adata_det, n_top_genes=1000, fg_kwargs={'shared_count': 20}) dyn.tl.dynamics(adata_det, model='deterministic') dyn.tl.reduceDimension(adata_det, n_pca_components=30) dyn.tl.cell_velocities(adata_det, method='pearson', basis='pca', other_kernels_dict={'transform': 'sqrt'}) dyn.pl.streamline_plot(adata_det, color=['Clusters'], basis='pca', show_legend='on data', show_arrowed_spines=True) # In[44]: # run dynamo stochastic # run dynamo to get RNA velocity dyn.configuration.set_figure_params('dynamo', background='white') adata_sto = dyn.sample_data.hgForebrainGlutamatergic() dyn.pp.recipe_monocle(adata_sto, n_top_genes=1000, fg_kwargs={'shared_count': 20}) dyn.tl.dynamics(adata_sto, model='stochastic') dyn.tl.reduceDimension(adata_sto, n_pca_components=30) dyn.tl.cell_velocities(adata_sto, method='pearson', basis='pca', other_kernels_dict={'transform': 'sqrt'}) dyn.pl.streamline_plot(adata_sto, color=['Clusters'], basis='pca', show_legend='on data', show_arrowed_spines=True) # In[33]: # run dynamo nb # run dynamo to get RNA velocity dyn.configuration.set_figure_params('dynamo', background='white') adata_nb = dyn.sample_data.hgForebrainGlutamatergic() dyn.pp.recipe_monocle(adata_nb, n_top_genes=1000, fg_kwargs={'shared_count': 20}) dyn.tl.dynamics(adata_nb, est_method='negbin') dyn.tl.reduceDimension(adata_nb, n_pca_components=30) dyn.tl.cell_velocities(adata_nb, method='pearson', basis='pca', other_kernels_dict={'transform': 'sqrt'}) dyn.pl.streamline_plot(adata_nb, color=['Clusters'], basis='pca', show_legend='on data', show_arrowed_spines=True) # In[45]: adata_sto.var.use_for_transition.sum(), adata_det.var.use_for_transition.sum(), adata_nb.var.use_for_transition.sum() # In[46]: dyn.cleanup(adata_sto) dyn.cleanup(adata_det) dyn.cleanup(adata_nb) # In[47]: adata_sto.write_h5ad('./data/hgForebrainGlutamatergic_dynamo_stochastic.h5ad') adata_det.write_h5ad('./data/hgForebrainGlutamatergic_dynamo_det.h5ad') adata_nb.write_h5ad('./data/hgForebrainGlutamatergic_dynamo_nb.h5ad') # In[48]: adata_sto.obs.Clusters = adata_sto.obs.Clusters.astype(str) adata_det.obs.Clusters = adata.obs.Clusters.astype(str) adata_nb.obs.Clusters = adata.obs.Clusters.astype(str) # In[49]: dyn.pl.streamline_plot(adata, color=['Clusters'], basis='pca', show_legend='on data', background='white', show_arrowed_spines=False, save_show_or_return='save', pointsize=0.4, ncols=1, alpha = 0.7, save_kwargs={'prefix': 'hg_dynamo_stochastic', 'ext': 'svg', "bbox_inches": None}, figsize=(4, 3)) # In[50]: dyn.pl.streamline_plot(adata_det, color=['Clusters'], basis='pca', show_legend='on data', background='white', show_arrowed_spines=False, save_show_or_return='save', pointsize=0.4, ncols=1, alpha = 0.7, save_kwargs={'prefix': 'hg_dynamo_det', 'ext': 'svg', "bbox_inches": None}, figsize=(4, 3)) # In[51]: dyn.pl.streamline_plot(adata_nb, color=['Clusters'], basis='pca', show_legend='on data', background='white', show_arrowed_spines=False, save_show_or_return='save', pointsize=0.4, ncols=1, alpha = 0.7, save_kwargs={'prefix': 'hg_dynamo_nb', 'ext': 'svg', "bbox_inches": None}, figsize=(4, 3)) # In[ ]: