【直播】我的基因组59:把我的数据伪装成23andme或wegene的芯片数据

为什么会有这个需求呢?很简单,因为国内的一些基因检测公司支持导入23andme的芯片数据做解读,而我正想看看一下他们的技术功底到底如何?

23andme和wegene都是用的一款特制的芯片,可以捕获基因组上面的一些特定位点而已,既然我已经测了全基因组,那么分分钟就可以从我的基因组分析结果里面提取出23andme的芯片位点,伪装成23andme的芯片数据!

我从谷歌里面找到了一个公共的数据,点击阅读原文查看这个公共数据的下载链接!

这很容易明白23andme的芯片数据是什么格式的,基因组坐标的转换对我等生物信息学工程师来说比吃饭还简单!(当然,我其实拿到了新版的数据,但是由于隐私问题,不便传播

转换很简单:

第一步,把芯片设计的rsID全部拿出来

第二步,根据rsID从我的VCF文件中挑取位点,并赋予纯合杂合基因型

第三步,去dbSNP数据库文件里面映射我VCF文件没有记录的点为野生型

(perl -alne '{print if /^rs/}' dm_23andme_v3_110219.txt  |cut -f 1 >23andme.rsID.listcat ../variation/autochr.highQuali.dbsnp.vcf  23andme.rsID.list |perl -alne '{if($F[2]=~/^rs/){if(/1\/1/){$gt=$F[4].$F[4]}else{$gt=$F[3].$F[4]};$h{$F[2]}="$F[0]\t$F[1]\t$gt" }  print "$_\t$h{$_}" if /^rs/}' >my_23andme.1.txtzcat ~/annotation/variation/human/dbSNP/All_20160601.vcf.gz |perl -alne 'BEGIN{ open FH,"my_23andme.1.txt";while(<FH>){chomp;@F=split;if(/^rs/){ $pos{$.}=$_;if($F[3]){$h{$F[0]}=$_}else{$tmp{$F[0]}=1}  }} }{if(exists $tmp{$F[2]}){ $tmp{$F[2]}="$F[0]\t$F[1]\t$F[2]$F[2]"  }}END{foreach(sort{$a<=>$b} keys %pos){ if(exists $h{$pos{$_}} ){$value=$h{$pos{$_}}}else{$value=$tmp{$pos{$_}} } ;print "$pos{$_}\t$value" }}'

wegene的芯片数据在格式上是一模一样,因为他们用的都是illumina公司出品的定制化芯片。

本来是想上传这个公共数据去这个网站上面做一次免费报告生成,但是他们要求很多,搞了好几次还没成功,最后还是嫌弃我芯片版本太低了,所以我又用了下面的代码把旧基因组版本芯片数据转换成新的。

zcat ~/annotation/variation/human/dbSNP/All_20160601.vcf.gz |perl -alne 'BEGIN{ open FH,"dm_23andme_v3_110219.txt";while(<FH>){chomp;@F=split;if(/^rs/){$pos{$.}=$_;$h{$F[0]}=$F[3]} } }{if(exists $h{$F[2]}){ $h{$F[2]}="$F[0]\t$F[1]\t$h{$F[2]}"  }}END{print "$pos{$_}\t$h{$pos{$_}}" foreach sort{$a<=>$b} keys %pos}' >dm_23andme_v3_hg19.txt

这个难度有点高,编程功底不够就不用看了,想看看具体是怎么回事,点击阅读原文查看!

参考链接:

https://www.wegene.com/demo/

https://www.mygene.com/demo

http://online.cambridgecoding.com/notebooks/cca_admin/genetic-ancestry-analysis-python

文:Jimmy

图文编辑:吃瓜群众

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

老鸟程序员才知道的40个小技巧

▲ 40条真言,希望对进阶中的程序朋友有所帮助。 1、重构是程序员的主力技能。 2、工作日志能提升脑容量。 3、先用profiler调查,才有脸谈优化。 4、注...

1818
来自专栏码神联盟

高效编程所需要做的那点事

聊聊如果才能高效编程 计划(Plan) 所谓Plan,其实就是对应于编程中的设计阶段,当然,这里的Plan并不像设计那样重量级。它要求我们程序员在正式...

2759
来自专栏北京马哥教育

Linux 内核学习经验总结

学习内核,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。

3292
来自专栏安恒信息

通用缓解措施和多维度攻击简介

  DEP(Data Execution Prevention,数据执行保护)这东西很多人都知道,但ASLR(Address space layout rand...

3638
来自专栏大数据文摘

去IOE的另外一条路径:全内存数据库弯道超车

1718
来自专栏架构师之路

框架组件,究竟要不要自研?

一、问题的提出 询问框架组件,是否需要自研? 18年规划系统介绍58到家的技术体系,15年加盟58到家后,架构部正好也是负责范围的一部分,故谈一谈自己的想法,个...

4086
来自专栏张善友的专栏

依赖注入是否值得?

在博客的世界里进行了一场关于使用依赖注入(DI)之优点和缺点的有趣讨论。论题是:依赖注入是否真的值得? 讨论始自Jacob Proffitt,他撰文解释他的观...

1809
来自专栏牛客网

百度 提前批C++ 一面 二面 三面

【每日一语】当你厌恶你身边的人,你表达厌恶最好的方式不是和他们争吵,而是自己勤快点儿,加把劲离开他们。那样,他们就永远从你的生活中消失,和死了差不多。

1793
来自专栏杨建荣的学习笔记

运维平台元数据稽核小结

数据库运维中的元数据建设都是重中之重,如果元数据不具有参考的价值,那么后续的操作都会受到影响,但是元数据的建设也应该是分成几个步子来走,首先得能够收集到元数...

1324
来自专栏企鹅号快讯

什么样的密码才是安全的?

什么样的密码才是安全的?相信这样的老生常谈你已经听腻了:密码设置得长一些,混合数字字母符号,避免任何可能容易联系到你本身的密码。但现实是在街头调查中大多数人并没...

1896

扫码关注云+社区