SCA-IRCM / SingleCellSignalR

R package for Bioconductor submission
29 stars 12 forks source link

Missing MHC interactions when they are expected #23

Open dn-ra opened 1 year ago

dn-ra commented 1 year ago

Hi,

Thank you for writing and maintaining this useful tool.

I'm performing cell interaction analysis on a dataset of DCs and T cells. I've output a list of interactions from a DC celltype to a T celltype and with a LRscore threshold of 0.3 as below:

cDC1 | T0 | interaction type | LRscore -- | -- | -- | -- Gnai2 | S1pr1 | paracrine | 0.79762 Calm1 | Pde1c | paracrine | 0.489527 Tgm2 | Adgrg1 | paracrine | 0.455561 Spp1 | S1pr1 | paracrine | 0.403408 Calm1 | Oprm1 | paracrine | 0.39834 Gnai2 | Oprm1 | paracrine | 0.358413 Calm3 | Pde1c | paracrine | 0.348447 Pdgfb | S1pr1 | paracrine | 0.341336 Calm2 | Pde1c | paracrine | 0.333758

Trouble is, there should be some MHC interactions present in here. Even when I reduce the LRscore down to 0.05, the expected interactions still don't show up.

I should note that I have input my own cluster labels into the analysis rather than using the data_prepare() pipeline as we had to perform some integration. What might be causing the drop out of expected interactions? Can inputting our own cluster labels cause this?

An example for the expression of one of the expected ligand-receptor pairings is present in the below plot. Clearly the involved molecules are present in the dataset. So what might I be doing wrong so that it isn't picked up in the analysis? image

Here's the code I used to run SingleCellSignalR:

clust.ana <- cluster_analysis(data = seu_split[['LN']]@assays$RNA@data, genes = rownames(seu_split[['LN']]), 
                              cluster = seu_split[['LN']]$refined_cluster %>% as.factor() %>% as.numeric(), 
                              write = FALSE) #differentially expressed genes separating clusters. This actually isn't necessary. Jsut tells you if the interactions between two cell types are specific to that pairing.

signal <- cell_signaling(data =  seu_split[['LN']]@assays$RNA@data %>% data.frame(), 
                         genes = rownames(seu_split[['LN']]), cluster = seu_split[['LN']]$refined_cluster %>% as.factor() %>% as.numeric(), 
                         write = FALSE, species = 'mus musculus', s.score = 0.05,
                         c.names = seu_split[['LN']]$refined_cluster %>% as.factor %>% levels()) #generate cellular interaction lists

inter.net <- inter_network(data = seu_split[['LN']]@assays$RNA@data, signal = signal, genes = genes, 
                           cluster = seu_split[['LN']]$refined_cluster %>% as.factor() %>% as.numeric(), 
                           write = FALSE) #generate intercellular network

Thanks for your advice.