密歇根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 =所有
得到模型中包含的协变量的系数估计值。根据所包含的协变量的数量,这会大大增加输出文件的大小。
单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
具有协变量相互作用的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
Sanger 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 ?
对于特定于参数的文档。
单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 = "只"
具有协变量相互作用的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)
IMPUTE2归责
IMPUTE2是一个基因型imputation和单倍型分期程序(Howie et al 2009)。IMPUTE2为每个输入的染色体块输出6个文件(通常大小为5mb)。使用分析只需要其中的2个文件gwasurvivr
:
可以阅读有关这些格式的更多信息
我们将加载和预处理遗传数据和表型数据(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
在这个函数中。
单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
SNP协变量相互作用
现在我们将使用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