1.为什么要进行杂合度质控?
对于一般自然群体,基因型个体的杂合度过高或者过低,都不正常,则需根据杂合度进行过滤。偏差可能表明样品受到污染,近亲繁殖。对于样品杂合率平均值中偏离±3 SD的个体建议删除。
2.计算每个位点的杂合度
利用参数 --het 计算
plink --bfile a --het --out R_check
#R语言部分
> het <- read.table(file = "R_check.het",header = T)
> head(het)
FID IID O.HOM. E.HOM. N.NM. F
1 1328 NA06989 693389 694100 1071000 -0.001814
2 1377 NA11891 688282 686700 1059595 0.004153
3 1349 NA11843 693237 694900 1072368 -0.004525
4 1330 NA12341 691956 693100 1069484 -0.002983
5 1444 NA12739 683553 682100 1052510 0.003929
6 1344 NA10850 698210 694600 1071797 0.009609
#het$HET_RATE在het数据框添加新的一列
> het$HET_RATE <- (het$"N.NM." - het$"O.HOM.")/het$"N.NM."
> head(het)
FID IID O.HOM. E.HOM. N.NM. F HET_RATE
1 1328 NA06989 693389 694100 1071000 -0.001814 0.3525780
2 1377 NA11891 688282 686700 1059595 0.004153 0.3504292
3 1349 NA11843 693237 694900 1072368 -0.004525 0.3535456
4 1330 NA12341 691956 693100 1069484 -0.002983 0.3530001
5 1444 NA12739 683553 682100 1052510 0.003929 0.3505496
6 1344 NA10850 698210 694600 1071797 0.009609 0.3485613
备注:杂合度--het,没有过滤的函数,只能通过编程去提取ID,然后用--remove去实现。
查看哪些个体在3倍标准差以外:
> help("subset")
> het_fail = subset(het, (het$HET_RATE < mean(het$HET_RATE)-3*sd(het$HET_RATE)) | (het$HET_RATE > mean(het$HET_RATE)+3*sd(het$HET_RATE)))
> head(het_fail)
FID IID O.HOM. E.HOM. N.NM. F HET_RATE
81 1330 NA12342 703418 690700 1065708 0.03404 0.3399524
106 1459 NA12874 709095 694900 1072301 0.03759 0.3387165
> het_fail
FID IID O.HOM. E.HOM. N.NM. F HET_RATE
81 1330 NA12342 703418 690700 1065708 0.03404 0.3399524
106 1459 NA12874 709095 694900 1072301 0.03759 0.3387165
##保存结果
> write.table(het_fail,"het_fail.qc.txt",row.names = F)
R语言使用subset函数筛选dataframe数据行(样本、Selecting Observations)
最终筛选出2个杂合度不符合条件的ID(NA12342,NA12874)
3.剔除异常数据
去掉这些个体,先对数据进行清洗,去掉引号,然后提取家系和个体ID
然后利用 -- remove 参数删除这2个体
已经删除了这2个个体,剩余163个个体。