#! usr/python
####zhaoyunfei
####20240715
####https://commot.readthedocs.io/en/latest/index.html
####taskset -c 20 python
import argparse
parse=argparse.ArgumentParser(description='COMMOT')
parse.add_argument('--sp_input',help='the input file of matrix for spatial',type=str,required = True)
parse.add_argument('--sample',help='the sample name',type=str,required = True)
parse.add_argument('--species',help='the species',type=str,required = True,choices = ['mouse','human'])
parse.add_argument('--outdir',help='the outdir',type=str,required = True)
argv=parse.parse_args()
sp_input=args.sp_input
sample = args.sample
species = args.species
outdir = args.outdir
import os
import gc
import ot
import pickle
import anndata
import scanpy as sc
import pandas as pd
import numpy as np
from scipy import sparse
from scipy.stats import spearmanr, pearsonr
from scipy.spatial import distance_matrix
import matplotlib.pyplot as plt
import commot as ct
adata = sc.read_visium(sp_input,library_id = sample)
adata.var_names_make_unique()
sc.pp.normalize_total(adata, inplace=True)
sc.pp.log1p(adata)
adata_dis500 = adata.copy()
sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)
adata = adata[:, adata.var.highly_variable]
sc.tl.pca(adata, svd_solver='arpack')
sc.pp.neighbors(adata, n_neighbors=10, n_pcs=20)
sc.tl.umap(adata)
sc.tl.leiden(adata, resolution=0.4)
df_cellchat = ct.pp.ligand_receptor_database(species=species, signaling_type='Secreted Signaling', database='CellChat')
df_cellchat_filtered = ct.pp.filter_lr_database(df_cellchat, adata_dis500, min_cell_pct=0.05)
###限速
ct.tl.spatial_communication(adata_dis500,database_name='cellchat', df_ligrec=df_cellchat_filtered, dis_thr=500, heteromeric=True, pathway_sum=True)
for pathway in list(set(df_cellchat_filtered.iloc[:,2])):
ct.tl.communication_direction(adata_dis500, database_name='cellchat', pathway_name=pathway, k=5)
ct.pl.plot_cell_communication(adata_dis500, database_name='cellchat', pathway_name=pathway, plot_method='grid', background_legend=True,scale=0.00001, ndsize=8, grid_density=0.4, summary='sender', background='image', clustering='leiden', cmap='Alphabet',normalize_v = True, normalize_v_quantile=0.995)
plt.savefig(outdir + '/' + sample + 'signal.arrow.grid.spatial.png',bbox_inches = 'tight')
ct.pl.plot_cell_communication(adata_dis500, database_name='cellchat', pathway_name=pathway, plot_method='stream', background_legend=True,scale=0.00001, ndsize=8, grid_density=0.4, summary='sender', background='image', clustering='leiden', cmap='Alphabet',normalize_v = True, normalize_v_quantile=0.995)
plt.savefig(outdir + '/' + sample + 'signal.arrow.stream.spatial.png',bbox_inches = 'tight')
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。