saeyslab / nichenetr

NicheNet: predict active ligand-target links between interacting cells
483 stars 117 forks source link

nichenet through seurat-cell type specific ligand/receptor scores #77

Open annamath opened 3 years ago

annamath commented 3 years ago

Hello, first - very nice to finally see ligand receptor interaction connecting to gene expression :) I am using nichenet through seurat and I was wondering whether it's possible to get a metric/score of interaction per cell type and not a general (something like weight in nichenet_output$ligand_target_df but per ident).

Based on the vignettes, I get ligand/receptor pairs and then plot their expression. But expression is not directly connected with interaction score and it's often hard to visualize it/summarize especially when u have a lot of cell types.
I believe the vignette for circos plot visualization is close to what I would like to do, (https://github.com/saeyslab/nichenetr/blob/master/vignettes/circos.md) but I would still be interested in a more quantitative way. A good example could be figure 3 from CellPhoneDB (https://www.nature.com/articles/s41596-020-0292-x)

Thanks in advance! Anna

browaeysrobin commented 3 years ago

Hi @annamath

Do you mean that you want to have a score per senderLigand - receiverReceptor pair that includes both cell-type specific expression and NicheNet ligand activity? Or do you want the ligand-target scores weighted according to the expression level of the ligand in the different sender cell types? Or still something else?

annamath commented 3 years ago

Apologies, I am not sure I understand completely your suggestions. I would describe it as a score per senderLigand - receiverReceptor pair but per cell type/cell identity. So output-wise I would see it as nichenet_output$ligand_target_df with 2 additional columns, a sender cell column and a receiver cell column. Is it clearer now ?

browaeysrobin commented 3 years ago

Hi @annamath

Do you want to include the cell type information at the ligand-target level or at the ligand-receptor level? Or both? Based on your first message and your reference to the CellPhoneDB figure, I was thinking you would want it for ligand-receptor interactions, but based on your last answer I guess you want it for the ligand-target level?

I will assume now that you want it for the ligand-target level (ligand_target_df as output).

Currently the ligand-target weights in ligand_target_df are solely based on prior information and not based on expression. The expression data is only used to define the set of potential ligands, and the geneset of interest.

But, in theory it could be possible to also consider the expression levels of each of the ligands per sender, and adapt the ligand-target weight by the expression of the sender cell type. In that case , we won't report scores for Ligand X - Target Y, but split this up in eg Sender A - Ligand X - Target Y and Sender B - Ligand X - Target Y. Sender A - Ligand X - Target Y would then have higher weights than Sender B - Ligand X - Target Y if the expression of ligand X in Sender A would be higher than in Sender B. Instead of expression it could also be possible and more informative in some datasets to use the logFC of the ligand. In theory it could also be possible to adapt this score based on the logFC of the target gene in the specific receiver cell type - if you would want to compare ligand-target links between different receiver cell types as well.

We are currently not supporting this ourselves because there are many different options to do this, and the best option will probably depend on the specific use case, and is also hard to validate which way would be the best. But know that you yourself could add this type of expression information if you would want to for your specific use case.

annamath commented 3 years ago

Hello @browaeysrobin Thanks for your suggestions. I will try different things (gene expression and log2fc) and come back to you when I have any updates.