Eagle2单倍型定相工具 Haplotype phasing

本文内容:

 eagle2简介
 下载与安装
 使用方法
  无参考面板phasing
  有参考面板phasing
 输出
 附录:eagle -h
 参考

1.eagle2简介

Eagle是一款可在有参考面板或无参考面板的情况下,对样本的单倍体型进行估计的软件。 Eagle2目前是 Sanger 及Michigan 填充服务器的默认方法。该软件使用了一种快速的基于隐马尔科夫模型(HMM)的算法,大幅提升了速度与准确度。该软件的两个关键点为:基于 Burrows-Wheeler transform的一种新的数据结构,以及只探索HMM最相关路径的快速搜索算法。

2.下载与安装:

下载地址:http://data.broadinstitute.org/alkesgroup/Eagle/downloads/

文档地址:https://alkesgroup.broadinstitute.org/Eagle/Eagle_manual.html#x1-30002

平台要求:LINUX

内存要求:

无参考panel时,内存占用与样本数N以及SNP数呈线性关系。例如:UKBB 150K的样本,每1000个SNP需要1GB 内存。

有参考panel时,每个基因型需要约1.5个字节。

3 基本使用方法

下载安装后可以直接使用,选项可由以下格式指定 --optionName=optionValue.

一个最简单的示例如下:

./eagle --bfile=plink --geneticMapFile=USE_BIM --outPrefix=phased

eagle支持多线程,可以使用--numThreads来指定eagle使用的CPU核心数。

4.1 无参考面板的Phasing

1.输入

使用-bfile=prefix 指定输入的PLINK文件,注意eagle一次只phase一条染色体,如果PLINK文件里包含多条染色体,则需要通过-chrom指定染色体。

注意: PLINK在表示chr X (chrom 23=X)的non-PAR部分时,将所有男性的未丢失的基因型都转换为纯合,在表示PAR1与PAR2时(chrom 25=XY),则使用一般的二倍体基因型。如果只是想对chr X 的non-PAR部分进行phasing,那么只需输入 chrom 23 即可。如果要对整个X染色体(包括PAR与non-PAR),那么需要首先将plink文件中PAR与non-PAR的基因型合并,(可以使用plink的-merge-x)。VCF文件则不需要额外处理。

2.参考的遗传图谱

如果你的PILNK文件没有相应的遗传坐标文件(单位为摩根),可以使用eagle提供的事先处理好的参考图谱(从HapMap下载并转换格式)。使用时,选项如下:

-geneticMapFile=tables/genetic_map_hg##_withX.txt.gz

3.缺失值处理

phasing过程中,缺失的基因型会被自动填补。eagle输出的是best-guess单倍体基因型。如果不需要自动填补,输入文件为VCF,BCF时,则可以使用 --noImpMissing 来禁用自动填补功能。

4.基因型QC

当使用PLINK文件时,eagle会根据丢失率自动对样本与SNP进行QC,默认的阈值为0.01(自动去掉丢失率高于1%的样本或SNP). eagle也可以通过指定–maxMissingPerSnp 与 –maxMissingPerIndiv 来手动对样本与SNP进行QC,但通常我们会使用QC过得PLINK文件,所以这一步可以使用–maxMissingPerSnp 1 与 –maxMissingPerIndiv 1(允许的最大丢失率为1,也就是没有施加任何QC)来略过这一步。在使用VCF文件时,eagle则不进行任何QC

5.样本与SNP的过滤

输入使用plink文件时,可以通过 –remove 与 –exclude 来对样本与SNP进行过滤

对于PLINK与VCF/BCF输入,可以使用 –bpStart and –bpEnd来限定phasing的区域(例如: –bpStart=50e6 以及–bpEnd=100e6)

6.模型参数指定

eagle2中主要调节运算速度与准确度平衡的参数选项为 –Kpbwt,该参数指定在各个样本的phasing中eagle2使用的调节单倍体型的数量,默认值为10000.

使用例:

./eagle \
	--bfile=plink_hg19 \
	--geneticMapFile=genetic_map_hg19_withX.txt.gz \
	--chrom=1 \
	--outPrefix=phased \
	--maxMissingPerSnp=1 \
	--maxMissingPerIndiv=1 \
	--numThreads=8

4.2 有参考面板Phasing

注意如果你的样本量是参考面板样本量的两倍以上时,使用参考样本并不会大幅提升phasing的精度。使用参考面板时,输入只能是VCF或BCF格式,分别使用–vcfTarget and –vcfRef 里指定目标以及参考样本的经过tabix索引的vcf,bcf文件。

如果vcf,bcf文件中含有多条染色体的数据,那么需要用–chrom 来指定。

其余的选项与无参考时vcf输入的情况支持的选项相似。

参考面板可以使用1000 genome的数据,但须经过一定处理,详见:https://alkesgroup.broadinstitute.org/Eagle/ 中5.3 Reference panels from the 1000 Genomes Project

5 输出

当输入为PLINK文件时,eagle输出为gzip压缩后的Oxford HAPS/SAMPLE 格式文件 (详见SHAPEIT2 ),输出文件前缀可由–outPrefix 指定。

当输入为VCF,BCF文件时,输出也出VCF,BCF文件。输出文件前缀可由–outPrefix 指定。可用 –vcfOutFormat=z 指定输出文件格式。

6 附录

./eagle -h
                      +-----------------------------+
                      |                             |
                      |   Eagle v2.4.1              |
                      |   November 18, 2018         |
                      |   Po-Ru Loh                 |
                      |                             |
                      +-----------------------------+

Copyright (C) 2015-2018 Harvard University.
Distributed under the GNU GPLv3+ open source license.

Command line options:

eagle -h 

Options:

  --geneticMapFile arg             HapMap genetic map provided with download: 
                                   tables/genetic_map_hg##.txt.gz
  --outPrefix arg                  prefix for output files
  --numThreads arg (=1)            number of computational threads

Input options for phasing without a reference:
  --bfile arg                      prefix of PLINK .fam, .bim, .bed files
  --bfilegz arg                    prefix of PLINK .fam.gz, .bim.gz, .bed.gz 
                                   files
  --fam arg                        PLINK .fam file (note: file names ending in 
                                   .gz are auto-decompressed)
  --bim arg                        PLINK .bim file
  --bed arg                        PLINK .bed file
  --vcf arg                        [compressed] VCF/BCF file containing input 
                                   genotypes
  --remove arg                     file(s) listing individuals to ignore (no 
                                   header; FID IID must be first two columns)
  --exclude arg                    file(s) listing SNPs to ignore (no header; 
                                   SNP ID must be first column)
  --maxMissingPerSnp arg (=0.1)    QC filter: max missing rate per SNP
  --maxMissingPerIndiv arg (=0.1)  QC filter: max missing rate per person

Input/output options for phasing using a reference panel:
  --vcfRef arg                     tabix-indexed [compressed] VCF/BCF file for 
                                   reference haplotypes
  --vcfTarget arg                  tabix-indexed [compressed] VCF/BCF file for 
                                   target genotypes
  --vcfOutFormat arg (=.)          b|u|z|v: compressed BCF (b), uncomp BCF (u),
                                   compressed VCF (z), uncomp VCF (v)
  --noImpMissing                   disable imputation of missing target 
                                   genotypes (. or ./.)
  --allowRefAltSwap                allow swapping of REF/ALT in target vs. ref 
                                   VCF
  --outputUnphased                 output unphased sites (target-only, 
                                   multi-allelic, etc.)
  --keepMissingPloidyX             assume missing genotypes have correct ploidy
                                   (.=haploid, ./.=diploid)
  --vcfExclude arg                 tabix-indexed [compressed] VCF/BCF file 
                                   containing variants to exclude from phasing

