这个问题,我之前没有测试过,所以我自以为是等价的,毫无疑问,我以为的是错误的。

答案是:先进行SNP缺失质控,在进行样本缺失质控。

错误的做法:

  • 先进行样本缺失质控,在进行SNP缺失质控
  • 同时进行SNP和样本的缺失质控

1. 测试数据

测试数据:

  • 样本数:165
  • SNP数:1457897
$ wc -l test_data.map test_data.ped1457897 test_data.map165 test_data.ped1458062 total

2. 正确做法,先SNP后样本

先对SNP进行缺失质控:
这里--geno 0.02是plink中对SNP进行的缺失质控,质控标准为0.02,即删除缺失率大于2%的SNP。

 plink --file test_data --geno 0.02 --recode --out test1

运行日志:

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 test1.log.
Options in effect:--file test_data--geno 0.02--out test1--recode15236 MB RAM detected; reserving 7618 MB for main workspace.
.ped scan complete (for binary autoconversion).
Performing single-pass .bed write (1457897 variants, 165 people).
--file: test1-temporary.bed + test1-temporary.bim + test1-temporary.fam
written.
1457897 variants loaded from .bim file.
165 people (80 males, 85 females) loaded from .fam.
112 phenotype values loaded from .fam.
Using 1 thread (no multithreaded calculations invoked).
Before main variant filters, 112 founders and 53 nonfounders present.
Calculating allele frequencies... done.
Total genotyping rate is 0.997378.
27454 variants removed due to missing genotype data (--geno).
1430443 variants and 165 people pass filters and QC.
Among remaining phenotypes, 56 are cases and 56 are controls.  (53 phenotypes
are missing.)
--recode ped to test1.ped + test1.map ... done.
Warning: 225 het. haploid genotypes present (see test1.hh ); many commands
treat these as missing.

可以看到:

  • SNP质控掉:27454
  • SNP剩余未点:1430443

再对样本进行缺失质控:

这里--mind 0.02是plink中对样本进行的缺失质控,质控标准为0.02,即删除缺失率大于2%的样本。

plink --file test1 --mind 0.02 --recode --out test2

运行日志:

$ plink --file test1 --mind 0.02 --recode --out test2
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 test2.log.
Options in effect:--file test1--mind 0.02--out test2--recode15236 MB RAM detected; reserving 7618 MB for main workspace.
.ped scan complete (for binary autoconversion).
Performing single-pass .bed write (1430443 variants, 165 people).
--file: test2-temporary.bed + test2-temporary.bim + test2-temporary.fam
written.
1430443 variants loaded from .bim file.
165 people (80 males, 85 females) loaded from .fam.
112 phenotype values loaded from .fam.
0 people removed due to missing genotype data (--mind).
Using 1 thread (no multithreaded calculations invoked).
Before main variant filters, 112 founders and 53 nonfounders present.
Calculating allele frequencies... done.
Total genotyping rate is 0.997899.
1430443 variants and 165 people pass filters and QC.
Among remaining phenotypes, 56 are cases and 56 are controls.  (53 phenotypes
are missing.)
--recode ped to test2.ped + test2.map ... done.
Warning: 179 het. haploid genotypes present (see test2.hh ); many commands
treat these as missing.

正确的结果:

  • 剩余SNP:1430443
  • 剩余样本:165

3. 错误做法1,先样本后SNP

下面演示,先对样本进行缺失质控,再对SNP进行缺失质控。

plink --file test_data --mind 0.02 --recode --out test3
plink --file test3 --geno 0.02 --recode --out test4

运行结果:

  • 剩余SNP:1431211
  • 剩余样本:164
$ wc -l test4.map test4.ped1431211 test4.map164 test4.ped1431375 total

和正确的结果对比:

可以看到,顺序不一样,SNP位点不一样,剩余样本也不一样。

4. 错误做法2,SNP和样本同时质控

 plink --file test_data --geno 0.02 --mind 0.02 --recode --out test5

结果是错误的:

$ wc -l test5.map test5.ped1431211 test5.map164 test5.ped1431375 total

如果是–geno和–mind顺序反呢?

 plink --file test_data  --mind 0.02 --geno 0.02 --recode --out test6

结果也是错误的:

$ wc -l test6.map test6.ped1431211 test6.map164 test6.ped1431375 total

5. 为何先质控SNP后质控样本?

SNP的数据来自实验室,无论是芯片数据,GBS数据,二代重测序数等,DNA 与阵列的杂交不佳、基因型探针性能不佳以及样本混淆或污染,都会导致数据质量差。

无论是SNP的缺失率,还是样本的缺失率,都是针对检出率进行的质控。如果一个群体中有些亚群对某些片段没有分型(片段缺失),这种情况下,对于样本进行质控或者样本和SNP同时质控,会将样本删除,而这些样本不是由于DNA质量差或者实验室的原因导致的缺失,而是由于这些样本本身的片段缺失导致的缺失,这种情况下,先对样本或者样本和SNP同时质控,会导致较大的错误。

为了避免这种情况,可以先对SNP的缺失率进行质控,这样由于某些亚群片段缺失导致的缺失,就会在SNP质控时将其删除,就不会影响后续的样本缺失质控的结果。

上面案例中,有一个样本,如果先进行SNP缺失质控再进行样本质控就不会被删除。而先进行样本质控或者同时质控,就会被删除。

