Load SCI 0dpi expression data

data=read.table("/Users/niehu/Documents/IGDB/lab_works/SMY/data/0dpi.genes_tpm.txt",header = T,row.names=1,stringsAsFactors=FALSE)
head(data[,c(1:6)])
##                    X0dpi.P0.A11 X0dpi.P0.A12 X0dpi.P0.A2 X0dpi.P0.A3
## ENSMUSG00000064371       1.0000       0.0000      0.0000       0.000
## ENSMUSG00000064368     647.8740     828.5570    712.7080     385.233
## ENSMUSG00000064365       0.0000       0.0000      0.0000       1.000
## ENSMUSG00000064363    8573.0000    7313.4600   9738.9700    4992.000
## ENSMUSG00000064361       0.0000       2.0000      0.0000       0.000
## ENSMUSG00000064360      54.4526      47.5691     78.6259     130.788
##                    X0dpi.P0.A7 X0dpi.P0.A9
## ENSMUSG00000064371 0.00000e+00       0.000
## ENSMUSG00000064368 5.00549e+02     934.134
## ENSMUSG00000064365 0.00000e+00       2.000
## ENSMUSG00000064363 5.24649e+03   10336.000
## ENSMUSG00000064361 0.00000e+00       8.000
## ENSMUSG00000064360 1.03920e-08     173.538

Preprocess

#use all pc gene
all_pc_gene=read.table("/Users/niehu/Documents/IGDB/lab_works/SMY/genes/mm10.all_pc.gene_id2gene_name.txt", header=FALSE, row.names=1, stringsAsFactors=FALSE)
colnames(all_pc_gene)=c("GeneName")
all_pc_gene=all_pc_gene[!duplicated(all_pc_gene$GeneName),,drop=FALSE]
pos = rownames(data) %in% rownames(all_pc_gene)
data=data[pos,]
rownames(data)= all_pc_gene[rownames(data),1]
data=data[,data["Nes",] >10]
head(data[,c(1:10)])
##         X0dpi.P0.A2 X0dpi.P0.B8 X0dpi.P0.B9 X0dpi.P0.C11 X0dpi.P0.C4
## mt-Nd6     712.7080     553.829     924.844     1012.370    794.0990
## mt-Nd4    9738.9700    3897.930   12857.200     8432.000   7849.8600
## mt-Nd3      78.6259     118.362     201.452      266.859     17.5377
## mt-Co3    4708.0000    3427.060    9657.460     3658.390   8860.1700
## mt-Atp8   2139.4300    1270.890    3218.900     2151.670   1998.0000
## mt-Co2    2822.1700    2588.940    3547.280      989.302   1013.2300
##         X0dpi.P0.F3 X0dpi.P0.F4 X0dpi.P0.F5 X0dpi.P0.F7 X0dpi.P0.F9
## mt-Nd6      563.855     730.344     290.851    443.5580    246.1650
## mt-Nd4     8288.080    7916.270    5947.040   5544.0200   5474.8800
## mt-Nd3      261.026     211.954       0.000     37.9959     29.7024
## mt-Co3     9319.630   10388.000    3534.500   3513.0000   4685.5100
## mt-Atp8    2406.880    1537.750     903.896   1184.9100   1536.0000
## mt-Co2     2632.830    2831.790     740.061   1993.9100    754.4320
sample_name = colnames(data)
colnames(data) = 1:length(colnames(data))
name = colnames(data)
mapping =cbind(sample_name, name)
mapping
##       sample_name    name
##  [1,] "X0dpi.P0.A2"  "1" 
##  [2,] "X0dpi.P0.B8"  "2" 
##  [3,] "X0dpi.P0.B9"  "3" 
##  [4,] "X0dpi.P0.C11" "4" 
##  [5,] "X0dpi.P0.C4"  "5" 
##  [6,] "X0dpi.P0.F3"  "6" 
##  [7,] "X0dpi.P0.F4"  "7" 
##  [8,] "X0dpi.P0.F5"  "8" 
##  [9,] "X0dpi.P0.F7"  "9" 
## [10,] "X0dpi.P0.F9"  "10"
## [11,] "X0dpi.P0.G5"  "11"
## [12,] "X0dpi.P0.G9"  "12"
## [13,] "X0dpi.P1.A1"  "13"
## [14,] "X0dpi.P1.A3"  "14"
## [15,] "X0dpi.P1.A6"  "15"
## [16,] "X0dpi.P1.A8"  "16"
## [17,] "X0dpi.P1.B10" "17"
## [18,] "X0dpi.P1.B11" "18"
## [19,] "X0dpi.P1.B4"  "19"
## [20,] "X0dpi.P1.B5"  "20"
## [21,] "X0dpi.P1.C11" "21"
## [22,] "X0dpi.P1.C1"  "22"
## [23,] "X0dpi.P1.C3"  "23"
## [24,] "X0dpi.P1.C4"  "24"
## [25,] "X0dpi.P1.C6"  "25"
## [26,] "X0dpi.P1.D12" "26"
## [27,] "X0dpi.P1.D6"  "27"
## [28,] "X0dpi.P1.D8"  "28"
## [29,] "X0dpi.P1.E12" "29"
## [30,] "X0dpi.P1.E2"  "30"
## [31,] "X0dpi.P1.E5"  "31"
## [32,] "X0dpi.P1.E8"  "32"
## [33,] "X0dpi.P1.E9"  "33"
## [34,] "X0dpi.P1.F11" "34"
## [35,] "X0dpi.P1.F12" "35"
## [36,] "X0dpi.P1.F1"  "36"
## [37,] "X0dpi.P1.F3"  "37"
## [38,] "X0dpi.P1.F6"  "38"
## [39,] "X0dpi.P1.G10" "39"
## [40,] "X0dpi.P1.G3"  "40"
## [41,] "X0dpi.P1.G9"  "41"
## [42,] "X0dpi.P1.H11" "42"
## [43,] "X0dpi.P1.H12" "43"
## [44,] "X0dpi.P1.H2"  "44"
## [45,] "X0dpi.P1.H3"  "45"
## [46,] "X0dpi.P1.H6"  "46"

