Comments (8)
Yes. I can see how the term "interactions" might be misleading here. plotInteractions
does not per se inspect cell-cell interaction in terms of physical (Euclidean) distances. But simply "how subpopulation proportions cooccur within spots".
I think the motivation of the name might stem from the fact that in Visium, each spot capture a couple cells already. The spots are then separated by some center-center distance. So it's hard (perhaps biologically not possible?) to capture cell-cell interaction/communication in the classical sense, because we do not have single cells. Hence, checking which subpopulations are captured by the same spot is a proxy of "interaction".
(All that is just my interpretation, but maybe Marc had something else in mind when he implemented this back then ;)
Also to note that, in newer higher-resolution spot-based such as STEREO-seq and HDST, "classical" cell-cell interaction that incorporates expression, cellular distances, and ligand-receptor pairs etc. might be applicable (especially when sub-cellular spots can be segmented). But for Visium, I am not that sure.
from spotlight.
- As with any
ggplot
, the data underlying the plot can be retrieved viagg <- plotInteractions(...); gg@data
. - Functions proceeded by a
.
are internals only / not exported. You can view their code here or from R via:::
(e.g.,SPOTLIGHT:::.count_interactions
).
from spotlight.
- As with any
ggplot
, the data underlying the plot can be retrieved viagg <- plotInteractions(...); gg@data
.- Functions proceeded by a
.
are internals only / not exported. You can view their code here or from R via:::
(e.g.,SPOTLIGHT:::.count_interactions
).
Hi Helena,
Can I ask a question based on this?
It seems that the interaction calculation is not based on spatial distance information, but just the cell type composition of each spot, correct?
Thanks!
from spotlight.
I agree with Helena that the function's name is misleading, apologies for that. I will update the description of the function in the updated version!
Helena is spot
on with her explanation. Ultimately, this function checks how many times each cell type is co-localized with another using the proportion of co-localizing or the Jaccard index.
A useful tool to carry out Spatially aware Ligand-Receptor analysis is CellChat. Be aware of the assumptions of it makes, but it is a very good starting point.
from spotlight.
Yes. I can see how the term "interactions" might be misleading here.
plotInteractions
does not per se inspect cell-cell interaction in terms of physical (Euclidean) distances. But simply "how subpopulation proportions cooccur within spots".I think the motivation of the name might stem from the fact that in Visium, each spot capture a couple cells already. The spots are then separated by some center-center distance. So it's hard (perhaps biologically not possible?) to capture cell-cell interaction/communication in the classical sense, because we do not have single cells. Hence, checking which subpopulations are captured by the same spot is a proxy of "interaction".
(All that is just my interpretation, but maybe Marc had something else in mind when he implemented this back then ;)
Also to note that, in newer higher-resolution spot-based such as STEREO-seq and HDST, "classical" cell-cell interaction that incorporates expression, cellular distances, and ligand-receptor pairs etc. might be applicable (especially when sub-cellular spots can be segmented). But for Visium, I am not that sure.
Thank you Helena!
from spotlight.
I agree with Helena that the function's name is misleading, apologies for that. I will update the description of the function in the updated version!
Helena is
spot
on with her explanation. Ultimately, this function checks how many times each cell type is co-localized with another using the proportion of co-localizing or the Jaccard index.A useful tool to carry out Spatially aware Ligand-Receptor analysis is CellChat. Be aware of the assumptions of it makes, but it is a very good starting point.
Thank you! I think co-localization is also very helpful. Can I ask a follow-up question?
I thought about using this function to visualize deconvolution results from multiple tools, but it seems many other tools won't give absolute 0 values to a specific cell type fraction, but very small values (it seems Spotlight is not this case?), that way using this function might not be appropriate. Would it allow us to set min_frac to different values, or is 0 the most optimal for Spotlight output?
Thanks!
from spotlight.
Hi @cf98
In SPOTlight I usually use a threshold that if a cell type is predicted to contribute less than 3% to a spot it is fitting noise. Maybe you can do something similar. Something else that you can use is to measure the proportionality between them using the propr package.
from spotlight.
Thank you! Just realized it's an option. I will check out the propr package.
from spotlight.
Related Issues (20)
- export SPOTlight results to 10x Genomics Loupe Browser HOT 3
- colData(sc_data)$subclass HOT 1
- Difference between cell type correlation and cell communication HOT 1
- SPOTlight with low numbers of genes per spot HOT 1
- Does the new version of SPOTlight no longer support data from Seurat? HOT 1
- ERROR: dependency ‘arrangements’ is not available for package ‘SPOTlight’ HOT 4
- test_spot_fun HOT 2
- Error in trainNMF(x = x, y = y, groups = groups, mgs = mgs, n_top = n_top, : ids %in% names(mgs) are not TRUE
- Parallel run HOT 2
- Error slot %in% SummarizedExperiment::assayNames(x) is not TRUE HOT 3
- function plotSpatialScatterpie with image=TRUE does not work HOT 6
- What does the 'decon_df' mean? HOT 5
- Error in .extract_counts(y, assay, slot) : !is.null(colnames(x)) is not TRUE HOT 2
- ST technology (the predecessor of 10X Visium technology) HOT 1
- Error in `SeuratObject::GetAssayData()`: HOT 4
- plotSpatialScatterpie HOT 9
- assay %in% SeuratObject::Assays(x) is not TRUE HOT 1
- Q - Visium analysis - subset image and spot demultiplexing HOT 5
- packages version HOT 3
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 spotlight.