1简介

这个包提供了执行差分共表达式分析和使用模拟数据计算差分共表达式方法的方法。差异共表达分析试图识别在不同条件下改变的基因-基因关联。目前,有10种方法可以识别二进制条件之间的变化:8种是以前发表的方法的新Bioconductor实现,和;2通过现有包的接口访问。

这篇小短文的重点是微分共表达式推理方法在真实数据中的应用。介绍了可用的方法、假定的管道和方法提供的可视化。

2安装

从Bioconductor下载软件包

如果(!install.packages("BiocManager") BiocManager::install("dcanr")

或者从Github安装开发版本的包。

BiocManager:安装(“DavisLaboratory / dcanr”)

将安装的包加载到R会话中。

库(dcanr)

3.可用的推理方法

这个包实现了10个方法来推断跨二进制条件的微分共表达式网络。控件可以访问可用方法的列表dcMethods ()函数。

库(dcanr) dcMethods ()
#[1]“dicer”“diffcoex”“ebcoexpress”“ecf”“entropy”#[6]“ftgi”“ggm-based”“ldgm”“magic”“mindy”##[11]“zscore”

4一个通用的微分共表达式分析管道

差分共表达式管道通常由4个步骤组成:

  1. 为每对基因生成分数/统计数据
  2. 使用统计测试评估分数
  3. 修正多重假设检验
  4. 选择微分关联

并不是所有的方法都遵循这个管道。EBcoexpress计算后验概率,因此不需要进行统计检验,可以跳过步骤2-3。同样,DiffCoEx不执行任何统计测试,而是对分数执行软阈值。FTGI执行统计检验和\ (p \)-来自该测试的值被用作分数,因此跳过第2步。这里展示的是使用z评分方法的标准分析,使用所有4个步骤。

5加载示例数据集(模拟)

我们首先加载一个示例模拟数据集(包含在包中),以提取表达式矩阵和条件向量。请注意,每次模拟都会执行多个击倒实验,我们在这里使用一个这样的击倒作为条件。所有击倒的列表可以使用getConditionNames ()

#获取可用条件getConditionNames(sim102)
## [1] " adr1 " " ume6 "
#get expression data and conditions for 'UME6' knockdown simdata <- getSimData(sim102, cond.name = 'UME6', full = FALSE) emat <- simdata$emat ume6_kd <- simdata$condition print(emat[1:5, 1:5]) #149个基因和406个样本
## sample_1 sample_2 sample_3 sample_4 sample_5 ## ADR1 0.4997864 0.4692072 0.3937255 0.1390989 0.05291159 ## FLO8 0.3340156 0.2845828 0.3682575 0.2263656 0.19292056 ## GIS1 0.3955383 0.4922471 0.5006614 0.2672858 0.48041978 ## IME4 0.658504 0.3529325 0.4188025 0.3824827 0.33371681 ## KAR4 0.3705384 0.5812146 0.5282095 0.4945329 0.46677489
注:二进制条件用1和2编码
## sample_1 sample_2 sample_3 sample_4 sample_5 sample_6 ## 2 2 1 1 1 1

6步骤1:计算分数

所有推理方法都可以使用同一个调用访问,因此更容易在方法之间进行更改。可以将特定于方法的参数传递给此函数,并进行相应的管理。默认的推理方法是z得分,因此它不需要指定viadc.method.我们建议使用斯皮尔曼相关性作为相关性的度量,因为它对RNA-seq数据中可能存在的异常值具有鲁棒性。

#应用z-score方法与Spearman相关性z_scores <- dcScore(emat, ume6_kd, dc。Method = 'zscore', col . Method = 'spearman') print(z_scores[1:5, 1:5])
## adr1 flo8 gis1 ime4 kar4 ## adr1 na -0.05890109 1.0645602 -0.6869672 -0.2843683 ## flo8 -0.05890109 na 0.1855110 0.9256449 0.6803593 ## gis1 1.06456016 0.18551097 na 0.6336496 -1.2508845 ## ime4 -0.68696722 0.92564487 0.6336496 na 0.4433642 ## kar4 -0.28436825 0.68035927 -1.2508845 0.4433642 na

7步骤2:执行统计检验

为所应用的方法自动选择适当的统计检验。对测试结果进行了测试dcScore ()函数(z-score方法的z检验和其他方法的排列检验)。如果方法是EBcoexpress、FTGI或DiffCoEx,则测试函数返回评分矩阵(未修改)。

注意:不要修改评分方法的结果,因为这将导致测试功能失败。这是为了对所有计算分数进行测试,以防止在随后的多个假设检验修正中出现偏差。这同样适用于下一步。

raw_p <- dcTest(z_scores, emat, ume6_kd) print(raw_p[1:5, 1:5])
## adr1 flo8 gis1 ime4 kar4 ## adr1 na 0.9530309 0.2870750 0.4921034 0.7761282 ## flo8 0.9530309 na 0.8528283 0.3546306 0.4962770 ## gis1 0.2870750 0.8528283 na 0.5263095 0.2109766 ## ime4 0.4921034 0.3546306 0.5263095 na 0.6575023 ## kar4 0.7761282 0.4962770 0.2109766 0.6575023 na

对于像MINDy这样需要排列测试的方法,排列的数量可以通过B参数。排列测试的计算开销很大,因此我们也提供了一个并行的实现。的帮助页dct为例子。

8第三步:修正多重假设检验

由于所有基因的成对组合都要进行测试,\ (p \)-值需要调整。鉴于\ (n \)基因,假设的总数是\ \(压裂{n (n - 1)} {2} \)因为分数矩阵是对称的。进行相应的调整。默认的调整功能为统计数据::p.adjust但是,使用' fdr '方法可以指定自定义函数及其参数。dcAdjust提供将调整方法应用于原始数据的包装器\ (p \)值矩阵。EBcoexpress和DiffCoEx的结果仍未修改。

#调整p-values (raw p-values from dcTest不应该被修改)adj_p <- dcAdjust(raw_p, f = p.adjust, method = 'fdr') print(adj_p[1:5, 1:5])
## adr1 flo8 gis1 ime4 kar4 ## adr1 na 0.9933963 0.8879726 0.9289498 0.9655700 ## flo8 0.9933963 na 0.9748335 0.9116214 0.9289498 ## gis1 0.8879726 0.9748335 na 0.9328853 0.8494282 ## ime4 0.9289498 0.9116214 0.9328853 na 0.9512398 ## kar4 0.9655700 0.9289498 0.8494282 0.9512398 na

9步骤4:生成差分共表达网络

最后一步是阈值评分/调整\ (p \)-value矩阵来选择微分关联。默认的调整\ (p \)-value阈值0.1应用于执行统计检验的地方(以控制FDR为0.1)。结果显示为igraph下面所示的对象,其边缘根据分数着色(从负到正的分数使用紫色到绿色的颜色渐变表示)。

#获取差分网络dcnet <- dcNetwork(z_scores, adj_p) plot(dcnet, vertex. net)Label = ")

#转换为邻接矩阵adjmat <- as_adj(dcnet, sparse = FALSE) print(adjmat[1:5, 1:5])
## adr1 flo8 gis1 ime4 kar4 ## adr1 0 0 0 0 0 0 ## flo8 0 0 0 0 0 ## gis1 0 0 0 0 0 0 ## ime4 0 0 0 0 0 ## kar4 0 0 0 0 0 0
#转换为数据帧edgedf <- as_data_frame(dcnet, what = 'edges') print(head(edgedf))
## 1 ADR1 ACS1 -3.648617 #671F73B3 ## 2 ADR1 CTA1 -4.399843 #40004BB3 ## 3 ADR1 FOX2 -4.712234 #40004BB3 ## 4 ADR1 GUT1 -5.999899 #40004BB3 ## 5 STE12 BAR1 4.426577 #00441BB3 ## 6 SWI5 RME1 -3.780175 #5E186AB3

会话信息

## R版本4.2.0 RC (22-04-19 r82224) ##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 20.04.4 LTS ## ##矩阵产品:default ## BLAS: /home/biocbuild/bbs-3.15-bio /R/lib/libRblas. ##因此## LAPACK: /home/biocbuild/bbs-3.15-bio /R/lib/libRlapack。因此## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# [3] LC_TIME=en_GB LC_COLLATE= c# [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# [9] LC_ADDRESS=C LC_TELEPHONE= c# [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats graphics grDevices utils datasets methods base ## ##其他附加的包:## [1]igraph_1.3.1 dcanr_1.12.0 BiocStyle_2.24.0 ## ##通过命名空间加载(并没有附加):# [1] Rcpp_1.0.8.3 bslib_0.3.1 compiler_4.2.0 ## [4] BiocManager_1.30.17 RColorBrewer_1.1-3 jquerylib_0.1.4 ## [7] highr_0.9 iterators_1.0.14 tools_4.2.0 ## [10] rngtools_1.5.2 digest_0.6.29 jsonlite_1.8.0 ## [13] evaluate_0.15 lattice_0.20-45 pkgconfig_2.0.3 ## [16] rlang_1.0.2 doRNG_1.8.2 Matrix_1.4-1 ## [16] foreach_1.5.2 cli_3.3.0 magick_2.7.3 ## [22] yaml_2.3.5 parallel_4.2.0 xfun_0.30 ## [28] sass_0.4.1 GlobalOptions_0.1.2 grid_4.2.0 ## [7] highr_0.9 iterators_1.0.14 tools_4.2.0 ## [10] rngtools_1.5.2R6_2.5.1 rmarkdown_2.14 bookdown_0.26 ## [34] magrittr_2.0.3 codetools_0.2-18 htmltools_0.5.2 ## [37] shape_1.4.6 circlize_0.4.14 colorspace_2.0-3 ## [40] stringi_1.7.6