This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Spatial Transcriptomics: Analysis and differential expression across two slides

I have a question on the correct method of using Seurat to analyze tissues across slides.

We have a spatial transcriptomics setup where we have added two tissues on one slide section and want to perform analysis across two different slides. For example, Slide 1 has Tissue A and Tissue C, and Slide 2 has Tissue B and Tissue D. We would like to perform differential expression of Tissue C (Disease model from Slide 1) and Tissue D (Wild Type model from Slide 2). To give you a better idea, here's a crude model below:

 Slide 1                       Slide 2 
----------                    ---------
|Tissue A|                    |Tissue B|
__________                    __________
|Tissue C|                    |Tissue D|
----------                    ----------

The way I have my Seurat object set up right now I actually imported the tissues together at the same time and have it where I have Tissue C and Tissue D in the same object - for example:

table(Idents(SeuratObj) 
TissueC      TissueD
217060       212627

I have ran SCTransform to normalize the data, PCA, clustering, and then FindMarkers for differential expression:

de_markersFULL2 <- FindMarkers(SeuratObj, ident.1 = "TissueC", ident.2 = "TissueD",
                          assay = "SCT", slot = "data", recorrect_umi = FALSE) 

BUT I can't help but think this is wrong in that the normalization step would be mixing up the two separate tissue samples (disease x wild-type) and not really giving a correct DE value....

Would the correct method be then to import tissues into separate Seurat objects, run the transformation normalization and clustering separately, and THEN use the merge function within Seurat? I'm guessing I would have the two separate idents in one object after merging and this would give me the correct set of counts/measurements, but I wasn't sure...

I'm also having issue running integration with a single-cell RNAseq reference set where after integration, I'm getting way too many calls for cells than biologically feasible...

Please feel free to ask any clarifying questions if this wasn't clear. Thanks for the advice!

spatial_transcriptomics seurat r

It's the usual situation that tissue is confounded with slide. Technically, a comparison is invalid because any differences could be technical. There is no stats magic to solve that.

1 answer

Some comments to add up to ATpoint 's, which is technically correct.

We are guessing you are talking about Xenium slides here. If so we can also guess that you have process the 2 slides in the same run. As for sure it would have being smarter to process C and D on the same slide, if all the data is coming from the same run it is less damageable. You can see that as putting your samples in 2 different lanes on a flow cell in single cell.

Moreover, you are trying to do a differential analysis of N=1 samples, so the batch effect is the last of your problem. It can give you some hint where to look at for further analysis but nothing more than that.

Another point, all the methods and functions your are using (SCT, FindMarkers) are based on single cell technology assumptions and might not be suitable for spatial (low number of genes captured and low depth).

The strength of spatial is to look at the localization of the cells not so much at the information that might contains. Use the counts to distinguish between cell types and sub cell types and compare cell environments (niches/compartment) between your samples.

The field is quite "new", so there is no standard way to look at the data. Find out what question you want to ask from the data and process the samples the best you can.

I tend to rely more on pseudobulk DEG analysis in both spatial and single cell.

Note : The "DE" value from FindMarkers, does not reflect by default the strict log2FC calculation, but instead give you a log2FC mostly reflecting the potential of that gene to be differentially expressed, using a pseudo count (see more).

Have you check your segmentation accuracy in your samples ? Is the segmentation of your disease as good as your control ? Depending of what kind of disease you are dealing with.

Not sure what you meant about the single cell integration. We also don't know the probes panel used in your experiment. For integration the number of selected anchors and selecting thresholds on prediction scores are parameters to tweak.

In your case I would go (I guess A and B are also related to your experiment, same organ, conditions etc... Otherwise kick them out) :

  • Normalize each count matrix separately (maybe log2 is a bit too aggressive for spatial, as the high counts are usually not that high)
  • Find Features for each matrix
  • Scale each matrix
  • MERGE matrices
  • Find neighbors and clusters
  • Annotate your clusters
  • Check if come of your clusters are condition specific or sample specific
  • If you want to do a DEG on pseudobulk with N=1 (impossible to do), you can do it here.
  • Generate niches and explore the patterns between samples.

Log in to answer this question.