如何从vcf文件中批量提取一系列基因的SNP位点?
需求
客户的一个简单需求:
我有一批功能基因位点,想从重测序的群体材料中找到这些位点,如何批量快速获得?
示例文件
gene.txt

test.vcf

代码实现
run.sh
cat $1 |while read gene chr from to
do
    #echo $chr $from $to
    if echo $2 |grep -q '.*.vcf.gz$';then
        vcftools --gzvcf $2 --chr $chr --from-bp $from --to-bp $to  --recode --recode-INFO-all --out $gene.$chr.$from-$to
    elif echo $2 |grep -q '.*.vcf$';then
        vcftools --vcf $2 --chr $chr --from-bp $from --to-bp $to  --recode --recode-INFO-all --out $gene.$chr.$from-$to
    fi
done
运行sh run.sh gene.txt test.vcf,或sh run.sh gene.txt test.vcf.gz
生成结果:

补充说明
以上代码中利用了vcftools工具,以及shell中读取每行文件的每个字段进行赋值。
vcftools还能提取某个具体位置的SNP:
vcftools --gzvcf test.vcf.gz --positions specific_position.txt --recode --out specific_position.vcf
specific_position.txt文件格式如下:
1 842013
1 891021
1 903426
1 949654
1 1018704
除了vcftools,bcftools和plink等工具也能实现类似的功能。
bcftools filter test.vcf.gz --regions 9:4700000-4800000 > out.vcf
但bcftools要求vcf必须是gz格式,如不是,则需要进行转化(直接用gzip不行):
bcftools view test.vcf -Oz -o test.vcf.gz
bcftools index test.vcf.gz
需要格外注意的是,vcf中的染色体名称要和提取文件中的染色体名保持一致,如Chr1或chr1或1。
或者:
 bcftools view  -S keep.list test.vcf >sub_indv.vcf
keep.list可以是“染色体+具体位置”两列,也可以是“染色体+起始+终止”三列:
chr1    27639
chr1    60383
chr2    60469
chr3    60516
chr4    60534
#或者
chr1  1  1000
chr1  2000  4500
在plink中,可以指定特定的样本(keep)或SNP(extract)。
指定样本提取:
plink --bfile file --noweb --keep sampleID.txt --recode --make-bed --out sample
sampleID.txt第一列为提取的样本Family ID,第二列为Within-family ID(IID)。
指定位点提取:
plink --bfile file --extract snp.txt --make-bed --out snp
snp.txt文件中一个SNP名称一行。
Ref:https://www.cnblogs.com/chenwenyan/p/9151672.html
https://blog.csdn.net/weixin_34387468/article/details/94519445
https://www.cnblogs.com/mmtinfo/p/11945592.html
https://www.cnblogs.com/chenwenyan/p/8991417.html
如何从vcf文件中批量提取一系列基因的SNP位点?的更多相关文章
- Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量。
		
myeclipse和eclipse集成编译软件,都提供了一个快捷键用来批量重命名变量:Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量.扩展知识:如果想要重命名文件名,又不想手动 ...
 - Editplus 文件中批量搜索字符串的技巧
		
常规情况下,我们利用Crtl+F可以在文档中查找字符串,进行替换等操作. 但要有的时候,我们要在大量文件中做这种查找操作,显然,一个个的打开文档是不现实的. 比如: 最近,谷歌被墙的很厉害,导致很多w ...
 - python实现将android手机通讯录vcf文件转化为csv
		
经常会遇到将手机通讯录导出到电脑并转化为在电脑中可编辑的情况,在网上搜索了很久当前不外乎两种处理方式.1.使用电脑的outlook的通讯簿功能,将手机导出的vcf文件导入到outlook的通讯录中,然 ...
 - Android vcard使用示例,生成vcf文件
		
Android vcard使用示例,生成vcf文件 我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码. vCard 规范容许公开交换个人数据交换 ( ...
 - 如何反向推断基因型文件中的参考碱基(REF/ALT)?
		
目录 需求 解决 方法一 方法二 需求 客户随手丢来一个基因型文件,类似于hapmap格式,只是少了中间多余的那几列,像这种类hapmap格式文件,往往是芯片数据. 这样的数据因为缺乏等位基因:参考碱 ...
 - 利用vcftools比较两个vcf文件
		
因为最近有一项工作是比较填充准确性的,中间有用到vcftools比较两个vcf文件. 使用命令也很简单: 1 vcftools --vcf file1.snp.vcf --diff file2.snp ...
 - 嵌入式 H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
		
一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象 ...
 - 提取PPT文件中的Vba ProjectStg Compressed Atom。Extract PPT VBA Compress Stream
		
http://msdn.microsoft.com/en-us/library/cc313106(v=office.12).aspx 微软文档 PartI ********************* ...
 - 利用ROS工具从bag文件中提取图片
		
bag文件是ROS常用的数据存储格式,因此要从bag文件中提取数据就需要了解一点ROS的背景知识. 1. 什么是ROS及其优势 ROS全称Robot Operating System,是BSD-lic ...
 
随机推荐
- Scrum Meeting 0607
			
零.说明 日期:2021-6-7 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 重新设计产品 ...
 - [对对子队]会议记录4.11(Scrum Meeting 2)
			
今天已完成的工作 何瑞  工作内容:完成指令的衔接:完成合成指南界面的制作:初步实现成本系统  相关issue:实现用户指令编辑系统的逻辑 马嘉  工作内容:完成游戏内暂停界面  相关issu ...
 - elasticsearch嵌套对象的映射
			
在es中,我们有时候可能需要映射,{ "field" : "xx" , "field01" : [] }这样格式的嵌套对象,默认情况下es会 ...
 - python2和python3并存下的pip使用
			
py -2 -m pip install *.whl py -3 -m pip intall *.wl
 - RF射频传输,原理介绍,三分钟看懂!发射功率、接收灵敏度详解!
			
射频是什么? 官方说法:RF,Radio Frequency. (不懂的人,看了还是不懂,不过对于物联网行业的开发工程师.产品经理和项目经理,还是有需要对射频有个基础了解的.) 燚智能解读: 两个人, ...
 - stm32直流电机驱动与测速学习总结
			
通过实验发现,定时器的一个通道控制一个pwm信号. 在正式开始之前也可以参考这个视频学习资料 (stm32直流电机驱动) http://www.makeru.com.cn/live/1392_1218 ...
 - FreeRTOS学习笔记——FreeRTOS 任务基础知识
			
RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...
 - 记一次 Java 导出大批量 Excel 优化
			
常用的excel导出方案,详情见Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,其中jxl.esayEscel 底层都是基于 poi,它们仅仅是对 poi ...
 - 攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup
			
攻防世界 WEB 高手进阶区 XCTF Web_php_unserialize Writeup 题目介绍 题名考点 PHP反序列化漏洞 正则匹配 Writeup <?php class Demo ...
 - Fiddler抓包工具简介:(一)认识Fiddler
			
认识Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据(指coo ...