1简介

gwasurvivr可用于从Sanger和Michigan imputation服务器和IMPUTE2软件中进行估算基因型的生存分析。这个小插图是关于如何执行这些分析的教程。此包可以在Linux、Mac OS X、Windows上本地运行,也可以在高性能计算集群上方便地批量运行。gwasurvivr以块的方式迭代处理数据,因此不需要大量的内存需求。
gwasurvivr包包含三个主要功能,使用Cox比例风险(Cox PH)模型进行生存分析,这取决于用于生成基因型数据的植入方法:

  1. michiganCoxSurv:对存储在压缩VCF文件中的估算遗传数据进行生存分析,这些文件通过密歇根估算服务器生成。
  2. sangerCoxSurv:对通过Sanger imputation服务器生成的压缩VCF文件中存储的估算遗传数据进行生存分析。
  3. impute2CoxSurv:对来自IMPUTE2输出的估算遗传数据进行生存分析。
  4. plinkCoxSurv:对PLINK文件中直接输入的遗传数据进行生存分析(。BED, .BIM,和.FAM)
  5. gdsCoxSurv:对用户已从IMPUTE2格式转换为GDS格式的遗传数据进行生存分析。

所有函数都适合每个SNP的Cox PH模型,包括其他用户定义的协变量,并将结果直接保存为文本文件,保存到包含生存分析结果的磁盘。gwasurvivr函数还可以测试snp与给定协变量的相互作用。更多细节请参见示例。

1.1主要输入参数

所有三个函数都需要以下主要参数:

  • vcf.file:给出基因型数据文件路径的字符串(impute.fileIMPUTE2;b.file叮铃声)
  • covariate.file:由样本id(链接到基因型数据样本)、表型(时间、事件)和额外的协变量数据组成的数据帧
  • id.column:在covariable .file中提供样例ID列名的字符串
  • time.to.event:在covariable .file中包含时间列名称的字符串
  • 事件:在covariable .file中包含事件列名的字符串
  • 协变量:在协变量中包含列名的字符向量。要包含在模型中的协变量文件
  • out.file:给出输出文件名的字符串

可以根据用户首选项传递进一步的参数。例如,用户可以定义MAF (minor allele frequency)或info/R2评分阈值,过滤出MAF或info/R2评分较低的snp,以避免误报信号,减少计算时间。用户还可以通过提供样本id集来定义要分析的样本子集。用户还可以控制数据块大小——每次迭代所包含的行数(snp)。

重要提示:在covariate.file,类别变量需要转换为指示器(虚拟)变量,并具有类别数字.以字符表示的序数变量,即“low”、“medium”和“high”也应转换为适当的数值。

1.2主要输出格式

输出为3个主要函数中的gwasurvivr非常相似但又有细微差别。一般来说,输出包括以下主要字段:RSID, TYPED, CHR, POS, REF, ALT,等位基因频率*,INFO*, PVALUES, HRs, HR置信区间,系数估计,标准误差,z统计量,N和NEVENT。等位基因频率和INFO随输入输入软件的不同而不同。

注意:调用inter.term任何函数的参数都将使PVALUE和HRs和HR置信区间代表INTERACTION项,而不仅仅是SNP。

非软件特定的字段总结如下:

描述
RSID SNP ID
空空的 染色体数目
POS 基因组位置(BP)
裁判 参考等位基因
ALT 不同的等位基因
SAMP_FREQ_ALT 交替等位基因频率的样本被测试
SAMP_MAF 被测样本中等位基因频率较小
PVALUE 单个SNP或相互作用项的p值
人力资源 危害比(HR)
HR_lowerCI HR的下界95% CI
HR_upperCI HR的95% CI上限
系数 估计SNP系数
SE。系数 系数估计的标准误差
Z z统计量
N 样本中被测试的个体数量
NEVENT 被测试样本中发生的事件数

软件的特定领域总结如下:
1.michiganCoxSurv唯一输出列是AF, MAF, R2, ER2。现将其总结如下。

