在许多分析中,大量的变量必须针对感兴趣的性状/终点进行独立测试,同时还需要调整协变量和混杂因素。其中的主要瓶颈是完成这些分析所需的时间。
与RegParallel,可以同时执行大量的测试。在一个12核系统上,可以同时测试144个变量,通过“嵌套”并行处理在几秒钟内处理1000个变量。
工作逻辑回归,线性回归,条件逻辑回归,考克斯比例风险和生存模型,贝叶斯逻辑回归。也迎合了广义线性模型,利用' survey ' CRAN包创建的调查权重,并利用' survey::svyglm '。
如果(!requireNamespace(“BiocManager”,静静地=真正的))install.packages(“BiocManager”)::安装(“RegParallel”) BiocManager
注:安装开发版本:
::install_github(“kevinblighe / RegParallel”) 遥控器
图书馆(RegParallel)
为了快速入门,我们将跟随的教程(来自第3.1节)RNA-seq工作流程:基因级探索性分析和差异表达.具体来说,我们将加载“气道”数据,其中不同的气道平滑肌细胞用地塞米松处理。
图书馆(气管)图书馆(magrittr)数据(“气道”)$敏捷% < > %relevel(“untrt”) 气道
将原始计数规范化DESeq2并产生正则化的日志表达级别:
图书馆(DESeq2)DESeqDataSet(气道,设计=~敏捷+细胞) dds < -DESeq(dds,betaPrior =假) dds < -分析(rlog(dds,盲目的=假)) rldexpr < -data.frame(colData(气管),t(rldexpr)) rlddata < -
在此,我们拟合一个二项逻辑回归模型通过glmParallel,以地塞米松为因变量。
# #没有运行RegParallel( res1 < -data =rlddata (,1:3000),公式=“敏捷~(*)”,有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的)),FUNtype =“漠视”,变量=colnames(rlddata) [10:3000])订单(res1$P,减少=假),) res1 [
##变量Term Beta standderror Z ## 1: ENSG00000095464 ENSG00000095464 43.27934 2.593463e+01 1.6687854476 ## 2: ENSG00000071859 ENSG00000071859 12.96251 7.89028712 ENSG00000069812 -44.37139 2.704021e+01 -1.6409412536 ## 3: ENSG00000069812 ENSG00000069812 -44.37139 2.704021e+01 -1.6409412536 ## 4: ENSG00000072415 ENSG00000072415 ENSG00000072415 -19.90841 1.227527e+01 -1.6218306224 ## 5: ENSG00000073921 ENSG00000073921 14.59470 8.999831e+00 1.6216635641 ##——## 2817:ENSG00000068831 ENSG00000068831 110.84893 2.729072e+05 0.0004061781 ## 2818:ENSG00000069020 ENSG00000069020 -186.45744 4.603615e+05 -0.0004050239 ## 2819: ENSG00000083642 ENSG00000083642 -789.55666 1.951104e+06 -0.0004046717 ## 2820: ENSG00000104331 ENSG00000104331 394.14700 9.749138e+05 0.0004042891 ## 2821: ensg00000084331 ENSG00000104331 394.14700 9.749138e+05 0.0004028919 ## P或ORlower或upper ## 1: 0.09515991 6.251402e+18 5.252646e-04 7.440065e+40 ## 2: 0.10041536 4.261323e+05 8.190681e-02 2.217017e+12 ## 3:0.10080961 5.367228e-20 5.165170e-43 5.577191e+03 ## 4: 0.10483962 2.258841e-09 8.038113e-20 6.347711e+01 ## 5: 0.10487540 2.179701e+06 4.761313e-02 9.978541e+13 ##——## 2817:0.99967592 1.383811e+48 0.000000e+00 NA ## 2818: 0.99967684 1.053326e-81 0.000000e+00 NA ## 2819: 0.99967712 0.000000e+00 0.000000e+00 NA ## 2820: 0.99967742 1.499222e+171 0.000000e+00 NA ## 2821: 0.99967854 3.514359e-95 0.000000e+00 NA
在这里,我们将使用两者来执行线性回归glmParallel而且lmParallel.我们将欣赏线性回归使用默认设置的函数是相同的。
正则化的日志表达式级别DESeq2将使用数据。
1:2000] rlddata < -rlddata (,RegParallel( 它< -data =rlddata,公式=“[*]~细胞”,有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,方法=“glm.fit”),FUNtype =“漠视”,变量=colnames(rlddata) [10:ncol(rlddata)),p.adjust =“没有”)RegParallel( res3 < -data =rlddata,公式=“[*]~细胞”,有趣的=函数(公式,数据)lm(公式=公式,data =数据),FUNtype =“lm”,变量=colnames(rlddata) [10:ncol(rlddata)),p.adjust =“没有”)子集(它,<0.05)
##变量术语Beta标准错误t ## 1: ENSG00000001461 cellN061011 -0.46859875 0.10526111 -4.451775 ## 2: ENSG00000001461 cellN080611 -0.84020922 0.10526111 -7.982143 ## 3: ENSG00000001461 cellN61311 -0.87778101 0.10526111 -8.339082 ## 4: ENSG00000001461 cellN080611 -1.71802758 0.13649920 -12.586357 ## 5: ENSG00000001561 cellN61311 -1.05328889 0.13649920 -7.716448 ##——## 519:ENSG00000001461 cellN061011 -0.12721659 0.01564082 -8.133625 ## 520:ENSG00000092108 cellN61311 -0.12451203 0.01564082 -7.960708 ## 521: ENSG00000092148 cellN080611 -0.34988071 0.10313461 -3.392467 ## 522: ENSG00000092200 cellN080611 0.05906656 0.01521063 3.883241 ## 523: ENSG00000092200 cellN080611 -0.28587683 0.08506716 -3.360602 # P或ORlower ORupper ## 1: 0.0112313246 0.6258787 0.5092039 0.7692873 ## 2: 0.0013351958 0.4316202 0.3511543 0.3382098 0.5109554 ## 4: 0.0002293465 0.1794197 0.1373036 0.2344544 ## 5:0.0015182960 0.3487887 0.2669157 0.4557753 ##——## 519:0.0012429963 0.8805429 0.8539591 0.9079544 ## 520:0.0013489163 0.8829276 0.8562718 0.9104133 ## 521:0.0274674209 0.7047722 0.5757851 0.8626549 ## 522:0.0177922771 1.0608458 1.0296864 1.0929482 ## 523:0.0282890537 0.7513552 0.6359690 0.8876762
子集(res3, P<0.05)
##变量术语Beta标准错误t ## 1: ENSG00000001461 cellN061011 -0.46859875 0.10526111 -4.451775 ## 2: ENSG00000001461 cellN080611 -0.84020922 0.10526111 -7.982143 ## 3: ENSG00000001461 cellN61311 -0.87778101 0.10526111 -8.339082 ## 4: ENSG00000001461 cellN080611 -1.71802758 0.13649920 -12.586357 ## 5: ENSG00000001561 cellN61311 -1.05328889 0.13649920 -7.716448 ##——## 519:ENSG00000001461 cellN061011 -0.12721659 0.01564082 -8.133625 ## 520:ENSG00000092108 cellN61311 -0.12451203 0.01564082 -7.960708 ## 521: ENSG00000092148 cellN080611 -0.34988071 0.10313461 -3.392467 ## 522: ENSG00000092200 cellN080611 0.05906656 0.01521063 3.883241 ## 523: ENSG00000092200 cellN080611 -0.28587683 0.08506716 -3.360602 # P或ORlower ORupper ## 1: 0.0112313246 0.6258787 0.5092039 0.7692873 ## 2: 0.0013351958 0.4316202 0.3511543 0.3382098 0.5109554 ## 4: 0.0002293465 0.1794197 0.1373036 0.2344544 ## 5:0.0015182960 0.3487887 0.2669157 0.4557753 ##——## 519:0.0012429963 0.8805429 0.8539591 0.9079544 ## 520:0.0013489163 0.8829276 0.8562718 0.9104133 ## 521:0.0274674209 0.7047722 0.5757851 0.8626549 ## 522:0.0177922771 1.0608458 1.0296864 1.0929482 ## 523:0.0282890537 0.7513552 0.6359690 0.8876762
对于这个例子,我们将加载乳腺癌基因表达数据与无复发生存期(RFS)乳腺癌基因表达谱:了解组织学分级的分子基础以改善预后.具体来说,我们将根据z评分将每个基因的表达编码为Low|Mid|High,并将其与RFS进行比较,同时在Cox比例风险模型中调整肿瘤级别。
首先,让我们读入并准备数据:
图书馆(Biobase)图书馆(GEOquery)#从GEO加载系列和平台数据getGEO(“GSE2990”,GSEMatrix =真正的,getGPL =假) gset < -exprs(gset [[1]]) x < -#删除Affymetrix控制探头-grep(“^ AFFX”,rownames(x))) x < -x (#将表达式数据转换为Z分数t(规模(t(x))) x < -#从表型数据中提取感兴趣的信息(pdata)哪一个(colnames(pData(gset [[1]]))%, % idx < -c(“年龄:ch1”,“遥远的rfs: ch1”,“呃:ch1”,“ggi: ch1”,“评级:ch1”,“节点:ch1”,“大小:ch1”,“时间rfs: ch1”))data.frame(pData(gset [[1]]) [idx], 元数据< -row.names =rownames(pData(gset [[1]])))#删除pdata中任何NA值的样本应用(元数据,1,函数(x)任何(is.na(x))) 丢弃< -!丢弃,) 元数据< -元数据(#筛选Z-scores表达式数据,以匹配pdata中的样本哪一个(colnames(x)%, %rownames(元数据))) x < -x (,#检查样本名称在pdata和z分数之间完全匹配所有((colnames(x)= =rownames(元数据))= =真正的)
# # [1]
#创建一个合并的pdata和z分数对象data.frame(元数据,t(x)) coxdata < -#整洁的列名colnames(coxdata) [1:8) < -c(“年龄”,的遥远。RFS”,“呃”,“GGI”,“年级”,“节点”,“大小”,的时间。RFS”)#准备某些表现型$年龄< -as.numeric(gsub(“KJ ^”,”, coxdata$年龄) coxdata$遥远。RFS < -as.numeric(coxdata$Distant.RFS) coxdata$ER < -因素(coxdata$呃,水平=c(0,1)) coxdata$年级< -因素(coxdata$年级的时候,水平=c(1,2,3.)) coxdata$时间。RFS < -as.numeric(gsub(“^ KJX | ^ KJ的,”, coxdata$Time.RFS)) coxdata
有了准备好的数据,我们现在可以针对RFS对数据集中的每个探测独立应用考克斯比例风险模型。
在这里,我们还将默认块大小增加到2000,以加快分析速度。
图书馆(生存)RegParallel( res5 < -data =coxdata,公式=Surv(时间。RFS ~ [*]',有趣的=函数(公式,数据)coxph(公式=公式,data =数据,关系=‘‘健康’,单数。好吧=真正的),FUNtype =“coxph”,变量=colnames(coxdata) [9:ncol(coxdata)),blocksize =2000,p.adjust =“黑洞”)!is.na(res5$P)) res5 < -res5 [ res5
##变量Term Beta standderror Z ## 1: X1007_s_at X1007_s_at 0.3780639987 0.3535022 1.0694811914 ## 2: X1053_at X1053_at 0.1177398813 0.2275041 0.5175285346 ## 3: X117_at X117_at 0.6265036787 0.6763106 0.9263549892 ## 4: X121_at X121_at -0.6138126274 0.6166626 -0.9953783151 ## 5: X1255_g_at X1255_g_at -0.2043297829 0.3983930 -0.5128849375 ##——## 22211:X91703_at X91703_at -0.4124539527 0.4883759 -0.8445419981 ## 22212:X91816_f_at X91816_f_at 0.0482030943 0.3899180 0.1236236554 ## 22214: X91920_at X91920_at -0.6452125945 0.8534623 -0.7559942684 ## 22215: X91952_at X91920_at -0.0001396044 0.7377681 -0.0001892254 ## P LRT Wald LogRank HR HRlower HRupper ## 1: 0.2848529 0.2826716 0.2848529 0.2848400 1.4594563 0.72994385 2.918050 ## 2: 0.6047873 0.6085603 0.6047873 0.1249515 0.72024775 1.757056 ## 3:0.3542615 0.3652989 0.3542615 0.3541855 1.8710573 0.49706191 7.043097 ## 4: 0.3195523 0.3188303 0.3195523 0.3186921 0.5412832 0.16162940 1.812712 ## 5: 0.6080318 0.6084157 0.6080318 0.6077573 0.8151935 0.37337733 1.779809 ##——## 22211:0.3983666 0.3949865 0.3983666 0.3981244 0.6620237 0.25419512 1.724169 ## 22212:0.9016133 0.9015048 0.9016133 0.9016144 1.0493838 0.48869230 2.253373 ## 22213:0.8691759 0.8691994 0.8691759 0.8691733 1.0561974 0.55103934 2.024453 ## 22214:0.4496526 0.44478541 0.4496526 0.4498007 0.5245510 0.09847349 2.794191 ## 22215: 0.9998490 0.9998490 0.9998490 0.9998490 0.9998604 0.23547784 4.245498 ## p .调整LRT。调整瓦尔德。LogRank调整。调整## 1:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 ## 3:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 ## 4:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 ##——## 22211:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 ## ## 22211:0.9999969 0.9999969 0.9999969 0.9999969 ## 22213:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 ## 22214:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 0.9999969 ## 22215:0.9999969 0.9999969 0.9999969 0.9999969 0.9999969
我们现在根据Log Rank p-value从模型中提取顶部探测并使用biomaRt查找相应的基因符号。
没有运行
订单(res5$LogRank,减少=假),) res5 < -res5 [子集(res5 LogRank<0.01) 最后< -gsub(“X ^”,”,最终$变量) 探针< -图书馆(biomaRt)useMart(“ENSEMBL_MART_ENSEMBL”,主机=“useast.ensembl.org”) 集市< -useDataset(“hsapiens_gene_ensembl”集市) 集市< -getBM(集市=集市, annotLookup < -属性=c(“affy_hg_u133a”,“ensembl_gene_id”,“gene_biotype”,“external_gene_name”),过滤器=“affy_hg_u133a”,值=探针,uniqueRows =真正的)
最热门的两个词条包括CXCL12而且MMP10.高表达的CXCL12既往与良好的乳腺癌无进展和总生存率相关(doi: 10.1016/ j.a ca.2018.05.041.)[https://www.ncbi.nlm.nih.gov/pubmed/29800557的高度表达MMP10与结肠癌预后不良相关(doi: 10.1186/s12885-016-2515-7)[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4950722/]。
我们可以通过将这些基因表达z分数按低、中、高表达分组来进一步探索这些基因对RFS的作用:
#提取RFS和探针数据用于下游分析c(的时间。RFS”,的遥远。RFS”, survplotdata < -coxdata (,“X203666_at”,“X205680_at”)]colnames(survplotdata) < -c(的时间。RFS”,的遥远。RFS”,“CXCL12”,“MMP10”)#设置高、低表达式的z刻度截断1.0 highExpr < -1.0 lowExpr < -#将CXCL12和MMP10的表达式编码为low、mid和high$CXCL12 < -ifelse(survplotdata$CXCL12> =highExpr,“高”, survplotdataifelse(x< =lowExpr,“低”,“中期”))$MMP10 < -ifelse(survplotdata$MMP10> =highExpr,“高”, survplotdataifelse(x< =lowExpr,“低”,“中期”))#重新调整因素的水平,以中间作为参考水平$CXCL12 < -因素(survplotdata$CXCL12, survplotdata水平=c(“中期”,“低”,“高”))$MMP10 < -因素(survplotdata$MMP10, survplotdata水平=c(“中期”,“低”,“高”))
绘制生存曲线,并在图中放置Log Rank p值:
图书馆(survminer)ggsurvplot(survfit(Surv(时间。RFS Distant.RFS)~CXCL12,data =survplotdata),data =survplotdata,风险。table =真正的,pval =真正的,break.time.by =500,ggtheme =theme_minimal(),risk.table.y.text.col =真正的,risk.table.y.text =假)
通过Cox比例风险回归进行生存分析。
ggsurvplot(survfit(Surv(时间。RFS Distant.RFS)~MMP10,data =survplotdata),data =survplotdata,风险。table =真正的,pval =真正的,break.time.by =500,ggtheme =theme_minimal(),risk.table.y.text.col =真正的,risk.table.y.text =假)
通过Cox比例风险回归进行生存分析。
在本例中,我们将重新使用Cox数据,以肿瘤等级作为分组/匹配因子进行条件逻辑回归。对于本例,我们将使用ER状态作为因变量,并根据年龄进行调整。
exprs(gset [[1]]) x < --grep(“^ AFFX”,rownames(x))) x < -x (规模(x) x < -哪一个(colnames(x)%, %rownames(元数据))) x < -x (,data.frame(元数据,t(x)) coxdata < -colnames(coxdata) [1:8) < -c(“年龄”,的遥远。RFS”,“呃”,“GGI”,“年级”,“节点”,“大小”,的时间。RFS”)$年龄< -as.numeric(gsub(“KJ ^”,”, coxdata$年龄) coxdata$年级< -因素(coxdata$年级的时候,水平=c(1,2,3.)) coxdata$ER < -as.numeric(coxdata$ER) coxdata!is.na(coxdata$ER),) coxdata < -coxdata [RegParallel( res6 < -data =coxdata,公式='ER ~[*] +年龄+地层(年级)',有趣的=函数(公式,数据)clogit(公式=公式,data =数据,方法=‘‘健康’),FUNtype =“clogit”,变量=colnames(coxdata) [9:ncol(coxdata)),blocksize =2000)子集(res6, P<0.01)
##变量术语Beta标准标准Z P ## 1: X204667_at X204667_at 0.9940504 0.3628087 2.739875 0.006146252 ## 2: X205225_at X205225_at 0.4444556 0.1633857 2.720285 0.006522559 ## 3: X207813_s_at X207813_s_at 0.8218501 0.3050777 2.693904 0.007062046 ## 4: X212108_at X212108_at 1.9610211 0.7607284 2.577820 0.009942574 ## 5: X219497_s_at X219497_s_at -1.0249671 0.3541401 -2.894242 0.003800756 ## LRT LogRank HR HRlower HRupper ## 1:0.006808415 0.02212540 0.02104525 2.7021573 1.3270501 5.502169 ## 2: 0.010783544 0.01941078 0.01701248 1.5596409 1.1322713 2.148319 ## 3: 0.037459927 0.02449358 0.02424809 2.2747043 1.2509569 4.136257 ## 4: 0.033447973 0.03356050 0.03384960 7.1065797 1.6000274 31.564132 ## 5: 0.005153233 0.01387183 0.01183245 0.1792329 0.718302
没有运行
getBM(集市=集市,属性=c(“affy_hg_u133a”,“ensembl_gene_id”,“gene_biotype”,“external_gene_name”),过滤器=“affy_hg_u133a”,值=c(“204667 _at”,“205225 _at”,“207813 _s_at”,“212108 _at”,“219497 _s_at”),uniqueRows =真正的)
雌激素受体(ESR1)出来了——有道理!另外,尽管204667_at没有列在biomaRt的外显子重叠FOXA1,这也与雌激素信号有关。
##使用(Mb) gc触发器(Mb)最大使用(Mb) ## Ncells 7917847 422.9 12532660 669.4 12532660 669.4 ## Vcells 16276504 124.2 52065173 397.3 52065137 397.3
高级功能包括修改块大小、选择不同数量的核心、启用“嵌套”并行处理、修改置信区间的限制以及从输出中排除某些模型项的能力。
首先为基准测试创建一些测试数据:
选项(scipen =10)选项(数字=6)#创建一个20 x 60000(行x cols)随机数的数据矩阵60000 坳< -20. 行< -矩阵( 垫< -rexp(坳*行,率=.1),ncol =上校)#添加假基因和样本名称colnames(垫)< -paste0(“基因”,1:ncol(垫))rownames(垫)< -paste0(“样本”,1:nrow(垫))#添加一些假元数据data.frame( 造型< -细胞=代表(c(“B”,“T”),nrow(垫)/2),组=c(代表(c(“治疗”),nrow(垫)/2),代表(c(“控制”),nrow(垫)/2)),剂量=t(data.frame(矩阵(rexp(行,率=1),ncol =行))), 垫,row.names =rownames(垫))
使用2个内核而不是默认的3个内核,再加上启用了nestedParallel,总共将使用2 x 2 = 4个线程。
1:2000] df < -造型(,colnames(df) [4:ncol(df)] 变量< -proc.time() 天车< -RegParallel( res < -data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =500,核=2,nestedParallel =真正的,p.adjust =“通过”)proc.time()-天车
##用户系统运行## 3.416 1.922 2.764
1:2000] df < -造型(,colnames(df) [4:ncol(df)] 变量< -proc.time() 天车< -RegParallel( res < -data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =500,核=2,nestedParallel =假,p.adjust =“通过”)proc.time()-天车
##用户系统运行## 3.156 0.439 3.580
关注运行时间(因为系统时间只报告完成的最后一个核心的时间),我们可以看到嵌套处理的改进微不足道,或者在对少量变量进行测试时,在某些条件下可能会更慢。这可能是由于简单地管理大量线程导致系统变慢。只有在处理大量变量时才能获得嵌套处理的好处:
1:40000] df < -造型(,colnames(df) [4:ncol(df)] 变量< -system.time(RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =2000,核=2,nestedParallel =真正的))
##用户系统运行## 85.054 17.535 52.417
1:40000] df < -造型(,colnames(df) [4:ncol(df)] 变量< -system.time(RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =2000,核=2,nestedParallel =假))
##用户系统运行了## 76.152 1.088 77.760
性能是依赖于系统的,即使增加核心也可能不会在时间上带来巨大的收益。性能是核心、分叉线程、块大小和每个模型中的术语数量之间的权衡。
在这个例子中,我们选择了一个大的块大小和3个核心。启用nestedParallel后,这转换为9个并发线程。
1:40000] df < -造型(,colnames(df) [4:ncol(df)] 变量< -system.time(RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =5000,核=3.,nestedParallel =真正的))
##用户系统运行了## 157.844 15.493 37.463
1:500] df < -造型(,colnames(df) [4:ncol(df)] 变量< -# 99%自信间隔RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =150,核=3.,nestedParallel =真正的,conflevel =99)
##变量术语Beta标准标准Z P ## 1: gene1 gene1 0.1176202 0.0903205 1.302253 0.192830 ## 2: gene1 cellB:剂量-0.5677228 0.6789195 -0.836215 0.403034 ## # 3:gene1 cellT:剂量-0.5509290 0.7119414 - 0.7719414 - 0.439025 ## # 4:gene2 gene2 -0.0652196 0.0632302 - 1.032362 0.302324 ## # 5: gene2 cellB:剂量-0.3051338 0.6068014 -0.502856 0.615065 ##——## 1487:gene496 cellB:剂量-0.4089077 0.6207126 -0.658771 0.510043 ## 1488:gene496 cellT:剂量-0.2494197 0.6207470 -0.401806 0.687827 ## 1489:gene497 gene497 cellB:剂量-0.4773341 0.6285318 -0.759443 0.447588 ## 1491:gene497 cellT:剂量-0.2083487 0.6204013 -0.335829 0.737000 ##或ORlower ORupper ## 1: 1.124817 0.8913394 1.41945 # 2: 0.566815 0.0986178 3.25782 ## 3: 0.576414 0.0921103 3.10258 ## 5: 0.737025 0.1544090 3.51797 ##——## 1487:0.664376 0.1342895 3.28689 ## 1488: 0.779253 0.1574955 3.85557 ## 1489: 0.911671 0.7476111 1.11173 ## 1490: 0.620435 0.1229073 3.13195 ## 1491: 0.811924 0.1642449 4.01364
# 95%信任间隔(默认)RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =150,核=3.,nestedParallel =真正的,conflevel =95)
##变量术语Beta标准标准Z P ## 1: gene1 gene1 0.1176202 0.0903205 1.302253 0.192830 ## 2: gene1 cellB:剂量-0.5677228 0.6789195 -0.836215 0.403034 ## # 3:gene1 cellT:剂量-0.5509290 0.7119414 - 0.7719414 - 0.439025 ## # 4:gene2 gene2 -0.0652196 0.0632302 - 1.032362 0.302324 ## # 5: gene2 cellB:剂量-0.3051338 0.6068014 -0.502856 0.615065 ##——## 1487:gene496 cellB:剂量-0.4089077 0.6207126 -0.658771 0.510043 ## 1488:gene496 cellT:剂量-0.2494197 0.6207470 -0.401806 0.687827 ## 1489:gene497 gene497 cellB:剂量-0.4773341 0.6285318 -0.759443 0.447588 ## 1491:gene497 cellT:剂量-0.2083487 0.6204013 -0.335829 0.737000 ##或ORlower ORupper ## 1: 1.124817 0.942325 1.34265 ## 2: 0.566815 0.149811 2.14456 ## 3: 0.576414 0.142800 2.32670 ## 4: 0.737025 0.224374 2.42099 ##——## 1487:0.664376 0.196817 2.24267 ## 1488:0.779253 0.230833 2.63063 ## 1489: 0.911671 0.783929 1.06023 ## 1490: 0.620435 0.181004 2.12669 ## 1491: 0.811924 0.240674 2.73906
#删除条款,但保留拦截RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =150,核=3.,nestedParallel =真正的,conflevel =95,excludeTerms =c(“细胞”,“剂量”),excludeIntercept =假)
##变量术语Beta标准ror Z P OR ## 1: gene1(拦截)-0.4136226 0.8159398 -0.506928 0.612205 0.661250 ## 2:gene1 gene1 0.1176202 0.0903205 1.302253 0.192830 1.124817 ## 3: gene2(拦截)0.8598918 0.9047306 0.950440 0.341889 2.362905 ## 4:gene2 gene2 -0.0652196 0.0632302 -1.031462 0.302324 0.936862 ## # 5: gene3(拦截)0.7064557 0.8517147 0.829451 2.026795 ##——## 990:gene495 gene495 -0.0421575 0.0541220 -0.778936 0.436018 0.958719 ## 991:gene496(拦截)0.7759207 0.8901732 0.871651 0.383399 2.172591 ## 992:gene496 gene496 -0.0365614 0.0383417 -0.953569 0.340302 0.964099 ## 993: gene497(拦截)1.2147756 1.0377630 1.170571 0.241771 3.369538 ## 994:gene497 gene497 -0.0924761 0.0770223 -1.200642 0.229890 0.911671 ## ORlower或upper ## 1: 0.133609 3.27262 ## 2: 0.942325 1.34265 ## 3: 0.401179 13.91729 ## 5: 0.381764 1.075946 ##——## # 990:0.379543 12.43641 ## 992:0.894304 1.03934 ## 993: 0.440783 25.75822 ## 994: 0.783929 1.06023
#删除除被测试变量外的所有内容RegParallel(data =df,公式='因子(组)~[*]+(单元:剂量)^ 2',有趣的=函数(公式,数据)全球语言监测机构(公式=公式,data =数据,家庭=二项(链接=分对数的),方法=“glm.fit”),FUNtype =“漠视”,变量=变量,blocksize =150,核=3.,nestedParallel =真正的,conflevel =95,excludeTerms =c(“细胞”,“剂量”),excludeIntercept =真正的)
##变量Term Beta standderror Z P ## 1: gene1 gene1 0.11762017101 0.0903205 1.302253345 0.192830 ## 2: gene2 gene2 -0.06521955820 0.0632302 -1.031462071 0.302324 ## 3: gene3 gene3 -0.05996119887 0.0649535 -0.923140520 0.355934 ## 4: gene4 gene4 -0.02618569521 0.0761778 -0.343744622 0.731038 ## # 5: gene5 gene5 0.00570135449 0.0444996 0.128121524 0.898053 ##——## 493:gene493 gene493 -0.00000705509 0.0483715 -0.000145852 0.999884 ## 494:gene494 gene494 -0.05445835415 0.0537627 -1.012938587 0.311089 ## 495: gene495 gene495 -0.04215751980 0.0541220 -0.778935708 0.436018 ## 496: gene496 gene496 -0.03656141827 0.0383417 -0.953569030 0.340302 ## 497: gene497 gene497 -0.09247614686 0.0770223 -1.200641778 0.229890 ##或ORlower ORupper ## 1: 1.124817 0.942325 1.34265 ## 2: 0.936862 0.827664 1.06947 ## 3: 0.941801 0.829222 1.06966 ## 4: 0.974154 0.839045 1.13102 ## 5: 1.005718 0.921718 1.09737 ##——## 493:0.999993 0.909543 1.09944 ## 494: 0.946998 0.852287 1.05223 ## 495: 0.958719 0.862229 1.06601 ## 496: 0.964099 0.894304 1.03934 ## 497: 0.911671 0.783929 1.06023
感谢Horácio Montenegro和genome对跨平台差异的测试,以及Wolfgang Huber提供了需要实施FDR校正的提示。
感谢伦敦的Michael Barnes向我介绍了R中的并行处理。
最后,感谢匹兹堡儿童医院的Juan Celedón。
Sarega Gurudas,她的建议导致通过svyglm实现调查权重。
sessionInfo()
## R正在开发中(不稳定)(22-10-25 r83175) ##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 22.04.1 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.17-bio /R/lib/libRblas。因此## LAPACK: /usr/lib/x86_64-linux-gnu/ LAPACK /liblapack.so.3.10.0 ## ## 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]stats4 parallel stats graphics grDevices utils datasets ## [8] methods base ## ##其他附加的包:# # # # [1] survminer_0.4.9 ggpubr_0.4.0 [3] ggplot2_3.3.6 GEOquery_2.67.0 # # [5] DESeq2_1.39.0 magrittr_2.0.3 # # [7] airway_1.19.0 SummarizedExperiment_1.29.0 # # [9] Biobase_2.59.0 GenomicRanges_1.51.0 # # [11] GenomeInfoDb_1.35.0 IRanges_2.33.0 # # [13] S4Vectors_0.37.0 BiocGenerics_0.45.0 # # [15] MatrixGenerics_1.11.0 matrixStats_0.62.0 # # [17] RegParallel_1.17.0 arm_1.13-1 # # [19] lme4_1.1-31 Matrix_1.5-1 # # [21] mass_7.3 - 58.1 survival_3.4-0 # # [23] stringr_1.4.1 data.table_1.14.4 # # [25]doParallel_1.0.17 iterators_1.0.14 ## [27] foreach_1.5.2 knitr_1.40 ## ##通过命名空间加载(并且没有附加):## [1] RColorBrewer_1.1-3 jsonlite_1.8.3 farver_2.1.1 ## [4] nloptr_2.0.3 rmarkdown_2.17 zlibbioc_1.45.0 ## [7] vctrs_0.5.0 memoise_2.0.1 minqa_1.2.5 ## [10] RCurl_1.98-1.9 rstatix_0.7.0 htmltools_0.5.3 ## [13] curl_1 .3.3 broom_1.0.1 sass_0.4.2 ## [13] bslib_0.4.0 zoo_1.8-11 cachem_1.0.6 ## [16] bslib_0.4.0 lifecycle_1.0.3 pkgconfig_2.0.3 ## [22] R6_2.5.1 fastmap_1.1.0 GenomeInfoDbData_1.2.9 ## [25] digest_0.6.30 colorspace_2.0-3 annotationdbi_1 .77.0 ## [4] vctrs_0.0 .3 ## [7] vctrs_0.5.0 memoise_2.0.1 minqa_1.2.5 ## [10] rcurl_1 .3.3 brom_1 .0.1RSQLite_2.2.18 labeling_0.4.2 ## [31] fansi_1.0.3 km.ci_0.5-6 httr_1.4.4 ## [34] abind_1.4-5 compiler_4.3.0 bit64_1 .0.5 ## [37] withr_2.5.0 backports_1.4.1 BiocParallel_1.33.0 ## [40] carData_3.0-5 DBI_1.1.3 highr_0.9 ## [43] R.utils_2.12.1 ggsignif_0.6.4 DelayedArray_0.25.0 ## [46] tools_4.3.0 R.oo_1.25.0 glue_1.6.2 ## [49] nlme_1 .1-160 gridtext_0.1.3 gtable_0.3.1 tzdb_0.3.0 ## [55] KMsurv_0.1-5 R.methodsS3_1.8.2 tidyr_1.2.1 ## [58] hms_1.1.2 xml2_1.3.3car_1 .1-1 ## [61] utf8_1.2.2 XVector_0.39.0 markdown_1.3 ## [64] pillar_1.8.1 limma_1 .55.0 genefilter_1.81.0 ## [67] splines_4.3.0 dplyr_1.0.10 ggtext_0.1.2 ## [70] lattice_0.20-45 bit_4.0.4 annotate_1.77.0 ## [73] tidyselect_1.2.0 locfit_1.5-9.6 Biostrings_2.67.0 ## [76] gridExtra_2.3 xfun_0.34 stringi_1.7.8 ## [79] yaml_2.3.6 boot_1.3-28 evaluate_0.17 ## [82] xtable_1.8-4 munsel_0.5.0 jquerylib_0.1.4 ## [88] survMisc_0.5.6 Rcpp_1.0.9 coda_0.19-4## [91] png_0.1-7 XML_3.99-0.12 ellipsis_0.3.2 ## [94] readr_2.1.3 assertthat_0.2.1 blob_1.2.3 ## [97] bitops_1.0-7 scales_1.2.1 purrr_0.3.5 ## [100] crayon_1.5.2 rlang_1.0.6 KEGGREST_1.39.0
Blighe和Lasky-Su (2018)
Blighe, K,和J Lasky-Su。2018.RegParallel: R中的标准回归函数,支持对大数据帧进行并行处理。https://github.com/kevinblighe/RegParallel。