Plot expression

sub = data[,c(1:6)]
summary(sub)
##        1                  2                  3           
##  Min.   :    0.00   Min.   :    0.00   Min.   :    0.00  
##  1st Qu.:    0.00   1st Qu.:    0.00   1st Qu.:    0.00  
##  Median :    0.00   Median :    0.00   Median :    0.00  
##  Mean   :   54.38   Mean   :   32.33   Mean   :   62.16  
##  3rd Qu.:    0.00   3rd Qu.:    0.00   3rd Qu.:    0.00  
##  Max.   :22625.60   Max.   :15010.10   Max.   :36232.40  
##        4                  5                  6           
##  Min.   :    0.00   Min.   :    0.00   Min.   :    0.00  
##  1st Qu.:    0.00   1st Qu.:    0.00   1st Qu.:    0.00  
##  Median :    0.00   Median :    0.00   Median :    0.00  
##  Mean   :   29.67   Mean   :   36.72   Mean   :   35.09  
##  3rd Qu.:    0.00   3rd Qu.:    0.00   3rd Qu.:    0.00  
##  Max.   :14183.50   Max.   :21192.10   Max.   :14648.00
par(mfrow=c(1,2))
hist(log2(data +1))

par(mfrow=c(1,2))
num_cell = length(colnames(data))
num_cell
## [1] 46
for(index in 1:num_cell){
    sub_index = data[,index]
    sub_index_filter = sub_index[which(sub_index >0)]
    hist(log2(sub_index_filter + 1), main=colnames(data)[index])
}

par(mfrow=c(1,1), cex.axis=0.7,cex.lab=0.7)
boxplot(log2(data + 1), names=c(1:num_cell), las=2)

filter_data = data[rowSums(data) > num_cell, ]
par(mfrow=c(1,1), cex.axis=0.7,cex.lab=0.7)
boxplot(log2(filter_data + 1), names=c(1:num_cell), las=2)

Create Seurat object

N0dpi<-CreateSeuratObject(raw.data = data, min.cells=2, min.genes=1000,project="SCI-0dpi")

QC and selecting cells for further analysis

mito.genes <- grep(pattern = "^mt-", x = rownames(x = N0dpi@data), value = TRUE)
percent.mito <- Matrix::colSums(N0dpi@raw.data[mito.genes, ])/Matrix::colSums(N0dpi@raw.data)

#add metadatal
N0dpi <- AddMetaData(object = N0dpi, metadata = percent.mito, col.name = "percent.mito")
VlnPlot(object = N0dpi,features.plot = c("nGene","percent.mito"),nCol=2)

##create gene plot
GenePlot(object = N0dpi, gene1 = "nGene", gene2 = "percent.mito")

