library( tidyverse )
library(Seurat)Einzelzell-Transkriptomik
Single-cell RNA sequencing (scRNASeq): Für jeden Read wird festgestellt, von welcher Zelle er stammt.
Methoden
Vorbereiting: Die Zellen der Gewebeprobe werden voneinander getrennt (vereinzelt), do dass eine Suspension einzelner Zellen vorliegt.
plattenbasiertes scRNASeq: Mit einem FACS-Gerät (flow cytometry-assisted cell sorting) wird jedes Well einer Mikrotiterplatte mit genau einer Zelle befüllt. Dann wird die reverse Transkription (RT) durchgeführt mit Primern, an die ein “Barcode” angehängt wurde, d.h., die entstehenden cDNA-Fragmente enthalten sowohl einen Teil der Sequenz des Gens wie auch die Barcode-Sequenz, die in jedem Well anders ist.
Mikrofluidik-basiertes scRNASeq (Droplet sequencing, DropSeq): In einem MIkrofluidik-Gerät wird eine Wasser-in-Öl-Emulsion erzeugt, in der jedes (nutzbare) Wassertröfchen ein kleines Silikon-Kügelchen (“bead”) enthält, sowei eine Zelle, und außerdem die für die
Auflösung der Zellmembran benötigten Regenzien. Die nach Lyse der Zellen freigesetzte mRNA bindet an die polyT-Sequenzen an den Bead.

