Score Marker gene sets
Write a function that computes a marker score for each cell based on a given set of marker genes.
First, scale the data with scanpy.pp.scale
, then use scanpy.tl.score_genes
for scoring. The function should return an anndata with added scores (modify inplace should be an option). Also, make sure that the returned anndata is not scaled, this is only needed for scoring.
def score_gene_set(adata, gene_set, score_name, inplace, scale_kwargs, score_kwargs):
# gene_set should be file with genes (one per line) or list of genes
# scale the adata
# add scale keyword arguments to scanpy function call
# compute scores
# add score keyword arguments to scanpy function call
# return adata with added scores
Legacy code
# Read M1 and M2 gene signatures
m1_genes = [x.strip() for x in open('/mnt/workspace/mlooso/sav31/M1-signature_mouse.txt')]
m2_genes = [x.strip() for x in open('/mnt/workspace/mlooso/sav31/M2-signature_mouse.txt')]
# Scale the data before scoring
sdata = scanpy.pp.scale(adata, copy=True)
# Score the cells by m1
scanpy.tl.score_genes(sdata, gene_list=m1_genes, score_name = 'M1_score')
# Score the cells by m2
scanpy.tl.score_genes(sdata, gene_list=m2_genes, score_name = 'M2_score')
# Visualize cells in UMAP
scanpy.pl.umap(sdata, color = [metacol, 'total_counts','leiden_coarse', 'leiden_fine', 'M1_score', 'M2_score','SCSA Cell Type'],
title = [metacol,'total_counts', 'Leiden','Leiden fine', 'M1 score', 'M2 score','SCSA'],
vmin = [None, None, None, None, None, 0, 0],
vmax = [None, None, None, None, None, 1.0, 1.0],
legend_loc = 'right margin')
Edited by Hendrik Schultheis