Region selection options:
  --chrom arg (=0)                 chromosome to analyze (if input has many)
  --bpStart arg (=0)               minimum base pair position to analyze
  --bpEnd arg (=1e9)               maximum base pair position to analyze
  --bpFlanking arg (=0)            (ref-mode only) flanking region to use 
                                   during phasing but discard in output

Algorithm options:
  --Kpbwt arg (=10000)             number of conditioning haplotypes
  --pbwtIters arg (=0)             number of PBWT phasing iterations (0=auto)
  --expectIBDcM arg (=2.0)         expected length of haplotype copying (cM)
  --histFactor arg (=0)            history length multiplier (0=auto)
  --genoErrProb arg (=0.003)       estimated genotype error probability
  --pbwtOnly                       in non-ref mode, use only PBWT iters 
                                   (automatic for sequence data)
  --v1                             use Eagle1 phasing algorithm (instead of 
                                   default Eagle2 algorithm)

7 参考:

https://alkesgroup.broadinstitute.org/Eagle/

Loh P-R, Danecek P, Palamara PF, Fuchsberger C, Reshef YA, Finucane HK, Schoenherr S, Forer L, McCarthy S, Abecasis GR, Durbin R, and Price AL. Reference-based phasing using the Haplotype Reference Consortium panel. Nature Genetics (2016).

SNP的rsID与位置信息的相互匹配 rsID/ chr:pos conversion

本文内容:

1 个别SNP位点或rsID查询 
	dbsnp网页查询
2 少量转换可用的网页工具 (100,000 snp以内)
	SNP-nexus网页工具 
	vep注释工具网页版
3 大量转换使用的命令行工具 
	ANNOVAR命令行
	VEP命令行
4 参考

rsID与染色体位置信息的匹配或转换是生物信息学研究中必不可少的,但却又是十分繁琐的一项步骤,很多同学都在纠结这个问题,本文将总结常用的转换方法,以供参考:

转换前需要考虑的问题:

  1. 变异的标准化 :Variant Normalization 变异的标准化
  2. 参考基因组的版本 :人类参考基因组 Human reference genome hg19/hg38/GRCh37/GRCh38/b37/hs375d

1.个别SNP的转换:

直接使用dbsnp(详见:SNP数据库 – dbSNP)查询,查询个别SNP时方便快捷,可以直接搜rsID

也可以以chr:pos的形式搜rsID

2.少量转换可用的网页工具 (100,000 snp以内)

2.1 SNPnexus : https://www.snp-nexus.org/v4/

首先输入用户信息,学术用途是免费的,使用自己的edu邮箱即可

之后选择assembly的版本

选择后可以通过多种方式提交自己要查询的SNP

2.1.1 这里我们通过上传文件的方式对rsID进行注释

输入文件 snp.txt 格式如下 (其他格式的具体描述详见:https://www.snp-nexus.org/v4/guide/

dbsnp   rs293794
dbsnp   rs1052133
dbsnp   rs3136820
dbsnp   rs2272615
dbsnp   rs2953993
dbsnp   rs1799782
dbsnp   rs25487
dbsnp   rs2248690
dbsnp   rs4918
dbsnp   rs1071592

然后是注释用的数据选择,各数据库版本见:https://www.snp-nexus.org/v4/guide/#data_source

因为我们只查询位置信息,就不勾选其他数据库,只使用默认的Ensembl

点击submit query后,稍作等待,结果就会显示出来,可以导出为VCF或txt文本格式。

2.1.2 位点转换为rsID时,输入文件如下:

格式为:< Type Name Position Allele1 Allele2 Strand > # Genomic position data for novel SNPs

chromosome	1	9262273	G	A	1
chromosome	1	45015006	G	A	1
chromosome	1	226982947	C	T	1
chromosome	2	189001450	G	A	1
chromosome	17	46010375	T	C	1

提交后即可查询,结果如下所示

2.2 VEP网页版

VEP注释工具使用详见(预留链接)

VEP网页版:https://asia.ensembl.org/info/docs/tools/vep/online/index.html

点击launch VEP

2.2.1 可以在input data处直接粘贴要查询的rsID,或是上传文件

点击输入框下方的example,可以查看可用的输入格式

这里以Variant identifiers 为例:

选择合适数据库,提交后可以看到查询状态

完成后点击View results

可查看基本信息,也可以导出

2.2.2 位点转换rsID时,使用如下Ensembl默认的输入格式即可:

3.大量转换时的命令行工具

3.1 可使用如上所述VEP工具的命令行版本

下载地址与文档见:https://asia.ensembl.org/info/docs/tools/vep/index.html

3.2 也可以使用ANNOVAR

安装与使用具体使用方法见:使用ANNOVAR 对Variants进行功能注释 Annotation POST-GWAS analysis

这里只简单介绍rsID与chr:pos互相转换的方法

3.2.1 rsID转chr:pos

使用ANNOVAR的convert2annovar.pl 程序与-format rsid选项即可注释位置信息,使用例如下所示,

(注意参考基因组的版本)

[kaiwang@biocluster ~/]$ cat example/snplist.txt 
rs74487784
rs41534544
rs4308095
rs12345678

[kaiwang@biocluster ~/]$ convert2annovar.pl -format rsid example/snplist.txt -dbsnpfile humandb/hg19_snp138.txt > snplist.avinput 
NOTICE: Scanning dbSNP file humandb/hg19_snp138.txt...
NOTICE: input file contains 4 rs identifiers, output file contains information for 4 rs identifiers
WARNING: 1 rs identifiers have multiple records (due to multiple mapping) and they are all written to output

[kaiwang@biocluster ~/]$ cat snplist.avinput 
chr2 186229004 186229004 C T rs4308095
chr7 6026775 6026775 T C rs41534544
chr7 6777183 6777183 G A rs41534544
chr9 3901666 3901666 T C rs12345678
chr22 24325095 24325095 A G rs74487784

3.2.2 chr:pos转rsID

位点信息转化为rsID时需要使用基于筛选的注释:

这里使用avsnp150,具体描述可见:https://annovar.openbioinformatics.org/en/latest/user-guide/download/

使用方法如下:

#首先下载注释用数据库:
annotate_variation.pl -downdb -webfrom annovar -buildver hg19 avsnp150 humandb/

#完成后即可进行转换
annotate_variation.pl ex1.avinput humandb/ -filter -build hg19 -dbtype avsnp150

输入文件使用上述的(类bed文件),ex1.avinput

chr2 186229004 186229004 C T
chr7 6026775 6026775 T C
chr7 6777183 6777183 G A
chr9 3901666 3901666 T C
chr22 24325095 24325095 A G 

输出文件如下,ex1.avinput.hg19_avsnp150_dropped,

(注意某些SNP的rsID有合并等原因,版本不同rsID注释结果不一定相同)

avsnp150        rs4308095       chr2 186229004 186229004 C T
avsnp150        rs140195        chr22 24325095 24325095 A G
avsnp150        rs2228006       chr7 6026775 6026775 T C
avsnp150        rs766725467     chr7 6777183 6777183 G A
avsnp150        rs12345678      chr9 3901666 3901666 T C

注释rsID可能会遇到的问题:

https://annovar.openbioinformatics.org/en/latest/articles/dbSNP/

参考:

dbsnp:https://www.ncbi.nlm.nih.gov/snp/

annovar:https://annovar.openbioinformatics.org/en/latest/

vep:https://asia.ensembl.org/info/docs/tools/vep/index.html

snpnexus:https://www.snp-nexus.org/v4/

GWAS方法 – SAIGE 校正样本对照失衡的广义线性混合模型

关键词:saige,GLMM,case-control imbalance,binary phenotype, SPA

本文内容:

SAIGE开发背景
SAIGE原理简介
	第一步
	第二步
	注意事项
SAIGE使用方法
	安装
	第一步
	第二步
	结果解读
参考

一句话解释:SAIGE是一种基于广义线性混合模型的,针对二分类表型(binary phenotype)能够调整样本对照不平衡(case-control imbalance)与隐性关联(cryptic relatedness)的GWAS检验方法。

① SAIGE开发背景:

在大规模生物银行,对上千种表型进行的GWAS中,大多数二分类变量的病例都远小于对照,线性混合模型,或逻辑斯蒂混合模型对于此种病例对照严重失衡(1:10,甚至到1:100)的表型,都不能很好地控制1类错误,容易造成假阳性出现。

SAIGE便是针对此问题开发的方法,目前UKBB等GWAS概括性数据所使用的方法均为SAIGE。SAIGE的特点是利用 SPA(saddlepoint approximation , 鞍点近似法) 在病例对照比例严重失衡时,仍然获得准确的p值。

② SAIGE原理简介:

SAIGE全称是 Scalable and Accurate Implementation of GEneralized mixed model 广义混合模型的可扩展且准确的实现。

SAIGE 与 bolt-lmm 或 regenie 类似,都需要两个步骤。saige基于广义线性混合模型GLMM模型:

https://gwaslab.org/wp-content/uploads/2021/04/image-26.png?w=301

其中

为给定协变量与基因型时,第i个样本为病例的概率,bi为随机效应,服从N(0,τψ)的分布。其中ψ是N X N的遗传关联矩阵(GRM),τ是加性遗传方差。Xi为协变量,Gi表示等位基因的个数,取值为0,1,2,α为 (1+p)x 1 的表示固定效应的系数向量,β为遗传效应的系数。

具体流程如下:

第一步(构建null模型),估计方差与其他参数:

利用 array genotype ,估计 null 逻辑斯蒂混合模型(GLMM)。

https://gwaslab.org/wp-content/uploads/2021/04/image-27.png?w=236

SAIGE通过PQL方法 和 AI-REML 算法简化计算提高效率。

迭代估计模型中参数:

每一次迭代中,让

为y的估计的均值,

则权重矩阵为

为N X N的如下工作向量的方差矩阵

目前诸如GMMAT等方法在这一步时需要计算该方差矩阵的逆,

当N较大时,该步骤计算量巨大,为了简化计算,SAIGE采用了PCG算法(PCG是一种找到线性系统解的数值方法,BOLT_LMM也用到此算法)

在如下零假设(null hypothesis)的情况下:

分数检验统计量由下式得到

其方差Var(T)为

其中

因为我们需要对每一个SNP都计算P,计算量巨大,

SAIGE假设真随机效应b已经给定,并计算两种情况下T的方差的比值,来进行简化计算

假设b给定时:

则方差比值r

saige中会取随机取30个snp来估计r。

第二步(检验):分数检验,并通过SPA调整。

采用上述比值r对分数检验的T检验量进行调整,即可得到SAIGE的T检验量。

一般情况下,传统方法假设T渐进服从一个高斯分布,但是当病例对照(case-control)的比例不平衡,以及被检验变异有较低的MAC(Minor allele count)时,T统计量就会与高斯分布有显著偏离。saige方法之所以能调节病例对照不平衡 ,关键点就在于利用SPA对检验的调整,以获得一个较为准确的P值。(saige采用了fastSPA)

SPA:saddlepoint approximation (SPA) 鞍点近似法

SAIGE整体架构如下所示:

https://github.com/weizhouUMICH/img/raw/master/SAIGE2step.png

③ SAIGE的注意事项:

注意:该比值只有在MAC大于30时,才保持恒定,当MAC小于30时,要谨慎使用此方法

④ SAIGE使用方法:

saige的github页面:https://github.com/weizhouUMICH/SAIGE

安装:

saige是基于R的软件,有多种安装方法:

可以通过R安装,也可以通过CONDA安装,但安装过程复杂,个人推荐使用docker进行安装,方便快捷。

docker pull wzhou88/saige:0.44.2

第一步,估计空模型

输入文件:

1 基因型文件PLINK格式

2 表性文件

3 协变量文件

#For Binary traits:
Rscript step1_fitNULLGLMM.R     \
        --plinkFile=./input/nfam_100_nindep_0_step1_includeMoreRareVariants_poly \
        --phenoFile=./input/pheno_1000samples.txt_withdosages_withBothTraitTypes.txt \
        --phenoCol=y_binary \
        --covarColList=x1,x2 \
        --sampleIDColinphenoFile=IID \
        --traitType=binary        \
        --outputPrefix=./output/example_binary \
        --nThreads=4 \
        --LOCO=FALSE \
        --IsOverwriteVarianceRatioFile ## v0.38. Whether to overwrite the variance ratio file if the file already exists

#For Quantitative traits, if not normally distributed, inverse normalization needs to be specified to be TRUE --invNormalize=TRUE
Rscript step1_fitNULLGLMM.R     \
        --plinkFile=./input/nfam_100_nindep_0_step1_includeMoreRareVariants_poly \
        --phenoFile=./input/pheno_1000samples.txt_withdosages_withBothTraitTypes.txt \
        --phenoCol=y_quantitative \
        --covarColList=x1,x2 \
        --sampleIDColinphenoFile=IID \
        --traitType=quantitative       \
		--invNormalize=TRUE	\
        --outputPrefix=./output/example_quantitative \
        --nThreads=4 \\
        --LOCO=FALSE	\\
	--tauInit=1,0

共有三个输出文件:

  • .rda文件,包含空模型
  • 30个随机选择的SNP的关联结果
  • 包含估计的方差比值的文本文件 (回忆上述SAIGE算法中的r

.rda文件,包含空模型

./output/example_quantitative.rda

#open R
R
#load the model file in R
load("./output/example_quantitative.rda")
names(modglmm)
modglmm$theta

#theta: a vector of length 2. The first element is the dispersion parameter estimate and the second one is the variance component parameter estimate
#coefficients: fixed effect parameter estimates
#linear.predictors: a vector of length N (N is the sample size) containing linear predictors
#fitted.values: a vector of length N (N is the sample size) containing fitted mean values on the original scale
#Y: a vector of length N (N is the sample size) containing final working vector
#residuals: a vector of length N (N is the sample size) containing residuals on the original scale
#sampleID: a vector of length N (N is the sample size) containing sample IDs used to fit the null model

30个随机选择的SNP的关联结果

less -S ./output/example_quantitative_30markers.SAIGE.results.txt

方差比值文件 variance ratio file

less -S ./output/example_quantitative.varianceRatio.txt

第二步

输入文件为:

1 插补后的剂量文件,如VCF,BGEN,BCF或SAV,以及

2 对应的索引文件

3 样本文件,无header,包含一列对应剂量文件的样本ID。

4 第一步所得的rda模型文件

5 第一步所得的方差比值文件

这里以常用的bgen与VCF文件为例

#bgen for dosages
Rscript step2_SPAtests.R \
        --bgenFile=./input/genotype_100markers.bgen \
        --bgenFileIndex=./input/genotype_100markers.bgen.bgi \
        --minMAF=0.0001 \ #最小MAF不能低于0.0001
        --minMAC=1 \ #最小MAC不能低于1
        --sampleFile=./input/samplefileforbgen_10000samples.txt \
        --GMMATmodelFile=./output/example.rda \
        --varianceRatioFile=./output/example.varianceRatio.txt \
        --SAIGEOutputFile=./output/example.SAIGE.bgen.txt \
        --numLinesOutput=2 \
        --IsOutputAFinCaseCtrl=TRUE

#VCF containing dosages (--vcfField=DS)
Rscript step2_SPAtests.R \
        --vcfFile=./input/dosage_10markers.vcf.gz \
        --vcfFileIndex=./input/dosage_10markers.vcf.gz.tbi \
        --vcfField=DS \
        --chrom=1 \
        --minMAF=0.0001 \   #最小MAF不能低于0.0001
        --minMAC=1 \   #最小MAC不能低于1
        --sampleFile=./input/sampleIDindosage.txt \
        --GMMATmodelFile=./output/example.rda \
        --varianceRatioFile=./output/example.varianceRatio.txt \
        --SAIGEOutputFile=./output/example.SAIGE.vcf.dosage.txt \
        --numLinesOutput=2 \
        --IsOutputAFinCaseCtrl=TRUE

输出结果各列的解读如下:

CHR: chromosome
POS: genome position 
SNPID: variant ID
Allele1: allele 1
Allele2: allele 2
AC_Allele2: allele count of allele 2
AF_Allele2: allele frequency of allele 2
imputationInfo: imputation info. If not in dosage/genotype input file, will output 1
N: sample size
BETA: effect size of allele 2
SE: standard error of BETA
Tstat: score statistic of allele 2

#SPA后的p值
p.value: p value (with SPA applied for binary traits) 

p.value.NA: p value when SPA is not applied (only for binary traits)
Is.SPA.converge: whether SPA is converged or not (only for binary traits)
varT: estimated variance of score statistic with sample relatedness incorporated
varTstar: variance of score statistic without sample relatedness incorporated
AF.Cases: allele frequency of allele 2 in cases (only for binary traits and if --IsOutputAFinCaseCtrl=TRUE)
AF.Controls: allele frequency of allele 2 in controls (only for binary traits and if --IsOutputAFinCaseCtrl=TRUE)
Tstat_cond, p.value_cond, varT_cond, BETA_cond, SE_cond: summary stats for conditional analysis

除此之外SAIGE还支持条件分析,男女分层分析,X染色体分析等多种功能:

详细文档见:https://github.com/weizhouUMICH/SAIGE/wiki/Genetic-association-tests-using-SAIGE#installing-saige

参考:

Zhou, W. et al. (SAIGE)Efficiently controlling for case-control imbalance and sample relatedness in large-scale genetic association studies. Nat. Genet. 50, 1335–1341 (2018).

基因组控制与基因组膨胀系数λ Genomic control λGC

本文内容


什么是基因组控制 Genomic Control
基因组膨胀系数λGC (Genomic Inflation Factor) 的计算方法
GC的注意事项以及解决办法
  1. 什么是基因组控制 Genomic Control

基因组控制是矫正GWAS中因群体分层等原因而导致检验统计量膨胀的一种方法。

考虑一种简单病例对照研究,假设有N个样本,以及n个SNP,φ是样本中病例的比例(0<φ<1), 对于某个SNP,其在病例以及对照中的频率如下表所示:

为了检验关联性,我们会基于隐形,显性,以及加性遗传模型来计算自由度为1的卡方检验量。这里以加性遗传模型为例,对SNP进行趋势检验 ( Armitage’s trend test)。其计算公式为:

我们假设对于每个SNP,我们都计算了其相应的趋势检验的Y2l统计量,当这些SNP之间没有连锁不平衡LD,且不存在人群分层以及隐性关联时,检验量Y2服从卡方分布。

基因组控制(Genomic control,GC)模型假设是这些检验统计量会因为群体分层以及隐形关联等原因出现膨胀,膨胀系数为 λ (基因组膨胀系数 Genomic Inflation Factor)。同时GC模型假设这个膨胀系数在基因组上对于所有SNP是近似相等的。

2.基因组膨胀系数 Genomic Inflation Factor 的计算方法

基于此我们可以通过下式来估计λGC ,

取GWAS检验后所有卡方检验量的中间值,除以0.456,其中0.456为卡方检验量的期望值 (卡方分布中,第50百分位数的卡方统计量,r语言中qchisq(0.5,1)对应的值)。之所以取中间值计算λGC是因为要避免异常值的影响。

λ越接近1,就表明不存在群体分层导致的统计量膨胀。

将GWAS检验后所有卡方统计量除以λ后重新计算p值得过程即为基因组控制 GC。

例如这个GWAS研究的QQ图,可以看到观测值有一个明显的系统性的抬升,这通常意味着样本中存在在群体分层,通过计算我们得到这个GWAS研究的基因组膨胀系数为 λ=1.17,

将原始的统计量除以1.17,重新计算p值后,可以看到之前的抬升得到有效控制。

3. GC的注意事项以及解决办法:

但要注意的是,GC假设基因组中只有少数的loci与表型相关,绝大多数被检验的SNP是与表型无关的,而目前的主流GWAS检验方法大多基于无限小模型(infinitesimal model)(详见:解释复杂疾病的四种主流模型 CDCV/RAME/infinitesimal/Broad-sense-heritability),该模型假设所有SNP与表型都是有关的,只是效应量很小。这种情况下就不再适用GC。

其他解决人群分层等的办法包括:

等等

参考:

Devlin, B. & Roeder, K. Genomic control for association studies. Biometrics 55, 997–1004 (1999).

Devlin, B. Genomic control, a new approach to genetic-based associationb studies. (2001).

Genebass 外显子组关联检验数据库

关键词: 外显子组, pLOF,UKBB,rare variants, gene-based analysis

本文目录:

1.背景
2.Genebass介绍
3.使用方法
4.参考

1.背景

目前为止大规模的GWAS研究已经成功的发现了大量的与人类疾病或表型相关的常见变异,但对于稀有变异与疾病的关联,我们目前还没有系统性的探索。生物银行规模的外显子组测序给我们提供了宝贵的机会以探索基因以及稀有编码变异对于人类表性的影响。UKBB的主要研究人员(Neale lab)利用UKBB的28万多人的外显子组测序数据,通过单核苷酸检验,与基因检验系统性地分析了3700种数量与二分类表型,并将数据公开在Genebass数据库中。

2.Genebass介绍:

Genebass数据集包含了3817种表型的基于基因与基于单变异检验的概括性数据,该数据库的概括性数据基于UK Biobank 28万1852人的外显子组测序数据。

检验方法使用的是基于线性混合模型,并校正case-control比例的SAIGE-GENE(预留链接,最近挖的坑有点多),包括了以下三种检验统计量:

  • 单变异检验 :single-variant tests
  • 基因负荷检验 :gene-based burden (mean)
  • SKAT-O检验 :SKAT-O (hybrid variance/mean) tests.

上述的检验基于以下的注释:

  • pLoF(predicted loss-of-function 功能缺失型)变异,包括被LOFTEE注释的高置信度的变异。
  • 类错义变异(missense-like variants),包括错义变异与被LOFTEE注释的低置信度的变异。
  • 同义变异 synonymous variants.

3.使用方法

Genebass主页链接:

可以在搜索框中输入想查询的基因,或想浏览的表型。

数据展示页面的布局:

以BMI为例:

在搜索框搜索BMI后,我们可以看到 Gene-based tests的概括性数据,曼哈顿图与QQ图。可以点击不同tab查看三种不同注释组的结果。

通过顶部的导航栏可以切换单变异或基因的数据,也可以调整面板的宽度:

切换到单变异检验的曼哈顿图:

在下方点击Variant ID / Gene Name后,还可以查看该变异或基因的PheWAS数据:

另外还可以查询该表型的详细信息:

Genebass还提供了数据库的下载链接:https://genebass.org/downloads

注意:需要通过Hail来加载数据:

Hail:https://hail.is/

4.参考

https://www.medrxiv.org/content/10.1101/2021.06.19.21259117v1

https://genebass.org/

GWAS QC – 估计杂合度并去除异常值 Heterozygosity rate

为了在GWAS分析中得到可靠的结果,我们需要严格进行质量控制,其中很重要的一环就是筛掉杂合性异常的样本,因为通常情况下过高或过低的杂合度一般意味着样本存在污染,或是存在近亲相交。

plink提供了—het的选项,可以通过距估计来估计F系数:

这里的F系数为近交系数:亲缘系数/ 近交系数/血缘系数 coefficient of kinship / inbreeding / relationship 

使用的具体的计算公式是:

注意:

1.当样本量较小时,由于估计的期望偏差可能很大,应当通过 -read-freq 选项来额外提供期望数。

2.该计算方法没有考虑SNP之间的LD,所以在进行估计前最好进行LD-pruning

一般情况下给出的合理范围是平均值正负3个标准差,但实际操作上如果数据来源可靠(例如来自某个标准化biobank,样本制备与测序流程可靠时,可以尝试4个标准差,或是略过此项QC以保留更多样本)

也可以使用—ibc选项(来源于GCTA软件),计算三种基于不同方法的F系数:

第一种,基于加性基因型值的方差:

第二种,基于偏离期望值的纯合性的大小,与上述—het选项相同。

第三种,基于联合配子之间的相关:

下面利用PLINK的-het简单进行演示,示例数据来自https://www.nature.com/articles/nprot.2010.182#MOESM365

# 首先进行LD-pruning
plink \
  --bfile gwa \
  --indep-pairwise 50 5 0.2 \
  --out gwa

#使用LD-prune后的SNP来计算杂合度
plink \
	--bfile gwa \
	--extract gwa.prune.in \
	--het \
	--out gwa

输出文件为 gwa.het

使用head命令查看:

head gwa.het

FID     IID       O(HOM)       E(HOM)        N(NM)            F
   0   A2001        54037    5.433e+04        82915     -0.01037
   1   A2002        54362     5.43e+04        82865     0.002085
   2   A2003        54120    5.435e+04        82932    -0.008133
   3   A2004        54538    5.436e+04        82955     0.006211
   4   A2005        54462    5.435e+04        82932     0.003898
   5   A2006        54387    5.437e+04        82970     0.000653
   6   A2007        54093    5.435e+04        82940    -0.009004
   7   A2008        54239    5.432e+04        82910    -0.002818
   8   A2009        54103    5.437e+04        82982    -0.009274

O(HOM)为观测到的纯合基因型数,E(HOM)为期望值,N为总数。

F = (O-E) / (N-E) 也就是我们要计算的F系数估计值。

首先画图确认分布,这里使用python

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

het = pd.read_csv("gwa.het","\\s+")
plt.figure(figsize=(10,5))
plt.hist(het["F"],bins=100)
plt.title("het F")

然后要剔除平均值3个标准差以外的异常样本,这里还是使用python:

#python
#抽出3个标准差以外的样本的ID
toRemove = het.loc[((np.mean(het["F"])-3*np.std(het["F"]))>het["F"])|(het["F"]>(np.mean(het["F"])+3*np.std(het["F"]))),["FID","IID"]]
#输出要剔除样本的FID与IID
toRemove.to_csv("to_remove.id"," ",header=None,index=None)

在终端中查看是否输出成功:

#在终端中查看
head to_remove.id

207 A2208
483 A2484
752 A2753
913 A2914
1049 A3050
1165 A3166
1356 A3357
1891 A3892
269 A270
393 A394

大功告成,to_remove.id 可以通过—remove选项来剔除出后续分析

参考:

Clarke, G., Anderson, C., Pettersson, F. et al. Basic statistical analysis in genetic case-control studies. Nat Protoc 6, 121–133 (2011). https://doi.org/10.1038/nprot.2010.182

https://www.cog-genomics.org/plink/1.9/basic_stats#ibc

Am J Hum Genet. 2011 Jan 7; 88(1): 76–82.

GWAS QC – 性别检查 与 阈值选择 Sex check

性别错误 (Sex discrepancy):有时数据录入会有错误,我们应基于X染色体的杂合性,确定是否有性别录入错误的个体。PLINK默认对于男性,X染色体的纯合性(homozygosity)估计值应高于0.8,女性应低于0.2,但实际情况更为复杂,本文简要对性别检查 与 阈值选择进行讲解。

本文使用数据来源:https://onlinelibrary.wiley.com/doi/full/10.1002/mpr.1608

PLINK中提供了check-sex选项,通过计算X染色体的纯合性来判断样本性别是否有错误:—check-sex [女性阈值] [男性阈值] 默认的参数为 0.2 0.8,但该标准过于严格,并不适用与实际情况,下面会讲解。首先介绍基本操作:

#首先进行LD-pruning
plink \
        --bfile HapMap_3_r3_1 \
        --indep-pairwise 50 5 0.2 \
        --out HapMap_3_r3_1

#估计X染色体的纯合性
plink \
        --bfile HapMap_3_r3_1 \
        --extract HapMap_3_r3_1.prune.in \
	--check-sex \
        --out HapMap_3_r3_1

注意:

  1. 要提前确认X染色体上PAR区域已经被分离 (可以使用—split-x 选项来进行分离)
  2. 默认的阈值是,男性>0.8, 女性<0.2

log文件如下:

PLINK v1.90b6.21 64-bit (19 Oct 2020)          www.cog-genomics.org/plink/1.9/
(C) 2005-2020 Shaun Purcell, Christopher Chang   GNU General Public License v3
Logging to HapMap_3_r3_1.log.
Options in effect:
  --bfile HapMap_3_r3_1
  --check-sex
  --extract HapMap_3_r3_1.prune.in
  --out HapMap_3_r3_1

191875 MB RAM detected; reserving 95937 MB for main workspace.
Allocated 3037 MB successfully, after larger attempt(s) failed.
1457897 variants loaded from .bim file.
165 people (80 males, 85 females) loaded from .fam.
112 phenotype values loaded from .fam.
--extract: 166240 variants remaining.
Using 1 thread (no multithreaded calculations invoked).
Before main variant filters, 112 founders and 53 nonfounders present.
Calculating allele frequencies... done.
Warning: 35 het. haploid genotypes present (see HapMap_3_r3_1.hh ); many
commands treat these as missing.
Total genotyping rate is 0.996691.
166240 variants and 165 people pass filters and QC.
Among remaining phenotypes, 56 are cases and 56 are controls.  (53 phenotypes
are missing.)
--check-sex: 3993 Xchr and 0 Ychr variant(s) scanned, 1 problem detected.
Report written to HapMap_3_r3_1.sexcheck .

–check-sex: 3993 Xchr and 0 Ychr variant(s) scanned, 1 problem detected.从日志文件中可以看出我们检测出了1个不一致的样本。上述代码运行结果如下:

head HapMap_3_r3_1.sexcheck

FID       IID       PEDSEX       SNPSEX       STATUS            F
   1328   NA06989            2            2           OK      0.02151
   1377   NA11891            1            1           OK            1
   1349   NA11843            1            1           OK            1
   1330   NA12341            2            2           OK     0.009813
   1444   NA12739            1            1           OK            1
   1344   NA10850            2            2           OK       0.0533
   1328   NA06984            1            1           OK       0.9989
   1463   NA12877            1            1           OK            1
   1418   NA12275            2            2           OK      -0.0747

前两列为FID与IID,三四列为PED文件中的性别,与通过X染色体估计的性别,第五列表示是否一致,不一致时会表示为PROBLEM,第六列是估计的F系数。可以提取出不一致的样本:

cat HapMap_3_r3_1.sexcheck | grep PROBLEM
1349   NA10854            2            1      PROBLEM       0.9933

#将有问题的样本FID与IID输出到sex_error_to_remove.id文件中
cat HapMap_3_r3_1.sexcheck | grep PROBLEM | awk '{print $1,$2}'> sex_error_to_remove.id

后续PLINK分析可以使用 —remove sex_error_to_remove.id 来剔除性别错误的样本.以上结果的F系数分布如图所示:

左边为女性,右边为男性

实际情况:上面的例子是一种很理想的分布,可以看到样本被清晰地分开,但实际情况要复杂很多,例如在千人基因组项目Phase1的样本中,一些女性样本的F系数也大于0.8,即使进行LD-pruning后,女性样本最大的F系数也超过了0.66。所以一般来说,我们会进行两次—check-sex,第一次用于观察分布,在看到一个右侧紧凑的峰(男性),与左侧平缓的峰后(女性),根据其分界线来决定判定阈值,(真实的数据的分布大多如下图所示)

这里常用的阈值为 -check-sex 0.7 0.8

#如果使用真实数据,通过目视决定阈值后,更改参数,重新判定性别
plink \
        --bfile HapMap_3_r3_1 \
        --extract HapMap_3_r3_1.prune.in \
	   --check-sex 0.7 0.8 \
        --out HapMap_3_r3_1

参考:

https://onlinelibrary.wiley.com/doi/full/10.1002/mpr.1608

Basic statistics

孟德尔随机化系列之一:基础概念 Mendelian randomization I

本文是MR系列的第一篇,孟德尔随机化的简介,该系列会介绍孟德尔随机化的基础概念,统计方法分类,常见误区与实践操作等内容。

目录:

  • 1.背景与目的
    • 1.1 明确因果关系
    • 1.2 RCT是金标准,但缺点明显
    • 1.3 孟德尔随机化的本质
  • 2.孟德尔随机化的统计学方法 – 工具变量
  • 3.核心假设
    • 3.1 关联性假设
    • 3.2 排他性限制
    • 3.3 独立性假设
  • 4.孟德尔随机化的优势

1 背景与目的

1.1目的是明确因果关系

在关联分析中我们时常面对的一个问题便是 我们很难确定一个变量是否是真正的因果变量,而非有其他未观测的因素同时影响这个变量与结果,造成这个变量与结果相关联。在循证医学中,或是制定干预策略时,明确因果性是十分必要的。

这个问题实际上与内生性 endogeneity 相关,包括: 反向因果关系 reverse causation, 忽略的混淆变量造成的偏倚 omitted variable bias due to confounding, 测量误差measurement error, 以及双向因果关系bidirectional causality等等问题。(这里的内生性在统计学上是指在回归分析中,解释变量(x)与误差项相关。)

1.2. RCT是金标准,但缺点明显

一般来说,明确因果关系的金标准时随机对照试验 RCT randomized control trial (RCT), 即对受试者随机分为对照组和实验组,以研究某个因素的影响。但现实中,要完成随机对照试验的难度非常高,需要大量的人力物力,有时因为伦理问题,对某个因素的研究几乎是不可能的。这时我们就要借助其他方法,而孟德尔随机化就是其中之一。

1.3. 孟德尔随机化与RCT的相似性

孟德尔随机化(MR,Mendelian randomization)便是为了解决以上问题而开发的方法,MR与RCT直接相关,两者有很高的相似性,如下图所示。

孟德尔随机化的核心其实是利用了孟德尔第二定律,也就是自由组合规律(law of independent assortment),当具有两对(或更多对)相对性状的亲本进行杂交,在子一代产生配子时,在等位基因分离的同时,非同源染色体上的基因表现为自由组合,这一过程类似于随机对照试验中的随机分组,所以我个人理解的孟德尔随机化就是 基于孟德尔第二定律的随机对照试验。

2 孟德尔随机化的统计学方法 – 工具变量

孟德尔随机化在统计学上的本质实际是利用工具变量(Instrumental variables)来研究因果性,这一方法常用在经济学研究中。

工具变量简单来说就是,一个与X相关,但与被忽略的混淆因素以及Y不相关的变量。在经济学研究中工具变量可以是政策改革,自然灾害等等,而在遗传学中,这个变量就是基因。

如果一个基因变异Z 是某个暴露因素X的因果变量,并且对结果Y没有直接因果关系,那么这个基因变异Z与结果Y的关联,只能通过X对Y的因果关系而被观察到(X->Y)。

2.1 两阶段最小二乘法

通常我们可以用两阶段最小二乘法(2SLS,2 stage least squared method)来估计X对Y的效应:

考虑一种最简单的单样本的情况,有一个基因变异Z,与Z相关的因素X,以及与Z不相关的结果Y,

我们想探究X与Y之间的因果关系。

第一阶段,X对工具变量进行回归,

第二阶段,Y对第一阶段X的预测值进行回归,

合并后可以化为Y直接对工具变量进行回归。

我们所关心的系数β2SLS实际上也等同于两段协方差的比值

2.2 两样本MR

另一种常见的情况则是两样本MR,如果我们有一个与X相关联的工具变量,我们只有在X对Y有因果关系的情况下,才能观测到这个工具变量与Y的关联。

这意味着βiv,y = βiv,x 乘以 βx,y。也就是说,我们可以不用通过X与Y的回归来估计β,

而是可以简单地通过 βx,y = βiv,y / βiv,x 来计算 X对Y的效应量。

这就意味着与两阶段最小二乘法相对,我们可以利用两个独立的GWAS 的概括性统计量来计算这个比值。这种方法通常叫做两样本MR.

当然MR还有其他更复杂的统计模型方法,这里不做深究,有兴趣的朋友的可以看这篇文章:预留链接

  1. 核心假设:

当然,既然是统计模型那就要满足模型的基本假设,通常情况下MR建立在几点基本假设之上,

主要假设:

3.1 遗传变异必须与暴露因素X强相关。(关联性假设),例如:弱工具变量的使用会导致估计出现偏倚。

3.2 遗传变异不能与结果直接相关。(排他性限制),例如:可能影响因素包括多效性等。

3.3 遗传变异不能与任何可能的混淆因素相关 (独立性假设),例如:人群分层

其他假设:

3.4 不存在选型交配 No genetic assortative mating,例如:人们经常会与自己教育和经济水平相似的人结婚。

3.5 对所有个体,IV对于X的影响方向是相同的。例如:潜在的上位效应与GxE基因与环境的相互作用都可能会影响此假设。

  1. 总结来看,孟德尔随机化以基因型作为工具变量的优势是:

4.1 遗传相关中,因果关系的方向是确定的,遗传多样性导致了不同的表型,反之则不成立

4.2 一般情况下我们所测量的环境暴露因素都或多或少与行为,社会,心理等因素相关,造成偏倚。但遗传变异则不受这些混淆因素影响。

4.3 相对来说,遗传变异与其效应的测量误差较小。

4.4 并不一定要找到因果SNP,一个与因果SNP处于LD的SNP即可满足假设条件。

4.5.目前GWAS的数据相对容易获取。

参考:

Melinda C. Mills, Nicola Barban, and F. C. T. An Introduction to Statistical Genetic Data Analysis. (2020).

Curr Epidemiol Rep . 2017;4(4):330-345. doi: 10.1007/s40471-017-0128-6. Epub 2017 Nov 22.

为什么在PCA或估计GRM时要去除长LD区域 Remove long-LD region

本文内容

1.背景介绍
2.为什么在PCA等时要去除LongLD区域?
3.长LD区域起始位置的列表
4.使用PLINK去除长LD区域里的SNP:

1.背景介绍:

LD :连锁不平衡 linkage disequilibrium LD

PCA :群体分层与主成分分析 Population structure & PCA

2.为什么在QC时要去除LongLD区域?

人类基因组中存在若干长LD的区域,这些区域多位于染色体的着丝粒附近,还有一些位于HLA等区域。如下图所示:

这些区域跨度很长(长度超过2Mb),单次LD-pruning无法完全去除互相成LD的SNP,在进行诸如PCA,或是计算GRM,进行基于LMM模型的GWAS分析时,我们应当去除掉这些区域。

长LD区域的形成并不一定是因为选择,其他原因诸如倒位多态性(inversion polymorphism)也可能造成长LD区域的存在。在进行研究时,应当谨慎区分这些区域形成的原因。如果在计算模型中没有对这些长LD区域进行处理,就可能影响群体遗传结构中对于本地群体的估计,造成系统性的偏倚。

3.长LD区域起始位置的列表(hg38,hg19与hg18参考基因组版本)

hg38版本

Chr	Start	Stop
chr1	47761740	51761740
chr1	125169943	125170022
chr1	144106678	144106709
chr1	181955019	181955047
chr2	85919365	100517106
chr2	87416141	87416186
chr2	87417804	87417863
chr2	87418924	87418981
chr2	89917298	89917322
chr2	135275091	135275210
chr2	182427027	189427029
chr2	207609786	207609808
chr3	47483505	49987563
chr3	83368158	86868160
chr5	44464140	51168409
chr5	129636407	132636409
chr6	25391792	33424245
chr6	26726947	26726981
chr6	57788603	58453888
chr6	61109122	61357029
chr6	61424410	61424451
chr6	139637169	142137170
chr7	54964812	66897578
chr7	62182500	62277073
chr8	8105067	12105082
chr8	43025699	48924888
chr8	47303500	47317337
chr8	110918594	113918595
chr9	40365644	40365693
chr9	64198500	64200392
chr9	88958735	88959017
chr10	36671065	43184546
chr10	41693521	41885273
chr11	88127183	91127184
chr12	32955798	41319931
chr12	34639034	34639084
chr14	87391719	87391996
chr14	94658026	94658080
chr17	43159541	43159574
chr20	4031884	4032441
chr20	33948532	36438183
chr22	30060084	30060162
chr22	42980497	42980522

hg19版本

Chr	Start	Stop ID
1 48000000 52000000 1
2 86000000 100500000 2
2 134500000 138000000 3
2 183000000 190000000 4
3 47500000 50000000 5
3 83500000 87000000 6
3 89000000 97500000 7
5 44500000 50500000 8
5 98000000 100500000 9
5 129000000 132000000 10
5 135500000 138500000 11
6 25000000 35000000 12
6 57000000 64000000 13
6 140000000 142500000 14
7 55000000 66000000 15
8 7000000 13000000 16
8 43000000 50000000 17
8 112000000 115000000 18
10 37000000 43000000 19
11 46000000 57000000 20
11 87500000 90500000 21
12 33000000 40000000 22
12 109500000 112000000 23
20 32000000 34500000 24

hg18版本

Chr	Start	Stop	ID
1	48060567	52060567	hild1
2	85941853	100407914	hild
2	134382738	137882738	hild3
2	182882739	189882739	hild4
3	47500000	50000000	hild5
3	83500000	87000000	hild6
3	89000000	97500000	hild7
5	44500000	50500000	hild8
5	98000000	100500000	hild9
5	129000000	132000000	hild10
5	135500000	138500000	hild11
6	25500000	33500000	hild12
6	57000000	64000000	hild13
6	140000000	142500000	hild14
7	55193285	66193285	hild15
8	8000000	12000000	hild16
8	43000000	50000000	hild17
8	112000000	115000000	hild18
10	37000000	43000000	hild19
11	46000000	57000000	hild20
11	87500000	90500000	hild21
12	33000000	40000000	hild22
12	109521663	112021663	hild23
20	32000000	34500000	hild24
X	14150264	16650264	hild25
X	25650264	28650264	hild26
X	33150264	35650264	hild27
X	55133704	60500000	hild28
X	65133704	67633704	hild29
X	71633704	77580511	hild30
X	80080511	86080511	hild31
X	100580511	103080511	hild32
X	125602146	128102146	hild33
X	129102146	131602146	hild34

4.使用PLINK去除长LD区域里的SNP:

我们可以使用PLINK来去除长LD区域里的SNP,主要分为两步:

1.将上一节中的列表拷贝进high-ld.txt文件中(使用时记得去掉header),使用--make-set选项提取区域中的SNP

2.在分析时利用--exclude去除掉上一步所生成列表中的SNP

plink --file mydata --make-set high-ld.txt --write-set --out hild
plink --file mydata --exclude hild.set --recode --out mydatatrimmed

参考:

https://genome.sph.umich.edu/wiki/Regions_of_high_linkage_disequilibrium_(LD)

Price et al. (2008) Long-Range LD Can Confound Genome Scans in Admixed Populations. Am. J. Hum. Genet. 86, 127-147

更新:

20220905 修改表述错误,更新PCA链接,并增加hg38版本

使用LocusZoom绘制Regional plot详解 – GWAS可视化

Locuszoom是一款非常好用的绘制region plot的软件,是GWAS研究中的必备软件之一。

Regional plot示例: https://my.locuszoom.org/gwas/881707/region/?chrom=3&start=45634967&end=46034967

Regional plot:横轴为染色体位置,左边纵轴为-log10(p),marker的颜色表示与leading SNP 的LD的大小,右侧纵轴则表示重组率。下方还标有gwas catalog中已知的与疾病相关的hit,以及该区域中基因的范围。该图主要用来用于精确定位因果SNP。

locuszoom官网: http://locuszoom.org/

该软件提供有最初的网页版(底层还是命令行版本),近来新发布的网页交互版(基于JavaScript),以及单独可下载的linux命令行版本(基于R/Python)。

网页版方便直接,命令行自定义程度更高。

本文以命令行版本为基础简要介绍locuszoom的使用方法,同时与网页版一一对照来方便理解与使用。

本文目录:

1. 命令行版本简介与软件与参考数据准备(**只看网页版的话可以跳过 1**)
2. 输入文件格式 
3. 指定绘制的区间范围
4. 指定LD文件,族裔群体,参考基因组版本
	**-》以上内容对应的网页版本**
5. 批量模式 ! Batch mode(命令行版本的优势所在)
	**-》批量模式对应的网页版本**
6. 自制LD文件
7 额外功能
	7.1指定多个参考SNP
	7.2 使用GWAS catalog进行注释
	7.3 精确定位的可信集
	7.4 对多个SNP的注释
	7.5 绘制额外的BED文件轨道
参考url

使用方法:

  1. 命令行版本简介 与 软件与参考数据准备 (只看网页版的话可以跳过 1

命令行版本总体上与网页版一一对应,但可自定义设置的程度更高,目前仅支持linux版本,windows和mac用户只能使用网页版或通过虚拟机。

下载地址:https://github.com/statgen/locuszoom-standalone

注意我们需要下载: 程序 + 数据库 + LD信息

(*单独下载软件无法绘制图像,或是需要使用自制的LD信息)

目前的最新版本为1.4版,发布于2017-05-01,共有23G。

除此之外,我们还需要准备以下有版本要求的python和R:

1.Python 2.7+ (注意要使用PYTHON2!)

2.R 3.0+.

locuzoom下载完成后,解压并添加进环境后即可使用:

cd <directory where you want to place locuszoom> 
tar zxf /path/to/locuszoom.tgz
ln -s bin/locuszoom /usr/local/bin/locuszoom #根据自己的环境变量制定

locuszoom的文件结构主要包括的内容如下所示:

locuszoom/
	bin/
		locuszoom (this is the locuszoom "executable")
		locuszoom.R (the R script which is used by locuszoom for creating the plots)
		dbmeister.py (script for creating custom user databases)
		lzupdate.py (script for creating an updated copy of the provided locuszoom database)
	conf/ (configuration file located here)
	data/
		database/ (SQLite file located here)
		hapmap/ (hapmap genotype files)
		1000G/ (1000G genotype files)
	src/ (source code for locuszoom)

命令行locuszoom语法

locuszoom [输入文件] [选项]

一个简单的例子:

locuszoom --metal Kathiresan_2009_HDL.txt --refgene FADS1

  1. 输入文件格式

locuszoom主要使用METAL 或者 EPACTS的文件格式,这里主要介绍METAL格式,因为其准备起来更加简单便捷。

METAL格式: 文件必须包含以tab分隔的下两列 1.markers 与 2.p-values

如下所

locuzoom在输入时的选项:
--metal 指定metal格式的输入文件名
--delim (可选)可以指定分隔符,默认为tab
--markercol  指定输入文件表示marker的列名,默认为"MarkerName"
--pvalcol 指定输入文件表示p值的列名,默认为"P-value"
--no-transform 当p已经转换为-log10(p)时,可以使用此选项跳过log转换

对应网页区块:

首先上传输入文件 , marker与P value的列名,以及指定分隔符

  1. 指定绘制的区间范围

在命令行版本中我们可以通过多种方式指定区间,包括

#2.1指定SNP与两侧的范围
--refsnp <your snp> --flank 500kb

#2.2指定SNP与区间的起止位点
--refsnp <your snp> --chr # --start <base position> --end <base position>

#2.3指定SNP与基因(绘制基因所在的范围)
--refsnp <your snp> --refgene <your gene>

#2.4 指定基因与两侧范围
--refgene <your gene> --flank 250kb

#2.5 指定基因与区间的起止位点
--refgene <your gene> --chr # --start <base position> --end <base position>

#2.6 区间的起止位点
--chr # --start <base position> --end <base position>


--flank 选项在这里指从起始和终止位点向外侧计算的距离,单位为kb, 在没有指定参考SNP时,locuzoom会自动选择最显著的SNP作为参考SNP。

网页版中指定绘制的区间范围所对应区块,填写方法与命令行版本一致:

4 指定LD文件,族裔群体,参考基因组版本

目前locuszoom内置了以下的组合,可以根据自己需要进行指定:

Genotype files available for: 
--source hapmap
  --build hg18
    --pop YRI
    --pop CEU
    --pop JPT+CHB

--source 1000G_March2012
  --build hg19
    --pop AMR
    --pop ASN
    --pop AFR
    --pop EUR

--source 1000G_June2010
  --build hg18
    --pop YRI
    --pop CEU
    --pop JPT+CHB

--source 1000G_Nov2014
  --build hg19
    --pop AMR
    --pop ASN
    --pop AFR
    --pop EUR
  --build hg38
    --pop SAS
    --pop EAS
    --pop AMR
    --pop AFR
    --pop EUR

一个简单的使用例:

--pop ASN --build hg19 --source 1000G_March2012
#指定1000G_March2012数据,以hg19为参考基因坐标,来计算ASN族裔的LD

以上内容对应的网页版:

Genome Build/LD Population中选择所使用的参考基因组版本与LD文件

有了以上信息就可以进行绘制。命令行中运行命令或是在网页版中点击Plot Data按钮。根据所绘制SNP数量多少,运行时间会有不同。等待即可。


5 批量模式 ! Batch mode(命令行版本的优势所在)

当我们有多个基因座,需要绘制多张regional plot,可以使用批量模式。

只需要通过 --hitspec 选项来指定一个包含多个区域信息的文件即可。

文件需要包含以下列:

  1. snp 2.chr 3.start 4.end 5.flank 6.run 7.m2zargs

该文件格式如下:

选项1-5与之单次模式的内容相同,run 是指是否指定该行进行绘制,m2zargs 则是对该行信息绘制时额外的参数。

对应的网页版区块与内容:

6 自制LD文件 (命令行版本)

可以通过--LD选项来指定自己的LD文件,文件格式如下:

dprime列可以为空,但Rsq列必须为有效的数据。该文件以空格分隔,且必须包含header。

7 额外功能 (未完待续,持续更新)

7.1指定多个参考SNP

7.2 使用GWAS catalog进行注释

7.3 精确定位的可信集

7.4 对多个SNP的注释

7.5 绘制额外的BED轨道

参考:

http://locuszoom.org/

https://genome.sph.umich.edu/wiki/LocusZoom_Standalone#User-supplied_LD