需求

客户随手丢来一个基因型文件,类似于hapmap格式,只是少了中间多余的那几列,像这种类hapmap格式文件,往往是芯片数据。

这样的数据因为缺乏等位基因:参考碱基和变异碱基信息,对应在vcf文件中就是REF和ALT,导致后续一些分析没法进行。

那么,问题来了:怎么根据这个基因型文件来推断参考和变异等位基因?

样本量大的时候是否能通过计算等位基因频率来判断?推断出来的结果不一定准确,鬼知道你的变异多不多?

解决

在网上查了下,不能只通过基因型文件来推断,还需要依赖一个参考变异文件,有两条途径:

方法一

在ensembl中下载参考变异文件:

http://ftp.ebi.ac.uk/ensemblgenomes/pub/plants/current/variation/vcf/

但愿有你的物种吧,记得注意版本。

国内根本访问不了,我游遍世界下了半天才下下来。

以玉米为例:



这其实相当于一个单倍型的参考文件,再次强调注意版本和你的基因型文件一致。

有了这个文件就可以和基因型文件的位置相匹配,然后得到参考和变异碱基了。

示例代码:

awk 'NR==FNR{line[$1" "$2]=$5" "$6; next} ($0 in line){print $0" "line[$0]; next} {print $0, "NA"}' zea_mays.vcf pos.txt

这个代码是错误的,awk数组的值不能连接两个字段,只能等于$5,而非想要的$5" "$6。还是不熟悉,放弃,希望有高手指点下。

写了个长长的垃圾perl代码:

#! /usr/bin/perl -w
use strict; my %hash;
my %pos;
open(IN,"<$ARGV[0]") or die $!;
while(<IN>){
chomp;
next if /^#/;
my @F = split/\s+/;
my $key = "$F[0]\t$F[1]";
my $value = "$F[3]\t$F[4]";
$hash{$key}=$value;
} open(ID,"<$ARGV[1]") or die $!;
while(<ID>){
chomp;
my @F = split/\s+/;
my $key = "$F[0]\t$F[1]";
$pos{$key}=1;
} foreach my $id(keys %pos){
if(exists($hash{$id})){
print "$id\t$hash{$id}\n";
}else{
print "$id\t-\t-\n";
}
} close IN;
close ID;

最后的结果要排下序:

perl map.pl zea_mays.vcf pos.txt >out
sort -nk 1 -nk 2 out >ref_res.txt

注意,因为是参考单倍型,不一定包含了基因型文件中的所有位点。后续要怎么搞?如果缺失不多,就删了那些位点吧。

如果你的基因型文件本身是vcf格式,那用vcftools就有这种取交集位点的功能,很方便。

方法二

Ensembl 有REST API 接口,需要准备好对应的json格式文件,进行调取。

GET overlap/region/:species/:region

http://rest.ensembl.org/documentation/info/overlap_region

提供小麦的一个示例:

http://rest.ensembl.org/overlap/region/triticum_aestivum/4A:714193714-714193714?content-type=application/json;feature=variation

可能更慢更复杂些,这里不尝试了。

Ref:Question: How to get REF and ALT alleles from a genotype data?

如何反向推断基因型文件中的参考碱基(REF/ALT)?的更多相关文章

  1. Word 中将正文中的参考文件标号链接到参考文献具体条目

    一.概论 在论文撰写过程中,不可避免地引用到参考文献.通常,论文格式要求我们在引用的正文后,使用中括号将参考文献章节中对应的出处条目序号引起来,例如: 有时,我们要建立起这两者之间的链接关系. 二.设 ...

  2. 【已解决】phpMyAdmin中导入mysql数据库文件时出错:您可能正在上传很大的文件,请参考文档来寻找解决办法

    期间,用phpMyAdmin去导入90M左右的mysql数据库文件时出错: 您可能正在上传很大的文件,请参考文档来寻找解决方法. [解决过程] 1.很明显,是文件太大,无法导入.即上传文件大小有限制. ...

  3. Android manifest文件中的标签详细介绍

    官方文档 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如:--为Java应用程序指定一个独一无二的名字 ...

  4. 将JSON对象带有格式的写出到文件中

    需求:将一个JSON对象写出到文件中,要求文件中的JSON数据带有简单的格式.代码的实现参考了Java算法中的栈处理括号匹配问题.好了,不多说了,下面是代码的实现. 代码: package gemu. ...

  5. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  6. 把cmd信息中的正常和异常输出分别输出到不同txt文件中

    场景一: 1.大量滚动信息容纳不下,在小黑屏中被冲刷掉. 2.希望把正常输出和异常输出分别输出到不同地方. 相关命令 一共有4个输出到文件的命令,现以jar命令打war包举例说明: 命令 说明 举例  ...

  7. 添加JSON Data到已经存在的JSON文件中

    早上在学习<Post model至Web Api创建或是保存数据>http://www.cnblogs.com/insus/p/4343833.html ,如果你第二添加时,json文件得 ...

  8. [C++] 将 mp3 等音乐资源以资源形式嵌入 exe 文件中

    引用:http://www.easyx.cn/skills/View.aspx?id=6 本文讲解怎样将 mp3 等音乐资源以资源形式嵌入 exe 文件中,并通过 mciSendString 调用.嵌 ...

  9. java将数据写入到txt文件中(txt有固定的格式)

    java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ...

随机推荐

  1. tomcat内存马原理解析及实现

    内存马 简介 ​ Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站.应用.但传统的Webshell都是基于文件类型的,黑客 ...

  2. 从零开始的Spring Session(一)

    Session和Cookie这两个概念,在学习java web开发之初,大多数人就已经接触过了.最近在研究跨域单点登录的实现时,发现对于Session和Cookie的了解,并不是很深入,所以打算写两篇 ...

  3. 微信小程序添加外部地图服务数据

    先上效果: 缘起 使用微信小程序做地图相关功能的时候,有个需求是需要接入自己发布的地图服务.查看微信小程序地图组件文档,发现它对地图相关的支持很少,只有一些基础功能,比如添加点.线.面.气泡和一些常规 ...

  4. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  5. [敏捷软工团队博客]项目介绍 & 需求分析 & 发布预测

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 了解项目整体情况 ...

  6. BUAA2020软工作业(三)——个人项目

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...

  7. 「总结」$dp1$

    大概就是做点题. 先列一下要做的题目列表,从\(UOJ\)上找的. 129寿司晚宴 348州区划分 370滑稽树上滑稽果 457数树 22外星人 37主旋律 300吉夫特 196线段树 311积劳成疾 ...

  8. IM服务器:我的千万级在线聊天服务器集群

    一.服务器特点 01.傻瓜式部署,一键式启动: 02.单机支持10万以上在线用户聊天(8G内存,如果内存足够大,并发量可超过10万): 03.支持服务器集群,集群间高内聚.低耦合,可动态横向扩展IM服 ...

  9. vcs(UST)Undefined System Task Call

    转载:VCS求助啊 - 微波EDA网 (mweda.com) Error-[UST] Undefined System Task Call../../path/bench/path.v, 51Unde ...

  10. hdu 2176 取(m堆)石子游戏 (裸Nim)

    题意: m堆石头,每堆石头个数:a[1]....a[m]. 每次只能在一堆里取,至少取一个. 最后没石子取者负. 先取者负输出NO,先取胜胜输出YES,然后输出先取者第1次取子的所有方法.如果从有a个 ...