Nach reverser Transkription haben wir Fragmente wie folgt (bzw. deren Komplemente):
[Bead]-BBBBBBBBUUUUUUUUUTTTTTTTTXXXXXXXXXXXXXXXX
- BBBBBBBBB: der Zell-Barcode (BC), der bei allen Molekülen auf einem Bead gleich, aber auf jedem Bbead anders ist
- UUUUUUUUU: der Unique Molecular Identifier (UMI), ein barcode, der zufällig und somit bei jedem Oligo-Molekül anders ist
- TTTTTTT: eine Folge von Ts, gegen die der polyA-Schwanz der mRNA hybridisiert
- XXXXXXXXXXXXX: das 3’-Ende der mRNA (reverse komplementiert)
kombinatorisches Indexing: Eine Idee ähnlich wir DropSeq, aber ohne Droplets: stattdessen wird der Zell-Barcode in der Zelle aufgebaut.
Vergleich Plattenbasiert (“SmartSeq”) vs. DropSeq:
- mehr Zellen mit DropSeq
- mehr Transkripte pro Zelle mit SmartSeq
- nur 3’-Ende mit DropSeq, ganze mRNA mit SmartSeq
Beispieldaten: Count-Matrix
Beispiel 1: 10k PBMCs (peripheral blood mononuclear cells) mit 10x DropSeq
Datensatz von hier
Wir benutzen das Seurat-Paket zur Analyse
Wir laden die Daten
Read10X_h5( "data/10k_PBMC_3p_nextgem_Chromium_X_filtered_feature_bc_matrix.h5" ) -> countMatrixWir erhalten eine Matrix mit Dimension
dim(countMatrix)[1] 36601 11996
36601 Gene und 11996 Barcodes (d.h. Zellen)
Hier die linke obere Ecke:
countMatrix[1:5,1:5]5 x 5 sparse Matrix of class "dgCMatrix"
AAACCCAAGGCCCAAA-1 AAACCCAAGTAATACG-1 AAACCCAAGTCACACT-1
MIR1302-2HG . . .
FAM138A . . .
OR4F5 . . .
AL627309.1 . . .
AL627309.3 . . .
AAACCCACAAAGCGTG-1 AAACCCACAATCGAAA-1
MIR1302-2HG . .
FAM138A . .
OR4F5 . .
AL627309.1 . .
AL627309.3 . .
Die meisten Einträge der Matrix sind Null. Deshalb liegt sie als dünnbesetzte Matrix (engl.: sparse matrix) vor, d.h., es werden die Positionen und Werte aller Nicht-Null-Elemente gespeichert.
Wie viele Reads haben wir pro Zelle?
hist( log10( colSums(countMatrix) ), 30 )
Mode in etwas bei 3.7, also ca. \(10^{3.7}\approx 5000\) Reads für eine typische Zelle.
Wir laden die Daten in ein Seurat-Objekt
CreateSeuratObject( countMatrix ) -> seu
seuAn object of class Seurat
36601 features across 11996 samples within 1 assay
Active assay: RNA (36601 features, 0 variable features)
1 layer present: counts
Wir log-normalisieren die Daten: \(y = log_{10}(k/s+1)\), wobei \(k\) der Read-Count aus der Matrix ist und \(s\) die Spaltensumme.
NormalizeData(seu) -> seuNormalizing layer: counts
Read-Counts für die ersten 50 Gene für die erste Zelle
seu[["RNA"]]$counts[1:50,1]MIR1302-2HG FAM138A OR4F5 AL627309.1 AL627309.3 AL627309.2
0 0 0 0 0 0
AL627309.5 AL627309.4 AP006222.2 AL732372.1 OR4F29 AC114498.1
0 0 0 0 0 0
OR4F16 AL669831.2 LINC01409 FAM87B LINC01128 LINC00115
0 0 0 0 0 0
FAM41C AL645608.6 AL645608.2 AL645608.4 LINC02593 SAMD11
0 0 0 0 0 0
NOC2L KLHL17 PLEKHN1 PERM1 AL645608.7 HES4
1 0 0 0 0 5
ISG15 AL645608.1 AGRN AL645608.5 AL645608.8 RNF223
18 0 0 0 0 0
C1orf159 AL390719.3 LINC01342 AL390719.2 TTLL10-AS1 TTLL10
0 0 0 0 0 0
TNFRSF18 TNFRSF4 SDF4 B3GALT6 C1QTNF12 AL162741.1
0 0 2 0 0 0
UBE2J2 LINC01786
0 0
Log-normlisiert:
seu[["RNA"]]$data[1:50,1]MIR1302-2HG FAM138A OR4F5 AL627309.1 AL627309.3 AL627309.2
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
AL627309.5 AL627309.4 AP006222.2 AL732372.1 OR4F29 AC114498.1
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
OR4F16 AL669831.2 LINC01409 FAM87B LINC01128 LINC00115
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
FAM41C AL645608.6 AL645608.2 AL645608.4 LINC02593 SAMD11
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
NOC2L KLHL17 PLEKHN1 PERM1 AL645608.7 HES4
0.6007685 0.0000000 0.0000000 0.0000000 0.0000000 1.6326853
ISG15 AL645608.1 AGRN AL645608.5 AL645608.8 RNF223
2.7614870 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
C1orf159 AL390719.3 LINC01342 AL390719.2 TTLL10-AS1 TTLL10
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
TNFRSF18 TNFRSF4 SDF4 B3GALT6 C1QTNF12 AL162741.1
0.0000000 0.0000000 0.9734418 0.0000000 0.0000000 0.0000000
UBE2J2 LINC01786
0.0000000 0.0000000
Dimensionsreduktion mit RCA
Im Moment wird jede Zelle durch einen Vektor beschrieben, der aus den log-normlisierten Expressionsstärken aller Gene beschrieben wird. Dier Vektor sind sehr lang (36601 Gene), haben aber so viele Nullen, dass es schwer ist, zwei Vektoren zu vergleichen.
Wir möchten jede Zelle durch eine kürzeren Vektor veschreiben, der nur z.B. 30 statt 36000 ELemente enthält.
Dazu wählen wir zunächst die 2000 Gene aus, die am stärksten von Zelle zu Zelle variieren (“find variable features”). Dann führen wir eine Hauptkomponenten-Analyse (Principal Component Analysis, PCA) durch:
seu %>%
FindVariableFeatures() %>%
ScaleData() %>%
RunPCA() -> seuFinding variable features for layer counts
Centering and scaling data matrix
PC_ 1
Positive: FGL2, FCN1, LYZ, CTSS, MNDA, CST3, TYMP, CYBB, IFI30, SERPINA1
PSAP, NCF2, LST1, AIF1, TYROBP, S100A9, CSTA, MPEG1, TNFSF13B, TMEM176B
DUSP6, CD68, FOS, MS4A6A, GRN, DUSP1, IGSF6, AC020656.1, S100A8, SPI1
Negative: LTB, CD3E, IL32, CD3D, TRAC, CD3G, TRBC2, BCL11B, ETS1, IL7R
ARL4C, CD2, LIME1, TCF7, CD7, LINC00861, PRKCQ-AS1, CD27, CCR7, FCMR
CD247, TRBC1, GZMM, LEF1, IKZF3, ISG20, BCL2, SYNE2, MAL, CTSW
PC_ 2
Positive: MS4A1, CD79A, IGHM, BANK1, CD79B, LINC00926, RALGPS2, NIBAN3, TNFRSF13C, IGHD
SPIB, BCL11A, HLA-DQA1, IGKC, CD22, AFF3, LINC02397, PAX5, FCRL1, VPREB3
BLK, FCER2, CD74, TCF4, COBLL1, BLNK, HLA-DRA, HLA-DRB1, SWAP70, GNG7
Negative: IL32, CD3E, CD3D, CD3G, GZMM, CD2, CD7, ANXA1, CD247, CTSW
BCL11B, TRAC, GZMA, S100A4, LINC00861, NKG7, CST7, IL7R, PRF1, KLRK1
GNLY, CCL5, ARL4C, TRBC1, KLRD1, SAMD3, S100A10, PRKCQ-AS1, ID2, FGFBP2
PC_ 3
Positive: CCR7, LEF1, IL7R, TCF7, MAL, TRABD2A, LTB, CD27, CAMK4, OXNAD1
PRKCQ-AS1, CHRM3-AS2, S100A12, FHIT, LRRN3, VCAN, S100A8, TRAC, NELL2, PASK
BCL11B, CYP1B1, RGCC, PADI4, CD14, ADTRP, S100A9, RBP7, NCF1, TRAT1
Negative: GZMB, NKG7, GNLY, CST7, KLRD1, CLIC3, PRF1, GZMA, FGFBP2, HOPX
CCL4, KLRF1, SPON2, GZMH, C12orf75, CCL5, ADGRG1, FCGR3A, PTGDR, CD160
CTSW, CTSC, TBX21, XCL2, MATK, IL2RB, PLEK, TRDC, LAIR2, S1PR5
PC_ 4
Positive: LILRA4, CLEC4C, SERPINF1, LRRC26, TPM2, SCT, DNASE1L3, MAP1A, EPHB1, LINC00996
LAMP5, ITM2C, TNFRSF21, PTCRA, CIB2, PACSIN1, SMPD3, SCAMP5, PHEX, SCN9A
PLD4, DERL3, PLEKHD1, ZFAT, IL3RA, SLC35F3, GAS6, AC097375.1, NRP1, SMIM5
Negative: FCGR3A, CD79B, MS4A1, CD79A, GNLY, LINC00926, KLRD1, NKG7, MTSS1, IFITM2
PRF1, CST7, FGFBP2, CCL4, IGHD, BANK1, TNFRSF13C, HOPX, GZMA, FCER2
KLRF1, CD22, FCRL3, PAX5, FCRL1, SWAP70, ABI3, CX3CR1, RALGPS2, VPREB3
PC_ 5
Positive: S100A12, ITGAM, VCAN, SLC2A3, CYP1B1, PADI4, S100A8, CES1, MEGF9, MGST1
VNN2, QPCT, CTSD, MCEMP1, GNLY, CD14, RBP7, THBS1, KLRD1, CR1
AC020916.1, ANXA1, CST7, BST1, PRF1, MARC1, CKAP4, ALOX5AP, PLBD1, NKG7
Negative: CDKN1C, HES4, CTSL, TCF7L2, BATF3, CSF1R, MS4A7, CKB, SIGLEC10, CASP5
RRAS, FCGR3A, AC104809.2, IFITM3, MS4A4A, CALML4, NAP1L1, MTSS1, NEURL1, SMIM25
AC064805.1, CAMK1, GPBAR1, HMOX1, ZNF703, RNASET2, HCAR3, RHOC, FAM110A, ABI3
Nun wird jede Zelle durch eine Vektor aus 50 “Hauptkomponenten” (principal componentes, PCs) beschrieben.
Hier die Hauptkomponenten für die ersten 5 Zellen
Embeddings(seu)[1:5,] PC_1 PC_2 PC_3 PC_4 PC_5
AAACCCAAGGCCCAAA-1 13.333667 0.6887640 -6.8241262 -6.1557713 -19.192517
AAACCCAAGTAATACG-1 22.106623 -1.9669763 2.8764080 0.2337607 3.967314
AAACCCAAGTCACACT-1 17.113283 0.4066277 -0.7054166 -2.7075176 -5.071843
AAACCCACAAAGCGTG-1 -12.620173 -2.2905629 4.7264484 2.0840857 -1.583778
AAACCCACAATCGAAA-1 -8.075286 17.8581951 0.6701939 -4.1210698 1.688372
PC_6 PC_7 PC_8 PC_9 PC_10
AAACCCAAGGCCCAAA-1 -1.44548133 -9.7220549 6.2006959 7.4638648 0.09322426
AAACCCAAGTAATACG-1 -0.42527286 0.5735744 -1.0676769 1.7110097 0.27427697
AAACCCAAGTCACACT-1 1.07502687 0.6702182 -0.5908201 -1.7997471 -0.25431667
AAACCCACAAAGCGTG-1 -0.49690986 -0.8836190 -0.7103660 0.1388841 -0.03684577
AAACCCACAATCGAAA-1 0.01521386 1.5687443 1.6551123 1.0569745 0.95589993
PC_11 PC_12 PC_13 PC_14 PC_15
AAACCCAAGGCCCAAA-1 -0.89662775 0.2843766 -6.9082209 1.1619452 -2.2216770
AAACCCAAGTAATACG-1 0.24617370 0.3505484 -0.7610012 0.8336444 -0.1030862
AAACCCAAGTCACACT-1 -0.01092525 0.5199119 2.5808158 -1.9187705 1.3302491
AAACCCACAAAGCGTG-1 -0.31054151 -0.9193565 -0.5116509 0.7430534 0.6835016
AAACCCACAATCGAAA-1 -5.25515908 2.2166137 1.0614865 1.1491847 -0.8503721
PC_16 PC_17 PC_18 PC_19 PC_20
AAACCCAAGGCCCAAA-1 -0.2851324 -0.3859737 -0.92969246 -4.3300443 3.17982027
AAACCCAAGTAATACG-1 -0.4510098 -0.6807979 0.94503308 -2.5389726 -0.06699161
AAACCCAAGTCACACT-1 1.5110829 -1.2445542 1.15586981 2.0539850 -2.16768956
AAACCCACAAAGCGTG-1 -0.4430623 0.1212651 0.08401011 1.1223363 0.44762383
AAACCCACAATCGAAA-1 0.7242244 1.2081332 1.55460028 -0.9256326 -0.87107517
PC_21 PC_22 PC_23 PC_24 PC_25
AAACCCAAGGCCCAAA-1 2.0864649 -0.08866786 -0.5030457 -2.7876130 -1.43931380
AAACCCAAGTAATACG-1 1.6248379 1.84567455 0.1927620 1.0410335 0.22440993
AAACCCAAGTCACACT-1 -1.2056682 0.46289809 -1.5203120 0.1438392 -0.07490494
AAACCCACAAAGCGTG-1 3.1444111 -0.94701061 0.9565003 -0.2850981 0.40432505
AAACCCACAATCGAAA-1 0.1046318 0.07247681 -1.3386720 4.6787516 -0.59170277
PC_26 PC_27 PC_28 PC_29 PC_30
AAACCCAAGGCCCAAA-1 -1.9051996 -0.01635051 -0.4372925 0.7152045 4.1163883
AAACCCAAGTAATACG-1 1.3880045 -0.36936680 1.3180657 -0.9386642 1.5016504
AAACCCAAGTCACACT-1 1.7412427 -0.24129965 -1.5971662 0.7800588 -0.2053095
AAACCCACAAAGCGTG-1 -0.7467070 0.79235529 -0.0915083 0.1206267 -0.7306179
AAACCCACAATCGAAA-1 -0.9078366 -2.39741868 0.9732627 -0.6328528 1.9039052
PC_31 PC_32 PC_33 PC_34 PC_35
AAACCCAAGGCCCAAA-1 1.35557441 -2.87072030 3.1824700 -0.06741891 1.6420126
AAACCCAAGTAATACG-1 0.03943744 -0.01163864 -0.4206037 1.45589188 0.4581641
AAACCCAAGTCACACT-1 -0.51479320 0.27652473 1.6424688 -0.37110125 -1.7853015
AAACCCACAAAGCGTG-1 1.11268332 0.02387450 -0.8205700 -0.47867363 0.3566603
AAACCCACAATCGAAA-1 1.22087131 0.54054868 1.3188991 -1.56281067 3.5924472
PC_36 PC_37 PC_38 PC_39 PC_40
AAACCCAAGGCCCAAA-1 0.78907102 0.1910370 -0.3008939 -2.6408815 -1.841000
AAACCCAAGTAATACG-1 -0.04175633 0.5256721 0.9364014 1.6124897 -2.036638
AAACCCAAGTCACACT-1 -0.05764889 1.2558578 0.9880119 -1.1738121 1.668026
AAACCCACAAAGCGTG-1 -0.70601455 -0.5323122 0.6406919 1.0125737 -1.263940
AAACCCACAATCGAAA-1 -0.43053051 0.3272745 0.5660496 -0.7666055 -1.356150
PC_41 PC_42 PC_43 PC_44 PC_45
AAACCCAAGGCCCAAA-1 0.2708859 1.112924 1.3349518 -3.3574554 -0.1115407
AAACCCAAGTAATACG-1 -2.6188589 -1.579901 -1.2471997 0.4060338 -0.3302664
AAACCCAAGTCACACT-1 -1.3023826 1.144815 0.3243974 -1.0314793 -0.1422630
AAACCCACAAAGCGTG-1 0.1388873 0.920093 -1.6701694 -0.5221689 0.1395150
AAACCCACAATCGAAA-1 2.6748818 5.502998 -0.7175044 -0.7196149 0.4255171
PC_46 PC_47 PC_48 PC_49 PC_50
AAACCCAAGGCCCAAA-1 0.6639776 -1.11762518 1.20384250 0.5319666 0.7276866
AAACCCAAGTAATACG-1 -0.5530304 -2.43594768 -0.76372103 -2.2582464 -1.9954940
AAACCCAAGTCACACT-1 -0.3825717 0.06979272 -0.09702089 -1.3420377 -0.2648028
AAACCCACAAAGCGTG-1 -2.0801477 0.70534657 -0.53409965 0.6883354 0.7484119
AAACCCACAATCGAAA-1 2.3621334 0.45073405 -0.44430842 0.1823747 1.5754138
Jede Hauptkomponente ist dabei eine Linearkombination von Genexpressionen. Für die erste Hauptkomponente (PC1) z.B. muss man die Expressionsstärke der Gene mit folgenden “Gewichten” (“Loadings”) multiplizieren und dann aufaddieren:
head( Loadings(seu)[,"PC_1"], 50 ) PTGDS PPBP JCHAIN IGKC CXCL10
-3.356732e-03 1.673189e-03 -6.476771e-03 -1.153281e-02 2.026100e-02
GP1BB PF4 MZB1 LYPD2 CAVIN2
7.398277e-04 1.369148e-03 -6.496077e-03 5.425450e-03 1.005448e-03
GZMB CDKN1C TUBB1 GNLY C1QB
-1.140492e-02 1.500010e-02 8.354699e-04 -1.523177e-02 2.374927e-03
IGLC3 TXNDC5 FCER1A GNG11 ITM2C
-6.500894e-03 3.413985e-03 3.758194e-03 4.313120e-04 -9.256158e-03
C1QA IGHA1 LILRA4 IGHM SCT
6.560258e-03 -4.901053e-03 -2.269159e-04 -1.268596e-02 -2.408763e-04
CD1C NRGN IGLC2 GP9 FCGR3A
4.145321e-03 2.809860e-02 -7.418785e-03 3.504577e-04 1.307594e-02
MKI67 IGHG1 CCL4 IFI27 TCF4
-1.337934e-04 -4.936385e-03 -1.398549e-02 1.707906e-03 6.693068e-03
NKG7 TYMS PCLAF TNFRSF17 CLEC10A
-1.577248e-02 -1.393142e-03 -7.090629e-04 -4.724755e-03 1.773358e-02
CXCL9 TPM2 S100A9 HLA-DQA1 TCL1A
3.335961e-03 -2.295204e-03 6.267883e-02 1.663709e-02 -9.132161e-03
IGHG3 CLEC4C CCL8 MS4A1 S100A8
-4.870436e-03 -8.937875e-05 3.770423e-03 -1.346317e-02 5.981707e-02
(usw., mit einem Gewicht für jedes Gen)
Die Loadings werden durch den PCA-Algorithmus so gewählt, dass die PCs zueinander orthogonal sind und möglichst viel Varianz abdecken.
Zweite Dimensionsreduktion mit UMAP
Nun können wir für je zwei Zellen einen “Abstand” (distance) berechnen, der um so kleiner ist, je ähnlicher die Expressionsprofile der beiden Zellen sind, indem wir die Differenzen der PC-Scores pythagoräisch aufaddieren.
Der UMAP-Algorithmus versucht nun eine Darstellung der Zellen in 2D zu finden, mit einem Punkt pro Zelle, so dass ähnliche Zellen nahe beieinander dargestellt werden:
RunUMAP( seu, dims=1:50 ) -> seuWarning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric
To use Python UMAP via reticulate, set umap.method to 'umap-learn' and metric to 'correlation'
This message will be shown once per session
16:25:30 UMAP embedding parameters a = 0.9922 b = 1.112
16:25:30 Read 11996 rows and found 50 numeric columns
16:25:30 Using Annoy for neighbor search, n_neighbors = 30
16:25:30 Building Annoy index with metric = cosine, n_trees = 50
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
16:25:32 Writing NN index file to temp file /tmp/RtmplSk6Iu/file1450e51ff0907
16:25:32 Searching Annoy index using 1 thread, search_k = 3000
16:25:36 Annoy recall = 100%
16:25:37 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
16:25:38 Initializing from normalized Laplacian + noise (using RSpectra)
16:25:38 Commencing optimization for 200 epochs, with 536074 positive edges
16:25:44 Optimization finished
Hier die Darstellung
UMAPPlot(seu) + coord_equal()
Mit SleepWalk können wir sehen, wie gut diese Darstellung die Ähnlichkeit gemäß PCA widerspiegelt:
sleepwalk::sleepwalk( Embeddings(seu,"umap"), Embeddings(seu,"pca"), saveToFile = "data/pbmc10k_sleepwalk.html" )Estimating 'maxdist' for feature matrix 1
Click here for the HTML page produced by Sleepwalk.
Clustering
Wir erkennen, dass es Gruppen von Zellen (“Cluster”) gibt, die sich stark ähneln.
Wie weisen Seurat an, die Zellen in solche CLuster einzuteilen, unter Verwendung des Louvain-Algorithmus. Dieser Algorithmus arbeitet auf dem sog. Nachbarschafts-Graphen, bei dem jede Zelle mit ihren 20 nächsten Nachbarn verbunden wird. Das Clustering wir dann so durchgeführt, dass möglich viele der Nachbarschafts-Verbindungen innerhalb eines Clusters bleiben.
seu %>%
FindNeighbors() %>%
FindClusters() -> seuComputing nearest neighbor graph
Computing SNN
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 11996
Number of edges: 398094
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.8822
Number of communities: 18
Elapsed time: 2 seconds
Hier das Ergebnis
UMAPPlot( seu, label=TRUE ) + coord_equal()
Zelltypen
In einer PBMC-Probe erwarten wir B-Zellen, T-Zellen, NK-Zellen und Monozyten.
T-Zellen erkennt man z.B. am Marker-Gen CD3E (Epsilon-Kette des T-Zell_Rezeptors).
Wir färben die Zellen im UMAP-Plot nach Expressionsstärke von CD3E ein:
FeaturePlot( seu, "CD3E" ) + coord_equal()
Die T-Zellen erstrecken sich also über Cluster 0, 3, 7, 8, 13.
Mit ein paar weiteren Markern könne wir auch die anderen Zellen zuordnen:
- MS4A1 kodiert für CD20, ein B-Zell-Marker
- LYZ kodiert für Lysozym (= Muramidase, eine antimikrobielles Enzym, dass Teil des angeborenen Immunsystems (innate immunity) ist und von Monozyten sekretiert wird
- NGK7 (natural killer cell grnaule protein 7) wird von NK-Zellen exprimiert
- CD8 (bestehend aus CD8A und CD8B) ist der Korezeptor, an dem man zytotoxische T-Zellen (CD8-T-Zellen) erkennt
- IL7R (interleukin-7 receptor) hingegen findet sich nur auf Helfer-T-Zellen (CD4-T-Zellen)
FeaturePlot( seu, c( "MS4A1", "LYZ", "NKG7", "CD8B", "IL7R" ) ) 
Wenn man also weiß, welche Zelltypen zu erwarten sind, kann man nach Markern für diese einfärben, um die Cluster zu finden, die den Zelltypen entsprechen.
Wenn man bei einem Cluster vermutet, dass es ein unbekannter oder unerwarteter Zelltyp sein könnte, kann man Seurat auch auffordern, Gene auszugeben, die in den Zellen dieses Clusters deutlich höher als in den anderen Clustern exprimiert werden, und dann anhand der Genliste versuchen, den Zell-Typ zu erkennen.
Anwendung von scRNA-Seq
Fragen, die man mit scRNA-Seq beantworten kann:
Welche Zelltypen liegen in meiner Probe vor?
Unterscheidet sich die Abundanz der Zelltypen zwischen Proben?
Wie reagiert die Probe auf einen Stimulus? Welche Gene ändern ihre Expression und in welchen Zelltypen geschieht dies?
Sind alle Zellen eines Typs gleich oder gibt es Untergruppen; oder Gene, die innerhalb eines Typs variieren?
Welche Zell-Zustände sehen wir und wie häufig sind sie?
Reagieren alle Zellen eines Typs auf einen Stimulus oder nur manche?
Besonders in der ENtwicklungsbiologie sind Zeitreihen nützlich:
Wie ändert sich die Expression aller Gene entlang der Entwicklung von Stammzelle zu ausgereifter differenzierter Zelle?
Wann finden Verzweigungen (“cell fate decisions”) statt und was steht an ihrem Anfang?
usw.
Beispiel für eine komplexe EvoDevo-Studie: https://www.nature.com/articles/s41586-023-06884-x
usw.
Material zur Analyse von Trajektorien