#filter cells by gene numbers and mito percentage
N0dpi=FilterCells(object =N0dpi,subset.names = c("nGene","percent.mito"), low.thresholds = c(2500,0.02),high.thresholds = c(6000,Inf))

Normalizing the data

N0dpi=NormalizeData(object = N0dpi,normalization.method = "LogNormalize",scale.factor = 10000)

Detection of variable genes across the single cells

N0dpi=FindVariableGenes(object = N0dpi,mean.function = ExpMean,dispersion.function = LogVMR,  x.low.cutoff = 0.25, y.cutoff = 0.5)
abline(h=0.5,col="red")
abline(v=0.25,col="red")
abline(v=10,col="red")

length(x = N0dpi@var.genes)
## [1] 1978

Scaling the data and removing unwanted sources of variation

N0dpi=ScaleData(object = N0dpi, vars.to.regress = c("percent.mito"),display.progress=FALSE)

par(mfrow=c(1,1), cex.axis=0.7,cex.lab=0.7)
boxplot(N0dpi@scale.data, las=2)

Perform linear dimensional reduction

N0dpi = RunPCA(object = N0dpi, pc.genes = N0dpi@var.genes)
## [1] "PC1"
##  [1] "Clu"      "Nnat"     "Mlc1"     "Clcn4"    "Gja1"     "Spag6l"  
##  [7] "Cdhr3"    "Cd55"     "Rsph4a"   "Slc14a1"  "mt-Co3"   "Ccdc40"  
## [13] "Lamp2"    "Ift80"    "Tspan15"  "Tcf25"    "Laptm4b"  "Tmx1"    
## [19] "Tmem255a" "Tmem67"   "Lpar1"    "Pdcd4"    "Wdr34"    "Kcnj16"  
## [25] "Lrriq1"   "Dnah5"    "Scamp4"   "Jam3"     "Fip1l1"   "Rab36"   
## [1] ""
##  [1] "Ly6c1"   "Ly6e"    "Flt1"    "Ly6a"    "Slco1a4" "Jcad"    "Rgs5"   
##  [8] "Cxcl12"  "Itm2a"   "Cldn5"   "Spock2"  "Igfbp7"  "Cd34"    "Abcb1a" 
## [15] "Eng"     "Emcn"    "Igf1r"   "Slco1c1" "Cyyr1"   "Vwa1"    "Ptn"    
## [22] "Ptprb"   "Srgn"    "B2m"     "Tmem204" "Tmsb4x"  "Bsg"     "Sptbn1" 
## [29] "Egfl7"   "Tinagl1"
## [1] ""
## [1] ""
## [1] "PC2"
##  [1] "Gria4"   "Ddx28"   "Tenm2"   "Gm42715" "Sp100"   "Rgs7bp"  "Slc45a1"
##  [8] "Car14"   "Bche"    "Fut9"    "Rgs7"    "Adcy5"   "Ckmt1"   "Slc12a5"
## [15] "Tgtp2"   "Mical3"  "Ckap2"   "Utp14b"  "Grk3"    "Mknk2"   "Dcun1d2"
## [22] "Cluh"    "Ntrk3"   "Synj2"   "Acot7"   "Dmwd"    "Dhdh"    "Dlgap1" 
## [29] "Ikbkap"  "Nr2c2"  
## [1] ""
##  [1] "mt-Co3"   "Slc16a4"  "Tmem252"  "Gimap6"   "Tmsb10"   "Slc16a2" 
##  [7] "Clic5"    "Stra6"    "Cav1"     "Mindy1"   "Ehd4"     "Pllp"    
## [13] "Slc35f2"  "Tspan13"  "Cd34"     "Cst3"     "Sh3bgrl3" "Slc9a3r2"
## [19] "Car4"     "Aspscr1"  "Acvrl1"   "Siglech"  "Apoe"     "Lef1"    
## [25] "Tgfbr2"   "Mpzl1"    "Arhgdib"  "Tmem204"  "Sema3c"   "Tsc22d1" 
## [1] ""
## [1] ""
## [1] "PC3"
##  [1] "Tmem44"   "Fgd5"     "Ksr1"     "Rasgrp4"  "Slc35e1"  "Cep135"  
##  [7] "Gad1"     "Zic5"     "Cpeb4"    "Foxf2"    "Pxk"      "Afap1l1" 
## [13] "March2"   "Acad8"    "Rccd1"    "Dync1li1" "Myo1d"    "Rab29"   
## [19] "Tbc1d4"   "Med9"     "Gnb4"     "Pkn2"     "Fam133b"  "Ttll7"   
## [25] "Dock9"    "Btbd6"    "Lrrfip2"  "Zfyve16"  "Ankrd29"  "Camk2n1" 
## [1] ""
##  [1] "Siglech" "Hvcn1"   "Fcer1g"  "C1qb"    "Csf1r"   "Ctss"    "Fcgr3"  
##  [8] "Lcp1"    "Plcb1"   "Klhl6"   "Anxa3"   "C1qc"    "Tyrobp"  "Lyz2"   
## [15] "Itga6"   "Capg"    "Tmem160" "Selplg"  "Tmc7"    "Gucy1a3" "Clec5a" 
## [22] "H2-T24"  "Dock2"   "Tcf7"    "Hcls1"   "Adgre1"  "Tnfsf10" "Dmtn"   
## [29] "Parp9"   "Gvin1"  
## [1] ""
## [1] ""
## [1] "PC4"
##  [1] "Actg1"    "Fzd4"     "Srgn"     "Ipmk"     "Adgrl4"   "Tmem88b" 
##  [7] "Robo4"    "Tinagl1"  "Esam"     "Unc5b"    "Slc22a8"  "Smarcad1"
## [13] "Enpp4"    "Eogt"     "Il17rd"   "Abcc4"    "Nt5c2"    "Hspb1"   
## [19] "Tie1"     "AU021092" "Adarb1"   "St8sia6"  "Cbfa2t3"  "Snai2"   
## [25] "Itpripl2" "Dhcr24"   "Klhl2"    "Abca7"    "Ino80c"   "Git1"    
## [1] ""
##  [1] "Tmem57"   "Aqp11"    "Dusp6"    "Prkcb"    "Gm4070"   "Sox17"   
##  [7] "BC028528" "Gcn1l1"   "Cramp1l"  "Nelfcd"   "Fli1"     "Cfh"     
## [13] "Adgre1"   "H2-T24"   "Ptprg"    "Gucy1a3"  "Dock2"    "Tnfsf10" 
## [19] "Tcf7"     "Hcls1"    "Parp9"    "Afap1l1"  "Zfp931"   "Dmtn"    
## [25] "Cycs"     "Tgfa"     "Unc93b1"  "Slc35e1"  "Rasgrp4"  "Ksr1"    
## [1] ""
## [1] ""
## [1] "PC5"
##  [1] "She"       "Iqgap1"    "S100a16"   "Cyyr1"     "Ppfibp1"  
##  [6] "Spryd3"    "Ifit3"     "Dusp1"     "Stk38"     "Ifi27"    
## [11] "Car4"      "Esam"      "Nt5c2"     "Itga1"     "Cpt1a"    
## [16] "Nfkbia"    "Apold1"    "Slc38a3"   "Adgrl4"    "Itih5"    
## [21] "Prex2"     "Anxa1"     "Cttnbp2nl" "Mfsd2b"    "Rflnb"    
## [26] "Pml"       "Ttc7b"     "Rab27b"    "Clic5"     "Fzd4"     
## [1] ""
##  [1] "Tm6sf2"   "Golm1"    "Lama4"    "Casp12"   "Amot"     "Etf1"    
##  [7] "Golga3"   "Icam2"    "Usp15"    "Ttc37"    "Lats2"    "Rapgef5" 
## [13] "Nap1l3"   "Tmtc2"    "Plekhm1"  "Inf2"     "Ago4"     "Sema4d"  
## [19] "Smim12"   "P2ry12"   "Tspan17"  "Rapgef1"  "Casp3"    "Dynlt3"  
## [25] "Tgm2"     "Gm10800"  "Mfsd5"    "A4galt"   "Ado"      "AW209491"
## [1] ""
## [1] ""
PrintPCA(object = N0dpi, pcs.print = 1:6, genes.print = 5, use.full = FALSE)
## [1] "PC1"
## [1] "Clu"   "Nnat"  "Mlc1"  "Clcn4" "Gja1" 
## [1] ""
## [1] "Ly6c1"   "Ly6e"    "Flt1"    "Ly6a"    "Slco1a4"
## [1] ""
## [1] ""
## [1] "PC2"
## [1] "Gria4"   "Ddx28"   "Tenm2"   "Gm42715" "Sp100"  
## [1] ""
## [1] "mt-Co3"  "Slc16a4" "Tmem252" "Gimap6"  "Tmsb10" 
## [1] ""
## [1] ""
## [1] "PC3"
## [1] "Tmem44"  "Fgd5"    "Ksr1"    "Rasgrp4" "Slc35e1"
## [1] ""
## [1] "Siglech" "Hvcn1"   "Fcer1g"  "C1qb"    "Csf1r"  
## [1] ""
## [1] ""
## [1] "PC4"
## [1] "Actg1"  "Fzd4"   "Srgn"   "Ipmk"   "Adgrl4"
## [1] ""
## [1] "Tmem57" "Aqp11"  "Dusp6"  "Prkcb"  "Gm4070"
## [1] ""
## [1] ""
## [1] "PC5"
## [1] "She"     "Iqgap1"  "S100a16" "Cyyr1"   "Ppfibp1"
## [1] ""
## [1] "Tm6sf2" "Golm1"  "Lama4"  "Casp12" "Amot"  
## [1] ""
## [1] ""
## [1] "PC6"
## [1] "Fxyd5" "Gnb1"  "Trf"   "Anxa3" "Usp25"
## [1] ""
## [1] "Mfsd2b" "Rab27b" "Anxa1"  "Ythdc2" "Ttc7b" 
## [1] ""
## [1] ""
VizPCA(object = N0dpi, pcs.use = 1:2)

