Linux环境下利用perl脚本批量筛选VCF文件指定样本
今天分享一个实用的数据提取思路:从VCF文件中提取指定列,比如有1000个样本,需要从中提取出200个制定样本,形成新的vcf文件。需要在Linux环境下进行操作,主要用到perl脚本和shell脚本。 原始数据 原始文件vcf :开始为若干行注释信息以##开头,然后是表头信息由#开始(该行包括样本ID) 待提取的样本ID:txt文件,每个样本ID一行(list.txt) 什么是VCF文件? 伴随着大规模的基因分型及测序数据的产生,迫切需要一种新的格式来记录高效的记录这些变异信息。VCF(Variant Call Format)就是这样一种用来贮存基因序列变异信息的文本文件。 VCF 格式文件信息:header section:元信息(meta-information),以‘##’为前缀,通常包含fileformat、fileDate、reference等信息。头行信息( header line ),以‘#’为前缀data section:该部分为主题部分,记录了每个样品每个位点处的基因分型信息。可以看做是一个大的Excel表格,每行是一个位点,每列是一个样本。 创建一个工作文件夹work,将第一个文件放在其data子文件夹下,第二个文件放在工作文件夹work中。 一般每个染色体有一个VCF文件,压缩为xxx.vcf.gz,将全部压缩包保存到一个目录data下。 操作步骤批量解压缩 在data文件夹中,输入gunzip *.vcf.gz解压所有文件,获得很多个VCF文件 保存注释信息 由于VCF文件刚开始几十行为注释信息(假设为78行),可以先把注释信息截取出来单独存放为一个zhushi.vcf,然后再对剩下的数据矩阵进行转置筛选,最后将注释信息加上。
转置VCF文件 由于VCF文件的每一列为一个样本,为了进行筛选,先将其转置linux压缩,变为每行一个样本的格式,使用如下perl脚本(s1.pl):
执行脚本:
筛选指定样本 转置之后的vcf_1文件每一行是一个样本,根据所需的样本待提取编号进行提取,提取所用到的perl脚本(s2.pl)如下:
执行脚本:
重新转置数据 筛选完成后,需要对数据进行转置,还原为之前的数据格式,直接调用s1.pl即可完成。
转置后需要将刚开始提取的表头注释信息再添加上去,用cat命令将两个文件合并到一起。
如上得到的vcf_4文件就是筛选得出的最终结果,对其改名,然后使用gzip压缩为原来的压缩包格式。流程结束!
批量进行操作 以下内容为bash脚本,用于批量处理多个vcf文件。 批量解压、转置、提取
批量改文件名
本文由 mdnice 多平台发布 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java.net.ProtocolException:unexpected end of stream
- 如何在cygwin中运行crontab定时脚本[利刃篇]
- 支付宝估值在哪里 支付宝估值功能演示
- iphone6s plus快捷功能全解 iphone6s plus快速操作技巧详解
- linux各种压缩解压命令
- cenos7.3启动apache,cenos7.3启动mysql
- A-GPS是什么意思 A-GPS技术是什么
- linux – iptables nat只是端口25?
- Linux文件分发脚本 只要一条命令将你的文件分发到各个服务器
- linux – Secondary IP(eth0:0)就像主服务器IP一样