生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

279

主题
发表于 2022-8-8 02:34:22 | 查看: 598| 回复: 0
构建细胞分化轨迹
一、Trajectory analysis 轨迹推断
       轨迹推断(Trajectory Inference,TI),也称为细胞分析轨迹(differentiation trajectories)基于单细胞转录组数据,利用模型预测细胞分化过程。
       由于分析结果是基于某个组织一瞬间的群体单细胞数据预测得到的,并非真实时间维度上的分化结果,因此也被称为伪时序分析 (pseudotime analysis),也可以叫做拟时分析。
       拟时分析通过分析关键基因的表达模式,将所有细胞按照发育时间的先后排布在拟时间轴上,模拟发育过程中的细胞分化过程。通过对细胞轨迹的分析,我们可以挖掘出细胞分化过程中经历的细胞类型变化、伴随发育过程变化的动态变化基因、祖细胞不同的分化命运等与生命发育息息相关的信息。

二、monocle3 进行细胞轨迹推断
文档:https://cole-trapnell-lab.github.io/monocle3/docs/trajectories/
  1. #1 读取数据
  2. getwd()
  3. setwd('/home/xhs/jyxy/16.rscrna/')
  4. expression_matrix <- readRDS("./monocle3/packer/packer_embryo_expression.rds")
  5. cell_metadata <- readRDS("./monocle3/packer/packer_embryo_colData.rds")
  6. gene_annotation <- readRDS("./monocle3/packer/packer_embryo_rowData.rds")

  7. cds <- new_cell_data_set(expression_matrix,cell_metadata = cell_metadata,gene_metadata = gene_annotation)

  8. #2 数据处理以及去除批次效应
  9. cds <- preprocess_cds(cds, num_dim = 50)
  10. cds <- align_cds(cds, alignment_group = "batch", residual_model_formula_str = "~ bg.300.loading + bg.400.loading + bg.500.1.loading + bg.500.2.loading + bg.r17.loading + bg.b01.loading + bg.b02.loading")


  11. #3 数据降维以及结果可视化
  12. cds <- reduce_dimension(cds)
  13. #设置group_label_size = 3,cell_size = 0.7调整文本和点的大小
  14. plot_cells(cds, label_groups_by_cluster=FALSE,color_cells_by = "cell.type",group_label_size = 3,cell_size = 0.7)

  15. #基因沿着轨迹变化
  16. ciliated_genes <- c("che-1","hlh-17","nhr-6","dmd-6","ceh-36","ham-1")
  17. plot_cells(cds,genes=ciliated_genes,label_cell_groups=FALSE,show_trajectory_graph=FALSE)

  18. #4 聚类
  19. cds <- cluster_cells(cds)
  20. plot_cells(cds, color_cells_by = "partition")

  21. #5 构建Learn the trajectory graph
  22. cds <- learn_graph(cds)
  23. plot_cells(cds,color_cells_by = "cell.type",label_groups_by_cluster=FALSE,label_leaves=FALSE,label_branch_points=FALSE)

  24. #6排序 Order the cells in pseudotime
  25. plot_cells(cds,color_cells_by = "embryo.time.bin",label_cell_groups=FALSE,label_leaves=TRUE,label_branch_points=TRUE, graph_label_size=1.5)

  26. #7 选取root跟节点
  27. cds <- order_cells(cds)

  28. plot_cells(cds,
  29.            color_cells_by = "pseudotime",
  30.            label_cell_groups=FALSE,
  31.            label_leaves=FALSE,
  32.            label_branch_points=FALSE,
  33.            graph_label_size=1.5)

  34. #8 自定义函数,确定根节点
  35. get_earliest_principal_node <- function(cds, time_bin="130-170"){
  36.   cell_ids <- which(colData(cds)[, "embryo.time.bin"] == time_bin)
  37.   closest_vertex <-
  38.     cds@principal_graph_aux[["UMAP"]]$pr_graph_cell_proj_closest_vertex
  39.   closest_vertex <- as.matrix(closest_vertex[colnames(cds), ])
  40.   root_pr_nodes <-
  41.     igraph::V(principal_graph(cds)[["UMAP"]])$name[as.numeric(names
  42.                                                               (which.max(table(closest_vertex[cell_ids,]))))]
  43.   root_pr_nodes
  44. }
  45. cds <- order_cells(cds, root_pr_nodes=get_earliest_principal_node(cds))
  46. plot_cells(cds,color_cells_by = "pseudotime",label_cell_groups=FALSE,label_leaves=FALSE,label_branch_points=FALSE,graph_label_size=1.5)

  47. #9 选取树枝Subset cells by branch
  48. cds_sub <- choose_graph_segments(cds)


  49. #10 绘制3D 轨迹图
  50. cds_3d <- reduce_dimension(cds, max_components = 3)
  51. cds_3d <- cluster_cells(cds_3d)
  52. cds_3d <- learn_graph(cds_3d)
  53. cds_3d <- order_cells(cds_3d, root_pr_nodes=get_earliest_principal_node(cds))

  54. cds_3d_plot_obj <- plot_cells_3d(cds_3d, color_cells_by="partition")
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人

GMT+8, 2024-5-4 15:28 , Processed in 0.036854 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表