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:
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.
Which processing/pipeline would be best suited for these downstream analyses? Any advice?
Thanks,
Txema
0 answers
No answers yet.
Log in to answer this question.