Comments (6)
Hi @hoyu310,
The prioritization of ligands by NicheNet (ligand activity analysis) will only occur based on enrichment of their target genes in the set of genes that are differentially expressed in the receiver cell. So there is no prioritization based on the strength of expression of the ligand in the sender cell or strength of expression of the receptor(s) in the receiver cell. Expression in sender cells is only used to determine which ligands are expressed in a sender cell, and expression in receiver cells is used to determine which receptors are expressed in the receiver cell. The default definition of 'being expressed' is that a gene should be expressed in 10% of cells in the cluster of interest. This is not so high (you can put a more stringent cutoff if you want), resulting in the possible outcome that a ligand, top-ranked according to the enrichment of its target genes, is actually not very highly expressed. So what you observe, can be expected based on how NicheNet prioritizes ligands.
However, one thing is weird, based on the results you show me here. That is that ligand X was only found to be important when considering cluster 1 as 'sender' cell type. This is weird because ligand X seems to be expressed in the other clusters as well. So it seems that Ligand X is not specific. Can you check what went possibly wrong here?
from nichenetr.
@browaeysrobin Thanks for the response, now it makes sense why the genes of the ligands or receptors are not always highly expressed.
It is indeed strange that ligand X only has cluster 1 as the sender and cluster 4 as the receiver, now that you pointed it out. After carefully reviewing all the outputs, I now realize why this is the case. For the outputs of nichenet_seuratobj_aggregate, in $ligand_activities, the full set of ligands ("test_ligand"), typically in the hundreds, are included; however, in $ligand_target_matrix and $ligand_receptor_matrix, the target_gene and receptor associations, respectively, are only included for the top 20 ligands listed in $ligand_activities.
For my dataset and the 49 runs, it happened to be that ligand X is a top 20 ligand only in the run of cluster 1 as sender and 4 as receiver. However, when looking back at the outputs, ligand X actually appears in $ligand_activities in most of the 49 runs, with the Pearson_correlation_coefficient_target_gene_prediction_ability of ligand X in a number of these runs being comparable (sometimes even higher) to that of the run of cluster 1 as sender and 4 as receiver - it just happened that in these runs, ligand X is outside of the top 20. The way I compiled the "one table for all the runs" is that for every ligand in $ligand_activities, if the ligand has a target_gene in $ligand_target_matrix and also has a receptor in $ligand_receptor_matrix, then this will be one entry in the compiled table.
Therefore, I think that if there were a parameter in nichenet_seuratobj_aggregate that would allow the computation of $ligand_target_matrix and $ligand_receptor_matrix for all the ligands in $ligand_activities, then it would solve this problem. But I am not sure around how much computational resources this would add to the run and so whether this is feasible, though.
from nichenetr.
Hi @hoyu310 ,
I added a new parameter that allows you to get the output for all ligands (the heatmaps won't look nice, but you can still use the matrices like you do). You should reinstall nichenetr and put filter_top_ligands = FALSE
instead of the default TRUE
as extra parameter. Then you should get all output.
Please let me know whether it works for you now.
Just an extra note on your analysis: in this way it will be hard to find specific sender-receiver interactions if you put the cutoff on expressed genes low. To get some more specific links, you could put this threshold more stringent. What I prefer though is considering all possible sender cells at once in a NicheNet analysis and then tracing back which cell types express which top-ranked ligands most strongly.
from nichenetr.
@browaeysrobin Thanks a lot, I re-installed and ran nichenet_seuratobj_aggregate with filter_top_ligands = FALSE, and it worked! I will also try out your other suggestions. Thanks again.
from nichenetr.
Hi @hoyu310, thanks for the detailed description of your issue.
May I ask for the three metrics for filtering you mentioned: Pearson_correlation_coefficient_target_gene_prediction_ability, Regulatory_potential, and Prior_interaction_potential. What is the difference btw the second and third one?
from nichenetr.
Regulatory_potential: scores in the ligand-target matrix -- used for ligand-target gene regulatory potential
Prior_interaction_potential: weights of the ligand-signaling weighted network -- used for protein-protein interaction evidence, eg between ligands and receptors
See supplementary figure 1 of the paper, or the figure in https://github.com/saeyslab/nichenetr/blob/master/vignettes/model_construction.md, to see what I mean with the ligand-signaling network etc
from nichenetr.
Related Issues (20)
- Is Peaks a viable default assay of interest>
- About question in "Perform NicheNet analysis with prioritization" vignette HOT 1
- `get_expressed_genes` function for sparse matrix
- get_exprs_avg produced error message HOT 1
- Trouble with get_prioritization_tables HOT 1
- I got trouble when running nichenet_seuratobj_aggregate() HOT 1
- ask questions about model constructing HOT 2
- NicheNet-v2 data source collection and processing (OmniPath)? HOT 2
- generate_prioritization_tables() generates an empty result. HOT 1
- how to use nichenet in cell development data HOT 4
- there is a warning in this shetp-"score ligand-receptor interactions based on expression strength of the receptor"
- Error on get_prioritization_tables() HOT 1
- Error while running get_expressed_genes HOT 5
- So much targets in nichenet_output$ligand_activity_target_heatmap after running nichenet_seuratobj_aggregate HOT 1
- Modeling Inquiry HOT 2
- Error in "evaluate_target_prediction(setting, ligand_target_matrix, ligands_position) : all genes have same response"
- Is there a helper function to draw the plot in the description ? HOT 1
- Inquiry about Signaling and Gene Regulatory Networks Data in Omnipath and NicheNet HOT 1
- Query: AUPR HOT 1
- Error while plotting a ligand-receptor interaction network
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nichenetr.