Skip to content

Instantly share code, notes, and snippets.

@cplaisier
Created June 4, 2021 15:45
Show Gist options
  • Select an option

  • Save cplaisier/35dcc2afe7bc5ad99beba357f2f060d1 to your computer and use it in GitHub Desktop.

Select an option

Save cplaisier/35dcc2afe7bc5ad99beba357f2f060d1 to your computer and use it in GitHub Desktop.
scvelo example
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