This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Seurat - integration of metastases biopsies

Hi,

I'm analyzing single nuclei data of patient biopsies. Neuro-endocrine tumor metastases in the liver. 8 total samples. 4 patients x 2 biopsies per patient, pre- and post-treatment. Both biopsies of the same patient were obtained from approximately the same site. Sequencing was performed using 10x with On-Chip Multiplexing. 2 sequencing runs, 4 samples per run, both samples of the same patient in the same run. Targeting ~5k cells/sample.

The sequencing results were... underwhelming. Patient 1 had low number of cells in both samples. Patient 2 looked good. Patient 3 had low number in the pre-treatment sample, but decent in the post-treatment one. Patient 4 had almost nothing. Looking back at the biopsies of this patient, histology showed that the first one was likely necrotic, and the second one was too small.

sample raw #droplets CellRanger multi CellBender (manual) simple QC scDblFinder singlets
p1_pre 137,790 530 963 721 676
p1_post 146,731 898 1,710 1,247 1,169
p2_pre 328,168 3,157 4,527 3,141 3,024
p2_post 466,445 5,684 9,769 6,526 6,056
p3_pre 222,905 1,087 1,147 747 665
p3_post 719,205 10,599 9,790 6,332 5,492
p4_pre 61,625 44,656 38 4 0
p4_post 70,032 362 504 154 135

.

I did a bunch of processing on the raw data, trying to identify what/if something went wrong, and to make sure that I am dealing with actual nuclei:

  • check that OCM barcodes were not mixed up: OK
  • genotyping with cellsnp+vireo to make sure there was no mix-up of donors within a sample: OK
  • velocyto for intronic/exonic ratio: looks like nuclei and not cytoplasm
  • %mt RNA: OK, <1% across the board
  • Ambient removal with CellBender, using manually picked "--expected-cells" and "--expected-cells" per sample.
  • Rough initial filtering, keeping only cells with % ambient < 50% and 200 < nCount_RNA < 50,000 (after ambient removal).
  • doublet removal with scDblFinder
  • quick-and-dirty cell type annotation using CloudAzimuth.
  • planning to further filter nCounts_RNA > 1000 in further analysis (not used in the data shown in this post)

This is what the QC metrics look after this processing:

nCount_RNA per sample

percent ambient RNA per sample

As you can see, there are large differences in number of cells and their quality between the different patients/samples.

When looking at the results of Azimuth's annotation, the cell type composition of the samples are wildly different between patients (yet consistent between the 2 samples of each patient). Azimuth's results for patients #1 and #2 match closely what was observed in an initial histology assessment. However, the biopsies of patient #3 looked like mostly tumor in the histology, but Azimuth annotated them as mostly liver tissue.

sample #cells Liver Neuron-like Secretory Immune+blood Other Crude Histology
p1_pre 676 539 9 25 49 54 ~30% tumor, rest liver
p1_post 1169 923 19 25 136 66 ~30% tumor, rest liver
p2_pre 3022 8 1853 657 244 260 90-100% tumor, no liver (some stroma)
p2_post 6043 2 3653 1698 274 416 90-100% tumor, no liver (some stroma)
p3_pre 665 566 10 33 8 48 80% tumor, rest stroma
p3_post 5492 5003 4 222 91 172 80% tumor, rest liver
p4_pre 0 - - - - - Looks like tumor, but mostly dead?
p4_post 135 7 0 8 89 31 Very small biopsy, almost no tissue

.

I've been reading about sample integration. My original intent was to combine all samples from all patients together, to combine the tumor/healthy liver tissue data from all samples to improve clustering and cell type annotation. However, seeing the large differences in number of cells per sample and cell quality (in patient #1 vs #2-3), made me pause.

What should be the correct approach here?

I've tried using IntegrateData combining patient #1 & 2 samples. However, when re-running Azimuth on the integrated data, the cells from patient 1 were re-labelled from hepatocytes to neuron-like. I highly suspect that this is a consequence of IntegrateData (which actually transforms the data matrix) forcing patient 1's cells to "look like" patient 2's, filling in the gaps, and making them resemble the most dominant cell types in the sample. I have previously observed something similar in another analysis, where SCTransform added "fake counts" of the most dominant cell type (muscle) to a cluster of immune cells with naturally low counts, skewing the results.

From what I understand, integrating using IntegrateLayers should not cause such issues, as it performs integration only on the dimensionality reductions but not on the actual data. However... would these results still be influenced by the most dominant cell type / sample with the most cells? And what should the best processing be? Something like this?

  • Merge all samples into a single object,
  • split by sample
  • standard processing ( NormalizeData + FindVariableFeatures + ScaleData + RunPCA + FindNeighbors + FindClusters + RunUMAP )
  • Use SCTransform on the independent layers (regressing by S.score, G2M.score, and sample? )
  • IntegrateLayers
  • clustering and normal downstream analysis from there

Or should better I run the analysis separately per patient, integrating only the 2 samples of each patient? Would integration even be necessary if both were sequenced in the same run? Should I use IntegrateLayers or IntegrateData? Does the choice of method affect downstream analyses, specially FindMarkers?

The ultimate goal of the analysis is to find differences in cell type proportions between pre- and post-treatment within each patient, as well as changes in expression within the same cell type driven by treatment. A preliminary check when looking at the (poorly) integrated data of patients 1&2 showed that patient 2's pre- and post-treatment cells clustered separately in UMAP, suggesting shifts in the tumor cell transcriptomes.

umap integrated per sample

umap integrated per cluster

Which processing/pipeline would be best suited for these downstream analyses? Any advice?

Thanks,

Txema

seurat scrnaseq snrnaseq integration

0 answers

No answers yet.

Log in to answer this question.