r语言及bioconductor在基因组分析中的应用_已知初等因子组求不变因子

r语言及bioconductor在基因组分析中的应用_已知初等因子组求不变因子R语言下多组学因子分析MOFA——单细胞甲基化分析文章目录R语言下多组学因子分析MOFA——单细胞甲基化分析前言一、MOFA与单细胞、甲基化数据?二、分析步骤1.导入数据2.在R中训练模型前言提问:什么是MOFA?M

R语言下多组学因子分析MOFA ——单细胞甲基化分析


前言

提问:什么是MOFA?
MOFA分析可以在常规组学分析基础上,进一步将数据进行整合,从因子分析的角度解析影响不同组学数据背后异质性因素,随后可对解析出的因子进行注释及其他扩展分析。MOFA相比于传统联合分析有比较明显的优势:

MOFA优势

  1. 样本量:既适用于大样本量数据,也适用于小样本量数据(每个组学具有一一对应关系的样本至少15个以上);
  2. 缺失值估计:对于有缺失值的样本,可以进行缺失值的估计;
  3. 适用的数据类型广泛:可对离散型数据、连续型数据和二进制数据进行分析;
  4. 应用范围广:适用于两个及两个以上组学,因子分析结果还可以继续进行非线性降维聚类(t-SNE,UMAP)和预测临床反应(Cox模型)等分析;
  5. 分析角度独特:从因子贡献度角度解析数据异质性,为多组学研究提供了新思路。

提示:以下是本篇文章正文内容,下面案例可供参考

一、MOFA与单细胞、甲基化数据?

为了在处理大量缺失值的同时进行降维,并分析异质性。

二、分析步骤

数据来源:“Multi-omics profiling of mouse gastrulation at single cell resolution”
数据介绍:来自同一时期三个胚层的胚胎干细胞甲基化数据

1.导入数据

代码如下(示例):

library(data.table)
library(purrr)
library(ggplot2)

#确定数据的读取路径
io <- list()
io$basedir <- "scnmt_gastrulation"
io$data.dir <- "scnmt_gastrulation/met/feature_level"
io$sample.metadata <- "scnmt_gastrulation/sample_metadata.txt"
##我们可以先导入metadata看一下
sample_metadata <- fread(io$sample.metadata)

大致是这个样子,然后根据我们的要求去进行细胞筛选
在这里插入图片描述
前期一些不重要的环境,条件筛选设置。可根据各自文章要求来自定义设置。

opts <- list()
# 选择annotations
opts$annos <- c("ESC_DHS"="DHS")
# 选择细胞的时期
opts$stage_lineage <- c("E7.5_Endoderm","E7.5_Mesoderm","E7.5_Ectoderm")
# 选择符合标准的细胞
opts$cells <- fread(io$sample.metadata) %>% 
  .[,stage_lineage:=paste(stage,lineage10x_2,sep="_")] %>%
  .[pass_metQC==T & stage_lineage%in%opts$stage_lineage,id_met]
# 选择符合标准的细胞的metadata
sample_metadata <- fread(io$sample.metadata) %>% 
  .[id_met%in%opts$cells] %>%
  .[,c("id_met","stage","lineage10x_2")] %>%
  .[,stage_lineage:=paste(stage,lineage10x_2,sep="_")]
# 数据筛选的一些标准
opts$min.CpGs <- 1          # minimum number of CpG sites per feature and cell
opts$min.coverage <- 0.10   # minimum coverage (fraction of cells with at least min.CpG measurements)
opts$nfeatures <- 5000     # number of features per view (filter based on variance)
# 选择颜色
opts$colors <- c( Ectoderm="steelblue", 
Mesoderm="#CD3278",Endoderm="#43CD80")

导入数据并根据筛选标准过滤

##导入数据
met_dt <- lapply(names(opts$annos), function(n)
  fread(sprintf("%s/%s.tsv.gz",io$data.dir,n), select=c(1,2,3,5,6)) %>%
  setnames(c("id_met","id","anno","N","rate")) %>% .[N>=opts$min.CpGs] %>% .[,N:=NULL]
) %>% rbindlist %>% merge(sample_metadata, by="id_met")

# Calculate M value from Beta value 
met_dt[,m:=log2(((rate/100)+0.01)/(1-(rate/100)+0.01))]

# 按coverage划分的过滤标准
nsamples <- length(unique(met_dt$id_met))
met_dt <- met_dt[,cov:=.N/nsamples,by=c("id","anno")] %>% .[cov>=opts$min.coverage] %>% .[,c("cov"):=NULL]

# 按方差划分的过滤标准
keep_hv_sites <- met_dt %>% split(.$lineage10x_2) %>% map(~ .[,.(var = var(rate)), by="id"] %>% .[var>0] %>% setorder(-var) %>% head(n = opts$nfeatures) %>% .$id)
met_dt <- met_dt %>% split(.$lineage10x_2) %>% map2(.,names(.), function(x,y) x[id %in% keep_hv_sites[[y]]]) %>% rbindlist

2.在 R 中训练模型

library(MOFA2)
#矩阵列表,其中每个条目对应一个视图。样本存储在列中,特征存储在行中。
dmatrix_list <- met_dt %>% split(.$lineage10x_2) %>% 
  map(~
    dcast(.[,c("id_met","id","m")], formula=id_met~id, value.var="m") %>% as.data.frame %>% tibble::column_to_rownames("id_met") %>% as.matrix %>% t)

lapply(dmatrix_list,dim)

# 创建 MOFA 对象:
MOFAobject <- create_mofa(df)
plot_data_overview(MOFAobject)

# 设置参数
ModelOptions <- get_default_model_options(MOFAobject)
ModelOptions$num_factors <- 2
head(ModelOptions)

TrainOptions <- get_default_training_options(MOFAobject)
TrainOptions$seed <- 42

# Prepare
MOFAobject <- prepare_mofa(MOFAobject,
    model_options  = ModelOptions, 
    training_options = TrainOptions
)

# Train the model
model <- run_mofa(MOFAobject, io$outfile)

3. plot model

p <- plot_factor(
  model, 
  factors=c("Factor1", "Factor2"), 
  color_by=sample_metadata_filt$lineage10x_2
)

p <- p + 
  scale_colour_manual(values=opts$colors) +
  labs(x=sprintf("Factor 1 (%.2f%%)",r2["LF1",]*100), y=sprintf("Factor 2 (%.2f%%)",r2["LF2",]*100))
print(p)

图中显示了前两个潜在因素的散点图,这些因素是用来自指定阶段的细胞训练的模型。
在这里插入图片描述

今天的文章r语言及bioconductor在基因组分析中的应用_已知初等因子组求不变因子分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86934.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注