Created
June 4, 2021 15:45
-
-
Save cplaisier/35dcc2afe7bc5ad99beba357f2f060d1 to your computer and use it in GitHub Desktop.
scvelo example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import scanpy as sc | |
| import scvelo as scv | |
| import pandas as pd | |
| import numpy as np | |
| #from matplotlib.backends.backend_pdf import PdfPages | |
| #import matplotlib.pyplot as plt | |
| from matplotlib.colors import ListedColormap | |
| # Load U5 data from Seurat | |
| #adata_Seurat = scv.read_loom('U5_all_v3.loom') | |
| adata_Seurat = scv.read_loom('U5_all_v3.loom') | |
| ccAF1_tsne = pd.read_csv('/files/ccAF/tsne_cell_embeddings_Perplexity_26.csv', header = 0, index_col = 0) | |
| ccAF1_tsne = ccAF1_tsne.loc[[True if not i.find('-1_1')==-1 else False for i in ccAF1_tsne.index]] | |
| ccAF1_tsne.index = [i.rstrip('-1_1') for i in list(ccAF1_tsne.index)] | |
| adata_Seurat.obsm['tsne_cell_embeddings'] = np.array(ccAF1_tsne.loc[adata_Seurat.obs_names]) | |
| # Load U5 data from velocyto | |
| adata_vc = scv.read_loom('U5_all.loom') | |
| # Merge data | |
| adata = scv.utils.merge(adata_vc, adata_Seurat) | |
| adata.obs.clusts_WT = adata.obs.clusts_WT.astype('category') | |
| adata.obs.clusts_WT = adata.obs.clusts_WT.cat.rename_categories({'G1/Differentiation':'Neural G0'}) | |
| adata.obs.clusts_WT = adata.obs.clusts_WT.cat.reorder_categories(['G1/other', 'Neural G0', 'G1', 'Late G1', 'S', 'S/G2', 'G2/M', 'M/Early G1'], ordered=True) | |
| # Filter and normalize | |
| #scv.pp.filter_genes(adata, min_shared_counts=10) | |
| #scv.pp.normalize_per_cell(adata) | |
| #scv.pp.filter_genes_dispersion(adata, n_top_genes=3000) | |
| #scv.pp.log1p(adata) | |
| #scv.pp.filter_and_normalize(adata, min_shared_counts=30, n_top_genes=3000) | |
| scv.pp.moments(adata, n_pcs=19, n_neighbors=10, use_rep='pca_cell_embeddings') | |
| # Compute velocity | |
| #scv.tl.velocity(adata) | |
| scv.tl.velocity(adata, groupby='clusts_WT', groups=['G1','Late G1','S','S/G2','G2/M','M/Early G1'], groups_for_fit=['G1','Late G1','S','S/G2','G2/M','M/Early G1']) | |
| #scp.tl.umap(adata) | |
| #scp.tl.louvain(adata,res=0.4) | |
| scv.tl.velocity_graph(adata) | |
| # Plot | |
| scv.pl.velocity_embedding_stream(adata, basis='tsne_cell_embeddings', color=['clusts_WT'], save='velocity_stream_tsne26.png') | |
| scv.pl.velocity_embedding(adata, basis='umap_cell_embeddings', color=['clusts_WT'], save='velocity.pdf',arrow_length=2, arrow_size=2, dpi=150) | |
| scv.pl.velocity_embedding_grid(adata, basis='umap_cell_embeddings', color=['clusts_WT'], save='velocity_grid.pdf',arrow_length=2, arrow_size=2, dpi=150) | |
| # Latent time | |
| scv.tl.recover_latent_time(adata) | |
| ccAdata = adata[list(adata.obs[adata.obs['clusts_WT'].isin(['Neural G0','G1','Late G1','S','S/G2','G2/M','M/Early G1'])].index)] | |
| scv.pp.moments(ccAdata, n_pcs=19, n_neighbors=15, use_rep='pca_cell_embeddings') | |
| #scv.tl.velocity(ccAdata) | |
| scv.tl.velocity(ccAdata, groupby='clusts_WT', groups=['Neural G0', 'G1','Late G1','S','S/G2','G2/M','M/Early G1'], groups_for_fit=['Neural G0', 'G1','Late G1','S','S/G2','G2/M','M/Early G1']) | |
| #scp.tl.umap(ccAdata) | |
| #scp.tl.louvain(ccAdata,res=0.4) | |
| scv.tl.velocity_graph(ccAdata) | |
| import webcolors | |
| from scipy.spatial import KDTree | |
| # lets populate some names into spatial name database | |
| hexnames = webcolors.CSS3_HEX_TO_NAMES | |
| names = [] | |
| positions = [] | |
| for hex, name in hexnames.items(): | |
| names.append(name) | |
| positions.append(webcolors.hex_to_rgb(hex)) | |
| spacedb = KDTree(positions) | |
| result = [] | |
| # query nearest point | |
| for querycolor in [(123,175,65),(201,149,43),(243,118,110),(31,189,194),(166,129,186),(225,109,170),(43,181,103),(74,161,217)]: | |
| dist, index = spacedb.query(querycolor) | |
| result.append(names[index]) | |
| cmap1 = dict(zip(['G1/other', 'Neural G0', 'G1', 'Late G1', 'S', 'S/G2', 'G2/M', 'M/Early G1'],result)) | |
| # Plot | |
| scv.pl.velocity_embedding_stream(ccAdata, basis='tsne_cell_embeddings', color=['clusts_WT'], save='ccAdata_velocity_stream_tsne.png',dpi=300) | |
| scv.pl.velocity_embedding_stream(ccAdata, basis='tsne_cell_embeddings', color=['clusts_WT'], save='ccAdata_velocity_stream_tsne.png',dpi=300, palette = cmap1, title='', legend_loc='right margin', figsize=(5,5)) | |
| scv.pl.velocity_embedding(ccAdata, basis='umap_cell_embeddings', color=['clusts_WT'], save='ccAdata_velocity.png',arrow_length=2, arrow_size=2, dpi=150) | |
| scv.pl.velocity_embedding_grid(ccAdata, basis='umap_cell_embeddings', color=['clusts_WT'], save='ccAdata_velocity_grid.png',arrow_length=2, arrow_size=2, dpi=150) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment