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.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s