Monocle拟时间分析随笔

输入文件导入方法

Monocle拟时间导入数据方式有两种,一种是通过导入Seurat对象,一种是导入cellranger输出的表达矩阵(三个文件barcodes.tsv genes.tsv matrix.mtx)

#今天就介绍cellranger输出的表达矩阵导入方式
library(monocle)
library(cellrangerRkit)
library(Seurat)
indir='mydir/filtered_gene_bc_matrices/Danio_rerio/'
my_dir <- indir
gbm <- load_cellranger_matrix(my_dir)
my_feat <- fData(gbm)
names(my_feat) <- c('id', 'gene_short_name')
my_cds <- newCellDataSet(exprs(gbm),phenoData = new("AnnotatedDataFrame", data = pData(gbm)),featureData = new("AnnotatedDataFrame", data = my_feat),lowerDetectionLimit = 0.5,expressionFamily = negbinomial.size())

选定细胞或者样品进行拟时间分析

一般情况下,如果做单细胞转录组测序的话,都会用seurat软件包进行分析。经常会遇到这样的情况,我们只是对seurat分类结果中的几个聚类细胞感兴趣,想用几个聚类的细胞进行拟时间分析,这该如何处理?第一种方式就是导入seurat对象的时候,可以提前特定细胞进行后续分析;第二种方式就是通过seurat的聚类结果文件,提前相应的表达矩阵,转换成cellranger输出的三个文件的表达矩阵,这个方式太麻烦。
今天将介绍另外一种方法,特别的鉴定,就是直接通过monocle对象,提取相应的细胞对象即可:

my_cds_subset <- my_cds[expressed_genes, cells]

今天仅仅记录此方法,后续分析以后再进行记录。
2019年5月13日

拟时间分支点数目

有时候需要查看分支点的数目,但是分支点的数字代表什么意思还需要再研究。

cds@auxOrderingData[[cds@dim_reduce_type]]$branch_points
cds@auxOrderingData[["DDRTree"]]$pr_graph_cell_proj_closest_vertex
# Cell id to closest MST node.
id_to_mst_node <- cds@auxOrderingData[["DDRTree"]]$pr_graph_cell_proj_closest_vertex

# Change the MST node to match 'name' attribute in igraph ("Y_*").
id_to_mst_node[,1] <- sapply(id_to_mst_node[,1], function(x){paste(c("Y_", x), collapse = "")})

# Make a MST node to cell ids mapping.
mst_node_to_ids <- list()
for (node_name in unique(id_to_mst_node[,1])) {
  mst_node_to_ids[[node_name]] <- names(id_to_mst_node[,1][id_to_mst_node[,1] == node_name])
}
##所有分支点名称
igraph::vertex_attr(minSpanningTree(cds))

想要更多的分支点和state

使用max_components参数,increasing the number for "max_components" Monocle will generate more branch points, more states and trajectories。

state值不连续属于正常

Monocle 2 learns a principal graph for the centroids of the raw data cloud and then projects the raw data points on to this principal graph. the missing states happen when the cell in the transition state are very few and those points are projected to nearby branches. This should not affect any downstream analysis. And we will have better ways to handle this in next Monocle release.


直接查看分支点

seurat3.0对象导入

seurat升级到3.0以后,importcds函数可能不能用了,需要新的手动导入方式:

#Load Seurat object
seurat_object <- readRDS('seurat_object.rds')

#Extract data, phenotype data, and feature data from the SeuratObject
data <- as(as.matrix(seurat_object@assays$RNA@data), 'sparseMatrix')

pd <- new('AnnotatedDataFrame', data = seurat_object@meta.data)

fData <- data.frame(gene_short_name = row.names(data), row.names = row.names(data))
fd <- new('AnnotatedDataFrame', data = fData)

#Construct monocle cds
monocle_cds <- newCellDataSet(data,
                         phenoData = pd,
                         featureData = fd,
                         lowerDetectionLimit = 0.5,
                         expressionFamily = negbinomial.size())

拟时间分析热图的top50基因输出

我们通过拟时间值,对差异前50个基因进行热图分析,得到如下热图,那么热图的top50基因如何输出呢?


拟时间分析差异基因top50热图
graph <- paste(prefix,'pseudotime_heatmap.pdf',sep='_')
pdf(graph, w=12, h=8)
my_pseudotime_cluster <-plot_pseudotime_heatmap(HSMM_myo[gene_to_cluster,],num_clusters = 3,cores = 4,show_rownames = TRUE,return_heatmap = TRUE)
#plot_grid(my_pseudotime_cluster)
dev.off()
print('Finished -plot_pseudotime_heatmap............')
######
#####
## hierarchical clustering was used to cluster the genes
# we can cut the dendrogram to form the same 3 clusters as plot_pseudotime_heatmap
my_cluster <- cutree(my_pseudotime_cluster$tree_row, 3)
print('my_cluster')
my_cluster
# genes in cluster 1
cluster_1<-my_pseudotime_de[names(my_cluster[my_cluster == 1]),"gene_short_name"]
# genes in cluster 2
cluster_2<-my_pseudotime_de[names(my_cluster[my_cluster == 2]),"gene_short_name"]
# genes in cluster 3
cluster_3<-my_pseudotime_de[names(my_cluster[my_cluster == 3]),"gene_short_name"]
tmpe2<-data.frame(Gene=c(cluster_1,cluster_2,cluster_3),Cluster=c(rep('cluster1',length(cluster_1)),rep('cluster2',length(cluster_2)),rep('cluster3',length(cluster_3))))
write.csv(tmpe2,paste(prefix,'pseudotime_heatmap_genes.csv',sep="_"),quote=F,row.names=F)

最终会得到如下表格:


top50基因输出结果

2019年5月20日

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

推荐阅读更多精彩内容