I have done DE analysis using SCANpy on my single cell data and I have compared each cluster versus all the other clusters. One cluster seems particularly interesting so I wanted to do pathway analysis.

I have already tried to do the pathway analysis but I got confused. I initially followed the instructions from here (https://nbisweden.github.io/workshop-scRNAseq/labs/compiled/scanpy/scanpy_05_dge.html) and did the enrichment and then I also wanted to do GSEA so I used gseapy.prerank. However, then I was trying to find a way to visualize the network so I ended up going to the gseapy documentation.

The steps of the enrichment analysis seemed the same but then I got confused with the GSEA portion. The first tutorial I found used gseapy.prerank but the second one uses gp.gsea. I was trying to understand the difference and it seems that since I already have the DE analysis I should be using the gseapy.prerank right bit I am not sure.

I was wondering if doing the analysis trough KEGG would be easier.

Thank you

Gene set enrichment analysis (GSEA) is a commonly used algorithm for characterizing gene expression changes. However, the currently available tools used to perform GSEA have a limited ability to analyze large datasets, which is particularly problematic for the analysis of single-cell data. To overcome this limitation, we developed a GSEA package in Python (GSEApy), which could efficiently analyze large single-cell datasets.


2 Answers 2


An easy way to do an enrichment analysis in scanpy is using scanpy.queries.enrich(). This relies on gprofiler, which uses KEGG, GO and other ontologies


The original question was GSEApy vs KEGG. The response below is GSEApy. The question has been edited and is now a different question concerning options within GSEApy.

Response to original question

If GSEApy as described in the publication provides the output you require - that is much, much simpler. KEGG will be complex and you'd need its ids.

However, surely GSEA will require to perform the full calculation of fold-change from scratch rather than be fed the output of scanpy? KEGG will require the output of scanpy. GSEApy primary function is fold-change rather identifying the precisely which pathways are regulating the phenotype under analysis.

KEGG will provide a more accurate answer - in my humble opinion. GSEApy is a lot easier because it very much an "all-in-one" solution. If the answer isn't satisfactory you can always switch.

Just to note the GSEApy version I'm referring to is the latest publication.

NOTE There was a deleted post from the OP about an option within GSEA. This is a separate question in the SE format of questions and answers. Thats the way the site works.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.