章节实例:第10章 单细胞测序数据分析
单细胞测序技术的数据分析实例
(一)输入数据以及数据分析工具
1)输入数据
这里我们模拟了200个单细胞的30000个基因的表达值(以FPKM为单位),数据以矩阵的形式存储为SCS_RNA.csv文件。
2)选用数据分析工具
R软件平台:https://www.r-project.org/
R软件包-DESeq:http://www.bioconductor.org/packages/release/bioc/html/DESeq.html
R软件包–Statmod:https://cran.r-project.org/web/packages/statmod/
(二)数据的读入与归一化
1)数据在R软件中的读入与行名赋值(R控制台输入命令):
## 读入csv数据
$ SCS_Count <- read.csc (“SCS_RNA.csv”, header=T)
## 为数据的行名赋值
$ rownames(SCS_Count) <- SCS_Count[ ,1]
$ SCS_Count <- SCS_Count[ ,2:ncol(SCS_Count)]
## 去除在所有样本中表达值均为0的基因行
$ SCS_Count <- SCS_Count[rowSums(SCS_Count)>0,]
2) 采用DESeq包进行数据的归一化(R控制台输入命令):
## R平台载入DESeq包
$ require(DESeq)
## 利用DESeq包计算数据的library size
$ lib.size <- estimateSizeFactorsForMatrix(SCS_Count)
## 根据上述计算得到的library size对数据进行归一化
$ ed <- t(t(SCS_Count)/lib.size)
(三)根据归一化后的数据鉴定样本中高度差异表达的基因
## 计算方差估计值,变异系数
$ means <- rowMeans(ed)
$ vars <- apply(ed,1,var)
$ cv2 <- vars/means^2
## R平台载入Statmod包
$ require(Statmod)
## 回归曲线的拟合
$ minMeanForFit <- unname(quantile(means[which(cv2 > .3)], .95))
$ useForFit <- means >= minMeanForFit
$ fit <- glmgam.fit(cbind( a0 = 1, a1tilde = 1/means[useForFit]),cv2[useForFit])
$ a0 <- unname(fit$coefficients["a0"])
$ a1 <- unname(fit$coefficients["a1tilde"])
## 根据基因表达情况与拟合曲线的偏离程度对基因进行排序
$ afit <- a1/means+a0
$ varFitRatio <- vars/(afit*means^2)
$ varorder <- order(varFitRatio,decreasing=T)
$ oed <- ed[varorder,]
## 获取差异表达最显著的前100个基因并输出至文件
$rownames(oed)[1:100]
$ write.table(rownames(oed)[1:100], file="Top10_Variable_Genes")