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

library( tidyverse )
library(Seurat)

Wir laden die Daten

Read10X_h5( "data/10k_PBMC_3p_nextgem_Chromium_X_filtered_feature_bc_matrix.h5" ) -> countMatrix

Wir 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

seu
An 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) -> seu
Normalizing 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() -> seu
Finding 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 ) -> seu
Warning: 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() -> seu
Computing 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