当前位置:   article > 正文

BayesPrism 增速 400 倍?!免疫反卷积算法 InstaPrism_bayesprism反卷积 可视化

bayesprism反卷积 可视化

生信碱移

BayesPrism 加速

计算细胞类型去卷积是一种重要的分析技术,用于模拟整体基因表达数据的成分异质性。之前小编给大家介绍过一篇子刊文章,其综合比较了多种细胞去卷积算法(图1)。研究的结果显示,BayesPrism 作为一种全新的贝叶斯方法,在反卷积的准确程度和对模型误差的鲁棒性方面具有优越性。

图片

▲ 图1:点击图片跳转到推文。

尽管如此,由于 BayesPrism 依赖于 Gibbs 采样,因此其计算成本比标准方法高出多个数量级。为此,另一项研究介绍了 InstaPrism 算法,它通过用定点算法替换 BayesPrism 中耗时的 Gibbs 采样步骤,在一个去随机化框架中重新实现了 BayesPrism。根据作者的表述,InstaPrism 在实现相同性能的条件下,将算法的运行时间大大缩短了 400 倍,并且运行所占用的内存降低了 20 倍。

图片

▲ InstaPrism的运行速度,来源于 gihub 描述:https://github.com/humengying0907/InstaPrism

这篇推文中,小编给大家简单介绍一下这个 R 包的使用。当然,感兴趣的铁子也可以进入上面的 github 链接看看。

一、R包安装

可以使用以下代码安装该 R 包:

  1. if (!require("BiocManager", quietly = TRUE))
  2.     install.packages("BiocManager")
  3. if (!require("Biobase", quietly = TRUE))
  4.     BiocManager::install("Biobase")
  5. if (!require("devtools", quietly = TRUE))
  6.     install.packages("devtools")
  7. devtools::install_github("humengying0907/InstaPrism")

一、执行反卷积

① 加载单细胞参考对象。该包内置了一部分癌症的单细胞参考,如果你要使用已经准备好的参考对象,则可以使用下方代码,OV 特指卵巢癌:

  1. OV_ref <- InstaPrism_reference('OV'
  2. str(OV_ref)
  3. #Formal class 'refPhi_cs' [package "InstaPrism"with 2 slots
  4. #  ..@ phi.cs: num [1:320531:401.30e-08 1.00e-08 3.86e-07 5.21e-08 1.30e-08 ...
  5. #  .. ..- attr(*"dimnames")=List of 2
  6. #  .. .. ..$ : chr [1:32053"MIR1302-2HG" "OR4F5" "AL627309.1" "AL627309.3" ...
  7. #  .. .. ..$ : chr [1:40"Cycling.cancer.cell.2" "Cycling.cancer.cell.1" "fallopian tube secretory epithelial cell" "Cancer.cell.1" ...
  8. #  ..@ map   :List of 9
  9. #  .. ..$ malignant       : chr [1:11"Cycling.cancer.cell.2" "Cycling.cancer.cell.1" "fallopian tube secretory epithelial cell" "Cancer.cell.1" ...
  10. #  .. ..$ fibroblast      : chr "fibroblast"
  11. #  .. ..$ T cell          : chr [1:11"T cell" "CD8.T.cytotoxic" "CD4.T.reg" "CD4.T.naive" ...
  12. #  .. ..$ endothelial cell: chr "endothelial cell"
  13. #  .. ..$ plasma cell     : chr "plasma cell"
  14. #  .. ..$ B cell          : chr "B cell"
  15. #  .. ..$ dendritic cell  : chr [1:4"pDC" "mDC" "cDC2" "cDC1"
  16. #  .. ..$ mast cell       : chr "Mast.cell"
  17. #  .. ..$ monocyte        : chr [1:9"Cycling.M" "M1.S100A8" "M2.CXCL10" "M2.SELENOP" ...

其他已经准备好的参考有:

图片

当然,也可以使用下方代码自定义单细胞参考对象

  1. sc.dat <- readRDS("10.sc.dat.rds")           # 处理好的单细胞count矩阵
  2. sc.dat[1:51:5]
  3. #                 A1BG A1CF A2M A2M-AS1 A2ML1
  4. #HCC9_COL18_ROW25    2    0   2       0     0
  5. #HCC9_COL19_ROW39    1   28   0       0     0
  6. #HCC9_COL12_ROW23    1    0   0       0     0
  7. #HCC1_COL14_ROW31   26   98 264       0     3
  8. #HCC1_COL6_ROW4    115  121   1       0     0
  9. cell_meta <- readRDS("10.cell_meta.rds")     # 处理好的单细胞注释文件
  10. cell_meta[1:5, c("orig.ident""Celltype")]
  11. # A tibble: 5 × 2
  12. #  orig.ident Celltype   
  13. #  <fct>      <fct>      
  14. #1 HCC9       Hepatocytes
  15. #2 HCC9       Hepatocytes
  16. #3 HCC9       Hepatocytes
  17. #4 HCC1       Hepatocytes
  18. #5 HCC1       Hepatocytes
  19. HCC_ref <- refPrepare(t(sc.dat),
  20.                      cell_meta$Celltype,
  21.                      cell_meta$Celltype, 
  22.                      pseudo.min = 1e-08)

② 读入表达矩阵,这里读入的是示例数据的表达矩阵(行为基因,列为样本,填充值为基因的表达量):

  1. bulk_expr <read.csv(system.file('extdata',
  2.                                   'example_bulk.csv',
  3.                                   package = 'InstaPrism')) 
  4. bulk_expr[1:51:5]
  5. #           simulated1 simulated2  simulated3 simulated4 simulated5
  6. #AL627309.1   4.083809   2.506129  0.13908015 11.0578698   3.548361
  7. #LINC00115    1.339467   3.788035  0.04873877  0.4734699   1.364752
  8. #SAMD11       1.310678   2.586227  0.00000000  0.6388871   1.059823
  9. #NOC2L       51.436820  64.370597 48.12664982 25.8605285  46.726963
  10. #HES4        18.179669  17.233774 20.57675914 13.4103796   6.820316

③ 执行 InstaPrism 估计,随后可以使用 deconv_res@Post.ini.ct@theta 获得细胞的 theta 估计值:

  1. deconv_res <- InstaPrism(bulk_Expr = bulk_expr,
  2.                          refPhi_cs = OV_ref)
  3. # 使用 @Post.ini.ct@theta 即可获得细胞的 theta 估计值
  4. estimated_frac <-  t(deconv_res@Post.ini.ct@theta)
  5. head(estimated_frac)
  6. write.csv(estimated_frac, "theta.csv"quote = F, row.names = T) # 保存结果
  7. # 也可以使用 get_Z_array 函数获得反卷积的基因表达 Z
  8. get_Z_array(deconv_res)

增速400倍?

感兴趣的老铁可以试试

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/989488
推荐阅读
相关标签
  

闽ICP备14008679号