[GWAS]基于plink的亲缘关系质控

文章介绍了如何通过计算IdentityByState(IBS)和IdentityByDescent(IBD)来研究亲子关系和基因共享。通过使用plink工具进行过滤和分析,以及R语言进行可视化,识别并排除具有亲子关系的个体,以便于后续的基因组研究。最后,文章提到了将bed文件转换为ped和map文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇我们要对一下具有亲子关系的个体进行过滤,然后计算类似于IBS的结果
血缘同源(Identity By Descent,IBD),子代中共有的等位基因来源于同一祖先。
状态同源(identical by state ,IBS),两个个体拥有相同的等位基因(不一定来源以同一祖先)。
不太了解的同学👉IBD/IBS

这里讲亲子关系的移除其实不是必须要的,比如我们分析的群体里面有亲子关系的个体,想要进行分析,不需要做这一步的筛选

首先我们计算pihat>0.2的组合
image.png
说明文档:

–genome invokes an IBS/IBD computation, and then writes a report with the following fields to plink.genome:
FID1 👉 Family ID for first sample
IID1 👉 Individual ID for first sample
FID2 👉 Family ID for second sample
IID2 👉 Individual ID for second sample
RT 👉 Relationship type inferred from .fam/.ped file
EZ 👉 IBD sharing expected value, based on just .fam/.ped relationship
Z0 👉 P(IBD=0)
Z1 👉 P(IBD=1)
Z2 👉 P(IBD=2)

image.png
接着我们提取Z1大于0.9的个体

awk '{if($8>0.9) print $0}' pihat_min0.2.genome > zoom_pihat.genome
wc -l zoom_pihat.genome

image.png
我们用R语言可视化这些个体

# 先要设置工作路径

relatedness = read.table("pihat_min0.2.genome", header=T)
with(relatedness,plot(Z0,Z1, xlim=c(0,1), ylim=c(0,1), type="n"))
with(subset(relatedness,RT=="PO") , points(Z0,Z1,col=4))
with(subset(relatedness,RT=="UN") , points(Z0,Z1,col=3))
# legend(1,1, xjust=1, yjust=1, legend=levels(relatedness$RT), pch=16, col=c(4,3))

relatedness_zoom = read.table("zoom_pihat.genome", header=T)
with(relatedness_zoom,plot(Z0,Z1, xlim=c(0,0.02), ylim=c(0.98,1), type="n"))
with(subset(relatedness_zoom,RT=="PO") , points(Z0,Z1,col=4))
with(subset(relatedness_zoom,RT=="UN") , points(Z0,Z1,col=3))
# legend(0.02,1, xjust=1, yjust=1, legend=levels(relatedness$RT), pch=16, col=c(4,3))

pdf("hist_relatedness.pdf")
relatedness = read.table("pihat_min0.2.genome", header=T)
hist(relatedness[,10],main="Histogram relatedness", xlab= "Pihat")
dev.off()

image.png
image.png
PO是指:亲子关系
UN是指:非亲缘关系
然后我们删除亲子关系的个体:

plink --bfile HapMap_3_r3_10 --filter-founders --make-bed --out HapMap_3_r3_11

image.png
我们可以看到其中52个个体被移除了
image.png

然后我们来查看数据
这里的文件是bed二进制文件,不方便查看,我们将其转化为ped文件和map文件
注意:这里我们使用的是ped和map格式,如果ped文件中有表型数据(第六列),如果想指定表型数据,就使用–pheno参数,包括三列:家系,个体,表型值

plink --bfile HapMap_3_r3_11 --recode --out test

image.png
image.png
从统计数据中得出:

  • 基因型个体:110个(ped文件中)
  • SNP个数:1073181(map文件中)

希望能帮到你~

### ADNI 遗传数据处理方法和工具 #### 处理流程概述 对于ADNI遗传数据的处理,通常涉及多个阶段的数据预处理、质量控制(QC)以及统计分析。这些步骤旨在确保数据分析的有效性和可靠性。 #### 数据获取与准备 首先需访问ADNI官方网站[^4]下载所需遗传数据文件。该网站提供了多种类型的数据集供研究人员使用,包括但不限于原始测序读数、基因分型阵列数据等。为了便于后续操作,在此之前应确认已安装必要的软件环境并熟悉Linux命令行界面。 #### 质量控制 (QC) 完成初步导入之后,实施严格的质量控制系统来过滤掉低质量样本或SNPs是非常重要的一步。常用的方法有: - **去除缺失率过高** 的个体或位点; - 排除那些偏离哈迪-温伯格平衡定律(Hardy-Weinberg equilibrium, HWE)[^1]显著性的标记; - 对于群体结构明显的队列,则还需考虑通过主成分分析(PCA)等方式校正混杂效应的影响。 ```bash plink --bfile input_data \ --geno 0.05 \ # SNP call rate threshold --mind 0.05 \ # Individual call rate threshold --hwe 0.0001 \ # Hardy Weinberg Equilibrium p-value cutoff --make-bed # Output filtered data as binary PED format ``` 上述脚本展示了利用PLINK工具进行基本质控的过程,具体参数设置可根据实际情况调整优化。 #### 关联分析 经过充分清洗后的高质量数据可用于开展进一步的研究工作,比如全基因组关联研究(GWAS),寻找可能影响阿尔茨海默病风险的因素。此时可借助GCTA、SAIGE等高级计算平台实现高效建模预测,并结合机器学习算法挖掘潜在规律特性。 ```r library(data.table) library(SNPRelate) # Load genotype data into R environment using snpgdsOpenFile function from SNPRelate package. gds <- snpgdsOpen("filtered_genotype.gds") # Perform PCA to visualize population stratification and remove outliers if necessary. snps <- gds$variant.id[sample.int(length(gds$variant.id), size=1e4)] pca_res <- snpgdsPCA(snps, num.thread=8L)$sample.pcs[,1:2] plot(pca_res[,1], pca_res[,2]) ``` 这段R代码片段说明了怎样加载经前期处理过的二进制格式(.bed/.bim/.fam)单体型信息至内存中,并基于随机选取的部分SNP位置执行主成分分解(PCs),从而直观展示受试者间亲缘关系远近情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gremmie2003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值