scRNA---Day1(smartseq2)
2020-04-27 本文已影响0人
茶馆先生的马褂
Bulk思路理解SC
- 读取RNA-seq的 counts 定量结果,表达矩阵需要进行简单的过滤
dat=a[apply(a,1, function(x) sum(x>1) > floor(ncol(a)/50)),]
筛选表达量合格的行(基因), 列(细胞)数不变,筛选出符合条件的基因,即至少在2%的细胞中表达。 - 对 某基因在某样本中的表达量的统计计算
log2(18*1000000/sum(dat[,3])+1)
counts数为18(样本所在表达矩阵为第三列),
dat=log2(edgeR::cpm(dat)+1)
对所有表达数据进行log及归一化处理 - dist函数计算样本直接距离和cor函数计算样本直接相关性,是完全不同的概念。虽然我都没有调它们两个函数的默认的参数。
- dist函数计算行与行(样本)之间的距离
- cor函数计算列与列(样本)之间的相关性
- scale函数默认对每一列(样本)内部归一化
- 计算dist之前,最好是对每一个样本(列)进行scale一下
eg:dist(t(scale(tmp)))
这里默认为euclidean
- 层次聚类
hc=hclust(dist(t(dat)))
确实如教程所说,样本较多非常耗时 - scale函数 去中心化和标准化
x=1:10;plot((x))
scale(x);plot(scale(x))
n[n>2]=2
#矩阵n中归一化后,大于2的项,赋值使之等于2(相当于设置了一个上限)
- PCA
dat.pca <- PCA(dat[,-ncol(dat)], graph = FALSE)
现在dat最后一列值为group_list,需要去掉最后一列赋值给dat.pca才能作图,其中ncol(dat)返回列值,dat[ ,-ncol(dat)]即把最后一列值删除。(就是删除分组信息) - CV^2
mean_per_gene <- apply(exprSet, 1, mean, na.rm = TRUE) #对表达矩阵每行求均值
sd_per_gene <- apply(exprSet, 1, sd, na.rm = TRUE) #对表达矩阵每行求标准差
mad_per_gene <- apply(exprSet, 1, mad, na.rm = TRUE) #对表达矩阵每行求绝对中位差
- with函数(之前学习R语言时见到过,无奈有忘记了)
https://blog.csdn.net/Megajojo/article/details/81626919
with() attatch-dettach()