成人和婴儿的睾丸单细胞数据分析

文章来源于 The Neonatal and Adult Human Testis Defined at the Single-Cell Level

image.png

已经被我下载到了,原来的网页目录在https://www.sciencedirect.com/science/article/pii/S2211124719300634?via%3Dihub
但是数据在GEO数据库中,因为前面的project的细胞注释中已经讲述过哪里下载数据,此处不在赘述,,,,因为这篇文章中后续使用了拟时间序列分析,所以在此处尝试一下,以后还有的单细胞富集分析,和`蛋白互作网络、受体 - 配体信号相互作用等等还需好好学习s(这些以后可以找点文章再去做做。
此外这篇文章简书进行了很好的描述
https://www.jianshu.com/p/8549dbc6d4e4
对于分化发育等细胞,可以利用monocle包进行时间序列分析。根据基因表达情况推测细胞当前所处的每个分化阶段位置。

1.新建文件夹

首先先把之前/data/jiarf/10X/results/outs/filtered_feature_bc_matrix/Integrate/Rdata/artical_data做好的表达矩阵放到新建的那个文件夹中

image.png

但是突然发现自己直接做时间序列分析就行,,教程先用的
https://www.jianshu.com/p/e79ab1cc0a67
后来发现要用的是10X,所以重新mv一下数
image.png

1、输入文件

image.png

教程是这样的,但是我却报错,Error in load_cellranger_matrix(D2) : could not find function "load_cellranger_matrix",然后去查了这个函数
后来找到一个网页教程也很好https://www.haomeiwen.com/subject/yiigbctx.html

生成cellDataSet对象

Monocle把单细胞表达数据存放在CellDataSet对象里。

# 4. cell trajectory----------------------------------------------------------------------
rm(list=ls())
setwd('/data/jiarf/literiture')
library(monocle3)
library(Matrix)
HSMM_expre_matrix <- Matrix::readMM('./D2/GSM3526584_D2Total_matrix.mtx.gz')
HSMM_simple_sheet <- read.delim('./D2/GSM3526584_D2Total_barcodes.tsv.gz',header = F)
HSMM_gene_annotation <- read.delim('./D2/GSM3526584_D2Total_genes.tsv.gz',header = F)
#creat object of cellDataSet
pd <- new('AnnotatedDataFrame',data=HSMM_simple_sheet)
fd <- new('AnnotatedDataFrame',data=HSMM_gene_annotation)
HSMM <- newCellDataSet(as.matrix(HSMM_expre_matrix),
                       phenoData=pd,
                       featureData=fd,
                       expressionFamily = negbinomial.size())

给你的数据选择一个合适的distribution(分布)

image.png

image.png

2、估计size factor和分散度

HSMM <- estimateSizeFactors(HSMM)
HSMM <- estimateDispersions(HSMM)

3、过滤低质量的细胞

要看多少细胞里表达某个基因,或者看一个细胞里表达多少基因是非常容易的。Monocle提供了一个非常简单的函数来计算:

HSMM <- detectGenes(HSMM,min_expr = 0.1)
print(head(fData(HSMM)))
> HSMM <- detectGenes(HSMM,min_expr = 0.1)
> View(HSMM)
> fData(HSMM)
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘fData’ for signature ‘"CellDataSet"’

但是这个地方报错了,看了一下简书的教程,也只做了前面那一个,所以也就不纠结了
在CellDataSet对象里,存放每个细胞评分的data在phenoData里。评分属性作为一列。 你可以过滤那些不符合你要求的细胞。你也可以用FastQC来过滤细胞。这类软件可以鉴别RNA-seq文库里严重降解的RNA,也可以鉴别包含有核糖体,线粒体或者其他类型RNA污染的文库。

4、细胞分类和细胞计数

image.png

image.png

image.png

无监督:我们可以根据平均表达水平过滤基因,我们还可以另外选取那些在细胞之间不经常变动的基因。这些基因能够对细胞状态提供很有效的信息。

disp_table <- dispersionTable(HSMM)
unsup_clustering_genes <- subset(disp_table, mean_expression >= 0.1) 
HSMM_myo <- setOrderingFilter(HSMM, unsup_clustering_genes$gene_id)
plot_ordering_genes(HSMM)

setOrderingFilter函数会标记基因(在后续clusterCells细胞聚类所用的基因)。 尽管我们也可以提供一个我们自己写的基因列表。plot_ordering_genes功能根据细胞之间的平局表达量来显示一个基因的变异性 。红线显示的是Monocle基于这种关系的预期值。我们把用于细胞分群的基因标记为黑点,其他基因标记为灰点。
可是我的图为啥没有黑点,都是灰的,

image.png

今早突然又做了一次,发现有黑色标记了
image.png

新教程链接https://mp.weixin.qq.com/s?__biz=MzI1Njk4ODE0MQ==&mid=2247488352&idx=2&sn=c08863668cbde5d66fd5d3e592f3aac9&chksm=ea1f15e2dd689cf4c0fb80add7625bc2c60d074475491e8116131ae7368b52fd5f451597d553&mpshare=1&scene=1&srcid=09256G4F36KTNXpUGJVIZ8KE&sharer_sharetime=1600998206903&sharer_shareid=aac470b1ad84e1cbcb4ee2353b49492c&key=80efbdacc232da71ba8c5e67343ce054031a98182bc589275e939669132b557258112b1062758dce3a36eca03979183ab62c973da6e391ced5fb8defacf529da97fce5f9d73782b6d1f4d629bd93fbc02f577cc83c38be9dff3e711f8f27a84f796dbf150dcdbfdb008d19af66a378d3967c3e1486f7d9d342206e92ac04ce9c&ascene=1&uin=MjU0MDE0Njc5&devicetype=Windows+10+x64&version=62090529&lang=zh_CN&exportkey=Ay2euVhX0Yo0Ilzg28PK4hw%3D&pass_ticket=W%2B7dpO6yPmBPi6BSUQks6DDJw0deCcUhtCSocFC7Pqr%2FbTCA3Ab%2BZ89q7Sv%2FCOPb&wx_header=0

5.降维(时间还是蛮久的)

HSMM_myo <- reduceDimension(HSMM_myo, 
                            max_components= 2, 
                            reduction_method = 'DDRTree')

排序

HSMM_myo <- orderCells(HSMM_myo)

State轨迹分布图

plot1 <- plot_cell_trajectory(HSMM_myo, color_by = "State")
# ggsave("./State.pdf", plot = plot1, width = 6, height = 5)
ggsave("./State.png", plot = plot1, width = 6, height = 5)

Cluster轨迹分布图

因为我没有做seurat的cluster,所以没有这个图

Pseudotime轨迹图

plot3 <- plot_cell_trajectory(HSMM_myo, color_by = "Pseudotime")
# ggsave("./Pseudotime.pdf", plot = plot3, width = 6, height = 5)
ggsave("./Pseudotime.png", plot = plot3, width = 6, height = 5)

合并作图

library(patchwork)
plotc <- plot1|plot3
# ggsave("./Combination.pdf", plot = plotc, width = 10, height = 3.5)
ggsave("./Combination.png", plot = plotc, width = 10, height = 3.5)

保存结果

write.csv(HSMM_myo@phenoData@data, "./pseudotime.csv")
Combination.png

pseudotime.csv.png

6 轨迹图分面显示

p1 <- plot_cell_trajectory(HSMM_myo, color_by = "State") + facet_wrap(~State, nrow = 1)
# p2 <- plot_cell_trajectory(HSMM_myo, color_by = "seurat_clusters") + facet_wrap(~seurat_clusters, nrow = 1)
# plotc <- p1/p2
ggsave("./trajectory_facet.png", plot = p1, width = 6, height = 5)
trajectory_facet.png

7 Monocle基因可视化

image.png

教程中的代码报错了,很奇怪

Error in orig[[nm]][i, , ..., drop = drop] : subscript out of bounds

以为是基因的问题,换了四个还是不行,说明是别的,,然后去百度谷歌解决
哦对因为我的pdata()和fData()函数不能用(我也不知道为啥,就是每次都报错,不认识这俩函数,查的时候发现可以代替HSMM_myo@featureData@data == fData(),,,HSMM_myo@phenoData@data == pdata())
刚刚是p1报错了,解决如下

 blast_genes <- row.names(subset(HSMM_myo@featureData@data,
                                 V2 %in% c("LURAP1", "FOXE3", "RAD54L")))
p1 <- plot_genes_jitter(HSMM_myo[blast_genes,], grouping = "State", color_by = "State")
ggsave("./genes_visual.png", plot = p1, width = 8, height = 4.5)
genes_visual.png

但是p2又报错了

> p2 <- plot_genes_violin(HSMM_myo[blast_genes,], grouping = "State", color_by = "State")
Error in plot_genes_violin(HSMM_myo[blast_genes, ], grouping = "State",  : 
  unused arguments (grouping = "State", color_by = "State")

找错的过程中又发现了一个教程:https://www.plob.org/article/20919.html
上面那个错误原因是plot_genes_violin函数中早已没有grouping这个参数,所以看了一下

image.png

image.png

但是按规矩写了以后,还是报错:

> HSMM_SUBSET <- HSMM_myo[row.names(subset(HSMM_myo@featureData@data,
+                  V2 %in% c("LURAP1", "FOXE3", "RAD54L"))),]
> p2 <- plot_genes_violin(HSMM_SUBSET, group_cells_by = "State")
Error: methods::is(object = cds_subset, class2 = "cell_data_set") is not TRUE

还找到了官网教程https://cole-trapnell-lab.github.io/monocle3/docs/differential/
算了找不到解决的办法,老说这个报错
略过,做下一个

拟时相关基因聚类热图

Monocle中differentialGeneTest()函数可以按条件进行差异分析,将相关参数设为fullModelFormulaStr = "~sm.ns(Pseudotime)"时,可以找到与拟时相关的差异基因。我们可以按一定的条件筛选基因后进行差异分析,全部基因都输入会耗费比较长的时间。建议使用cluster差异基因或高变基因输入函数计算。分析结果主要依据qval区分差异的显著性,筛选之后可以用plot_pseudotime_heatmap函数绘制成热图。
我们选用monocle的高可变基因

#高变基因
disp_table <- dispersionTable(HSMM_myo)
disp.genes <- subset(disp_table, mean_expression >= 0.5&dispersion_empirical >= 1*dispersion_fit)
disp.genes <- as.character(disp.genes$gene_id)
diff_test <- differentialGeneTest(HSMM_myo[disp.genes,], cores = 4, 
                                  fullModelFormulaStr = "~sm.ns(Pseudotime)")
sig_gene_names <- row.names(subset(diff_test, qval < 1e-04))
p2 = plot_pseudotime_heatmap(HSMM_myo[sig_gene_names,], num_clusters=5,
                             show_rownames=T, return_heatmap=T)
ggsave("./pseudotime_heatmap2.png", plot = p2, width = 5, height = 10)
pseudotime_heatmap2.png

BEAM分析

单细胞轨迹中通常包括分支,它们的出现是因为细胞的表达模式不同。当细胞做出命运选择时,或者遗传、化学或环境扰动时,就会表现出不同的基因表达模式。BEAM(Branched expression analysis modeling)是一种统计方法,用于寻找以依赖于分支的方式调控的基因。

mycds_sub <- HSMM_myo[disp.genes,]
plot_cell_trajectory(mycds_sub, color_by = "State")
beam_res <- BEAM(mycds_sub, branch_point = 1, cores = 8)#long time
beam_res <- beam_res[order(beam_res$qval),]
beam_res <- beam_res[,c("V2", "pval", "qval")]#beam_res <- beam_res[,c("gene_short_name", "pval", "qval")]
mycds_sub_beam <- mycds_sub[row.names(subset(beam_res, qval < 1e-4)),]
plot_genes_branched_heatmap(mycds_sub_beam,  branch_point = 1, num_clusters = 3, show_rownames = T)
genes_branched_heatmap.png

end

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339