6. 参考文献

该篇的缘由是因为有老师提出前后顺序对他的数据影响较大,在这里十分感谢这位老师。我这里总结一下,希望大家少走弯路。

文献地址:

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6001694/

文中截图:

感觉对您有帮助,三连走起吧!

欢迎关注我的公众号:育种数据分析之放飞自我。主要分享R语言,Python,育种数据分析,生物统计,数量遗传学,混合线性模型,GWAS和GS相关的知识。

基因组数据质控中:先进行SNP缺失质控还是样本缺失质控?相关推荐

  1. Bioinformatics BIB|港城大孙燕妮组用于识别和分析宏基因组数据中噬菌体序列的网站...

    PhaBOX: 用于识别和分析宏基因组数据中噬菌体序列的网站 PhaBOX: a server for identifying and characterizing phage contigs in ...

  2. 基因组选择中如何清洗基因组数据

    打油诗 题目:plink666 不用不知道 一用忘不掉 朝思暮也想 真的好奇妙 1. 背景 一个朋友之前问过这个问题,问题可以分为: 基因组选择中如何将ATCG的数据转化为012的形式 如何进行基因组 ...

  3. 全基因组关联分析中上位性检测算法的研究

    全基因组关联分析中上位性检测算法的研究 前言 这个项目主要是分享一些全基因组关联分析中上位性检测算法的研究经验,算是,怎么入门,写这么个东西,一是做总结,二是咱实验室估计以后还会有做这个方向的,备着吧 ...

  4. karyoploteR: 基因组数据可视化 R 包

    karyoploteR,是一个适用于所有基因组数据(any data on any genome)非圆环布局(non-circular layouts)的可视化 R/Bioconductor 包.开发 ...

  5. linux bam文件格式,pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)...

    在开发基因组相关流程或工具时,经常需要读取.处理和创建bam.vcf.bcf文件.目前已经有一些主流的处理此类格式文件的工具,如samtools.picard.vcftools.bcftools,但此 ...

  6. Nanopore测序在基因组 de novo中的应用

    Nanopore测序在基因组 de novo中的应用 自1977年第一代sanger测序问世来,经过几十年的发展,测序技术得到了极大的发展. 从第一代测序到第二代测序再到第三代测序,测序技术的每一次变 ...

  7. 三天实现独立分析宏基因组数据(有参、无参和分箱等)

    在广大粉丝的期待下,<生信宝典>联合<宏基因组>在2019年11月1-3日,北京鼓楼推出<宏基因组分析>专题培训第六期,为大家提供一条走进生信大门的捷径.为同行提供 ...

  8. Bioconductor基因组数据ExpressionSet

    文章目录 ExpressionSet介绍 如何创造一个ExpressionSet 从.CEL和其他文件格式转换 从零开始自主构建 Assay data Sample annotation Annota ...

  9. 数据科学中必须知道的5个关于奇异值分解(SVD)的应用

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 前言:本文为大家介绍了5个关于奇异值 ...

  10. 宏基因组数据提交GSA指南

    GSA简介 GSA是Genome Sequence Archive的缩写,即基因组序列存档,由中科院基因组所主办. 网址:http://gsa.big.ac.cn/ 之前介绍过NCBI提交测序数据,- ...

最新文章

  1. 吴恩达、谷歌、Facebook纷纷开源研究数据集
  2. 《iOS取证实战:调查、分析与移动安全》一2.4 安全
  3. 第16届东北赛区线上比赛斯赛点时间安排+直播链接
  4. js改变img标签的src属性在IE下没反应的解决方法
  5. 第二章:2.1 微分方程、差分方程求解(概述)
  6. FCN全连接卷积网络(3)--Fully Convolutional Networks for Semantic Segmentation阅读(摘要部分)
  7. 详解Spring Boot 2.X使用缓存@Cacheable代码示例
  8. [USACO1.2]双重回文数 Dual Palindromes
  9. router vue 多个路径_多个vue子路由文件自动化合并的方法,
  10. Entity Framework 6 Recipes 2nd Edition(9-2)译-用WCF更新单独分离的实体
  11. php记录登录时间,php记录 用户当前页面停留时间
  12. 编程语言对比 字面常量
  13. linux tomcat重启 报错,Linux启动Tomcat或停止Tomcat的错误解决方案
  14. 程序员应该收藏哪些资讯类网站
  15. chmod命令用法linux,Linux下chmod命令详细介绍及用法举例
  16. Java 迭代实现归并排序
  17. AutoJs学习-多点取色
  18. 执行throw后 后面代码还会执行吗?
  19. spring mvc 附件上传至腾讯云qcloud
  20. java问卷导入excel,将Excel数据直接上传到问卷星

热门文章

  1. WEB前端缓存解决方案
  2. Linux基本指令(1)
  3. blender 建模记录
  4. java生成树形Excel_java poi导出树形结构到excel文件
  5. 用matlab算特征值,用Matlab用计算特征值和特征向量
  6. matlab取特征值,matlab提取图像特征值
  7. C语言 单引号和双引号
  8. 131多机型解码擦除工具
  9. 视觉跟踪的进展(Advances in Visual Tracking ) - 要饭的
  10. linux的XDG(X Desktop Group)基本目录规范