10X scRNA免疫治疗学习笔记-6-marker基因的表达量可视化

刘小泽写于19.10.18
笔记目的:根据生信技能树的单细胞转录组课程探索10X Genomics技术相关的分析
课程链接在:http://jm.grazy.cn/index/mulitcourse/detail.html?cid=55
第二单元第10讲:marker基因的表达量可视化

前言

这次的任务是模仿原文的:

肿瘤组织的差异分析(Fig. 4a、c)

原文的图

下载数据

之前的分析都是基于第一个病人的PBMC,这次将基于这位病人的tumor:GSE117988_raw.expMatrix_Tumor.csv.gz

start_time <- Sys.time()
raw_dataTumor <- read.csv('./GSE117988_raw.expMatrix_Tumor.csv.gz', header = TRUE, row.names = 1)
end_time <- Sys.time()
end_time - start_time
# Time difference of 47.00589 secs
dim(raw_dataTumor) # 21861基因,7431细胞- already filtered

注意:之前PBMC包含了四个时间点的样本,这里的Tumor包含了2个样本(治疗之前Pre和复发AR)

常规流程

step1: 归一化
dataTumor <- log2(1 + sweep(raw_dataTumor, 2, median(colSums(raw_dataTumor))/colSums(raw_dataTumor), '*'))
> head(colnames(dataTumor))
[1] "AAACCTGAGGATGTAT.1" "AAACCTGCAGCGATCC.1" "AAACCTGGTACGAAAT.1" "AAACGGGAGCTGGAAC.1" "AAACGGGAGGAGTTGC.1"
[6] "AAACGGGAGTTTAGGA.1"
step2: 自定义划分细胞类型
cellTypes <- sapply(colnames(dataTumor), function(x) ExtractField(x, 2, '[.]'))
cellTypes <-ifelse(cellTypes == '1', 'Tumor_Before', 'Tumor_AcquiredResistance')
> table(cellTypes)
cellTypes
Tumor_AcquiredResistance             Tumor_Before 
                    5188                     2243 
step3: 表达矩阵质控
# 第一点:基因在多少细胞表达 
> fivenum(apply(dataTumor,1,function(x) sum(x>0) ))
   VP2 GPRIN2   EML3 ZNF140  RPLP1 
     1      8    103    566   7431
# 第二点:细胞中有多少表达的基因
> fivenum(apply(dataTumor,2,function(x) sum(x>0) ))
GGAACTTAGGAATCGC.1 TACGGTACAAGCCGCT.2 CCTACCAAGCGTGAGT.1 TGAGCCGAGACTAGAT.2 GATCGTAGTCATATGC.2 
             192.0             1059.0             1380.0             1971.5             5888.0 

看到大部分基因在500多个细胞表达,细胞平均能表达1000个基因以上

step4: 创建Seurat对象
tumor <- CreateSeuratObject(dataTumor, 
                           min.cells = 1, min.features = 0, project = '10x_Tumor')
> tumor 
An object of class seurat in project 10x_Tumor 
 21861 genes across 7431 samples.
step5: 添加metadata (nUMI 和 细胞类型)
tumor <- AddMetaData(object = tumor, metadata = apply(raw_dataTumor, 2, sum), col.name = 'nUMI_raw')
tumor <- AddMetaData(object = tumor, metadata = cellTypes, col.name = 'cellTypes')
step6: 聚类标准流程
start_time <- Sys.time()
tumor <- ScaleData(object = tumor, vars.to.regress = c('nUMI_raw'), model.use = 'linear', use.umi = FALSE)
tumor <- FindVariableGenes(object = tumor, mean.function = ExpMean, dispersion.function = LogVMR, x.low.cutoff = 0.0125, x.high.cutoff = 3, y.cutoff = 0.5)
tumor <- RunPCA(object = tumor, pc.genes = tumor@var.genes)
tumor <- RunTSNE(object = tumor, dims.use = 1:10, perplexity = 25)
end_time <- Sys.time()
end_time - start_time
# Time difference of 3.324982 mins
TSNEPlot(tumor, group.by = 'cellTypes', colors.use = c('#EF8A62', '#67A9CF'))
save(tumor,file = 'patient1.Tumor.V2.output.Rdata') # 3.6Gb 大小
分成两群

接着进行基因可视化