描述
输入 输入状态:TRUE (SNP已输入)/FALSE (SNP已输入)
房颤 Minimac3输出交替等位基因频率
Minor等位基因频率的Minimac3输出
R2 Imputation R2评分(minimac3\ (R ^ 2 \)
ER2 Minimac3输出经验\ (R ^ 2 \)

请参阅Minimac3信息文件有关输出的详细信息

  1. sangerCoxSurv
描述
输入 输入状态:TRUE (SNP已输入)/FALSE (SNP已输入)
RefPanelAF HRC参考面板等位基因频率
信息 来自PBWT的Imputation INFO评分
  1. impute2CoxSurv
描述
输入 ---重复的RSID被输入
A0 在IMPUTE2中编码0的等位基因
A1 IMPUTE2中编码1的等位基因
exp_freq_A1 等位基因编码A1的期望等位基因频率

方法可以打印出更多的统计信息print.covs参数并将其设置为print.covs =所有(单SNP/SNP*协变量相互作用)或print.covs =一些(SNP *协变量ineraction)。这些选项主要用于建模目的(协变量选择),不建议用于非常大的分析,因为它将大大增加输出中的列数,这取决于用户调整的协变量的数量。

2开始

安装gwasurvivrSucheston-Campbell实验室Github仓库使用devtools

devtools: install_github(“suchestoncampbelllab / gwasurvivr”)

或请从安装重击Bioconductor分支(R版本>= 3.5)

如果(!requireNamespace("BiocManager", quiet =TRUE)) install.packages("BiocManager") BiocManager::install("gwasurvivr", version = "devel")

2.1依赖关系

请注意这个包取决于GWASTools在linux上使用netcdf框架。因此,对于linux用户,请安装libnetcdf-dev而且netcdf-bin在安装之前gwasurvivr.这些linux库可能已经安装在学术计算集群上。

凹口包:
1.ncdf4
2.matrixStats
3.平行
4.生存

安装。package (c("ncdf4", "matrixStats", "parallel", "survival"))

Bioconductor包:
1.GWASTools
2.VariantAnnotation
3.SummarizedExperiment4.SNPRelate

BiocManager::install("GWASTools") BiocManager::install("VariantAnnotation") BiocManager::install(" summarizeexperimental ") BiocManager::install("SNPRelate")

负载gwasurvivr

库(gwasurvivr)

2.2用户设置:并行化设置

gwasurvivr使用平行包的内部并行化,以适应考克斯PH模型。默认情况下,用户不需要定义并行化设置gwasurvivr函数将检测用户的操作系统并将集群对象设置为如果平台是Linux/OS X,则到袜子如果窗口。但是,如果需要,用户可以修改并行化设置。用户有两种方法来定义他们的集群设置:

1.设置使用的核数。

Linux/OS X用户可以通过在R会话中设置如下所示的选项,在预先指定的核数上运行分析。该选项应该在R会话中定义,然后再运行任何gwasurvivr功能。这里我们决定使用4个内核。此选项对Windows用户不可用。

选项(“gwasurvivr.cores”= 4)

2.提供用户定义的集群对象

要修改更多的设置,用户还可以提供一个“集群对象”给任何一个gwasurvivr功能。集群对象可以通过makeClustermakePSOCKclustermakeForkCluster函数从平行包或类似的集群对象函数降雪包。此方法可以应用于任何操作系统。用户可以在运行任何函数之前创建一个集群对象,并将集群对象传递给clusterObj参数,如下所示。详情见??并行:平行

library(parallel) cl <- makeCluster(detectCores()) impute2CoxSurv(…, clusterObj=cl) sangerCoxSurv(…, clusterObj = cl)michiganCoxSurv(..., clusterObj=cl)

3.R会话示例

3.1密歇根Imputation服务器

密歇根Imputation服务器使用HAPI-UR, SHAPEIT或EAGLE(默认为EAGLE2)预阶段类型的基因型,使用Minimac3 imputation引擎进行imputes,并输出Blocked GNU Zip Format VCF文件(.vcf.gz).这些.vcf.gz文件被用作输入gwasurvivr.Minimac使用略微不同的度量标准来评估imputation质量(\ (R ^ 2 \)与信息分数)和完整的细节,以最小ac输出可在Minimac3 Wikipage

这个函数,michiganCoxSurv使用R库中的Cox比例风险回归修正生存:::coxph.fit.专为基因数据而建,michiganCoxSurv允许用户筛选信息(\ (R ^ 2 \))评分(imputation quality metric)和来自参考面板的次要等位基因频率用于imputation使用RefPanelAF的输入参数maf.filter.用户还提供了样本小等位基因频率(MAF)sangerCoxSurv输出,可用于过滤后分析。

可以通过提供矢量来选择样品进行分析sample.ids.桑格归责服务器的输出将样本返回为SAMP1,……, SAMPN,在那里N是样本的总数。样本顺序对应于vcf.file用于imputation。注,样单也可在.fam如果基因分型数据最初在文件中请全部.bim而且.fam(PLINK)格式,然后转换为VCF。如果没有指定样品列表,所有样品都包括在分析中。

vcf.file<- system.file(package="gwasurvivr", "extdata", "michigan.chr14.dose.vcf.gz") pheno.fl <- system.file(package="gwasurvivr", "extdata", "simulated_pheno.txt") pheno.file <- read.table(pheno.fl, sep=" ", header=TRUE, stringsAsFactors = FALSE) head(pheno.file)
## ID_1 ID_2事件时间年龄药物txyes性别组## 1 1 SAMP1 0 12.00 33.93 0男对照## 2 2 SAMP2 1 7.61 58.71 1男实验## 33 SAMP3 0 12.00 39.38 0女对照## 4 4 SAMP4 0 4.30 38.85 0男对照## 5 5 SAMP5 0 12.00 43.58 0男实验## 6 SAMP6 1 2.60 57.74 0男对照
#重新编码性别列并删除第一列pheno。file$SexFemale <- ifelse(pheno。file$sex=="female", 1L, 0L) #只选择实验组样本。ids样本。id <- pheno.file[pheno. file]文件组= =美元“实验”,]美元ID_2头(sample.ids)
##[1]“samp2”“samp5”“samp7”“samp9”“samp11”“samp12”

在本例中,我们将从实验只对这些病人进行生存测试。的第一列pheno.file为样本id,用于连接表型文件和imputation文件。我们包括年龄DrugTxYes,在生存模型中作为协变量。

我们使用实验如果只对样本的一个子集感兴趣(即病例对照研究和病例的生存感兴趣),分组演示如何准备他们的数据。注意,id (sample.ids)需要成为阶级的载体字符.的chunk.size指读入的每个数据块的大小,默认为10,000行。用户可以根据自己的需要进行定制。越大chunk.size运行分析所需的内存(RAM)就越多。推荐的chunk.size = 10000可能不应该超过chunk.size = 100000.这并不意味着gwasurvivr只有100,000个SNPs,它只是每次迭代分析的SNPs数量。

默认情况下,将输出为其他协变量调整的SNP的生存估计和p值(print.covs = '只有'),但用户可自行选择print.covs =所有得到模型中包含的协变量的系数估计值。根据所包含的协变量的数量,这会大大增加输出文件的大小。

3.1.1单SNP分析

接下来我们运行michiganCoxSurv在默认情况下,print.covs = "只",将结果加载到R中,并按列提供输出的描述。然后,我们将再次使用print.covs = "所有"verbose = TRUE用于这些示例,以便函数在运行时显示消息。

使用michiganCoxSurv ?对于特定于参数的文档。

print.covs = "只"

michiganCoxSurv (vcf.file = vcf。文件,covariate.file =把。文件,id。列= " ID_2 " sample.ids =样本。id、水份。事件="time", event="event", covariates=c("age", "SexFemale", "DrugTxYes"), inter.term=NULL, print.covs="only", out.file="michigan_only", r2.filter=0.3, maf.filter=0.005, chunk.size=100, verbose=TRUE, clusterObj=NULL)
分析开始于2022-11-01 18:07:04
模型中包含的协变量是:年龄,DrugTxYes, SexFemale
52个样品纳入分析
##分析0-100块
##分析数据块100-200
分析于2022-11-01 18:07:21完成
## 0个不符合阈值标准的snp被从分析中删除。
##删除的snp列表可以在/tmp/RtmpWwMW96/michigan an_only28b5092740252a.snps_removed中找到
总共分析了3个snp
生存输出可以在/tmp/RtmpWwMW96/michigan an_only28b5092740252a.coxph找到

在这里,我们加载数据,并浏览从使用SNP*相互作用生存分析输出的每列中的前几个值print.covs = "只"

michigan . only <- read.table("michigan . only. "coxph", sep="\t", header=TRUE, stringsAsFactors = FALSE)
str(头(michigan_only))
## 'data.frame': 3 obs。21个变量:# # $ RSID:空空的“rs34919020”“rs8005305”“rs757545375”# # $类型:罗技假假假# # $装备:int 14十四14 # # $ POS: int 19459185 20095842 19459185 # # $ REF:空空的“C”“G”“A”# # $ ALT:空空的“T”“T”“G”# # $房颤:num 0.301 0.515 0.52 # # $加:num 0.301 0.485 0.48 # # $ SAMP_FREQ_ALT: num 0.355 0.517 0.52 # # $ SAMP_MAF: num 0.355 0.483 0.48 # # $ R2: num 0.552 0.479 0.481 # # $ ER2:罗技NA NA NA # # $ PVALUE: num 0.713 0.805 0.798 # # $人力资源:# $ Z: num 0.368 -0.246 -0.255 ## $ COEF: num 0.203 -0.123 -0.127 ## $ SE。COEF: num 0.55 0.498 0.498 ## $ N: int 52 52 52 ## $ N. event: int 21 21 21

3.1.2具有协变量相互作用的SNP

SNP*协变量相互作用可以使用inter.term论点。在本例中,我们将使用DrugTxYes作为我们想要测试与SNP相互作用的协变量。

print.covs = "只"

michiganCoxSurv (vcf.file = vcf。文件,covariate.file =把。文件,id。列= " ID_2 " sample.ids =样本。id、水份。事件="time", event="event", covariates=c("age", "SexFemale", "DrugTxYes"), inter.term="DrugTxYes", print.covs="only", out.file="michigan_intx_only", r2.filter=0.3, maf.filter=0.005, chunk.size=100, verbose=FALSE, clusterObj=NULL)

在这里,我们加载数据,并浏览从使用SNP*相互作用生存分析输出的每列中的前几个值print.covs = "只"

密西根_intx_only <- read.table("密西根_intx_only. "coxph", sep="\t", header=TRUE, stringsAsFactors = FALSE)
str(头(michigan_intx_only))
## 'data.frame': 3 obs。21个变量:# # $ RSID:空空的“rs34919020”“rs8005305”“rs757545375”# # $类型:罗技假假假# # $装备:int 14十四14 # # $ POS: int 19459185 20095842 19459185 # # $ REF:空空的“C”“G”“A”# # $ ALT:空空的“T”“T”“G”# # $房颤:num 0.301 0.515 0.52 # # $加:num 0.301 0.485 0.48 # # $ SAMP_FREQ_ALT: num 0.355 0.517 0.52 # # $ SAMP_MAF: num 0.355 0.483 0.48 # # $ R2: num 0.552 0.479 0.481 # # $ ER2:罗技NA NA NA # # $ PVALUE: num 0.9017 0.0806 0.0786 # # $人力资源:## $ Z: num 0.124 1.747 1.759 ## $ COEF: num 0.139 1.951 1.961 ## $ SE。COEF: num 1.12 1.12 1.11 ## $ N: int 52 52 52 ## $ N. event: int 21 21 21

3.2Sanger Imputation服务器

Sanger Imputation服务器使用SHAPEIT或EAGLE预阶段分型基因型,使用PBWT算法计算基因型并输出a.vcf.gz为每个染色体归档。这些.vcf.gz文件被用作输入gwasurvivr.这个函数,sangerCoxSurv使用修正的Cox比例风险回归生存:coxph.fit.专为基因数据而建,sangerCoxSurv允许用户过滤信息分数(imputation质量度量)和次要等位基因频率从参考面板用于imputation使用RefPanelAF的输入参数maf.filter.用户还提供了样本中的次要等位基因频率sangerCoxSurv输出。

可以通过提供矢量来选择样品进行分析sample.ids.桑格归责服务器的输出将样本返回为SAMP1,……, SAMPN,在那里N是样本的总数。样本顺序对应于用于输入的VCF文件中的样本顺序。注,样单也可在.fam如果基因分型数据最初在文件中请全部.bim而且.fam(PLINK)格式,然后转换为VCF。如果没有指定样品列表,则所有样品都包括在分析中。

在本例中,我们将从实验只对这些病人进行生存测试。的第一列pheno.file是示例id(我们将匹配这些)。我们包括年龄DrugTxYes,在生存模型中作为协变量。

vcf.file<- system.file(package="gwasurvivr", "extdata", "sanger.pbwt_reference_impute.vcf.gz") pheno.fl <- system.file(package="gwasurvivr", "extdata", "simulated_pheno.txt") pheno.file <- read.table(pheno.fl, sep=" ", header=TRUE, stringsAsFactors = FALSE) head(pheno.file)
## ID_1 ID_2事件时间年龄药物txyes性别组## 1 1 SAMP1 0 12.00 33.93 0男对照## 2 2 SAMP2 1 7.61 58.71 1男实验## 33 SAMP3 0 12.00 39.38 0女对照## 4 4 SAMP4 0 4.30 38.85 0男对照## 5 5 SAMP5 0 12.00 43.58 0男实验## 6 SAMP6 1 2.60 57.74 0男对照
#重新编码性别列并删除第一列pheno。file$SexFemale <- ifelse(pheno。file$sex=="female", 1L, 0L) #只选择实验组样本。ids样本。id <- pheno.file[pheno. file]文件组= =美元“实验”,]美元ID_2头(sample.ids)
##[1]“samp2”“samp5”“samp7”“samp9”“samp11”“samp12”

我们使用实验分组来证明如果不是最初所有的样本都是患者或病例(即病例对照研究和病例的生存是感兴趣的),人们可能希望如何准备他们的数据。我们还展示了id (sample.ids)需要成为阶级的载体字符.的chunk.size指读入的每个数据块的大小,默认为10,000行,用户可以根据自己的需要自定义。越大chunk.size运行分析所需的内存(RAM)就越多。推荐的chunk.size = 10000可能不应该超过chunk.size = 100000.这并不意味着gwasurvivr只有100,000个SNPs,它只是每次迭代分析的SNPs数量。

默认情况下,将输出为其他协变量调整的SNP的生存估计和p值(print.covs = '只有'),但用户可自行选择print.covs =所有得到模型中包含的协变量的系数估计值。根据所包含的协变量的数量,这会大大增加输出文件的大小。

使用sangerCoxSurv ?对于特定于参数的文档。

3.2.1之上单SNP分析

接下来我们运行sangerCoxSurv在默认情况下,print.covs = "只",将结果加载到R中,并按列提供输出的描述。verbose = TRUE用于这些示例,以便函数在运行时显示消息。

print.covs = "只"

sangerCoxSurv (vcf.file = vcf。文件,covariate.file =把。文件,id。列= " ID_2 " sample.ids =样本。id、水份。事件="time", event="event", covariates=c("age", "SexFemale", "DrugTxYes"), inter.term=NULL, print.covs="only", out.file="sanger_only", info.filter=0.3, maf.filter=0.005, chunk.size=100, verbose=TRUE, clusterObj=NULL)
分析开始于2022-11-01 18:07:36
模型中包含的协变量是:年龄,DrugTxYes, SexFemale
52个样品纳入分析
##分析0-100块
##分析数据块100-200
分析于2022-11-01 18:07:54完成
## 0个不符合阈值标准的snp被从分析中删除。
删除的snp列表可以在/tmp/RtmpWwMW96/sanger_only28b509403f43f8.snps_removed中找到
总共分析了3个snp
生存输出可以在/tmp/RtmpWwMW96/sanger_only28b509403f43f8.coxph找到

在这里,我们加载数据并浏览生存分析中每列中的前几个值。

str(头(sanger_only))
## 'data.frame': 3 obs。19个变量:# # $ RSID:空空的“rs34919020”“rs8005305”“rs757545375”# # $类型:罗技假假假# # $装备:int 14十四14 # # $ POS: int 19459185 20095842 19459185 # # $ REF:空空的“C”“G”“A”# # $ ALT:空空的“T”“T”“G”# # $ RefPanelAF: num 0.301 0.515 0.52 # # $ SAMP_FREQ_ALT: num 0.355 0.517 0.52 # # $ SAMP_MAF: num 0.355 0.483 0.48 # # $ INFO: num 0.552 0.479 0.481 # # $ PVALUE: num 0.713 0.805 0.798 # # $人力资源:num 1.224 0.885 0.881 # # $ HR_lowerCI:## $ Z: num 0.368 -0.246 -0.255 ## $ COEF: num 0.203 -0.123 -0.127 ## $ SE。COEF: num 0.55 0.498 0.498 ## $ N: int 52 52 52 ## $ N. event: int 21 21 21

列名称,其中包含来自生存分析的描述和协变量,并指定默认值print.covs = "只"

3.2.2具有协变量相互作用的SNP

SNP*协变量相互作用可以使用inter.term论点。在本例中,我们将使用DrugTxYes作为我们想要测试与SNP相互作用的协变量。

print.covs = "只"

sangerCoxSurv (vcf.file = vcf。文件,covariate.file =把。文件,id。列= " ID_2 " sample.ids =样本。id、水份。事件="time", event="event", covariates=c("age", "SexFemale", "DrugTxYes"), inter.term="DrugTxYes", print.covs="only", out.file="sanger_intx_only", info.filter=0.3, maf.filter=0.005, chunk.size=100, verbose=TRUE, clusterObj=NULL)

3.3IMPUTE2归责

IMPUTE2是一个基因型imputation和单倍型分期程序(Howie et al 2009)。IMPUTE2为每个输入的染色体块输出6个文件(通常大小为5mb)。使用分析只需要其中的2个文件gwasurvivr

  • 基因型档案(.impute
  • 样本档案(采样

可以阅读有关这些格式的更多信息

我们将加载和预处理遗传数据和表型数据(covariate.file).

impute.file<- system.file(package="gwasurvivr", "extdata", "impute_example.impute2.gz") sample.file <- system.file(package="gwasurvivr", "extdata", "impute_example.impute2_sample") covariate.file <- system.file(package="gwasurvivr", "extdata", "simulated_pheno.txt") covariate.file <- read.table(covariate.file, sep=" ", header=TRUE, stringsAsFactors = FALSE) covariate.file$SexFemale <- ifelse(covariate.file$sex=="female", 1L, 0L) sample.ids <- covariate.file[covariate.file$group=="experimental",]$ID_2

要使用IMPUTE2执行生存分析,函数参数非常相似michiganCoxSurv而且sangerCoxSurv,但是函数现在接受染色体参数。这需要用这些snp所在的染色体正确地注释文件输出。这纯粹是IMPUTE2和我们如何利用的产物GWASTools在这个函数中。

3.3.1单SNP分析

首先,我们将做没有交互项的分析,然后做有交互项的分析。单个SNP分析的推荐输出设置为print.cov = "只"

impute2CoxSurv (impute.file =转嫁。文件,sample.file =样本。File, chr=14, covariable . File =covariate。文件,id。列= " ID_2 " sample.ids =样本。id、水份。事件="time", event="event", covariates=c("age", "SexFemale", "DrugTxYes"), inter.term=NULL, print.covs="only", out.file="impute_example_only", chunk.size=100, maf.filter=0.005, exclude.snps=NULL, flip.dosage=TRUE, verbose=TRUE, clusterObj=NULL)
模型中包含的协变量是:年龄,DrugTxYes, SexFemale
52个样品纳入分析
分析开始于2022-11-01 18:08:09
##确定snp和样本的数量…
##包括所有snp。
# #扫描。Df没有给出。自动分配scanid。
##阅读示例文件…
##阅读基因型文件…
## 1中的1
##写入注释…
# #压缩……
##清理GDS文件的碎片:##打开文件'/tmp/RtmpWwMW96/28b509717d82eb。gds' (3.3K) ## # of fragments: 30 ## save to '/tmp/RtmpWwMW96/28b509717d82eb.gds.tmp' ## rename '/tmp/RtmpWwMW96/28b509717d82eb.gds.tmp' (2.4K, reduced: 987B) ## # of fragments: 14
# # * * * * *压缩时间  ****** ## 用户:0.07 # #系统:0.02 # #时间:0.09  ## *****************************
分析第1/1部分…
从分析中删除不符合给定阈值标准或MAF = 0的snp
##删除的snp列表保存到/tmp/RtmpWwMW96/impute_example_only28b5095aea0323.snps_removed
##总共有3个snp被纳入分析
Cox模型结果输出保存到/tmp/RtmpWwMW96/impute_example_only28b5095aea0323.coxph
分析于2022-11-01 18:08:11完成

在这里,我们加载数据并查看每列输出中的前几个值。

Impute2_res_only <- read.table("impute_example_only. table "), sep="\t",头=TRUE, stringsAsFactors = FALSE) str(头(impute2_res_only))
## 'data.frame': 3 obs。17个变量:# # $ RSID:空空的“rs34919020”“rs8005305”“rs757545375”# # $类型:空空的  "---" "---" "---" ## $ 装备:int 14十四14 # # $ POS: int 19459185 20095842 19459185 # # $ A0:空空的“C”“G”“A”# # $ A1:空空的“T”“T”“G”# # $ exp_freq_A1: num 0.355 0.517 0.52 # # $ SAMP_MAF: num 0.355 0.483 0.48 # # $ PVALUE: num 0.713 0.805 0.798 # # $人力资源:num 1.224 0.885 0.881 # # $ HR_lowerCI: num 0.417 0.333 0.332 # # $ HR_upperCI: num 3.6 2.35 2.34 # # $ Z: num 0.368 -0.246 -0.255 # # $系数:num 0.203 -0.123 -0.127 ## $ SE。系数:num 0.55 0.498 0.498 ## $ N : int 52 52 52 ## $ N.EVENT : int 21 21 21

3.3.2SNP协变量相互作用

现在我们将使用SNP*协变量相互作用进行生存分析impute2CoxSurv

impute2CoxSurv (impute.file =转嫁。文件,sample.file =样本。File, chr=14, covariable . File =covariate。文件,id。列= " ID_2 " sample.ids =样本。id、水份。事件="time", event="event", covariates=c("age", "SexFemale", "DrugTxYes"), inter.term="DrugTxYes", print.covs="only", out.file="impute_example_intx", chunk.size=100, maf.filter=0.005, flip.dosage=TRUE, verbose=FALSE, clusterObj=NULL, keepGDS=FALSE)
##确定snp和样本的数量…
##包括所有snp。
# #扫描。Df没有给出。自动分配scanid。
##阅读示例文件…
##阅读基因型文件…
## 1中的1
##写入注释…
# #压缩……
##清理GDS文件的碎片:##打开文件'/tmp/RtmpWwMW96/28b509401c28。gds' (3.3K) ## # of fragments: 30 ## save to '/tmp/RtmpWwMW96/28b509401c28.gds.tmp' ## rename '/tmp/RtmpWwMW96/28b509401c28.gds.tmp' (2.4K, reduced: 987B) ## # of fragments: 14
# # * * * * *压缩时间  ****** ## 用户:0.075 # #系统:0.012 # #时间:0.087  ## *****************************

在这里,我们加载数据,并浏览从使用SNP*相互作用生存分析输出的每列中的前几个值print.covs = "只"

Impute2_res_intx <- read.table("impute_example_intx. "coxph", sep="\t", header=TRUE, stringsAsFactors = FALSE) str(head(impute2_res_intx))
## 'data.frame': 3 obs。17个变量:# # $ RSID:空空的“rs34919020”“rs8005305”“rs757545375”# # $类型:空空的  "---" "---" "---" ## $ 装备:int 14十四14 # # $ POS: int 19459185 20095842 19459185 # # $ A0:空空的“C”“G”“A”# # $ A1:空空的“T”“T”“G”# # $ exp_freq_A1: num 0.355 0.517 0.52 # # $ SAMP_MAF: num 0.355 0.483 0.48 # # $ PVALUE: num 0.9017 0.0806 0.0786 # # $人力资源:num 1.15 7.03 7.11 # # $ HR_lowerCI: num 0.127 0.789 0.799 # # $ HR_upperCI: num 10.4 62.7 63.2 # # $ Z: num 0.124 1.747 1.759 # # $系数:num 0.139 1.951 1.961 ## $ SE。系数:num 1.12 1.12 1.11 ## $ N : int 52 52 52 ## $ N.EVENT : int 21 21 21

4plinkCoxSurv

5批处理的例子

5.1批处理示例:sangerCoxSurv

用于多个分析和不同子集的批处理作业很容易实现gwasurvivr.这些类型的分析应该保留给基于unix的高性能计算集群使用。这是由包装促成的批处理,它可以内化bash中的R变量。首先写一个R脚本(例如:mysurvivalscript。R)来传递bash。

注意:重要的是要参考手册的入门部分,以了解为此需要安装的软件包

# # mysurvivalscript。R库(gwasurvivr)library(batch) parseCommandArgs(evaluate=TRUE) # this is loaded in the batch package options("gwasurvivr.cores"=4) vcf.file <- system.file(package="gwasurvivr", "extdata", vcf.file) pheno.fl <- system.file(package="gwasurvivr", "extdata", pheno.file) pheno.file <- read.table(pheno.fl, sep=" ", header=TRUE, stringsAsFactors = FALSE) # recode sex column and remove first column pheno.file$SexFemale <- ifelse(pheno.file$sex=="female", 1L, 0L) # select only experimental group sample.ids sample.ids <- pheno.file[pheno.file$group=="experimental",]$ID_2 ## -- unlist the covariates ## (refer below to the shell script as to why we are doing this) covariates <- unlist(sapply(covariates, strsplit, "_", 1, "[[")) sangerCoxSurv(vcf.file=vcf.file, covariate.file=pheno.file, id.column="ID_2", sample.ids=sample.ids, time.to.event=time, event=event, covariates=covariates, inter.term=NULL, print.covs="only", out.file=out.file, info.filter=0.3, maf.filter=0.005, chunk.size=100, verbose=TRUE, clusterObj=NULL)

现在我们可以运行shell脚本。这可以很好地与清单文件一起使用,以设置具有不同结果和不同样本子集的多次运行。我们定义了一个清单文件,其中的列对应于用户想要传递的函数,每一行都是用户想要运行的一个单独的分析。协变量由下划线(“_”).这是为了让它可以正确地传递,也是为什么我们使用函数拆分协变量。

#!/bin/bash DIRECTORY=/path/to/dir/impute_chr模块加载R R——script ${DIRECTORY}/survival/code/ mysurvivvalscript。R -q——args \ vcf。文件${DIRECTORY}/sanger.pbwt_reference_impute.vcf.gz \ pheno。file ${DIRECTORY}/phenotype_data/simulated_pheno.txt \协变量DrugTxYes_age_SexFemale\ time.to.event time \ event event \ out。目录文件${}/ /结果/ sanger_example_output生存

上面的文件路径完全是任意的,只是用作文件结构和理想输出存储位置的示例。

5.2批处理示例impute2CoxSurv

和for完全一样sangerCoxSurv但是这次使用的是输入参数impute2CoxSurv.看到impute2CoxSurv ?寻求帮助

5.3批处理示例密歇根coxsurv

和for完全一样sangerCoxSurv但是这次使用的是输入参数michiganCoxSurv.看到michiganCoxSurv ?寻求帮助

会话信息

这是的输出sessionInfo ()在编译本文档的系统上:

## R正在开发中(不稳定)(2022-10-25 r83175) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 22.04.1 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas。so ## 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_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats graphics grDevices utils datasets methods基础## ##其他附加包:## [1]gwasurvivr_1.17.0 knitr_1.40 BiocStyle_2.27.0 ## ##通过命名空间加载(且未附加):# # # # [1] DBI_1.1.3 gdsfmt_1.35.0 [3] bitops_1.0-7 sandwich_3.0-2 # # [5] biomaRt_2.55.0 rlang_1.0.6 # # [7] magrittr_2.0.3 matrixStats_0.62.0 # # [9] compiler_4.3.0 RSQLite_2.2.18 # # [11] mgcv_1.8-41 GenomicFeatures_1.51.0 # # [13] png_0.1-7 vctrs_0.5.0 # # [15] quantreg_5.94 stringr_1.4.1 # # [17] SNPRelate_1.33.0 pkgconfig_2.0.3 # # [19] crayon_1.5.2 fastmap_1.1.0 # # [21] dbplyr_2.2.1 backports_1.4.1 # # [23] XVector_0.39.0 ellipsis_0.3.2 # # [25] utf8_1.2.2 Rsamtools_2.15.0 # # [27] rmarkdown_2.17GWASTools_1.45.0 # # [29] MatrixModels_0.5-1 purrr_0.3.5 # # [31] bit_4.0.4 xfun_0.34 # # [33] logistf_1.24.1 zlibbioc_1.45.0 # # [35] cachem_1.0.6 GenomeInfoDb_1.35.0 # # [37] jsonlite_1.8.3 progress_1.2.2 # # [39] blob_1.2.3 highr_0.9 # # [41] DelayedArray_0.25.0 BiocParallel_1.33.0 # # [43] broom_1.0.1 parallel_4.3.0 # # [45] prettyunits_1.1.1 R6_2.5.1 # # [47] VariantAnnotation_1.45.0 bslib_0.4.0 # # [49] stringi_1.7.8 rtracklayer_1.59.0 # # [51] DNAcopy_1.73.0 lmtest_0.9-40 # # [53] GenomicRanges_1.51.0jquerylib_0.1.4 ## [55] Rcpp_1.0.9 bookdown_0.29 ## [57] assertthat_0.2.1 SummarizedExperiment_1.29.0 ## [59] zoo_1.8-11 IRanges_2.33.0 ## [61] Matrix_1.5-1 splines_4.3.0 ## [63] tidyselect_1.2.0 yaml_2.3.6 ## [65] codetools_0.2-18 curl_4.3.3 ## [67] lattice_0.20-45 tibble_3.1.8 ## [69] Biobase_2.59.0 quantsmooth_1.65.0 ## [71] withr_2.5.0 KEGGREST_1.39.0 ## [73] evaluate_0.17 survival_3.4-0 ## [75] BiocFileCache_2.7.0 xml2_1.3.3 ## [77] Biostrings_2.67.0 filelock_1.0.2 ## [79] pillar_1.8.1 BiocManager_1.30.19 ## [81] MatrixGenerics_1.11.0 mice_3.14.0 ## [83] stats4_4.3.0 generics_0.1.3 ## [85] RCurl_1.98-1.9 S4Vectors_0.37.0 ## [87] hms_1.1.2 GWASExactHW_1.01 ## [89] glue_1.6.2 tools_4.3.0 ## [91] BiocIO_1.9.0 data.table_1.14.4 ## [93] SparseM_1.81 BSgenome_1.67.0 ## [95] GenomicAlignments_1.35.0 XML_3.99-0.12 ## [97] grid_4.3.0 tidyr_1.2.1 ## [99] AnnotationDbi_1.61.0 nlme_3.1-160 ## [101] formula.tools_1.7.1 GenomeInfoDbData_1.2.9 ## [103] restfulr_0.0.15 cli_3.4.1 ## [105] rappdirs_0.3.3 fansi_1.0.3 ## [107] dplyr_1.0.10 sass_0.4.2 ## [109] digest_0.6.30 operator.tools_1.6.3 ## [111] BiocGenerics_0.45.0 rjson_0.2.21 ## [113] memoise_2.0.1 htmltools_0.5.3 ## [115] lifecycle_1.0.3 httr_1.4.4 ## [117] bit64_4.0.5 MASS_7.3-58.1

参考文献

  1. Terry M. Therneau和Patricia M. Grambsch(2000)。生存数据建模:扩展Cox模型。施普林格,纽约。ISBN 0-387-98784-3。

  2. 马丁·摩根,瓦莱丽·奥本chain,吉姆·赫斯特,Hervé Pagès(2017)。summarizeexperiment: summarizeexperiment容器。R包版本为1.6.3。

  3. Gogarten SM, Bhangale T, Conomos MP, Laurie CA, McHugh CP, Painter I, Zheng X, Crosslin DR, Levine D, Lumley T, Nelson SC, Rice K, Shen J, Swarnkar R, Weir BS和Laurie CC(2012)。“GWASTools:用于全基因组关联研究质量控制和分析的R/Bioconductor包。”生物信息学,28(24),pp. 3329-3331。doi: 10.1093 /生物信息学/ bts610。

  4. B. N. Howie, P. Donnelly和J. Marchini(2009)一种用于下一代全基因组关联研究的灵活而准确的基因型植入方法。PLoS Genetics 5(6): e1000529

  5. Das S, Forer L, Schönherr S, Sidore C, Locke AE, Kwong A, Vrieze S, Chew EY, Levy S, McGue M, Schlessinger D, Stambolian D, Loh PR, Iacono WG, Swaroop A, Scott LJ, Cucca F, Kronenberg F, Boehnke M, Abecasis GR, Fuchsberger C。下一代基因型植入服务和方法。自然遗传学48,1284-1287(2016)。27571263

  6. 使用位置Burrows-Wheeler Transform (PBWT)的高效单倍型匹配和存储”,Richard Durbin Bioinformatics 30:1266-72(2014)。