【直播】我的基因组63:wegene芯片跟二代测序的简单比较
首先要说的是,wegene公司效率很赞。
从我送样品(2017-2-20)到拿到测序数据(2017-3-10),总共耗时不到20天~~~
前面我们已经介绍过我的全基因组测序结果如何模拟成芯片数据,里面详细说明了芯片数据和高通量测序的基因型区别
【直播】我的基因组59:把我的数据伪装成23andme或wegene的芯片数据
今天我终于拿到了自己的两个数据,可以比较一下这两个平台的基因型的一致性了~
首先看看wegene芯片数据咯:
还是需要简单的探索一下他们提供的芯片覆盖的染色体情况,还有给出的基因型情况。
对此,我专门录制了一个视频来说明wegene芯片基因型跟二代测序的基因型比较,我视频里面有秀探索的方法,还有代码。
我这里就说结果吧,他们的芯片包括了22条常染色体,还有X、Y、MT信息。每条染色体以及对应的探针个数如下:
然后基因型除了ATCG的组合,还有DD,DI,II这样的表明是插入或者缺失,在比较的时候,我把它们剔除掉了。
然后看看我自己的vcf:
好吧,很明显,两个文件都是有dbSNP的,所以需要用到一个公共数据如下: ~/annotation/variation/human/dbSNP/dbsnp.pos
(希望这么一点点的数据不会暴露我的隐私,唉,为了这个直播,我也是贡献了不少了)
简单的写一个脚本,就好啦~
ln ~/data/project/myGenome/fastq/variation/autochr.highQuali.dbsnp.vcf jmzeng.vcf
cat jmzeng_wegene.txt |grep -v "^#" |grep -v "--" |grep -v "DD" |grep -v "II" |grep -v "DI" |grep -v -w 'X'|grep -v -w "Y" |grep -v -w "MT" >jmzeng_wegene.dbsnp.txt
cat jmzeng_wegene.dbsnp.txt ~/annotation/variation/human/dbSNP/dbsnp.pos |perl -lane '{if(/^rs/){$h{$F[0]}=$F[3]}else{ if(exists $h{$F[2]}) {if($h{$F[2]} eq "$F[3]$F[3]"){$gt='wild'}elsif($h{$F[2]} eq "$F[4]$F[4]"){$gt='hom'}else{$gt='het'}print "$F[2]t$gt" } }}' >jmzeng_wegene.genotype
cat jmzeng_wegene.genotype jmzeng.vcf |perl -alne '{next if/^#/;$h{$F[0]}=$F[1] if/^rs/; if(exists $h{$F[2]}){@tmp=split/:/,$F[9];$h{$F[2]}.="t$tmp[0]"}}END{foreach(sort keys %h){print "$_t$h{$_}"}}' >merge.genotype
cut -f 2-3 merge.genotype |sort |uniq -c
看得懂代码的朋友应该知道,我把X,Y,MT染色体探针都去掉了,不想比较这个,因为我本身自己二代测序的全基因组vcf文件的准确性不敢保证。还有就是我只比较了wild,het,hom,其实并没有考虑,如果同一个位点,在芯片和测序结果是突变成了不同的碱基的情况,如果要考虑,会更复杂一点,下次再讲吧。
结果如下:
中间文件:
首先过滤掉wegene数据里面的头文件还有那些没有被dbSNP数据库收录的位点,还有没有被检测到的位点,还有X,Y,MT染色体探针。这样过滤了3万多位点。
然后根据dbSNP数据库文件把wegene的芯片基因型转换成wild,het,hom,因为我的vcf文件里面没有记录的就是wild,记录0/1的就是het,记录1/1的就是hom的mutation
很明显可以看到,我的全基因组测序数据跟自己芯片数据一致性非常好!
含有2的那些不需要管,是一个位点有多种突变形式,本来就不准确。
在总共的534239位点里面,有266728个位点,在芯片测序结果和WGS的VCF里面都是野生型。有107091都是纯合突变,有151228是杂合突变!
也就是说,基因型一致性达到98.27942%
既然一致性这么好,我非常肯定我的测序没有问题啦~~~
接下来我们就可以毫无顾忌的进行各种各样的解读啦!!!
可能腾讯视频播放比较模糊,可以考虑下载到本地观看:
链接:https://pan.baidu.com/s/1c1obJg 密码:zs2w
最后,点击阅读原文可以直达wegene官网查看他家产品详情,还有,预告一下,下周我们会放出一定数量的wegene优惠券,希望大家跟我一样来探索自己的基因组数据,感兴趣的朋友可以在下面留言。
文:Jimmy
图文编辑:吃瓜群众
- 1755: [Usaco2005 qua]Bank Interest
- SQL Server 重新组织生成索引
- 3386/1752: [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家
- 洛谷P2197 nim游戏(Nim游戏)
- SQL Server 索引和表体系结构(聚集索引+非聚集索引)
- 3384/1750: [Usaco2004 Nov]Apple Catching 接苹果
- 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
- 1455: 罗马游戏
- SQL Server 高性能写入的一些总结
- 3389: [Usaco2004 Dec]Cleaning Shifts安排值班
- 1754: [Usaco2005 qua]Bull Math
- 3377: [Usaco2004 Open]The Cow Lineup 奶牛序列
- 3301: [USACO2011 Feb] Cow Line
- SQL Server 索引和表体系结构(包含列索引)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 谁能想到,我给技术总监“上了一课”
- 设计模式速览
- 序列模型——吴恩达深度学习课程笔记(五)
- 30分钟学会pyecharts数据可视化
- 用Keras从零开始6步骤训练神经网络
- Keras结构化数据预处理范例——Titanic生存预测
- 从原理上搞懂如何设置线程池参数大小?
- Keras图像数据预处理范例——Cifar2图片分类
- Keras文本数据预处理范例——IMDB影评情感分类
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 使用详解
- Go 垃圾回收
- 如何在SpringBoot中异步请求和异步调用
- 实现 memcached 客户端:TCP、连接池、一致性哈希、自定义协议
- 30分钟学会LightGBM
- 三种计算图