seurat提取表达矩阵_10X scRNA免疫治疗学习笔记-3-走Seurat标准流程

刘小泽写于19.10.15

笔记目的:根据生信技能树的单细胞转录组课程探索10X Genomics技术相关的分析

课程链接在:http://jm.grazy.cn/index/mulitcourse/detail.html?cid=55

第二单元第7讲:走Seurat标准流程【文章结构总-分-总,结尾有完整的代码,熟悉者前面可以跳过,去看后面8min完成的代码】

前言

前面介绍了自己利用cellranger count的结果进行seurat分析,但是整合数据方面做得还是不如原作者优秀,虽然我们不知道他们是如何处理的,但还是可以继续向下进行,而且这一次将会使用他们合并好的数据

从下载GEO开始

rm(list = ls())

options(warn=-1)

suppressMessages(library(Seurat))

# 读取表达矩阵

start_time

raw_dataPBMC

end_time

end_time - start_time

#Time difference of 1.486653 mins

> dim(raw_dataPBMC)

[1] 17712 12874

# 得到17712基因,12874细胞

复现作者的分群结果

首先对文库大小进行一个归一化

dataPBMC

这个sweep函数很有趣

它可以在apply的统一操作基础上,增加个性化服务(比如对每行/列使用不同的数值进行计算,而且可以指定计算方法)

例如,想要将1-3行分别减去对应的行号1-3,就可以这样:

> test

> test

[,1] [,2] [,3] [,4]

[1,] 1 2 3 4

[2,] 5 6 7 8

[3,] 9 10 11 12

> sweep(test,1,c(1,2,3),"-")

[,1] [,2] [,3] [,4]

[1,] 0 1 2 3

[2,] 3 4 5 6

[3,] 6 7 8 9

第一个位置test这里需要是矩阵或数据框;

第二个位置1和2选一个,原理和apply一样

第三个位置是要操作的向量,如果要对行操作,那么这个向量长度就要和行数一样

第四个位置是计算符,比如:+ - * / < > 等

于是就能懂了这里的操作:先求每个细胞文库的总大小,然后用它的中位数除以总大小得到一个小数,然后按列乘以这个小数就相当于对文库进行了归一化,将文库本身的大小差异置之度外

自定义划分时间点

看看现在的细胞命名,其实我们看完文章是知道作者用了四个时间点的,当然,作者在做实验过程中,也会有自己的一套方法对不同时间点的细胞进行命名。比如作者这里的想法就是:

> head(colnames(dataPBMC))

[1] "AAACCTGAGCGAAGGG.1" "AAACCTGAGGTCATCT.1" "AAACCTGAGTCCTCCT.1"

[4] "AAACCTGCACCAGCAC.1" "AAACCTGGTAACGTTC.1" "AAACCTGGTAAGGATT.1"

> tail(colnames(dataPBMC))

[1] "TTTGTCAAGCGAGAAA.4" "TTTGTCAAGGAATTAC.4" "TTTGTCAAGTGCGTGA.4"

[4] "TTTGTCACACGAGGTA.4" "TTTGTCATCATTGCGA.4" "TTTGTCATCCACG

你可能感兴趣的:(seurat提取表达矩阵)