plot(N0dpi@dr$pca@cell.embeddings[ ,c(1,2)]) + text(N0dpi@dr$pca@cell.embeddings[ ,c(1,2)], labels = rownames(N0dpi@dr$pca@cell.embeddings), cex = 0.7)

## integer(0)
#PCAPlot(object = N0dpi, dim.1 = 1, dim.2 = 2)

N0dpi <- ProjectPCA(object = N0dpi, do.print = FALSE)

PCHeatmap(object = N0dpi, pc.use = 1:6, cells.use = 50, do.balanced = TRUE, label.columns = FALSE, use.full = FALSE)

Determine statistically significant principal components

N0dpi <- JackStraw(object = N0dpi, num.replicate = 100, do.print = FALSE)
JackStrawPlot(object = N0dpi, PCs = 1:15)
## Warning: Removed 25429 rows containing missing values (geom_point).

PCElbowPlot(object = N0dpi)

Cluster the cells

N0dpi <- FindClusters(object = N0dpi, reduction.type = "pca", dims.use = 1:4, resolution = 0.6, print.output = 0, save.SNN = TRUE)
PrintFindClustersParams(object = N0dpi)
## Parameters used in latest FindClusters calculation run on: 2018-02-04 14:16:18
## =============================================================================
## Resolution: 0.6
## -----------------------------------------------------------------------------
## Modularity Function    Algorithm         n.start         n.iter
##      1                   1                 100             10
## -----------------------------------------------------------------------------
## Reduction used          k.param          k.scale          prune.SNN
##      pca                 30                25              0.0667
## -----------------------------------------------------------------------------
## Dims used in calculation
## =============================================================================
## 1 2 3 4
#Run Non-linear dimensional reduction (tSNE)
N0dpi <- RunTSNE(object = N0dpi, dims.use = 1:4, do.fast = TRUE, perplexity=2)
TSNEPlot(object = N0dpi)

save(N0dpi, file = "N0dpi.Robj")

plot(N0dpi@dr$tsne@cell.embeddings) +text(N0dpi@dr$tsne@cell.embeddings, labels=rownames(N0dpi@dr$tsne@cell.embeddings), cex=0.7)

## integer(0)

Plot features

#ependymal
VlnPlot(object = N0dpi, nCol=3, size.x.use = 8, size.y.use = 8, size.title.use = 10, features.plot = c("Vim","Gfap","Nes","S100b","Ncam1","Ncam2","Sox2","Sox9"))

VlnPlot(object = N0dpi, nCol=3, size.x.use = 8, size.y.use = 8, size.title.use = 10, features.plot = c("Fabp7","Pax6","Foxj1","Slc1a3","Hes1","Notch1","Egfr","Aldh1l1"))

#neronal
VlnPlot(object = N0dpi, nCol=3, size.x.use = 8, size.y.use = 8, size.title.use = 10, features.plot = c("Dcx","Tubb3","Prom1","Prom2"))

#oligodendrocytes
VlnPlot(object = N0dpi, nCol=3, size.x.use = 8, size.y.use = 8, size.title.use = 10, features.plot = c("Olig1","Olig2","Mbp","Sox10","Cspg4"))