推断两种表型之间 (如处理 vs 对照、肿瘤 vs 正常、应答者 vs 非应答者) 分泌蛋白活性的变化。输入的表达值应来自RNAseq或MicroArray数据,需经过log2(x+1)转换,x可以是RNAseq数据中的FPKM、RPKM或TPM值。演示数据来自一个接受抗IFNG抗体AMG 811单剂治疗的盘状红斑狼疮患者临床队列。通过SecAct框架,预测治疗组与对照组之间分泌蛋白活性的变化。
library(SecAct)
dataPath <- file.path(system.file(package="SecAct"), "extdata/")
expr <- read.csv(paste0(dataPath,"GSE100093.IFNG.expr.gz"), sep="\t")
meta <- read.csv(paste0(dataPath,"GSE100093.IFNG.meta"), sep="\t")
expr.treatment <- expr[, meta[,"Treatment"]=="Anti-IFNG"]
expr.control <- expr[, meta[,"Treatment"]=="Control"]
将expr.treatment和expr.control输入到SecAct.activity.inference函数中,以推断处理组与对照组之间分泌蛋白活性的变化。默认参数下,SecAct计算的是两种表型之间的整体活性变化 (is.singleSampleLevel = FALSE),可以通过设置 is.singleSampleLevel = TRUE来获得每个处理组样本的活性变化。注意,如果是配对样本,将默认设置is.paired = FALSE改为TRUE。
res <- SecAct.activity.inference(inputProfile = expr.treatment, inputProfile_control = expr.control, is.singleSampleLevel = F, is.paired = F)
act.change <- res$zscore
head(act.change)
Change
A1BG 11.004840
A2M 12.095746
A2ML1 -7.503564
ABHD15 -4.295565
ABI3BP 11.102537
ABO -6.030371
如果已经有差异表达变化结果,而不是两个表型的表达矩阵,也可以直接运行 SecAct.activity.inference,并设置 is.differential = TRUE,也可以得到相同的结果。
expr.diff <- matrix(data = rowMeans(expr.treatment) - rowMeans(expr.control), ncol = 1, dimnames = list(row_names = rownames(expr.treatment), col_names = "Diff"))
res <- SecAct.activity.inference(inputProfile = expr.diff, is.differential = T)
act.change <- res$zscore
head(act.change)
Change
A1BG 11.004840
A2M 12.095746
A2ML1 -7.503564
ABHD15 -4.295565
ABI3BP 11.102537
ABO -6.030371
结果中正值表示分泌蛋白在处理组中活性更高,负值表示在对照组中活性更高。从下面结果的可以看到,IFNG的活性下降符合预期,这与治疗组接受抗IFNG治疗的结果一致。
act.change["IFNG","Change"]
[1] -44.19696
可视化活性变化
可以使用 SecAct.bar.plot 函数可视化感兴趣的分泌蛋白。这里选取处理组与对照组之间活性变化最显著的前10个分泌蛋白来展示。
up.SPs <- names(sort(act.change[,"Change"], decreasing = TRUE))[1:10]
down.SPs <- names(sort(act.change[,"Change"]))[1:10]
SPs <- c(up.SPs, down.SPs)
fg.vec <- act.change[SPs, "Change"]
SecAct.bar.plot(fg.vec, title="Activity Change (treatment vs control)")
