【直播】我的基因组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 条评论
登录 后参与评论

相关文章

来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2490
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1171
来自专栏菩提树下的杨过

SqlTransaction事务使用示例

using System; using System.Data; using System.Data.SqlClient; using System.Co...

1858
来自专栏谈补锅

记录C#常用的代码片段

using Newtonsoft.Json; using Newtonsoft.Json.Linq;

922
来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

2996
来自专栏CreateAMind

文字描述生成视频的开源项目

Tensorflow implementation for the paper Attentive Semantic Video Generation usin...

1112
来自专栏听雨堂

想修改CSS

      下载了一个“通用”的CSS文件,本来想偷懒的,结果发现有问题,就是它用的颜色是变量定义的,无法识别。我又找不到在哪里可以定义。 BODY{     ...

20410
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5465
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2288
来自专栏菩提树下的杨过

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上 using System; using System.Web; using S...

1985

扫码关注云+社区