rm(list = ls()) 
options(warn=-1) 
start_time <- Sys.time()
load('patient1.Tumor.V2.output.Rdata')
end_time <- Sys.time()
end_time - start_time
# Time difference of 19.83097 secs
取出log归一化后的表达矩阵
count_matrix=tumor@data
> count_matrix[1:4,1:4]
              AAACCTGAGGATGTAT.1 AAACCTGCAGCGATCC.1 AAACCTGGTACGAAAT.1 AAACGGGAGCTGGAAC.1
VP2                    0.0000000                  0                  0                  0
largeTAntigen          0.9670525                  0                  0                  0
smallTAntigen          0.0000000                  0                  0                  0
RP11-34P13.7           0.0000000                  0                  0                  0
取出细胞分群信息
cluster=tumor@meta.data$cellTypes
> table(cluster)
cluster
Tumor_AcquiredResistance             Tumor_Before 
                    5188                     2243
提取基因信息

文章主要探索了治疗前和复发后的HLA-A和HLA-B的变化,于是我们先看看有没有这两个基因

allGenes = row.names(tumor@raw.data)
> allGenes[grep('HLA',allGenes)]
 [1] "HHLA3"    "HLA-F"    "HLA-G"    "HLA-A"    "HLA-E"    "HLA-C"    "HLA-B"    "HLA-DRA"  "HLA-DRB5"
[10] "HLA-DRB1" "HLA-DQA1" "HLA-DQB1" "HLA-DQA2" "HLA-DQB2" "HLA-DOB"  "HLA-DMB"  "HLA-DMA"  "HLA-DOA" 
[19] "HLA-DPA1" "HLA-DPB1"
对HLA-A操作
FeaturePlot(object = tumor, 
            features.plot ='HLA-A', 
            cols.use = c("grey", "blue"), 
            reduction.use = "tsne")
HLA-A表达
看HLA-A表达量
> table(count_matrix['HLA-A',]>0, cluster)
       cluster
        Tumor_AcquiredResistance Tumor_Before
  FALSE                     2282         1057
  TRUE                      2906         1186
对HLA-B操作
FeaturePlot(object = tumor, 
            features.plot ='HLA-B', 
            cols.use = c("grey", "blue"), 
            reduction.use = "tsne")

可以看到治疗前HLA-A基因有1186个表达,1057个不表达;复发后这个基因表达和不表达的数量也相近

HLA-B表达
> table(count_matrix['HLA-B',]>0, cluster)
       cluster
        Tumor_AcquiredResistance Tumor_Before
  FALSE                     4794         1258
  TRUE                       394          985

对HLA-B来讲,不管是治疗前还是复发后,它的表达和不表达差异就很明显。另外从治疗前到复发,这个基因的表达数量的变化更显著

小问题:HLA基因这么多,我们怎么找到全部的具有相似模式的基因?

所谓相似表达模式,就是像HLA-B基因一样,在一个群表达很多,另一个群表达很少,通过卡方检验就能看出区别

>  chisq.test(table(count_matrix['HLA-A',]>0, cluster))

    Pearson's Chi-squared test with Yates' continuity correction

data:  table(count_matrix["HLA-A", ] > 0, cluster)
X-squared = 6.1069, df = 1, p-value = 0.01347

>  chisq.test(table(count_matrix['HLA-B',]>0, cluster))

    Pearson's Chi-squared test with Yates' continuity correction

data:  table(count_matrix["HLA-B", ] > 0, cluster)
X-squared = 1364.4, df = 1, p-value < 2.2e-16

看p值,HLA-B显著性相比HLA-A就非常强,我们就是要挑出和HLA-B类似的,也就是极显著的,设定p值的阈值为0.01

HLA_genes <- allGenes[grep('HLA',allGenes)]
# 将输出结果保存在向量中
HLA_result <- c()
for (gene in HLA_genes) {
  tmp <- chisq.test(table(count_matrix[gene,]>0, cluster))
  if (tmp$p.value<0.01) {
    HLA_result[gene] <- gene
  }
}
> names(HLA_result)
 [1] "HLA-F"    "HLA-E"    "HLA-C"    "HLA-B"    "HLA-DRA"  "HLA-DRB5" "HLA-DRB1" "HLA-DQA1" "HLA-DQB1"
[10] "HLA-DQA2" "HLA-DMB"  "HLA-DMA"  "HLA-DOA"  "HLA-DPA1" "HLA-DPB1"
> length(HLA_result)
[1] 15
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352