使用Plink对SNP数据进行质量控制
文章目录
- 前
- 中
- 对个体和SNP的检测和筛选
- 哈代平衡
- 次等位基因频率
- 性别检测
- 后
前
在做和基因相关的分析时,拿到基因型数据,首先要进行质量控制。
在使用Plink进行质量控制时,一般包含以下几步:
- individual and SNP missingness,(筛选个体和SNP)
- inconsistencies in assigned and genetic sex of subjects (see sex discrepancy),(性别是否出错)
- minor allele frequency (MAF),(次等位基因频率筛选)
- deviations from Hardy–Weinberg equilibrium (HWE),(哈代平衡检测)
- heterozygosity rate,(杂合率)
- relatedness,(相关性)
- ethnic outliers (see population stratification).(人口分层)
当然一般也要根据数据进行步骤的选择,因为我们处理数据是为了后续的相关性分析,所以这里没有使用Plink做相关分析,同时因为人口分层暂时没有特别了解,所以只记录使用Plink进行上述前五步的工作。
在Plink中做这几步的质量控制,可以直接使用命令+参数完成筛选,也可以使用Plink生成检测结果来手动筛选。当然,一般对数据要求严格的实验都是先生成结果,经过查看以后确定参数再使用Plink进行筛选。
中
具体来讲,根据我的习惯一般先进行个体和SNP的筛选,次等位基因频率、哈代平衡的检测,之后做性别的检测,剔除性别出错的样本,再做一遍上述的筛选。
对个体和SNP的检测和筛选
根据个体和SNP的缺失率进行挑选。
–missing 生成个体和SNP缺失的检测结果。
个体缺失位点结果文件为plink.imiss:
第一列为家系ID,第二列为个体ID,第三列是否表型缺失,第四列缺失的SNP个数,第五列总SNP个数,第六列缺失率。
单个SNP缺失的结果文件为plink.lmiss:
第一列为染色体,第二列为SNP名称,第三列为缺失个数,第四列为总个数,第五列为缺失率
(这里有一点更正,之前SNP和个体写反了,感谢评论区提醒。 2020/08/06)
–geno 筛选SNP
–mind 筛选个体
–mind 0.05:如果一个SNP5%的个体中都是缺失的,那么就删掉该个体。
–geno 0.05:如果一个个体有5%的SNP都是缺失的,那么就删掉该SNP。
哈代平衡
根据基因型频率进行筛选。对于哈代平衡可以自行查找资料理解。
–hardy 计算所有位点的哈温检测结果
结果文件为plink.hwe:
第一列为染色体,第二列为SNP的ID,第三列为TEST类型,第四列A1为 minor 位点,第五列A2为 major 位点,第六列为基因型分布,对应A1A1, A1A2, A2A2的个数,第六列为观测杂合度频率,第七列为期望杂合度频率,第八列为哈温平衡的卡方检验P-value值。
–hwe 直接过滤
次等位基因频率
根据基因频率进行挑选。
这里谈一点个人对次等位基因的理解,某一位点可能为AA,AT,TT,甚至出现更大的变异导致CC,CG,所以才有次等位基因频率,而不是最小,很多人将minor allele frequency(MAF)解释为最小等位基因频率,感觉是不够准确的。
某一位点可能有A,T,C,G四种基因情况,四种情况的频率和应该为1,第二常见的基因型为次等位基因,次等位基因出现的基因频率就称为次等位基因频率。
而使用MAF进行过滤,是因为一般在人群中肯定是少数患病,那么导致少数人患病的就可能是这个次等位基因,而当MAF小于一定值时,意味着大部分位点都是相同的基因型,这些SNP位点贡献的信息很少(和所研究关系很小),会增加假阳性。极端情况MAF为0,该位点只有一种基因型,那么致病基因肯定和这个位点无关,故而过滤掉。
–freq 计算每个SNP位点的次基因频率
结果文件为plink.frq:
第一列为染色体号,第二列为SNP ID,第三列为 minor 位点,第四列为 major 位点,第五列为次等位基因频率,第六列为等位基因观察数。
–maf 直接过滤
性别检测
–check-sex 可以生成性别检测的结果,然后根据结果构造removesample.txt(名称自由),再使用 --remove removesamp.txt 将性别出错的样本剔除。
removesample 文本第一列为FID,第二列为IID。
结果文件为plink.sexcheck:
第一列为家系ID,第二列为个体ID,第三列为原始数据中所给性别,第四列为根据SNP推断的性别,第五列是否正常,第六列为F值。
女性受试者的F值必须小于0.2,男性受试者的F值必须大于0.8。这个F值是基于X染色体近交(纯合子)估计。不符合这些要求的受试者第五列为“PROBLEM”,符合则为“OK”。
后
将上述质量控制的完整流程总结成可用命令如下:
plink --bfile inputname --geno 0.05 --mind 0.1 --maf 0.05 --hwe 0.000001 --make-bed --out outputname1
plink --bfile outputname1 --check-sex
plink --bfile outputname1 --remove removesamp.txt --make-bed --out outputname2
plink --bfile outputname2 --geno 0.05 --mind 0.1 --maf 0.05 --hwe 0.000001 --make-bed --out outputname3
上述inputname、outputname均为文件名称。
上图是某次质量控制Plink日志文件的说明。
其实除了上述质量控制,根据实验有时也需要做亲缘关系的排查,结果如下。
还有–het,杂合率的检测,因为本人实验并不需要这些,有时间再写。
上述均根据Plink1.90完成。Plink基本操作可参考PLink常用命令总结,更多有关Plink命令的使用可以在参考中去查找。
参考:
http://www.cog-genomics.org/plink2/
使用Plink对SNP数据进行质量控制相关推荐
- GWAS处理流程(全基因组关联分析)——对从ADNI数据库下载的SNP数据及进行质控(QC)
对从ADNI数据库下载的SNP数据及进行质控(QC) 简介 一.先查看数据中的个体和SNP缺失情况 1.查看 2.生成绘图以可视化缺失结果. 二.QC第一步:删除缺失度大于某个数值的SNP和个体 1. ...
- linux中主成分分析软件,基于全基因组snp数据进行主成分分析(PCA)
现将如何基于全基因组的SNP数据进行PCA分析流程记录下来: 1)全基因组snp数据格式为 .vcf 2)利用vcftools软件进行格式转换(Linux系统下:进入 /vcftools_0.1.13 ...
- QIIME2进阶三_用QIIME2实现对数据的质量控制
本文主要介绍了使用生物信息软件QIIME2中的DADA2与Deblur插件对扩增子基因序列进行质量控制. 本教程将使用来自人源化(humanized)小鼠的一组粪便样品,展示16S rRNA基因扩增子 ...
- 使用SNP数据计算IBD、PCA、系统树鉴别亲缘关系
分析步骤,有可能有错误,希望指正 小故事 数据预处理 计算IBD 计算pca 系统发育树 计算SNP分布情况. 后记 小故事 接到的小任务,对于大佬们来说可能不难,对于新手,却是要抓破脑袋. 两个养殖 ...
- RNA-seq流程学习笔记(4)-使用FastQC软件对fastq格式的数据进行质量控制
今天开始学习使用FastQC软件对范例SRA测序文件的质量进行分析. 主要参考文章: RNA-seq(3):sra到fastq格式转换并进行质量控制 转录组入门(3):了解fastq测序数据 用Fas ...
- plink做SNP筛选和GWAS
1.vcf转ped/map: plink --vcf spirits.recode.vcf --recode --out test 2.统计每个snp的MAF,并将maf < 0.05; mis ...
- gatk BQSR中gtak BaseRecalibrator 出现基因组染色体号与SNP数据染色体号对应不上错误
出现以下报错: A USER ERROR has occurred: Input files reference and features have incompatible contigs: No ...
- Plink常用命令总结
文章目录 一.基本操作 二.质量控制 三.编码 附 一.基本操作 2020/05/06 更新 补充一下Plink相关的几种数据格式,见下图(图片来源忘记了,在整理文档时看到就插了进来). 1.–bfi ...
- 计算机接口控制采集时序图,自动站实时数据质量控制
自动站实时数据质量控制 利用极值法.比较法.综合 (本文共2页) 阅读全文>> 通过2次自动站实时数据质量控制失败的案例,分析总结了自动气象站实时数据质量控制的经验教训.结果表明:(1)值 ...
最新文章
- TensorFlow学习笔记(二十三)四种Cross Entropy交叉熵算法实现和应用
- 用Python制作一个简易的抽奖程序
- Spring JdbcTemplate batchUpdate() 实例
- [vue] 分别说说vue能监听到数组或对象变化的场景,还有哪些场景是监听不到的?无法监听时有什么解决方案?
- 从蜜罐新技术看欺骗防御发展走向
- oracle asm 分布式存储,分布式数据中心数据库和存储部署解决方案
- 常用Oracle分析函数详解
- 腾讯QQ看点信息流推荐业务:内容分发场景的多目标架构实践
- python用什么软件编程-python开发用什么编辑器
- 攻防世界-Misc-gif
- Mongodb 学习
- php 上标,PHP数组上标类型陷阱
- iconv linux 开源代码,每天一个 Linux 命令(123):iconv 命令
- 关于数据库表的规范设计
- Android studio点击按钮闪退问题
- ajax 返回html不返回json,jQuery ajax调用返回HTML而不是JSON的Ajax响应
- 【论文阅读】Masked Autoencoders Are Scalable Vision Learners(MAE)
- STM32CubeIDE 遇到的问题
- 厕所地图,玩出新花样!
- java信用卡卡号算法,java实现主要信息的加密解密(模拟信用卡号的保存)