如何反向推断基因型文件中的参考碱基(REF/ALT)?
需求
客户随手丢来一个基因型文件,类似于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
可能更慢更复杂些,这里不尝试了。
Ref:Question: How to get REF and ALT alleles from a genotype data?
如何反向推断基因型文件中的参考碱基(REF/ALT)?的更多相关文章
- Word 中将正文中的参考文件标号链接到参考文献具体条目
一.概论 在论文撰写过程中,不可避免地引用到参考文献.通常,论文格式要求我们在引用的正文后,使用中括号将参考文献章节中对应的出处条目序号引起来,例如: 有时,我们要建立起这两者之间的链接关系. 二.设 ...
- 【已解决】phpMyAdmin中导入mysql数据库文件时出错:您可能正在上传很大的文件,请参考文档来寻找解决办法
期间,用phpMyAdmin去导入90M左右的mysql数据库文件时出错: 您可能正在上传很大的文件,请参考文档来寻找解决方法. [解决过程] 1.很明显,是文件太大,无法导入.即上传文件大小有限制. ...
- Android manifest文件中的标签详细介绍
官方文档 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如:--为Java应用程序指定一个独一无二的名字 ...
- 将JSON对象带有格式的写出到文件中
需求:将一个JSON对象写出到文件中,要求文件中的JSON数据带有简单的格式.代码的实现参考了Java算法中的栈处理括号匹配问题.好了,不多说了,下面是代码的实现. 代码: package gemu. ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- 把cmd信息中的正常和异常输出分别输出到不同txt文件中
场景一: 1.大量滚动信息容纳不下,在小黑屏中被冲刷掉. 2.希望把正常输出和异常输出分别输出到不同地方. 相关命令 一共有4个输出到文件的命令,现以jar命令打war包举例说明: 命令 说明 举例 ...
- 添加JSON Data到已经存在的JSON文件中
早上在学习<Post model至Web Api创建或是保存数据>http://www.cnblogs.com/insus/p/4343833.html ,如果你第二添加时,json文件得 ...
- [C++] 将 mp3 等音乐资源以资源形式嵌入 exe 文件中
引用:http://www.easyx.cn/skills/View.aspx?id=6 本文讲解怎样将 mp3 等音乐资源以资源形式嵌入 exe 文件中,并通过 mciSendString 调用.嵌 ...
- java将数据写入到txt文件中(txt有固定的格式)
java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我 ...
随机推荐
- 第六次Alpha Scrum Meeting
本次会议为Alpha阶段第六次Scrum Meeting会议 会议概要 会议时间:2021年5月2日 会议地点:线上会议 会议时长:20min 会议内容简介:本次会议主要由每个人展示自己目前完成的工作 ...
- UltraSoft - Alpha - Scrum Meeting 6
Date: Apr 21th, 2020. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM 验证了课程中心获取课程资源和作业的爬虫方式 细化前后端交互中的难 ...
- poi实现生成下拉选
在我们日常开发中,经常需要使用poi操作excel文件,现在就简单介绍一下在poi中是如何生成下拉选的. 1.创建workbook 2.创建数据约束 3.设置数据的有效性 @Test public v ...
- spring、spring boot中配置多数据源
在项目开发的过程中,有时我们有这样的需求,需要去调用别的系统中的数据,那么这个时候系统中就存在多个数据源了,那么我们如何来解决程序在运行的过程中到底是使用的那个数据源呢? 假设我们系统中存在2个数据源 ...
- 从0到1使用Kubernetes系列(四):搭建第一个应用程序
传统Kubernetes应用搭建 创建Namespace 在一个Kubernetes集群中可以创建多个Namespace进行"环境隔离",当项目和人员众多的时候,可以考虑根据项目的 ...
- IDEA插件开发,我是如何把公司的发布系统搬到IDEA里的
不得不说JetBrains公司直的非常的牛B,每一个程序员都能在JetBrains的官方网站找到一款属于自己的开发工具.这些开发工具在工作中给我们带来了巨大的便利.各种各样的基础插件,第三方插件,真是 ...
- Spring---IoC(控制反转)原理学习笔记【全】
1.IoC创建对象的方式 使用无参构造创建对象 假如要使用有参构造创建: 下标赋值constructor-arg <!--有参--> <bean id="User" ...
- 数值的整数次方 牛客网 剑指Offer
数值的整数次方 牛客网 剑指Offer 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方 class Solution: #run ...
- 最短路spaf及dijkstra模板
spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...
- linux下测试读写
1.测/目录所在磁盘的纯写速度: time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file 2.测/目录所在磁盘的纯读速度: time dd if ...