Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >比较两个vcf文件的多种实现方法

比较两个vcf文件的多种实现方法

作者头像
生信技能树
发布于 2020-07-16 08:11:41
发布于 2020-07-16 08:11:41
2.9K00
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

有粉丝邮件求助,给了我两个vcf文件,旧的vcf文件走的是标准的bwa+gatk流程,参考基因组是hg19,新的文件参考基因组是hg38,也是gatk标准流程。想有比较它们,首先得保证两个vcf文件的参考基因组一致,因为版本不一致,所以需要使用CrossMap等软件进行参考基因组版本转换,然后里使用 SnpSift 软件的 Concordance 命令比较它们。

如果简单看文件数量,当然是不行的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
137352 new.filter.sort.vcf 
46976 old.filter.sort.vcf

首先看看两个vcf文件的染色体分布情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat old.filter.sort.vcf |grep -v '^#' |cut -f 1 |sort |uniq -c > old.chr
cat new.filter.sort.vcf |grep -v '^#' |cut -f 1 |sort |uniq -c > new.chr
paste new.chr  old.chr

结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
14341 chr1 4912 chr1
6562 chr10 2108 chr10
7427 chr11 2920 chr11
7436 chr12 2519 chr12
3200 chr13  856 chr13
4051 chr14 1408 chr14
4568 chr15 1520 chr15
5934 chr16 2223 chr16
7100 chr17 2702 chr17
2596 chr18  778 chr18
8020 chr19 3399 chr19
10160 chr2 3146 chr2
3349 chr20 1135 chr20
1908 chr21  666 chr21
3262 chr22 1095 chr22
7676 chr3 2708 chr3
6437 chr4 1990 chr4
6134 chr5 1975 chr5
6265 chr6 2718 chr6
7095 chr7 2115 chr7
4813 chr8 1595 chr8
6162 chr9 1915 chr9
  31 chrM  
2081 chrX   519 chrX 
 157 chrY   7 chrY

可以看到,新的vcf文件的突变位点数量远大于旧的vcf文件。仔细查看新vcf文件,**发现是没有做基本过滤,比如测序深度大于20等等指标。**所以我就顺便把它过滤一波,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input=new.filter.sort.vcf
cat $input | java -jar ~/biosoft/snpEff/SnpSift.jar  filter "( DP > 20 & FILTER = 'PASS' )" | \
perl -alne '{print unless $F[0]  =~  /_/}' | \
awk '$1 ~ /^#/ {print $0;next} {print $0 | "sort -k1,1 -k2,2n"}' | \
grep -v '1/2' >  filtered.chr
# 然后再统计这个vcf文件的染色体发布情况
cat filtered.vcf |grep -v '^#' |cut -f 1 |sort |uniq -c > filtered.chr
 paste new.chr  old.chr filtered.chr

如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
14341 chr1 4912 chr1 5731 chr1
6562 chr10 2108 chr10 2617 chr10
7427 chr11 2920 chr11 3419 chr11
7436 chr12 2519 chr12 2971 chr12
3200 chr13  856 chr13 1070 chr13
4051 chr14 1408 chr14 1636 chr14
4568 chr15 1520 chr15 1780 chr15
5934 chr16 2223 chr16 2555 chr16
7100 chr17 2702 chr17 3216 chr17
2596 chr18  778 chr18  957 chr18
8020 chr19 3399 chr19 3960 chr19
10160 chr2 3146 chr2   3822 chr2
3349 chr20 1135 chr20 1448 chr20
1908 chr21  666 chr21  722 chr21
3262 chr22 1095 chr22 1354 chr22
7676 chr3 2708 chr3 3060 chr3
6437 chr4 1990 chr4 2405 chr4
6134 chr5 1975 chr5 2334 chr5
6265 chr6 2718 chr6 2376 chr6
7095 chr7 2115 chr7 2615 chr7
4813 chr8 1595 chr8 1897 chr8
6162 chr9 1915 chr9 2497 chr9 
2081 chrX  519 chrX 552 chrX
 157 chrY    7 chrY  6 chrY

可以看到,经过质控后的两个vcf文件,至少是从染色体上**变异位点记录的数量上来说,非常类似的。**后面我们还需要进行更细致的探索。

再看基础的vcf统计命令

使用snpEff可以对vcf进行基础统计,它也会对染色体分布情况进行统计,更重要的有丰富的可视化图表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar ~/biosoft/snpEff/snpEff.jar GRCh38.86 \
old.filter.sort.vcf  > old.filter.sort.eff.vcf
java -jar ~/biosoft/snpEff/snpEff.jar GRCh38.86 \
new.filter.sort.vcf  > new.filter.sort.eff.vcf

结果如下:

可以看到突变位点区域分类情况:

突变位点区域分类百分比

可以看到,两个vcf文件的变异位点在intron和exon区域的比例差异是最大的,其实是因为它们两个区域本来就长度很大。

另外一个统计指标

image-20200711195600818

最后看专业的软件进行两个vcf文件比较

这里使用 SnpSift 软件的 Concordance 命令,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 java -Xmx1g -jar  ~/biosoft/snpEff/SnpSift.jar concordance -v \
new.filter.sort.vcf old.filter.sort.vcf   1>comp.results.txt 2>comp.log.txt

得到的结果文件不是很好理解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
2.2K Jul 11 11:57 comp.log.txt
4.2M Jul 11 11:57 comp.results.txt
590 Jul 11 11:57 concordance_new_old.by_sample.txt
89 Jul 11 11:57 concordance_new_old.summary.txt

其中 concordance_new_old.by_sample.txt 文件需要倒置查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    5 MISSING_ENTRY_new/MISSING_ENTRY_old 0
     6 MISSING_ENTRY_new/MISSING_GT_old 0
     7 MISSING_ENTRY_new/REF 0
     8 MISSING_ENTRY_new/ALT_1 4842
     9 MISSING_ENTRY_new/ALT_2 1971
    10 MISSING_GT_new/MISSING_ENTRY_old 0
    11 MISSING_GT_new/MISSING_GT_old 0
    12 MISSING_GT_new/REF 0
    13 MISSING_GT_new/ALT_1 0
    14 MISSING_GT_new/ALT_2 0
    15 REF/MISSING_ENTRY_old 0
    16 REF/MISSING_GT_old 0
    17 REF/REF 0
    18 REF/ALT_1 0
    19 REF/ALT_2 0
    20 ALT_1/MISSING_ENTRY_old 7855
    21 ALT_1/MISSING_GT_old 0
    22 ALT_1/REF 0
    23 ALT_1/ALT_1 22538
    24 ALT_1/ALT_2 4
    25 ALT_2/MISSING_ENTRY_old 7001
    26 ALT_2/MISSING_GT_old 0
    27 ALT_2/REF 0
    28 ALT_2/ALT_1 20
    29 ALT_2/ALT_2 17552
    30 ERROR 0

可以看到 ALT_1/ALT_1有22538个,ALT_2/ALT_2有17552个,说明新旧vcf文件的一致性还挺好的!

然后ALT_1/MISSING_ENTRY_old是7855个,ALT_2/MISSING_ENTRY_old是7001个,说明新的vcf文件,多找出来了近1.5万个突变位点。

而MISSING_ENTRY_new/ALT_1的4842个,MISSING_ENTRY_new/ALT_2是1971个,说明旧的vcf文件,多找出来了不到7千个突变位点。

有意思的是ALT_1/ALT_1 22538

两个流程不可能完全一致,近4万个位点在两个vcf文件里面都有,超过80%的一致性了。挺好的。

如果要具体看哪些位置是一致的,哪些是冲突的,就需要去重点理解 comp.results.txt 文件

其实可以分染色体查看

前面的 SnpSift 软件的 Concordance 命令,最后得到的是vcf文件全部染色体的,一致性的韦恩图罢了。

但是可以继续细致的探索 comp.results.txt 文件,拆分染色体后,继续统计上面提到的6种情况发生的频次。那就出一个学徒作业吧,比较两个vcf文件,然后区分染色体绘制韦恩图。

这两个vcf文件可以是不同人的,也可以是同一个人的不同批次测序或者不同数据分析流程拿到的vcf文件。

也有很多其它轮子

比如 vcf-compare 工具,bedtools等等

实际上考验的就是Linux知识

再怎么强调生物信息学数据分析学习过程的计算机基础知识的打磨都不为过,我把它粗略的分成基于R语言的统计可视化,以及基于Linux的NGS数据处理

《生信分析人员如何系统入门R(2019更新版)》

《生信分析人员如何系统入门Linux(2019更新版)》

Linux的6个阶段需要跨越过去 ,一般来说,每个阶段都需要至少一天以上的学习:

  • 第1阶段:把linux系统玩得跟Windows或者MacOS那样的桌面操作系统一样顺畅,主要目的就是去可视化,熟悉黑白命令行界面,可以仅仅以键盘交互模式完成常规文件夹及文件管理工作。
  • 第2阶段:做到文本文件的表格化处理,类似于以键盘交互模式完成Excel表格的排序、计数、筛选、去冗余,查找,切割,替换,合并,补齐,熟练掌握awk,sed,grep这文本处理的三驾马车。
  • 第3阶段:元字符,通配符及shell中的各种扩展,从此linux操作不再神秘!
  • 第4阶段:高级目录管理:软硬链接,绝对路径和相对路径,环境变量。
  • 第5阶段:任务提交及批处理,脚本编写解放你的双手。
  • 第6阶段:软件安装及conda管理,让linux系统实用性放飞自我。

很多粉丝发邮件询问我具体的软件,命令报错该如何解决,这些问题通常是输入文件,命令参数问题,还有java环境问题,太细致了,我没有空去帮大家debug哦。

如果是是Linux基础知识掌握的不牢固,其实拼命学习即可:

  • 生信入门环境的:https://www.bilibili.com/video/BV1cJ411e7UH
  • 生信服务器的:https://www.bilibili.com/video/BV1XW411d7Bp
  • 生信软件的:https://www.bilibili.com/video/BV1ps411M7UZ
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ggplot2可视化拷贝数变异CNV的GISTIC score
大家看文献时可能经常遇到各种CNV gistic score的可视化,都很好看,但是不知道怎么画出来的:
医学和生信笔记
2022/11/15
3.1K0
ggplot2可视化拷贝数变异CNV的GISTIC score
染色体坐标排序的两个方法
如果有X,Y染色体,可以转换为数值,比如 第24,25,26号染色体分别是X,Y,MT染色体。
生信技能树
2021/12/16
5570
vcf 文件如何修改染色体修改样本名称提取样本
数据使用GWAS-Cookbook中的GWASdat1中的数据,将数据变为vcf格式。
邓飞
2023/10/20
1.3K0
vcf 文件如何修改染色体修改样本名称提取样本
中国人肝癌全基因组项目部分图表重现
前面推文介绍过文章 Deep whole-genome analysis of 494 hepatocellular carcinomas,详情见:中国人肝癌全基因组项目。
生信菜鸟团
2024/04/25
2740
中国人肝癌全基因组项目部分图表重现
sWGS检测CNV的一点探索
这个软件可以检测切除的肿瘤组织,识别其中的肿瘤细胞含量,也可以用来检测纯肿瘤组织。可以有参考,也可以不用,官方提供了参考,可以自建。
用户1075469
2021/04/19
1.3K0
sWGS检测CNV的一点探索
UCSC genome browser 个人track 安装
处理基因组数据,很多时候我们会觉得直接看序列文件不够直观,如果绘图的话,把n多G把数据用画图出来不仅费劲,就算操作也不方便。因此我们可以用UCSC开发出的genome browser,可以直接把数据信息写成track,连上genome browser 上查看,它还支持安装到本地服务器上(genome browser in box ,简称GBIB),genome browser 支持的格式有bedGraph, GTF, PSL, BED, bigBed, WIG, bigGenePred, bigMaf, bigChain, bigPsl, bigWig, BAM, CRAM, VCF, MAF, BED detail, Personal Genome SNP, broadPeak, narrowPeak, and microarray (BED15),GFF和GTF文件必须tab分隔。 废话少说,直接入门。本文主要讲SAM,BAM,WIG,bigWig,VCF,BED文件上传及使用。
用户1680321
2022/03/10
1.4K0
UCSC genome browser 个人track 安装
【直播】我的基因组61:scalpel软件找indel
那么现在正式的开始第61讲: 其实这次的call variation的软件,不仅仅是找到SNV,也顺便找到了indel,只是可能不太准确。一般业界的公认标准是 GATK的best practice,不过那个我已经做了,现在来一点新的,我正好看到了这个scalpel软件。 当然,为什么使用它,完全是随心所欲,也可以选择Pindel等其它软件。我在这里只是为了秀一个软件的用法,生信工程师该如何持续学习。 Scalpel is available here: http://scalpel.sourceforge.
生信技能树
2018/03/08
1.2K0
对参考基因组按照200k分区间统计测序深度及GC含量
http://hgdownload.cse.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz
生信技能树
2019/06/19
4.2K0
对参考基因组按照200k分区间统计测序深度及GC含量
男性和女性的乳腺癌患者肿瘤细胞表达量差异基因应该是有很明显的性染色体倾向性?
看到了2023发表在NC杂志的男性乳腺癌患者的单细胞转录组图谱文章,标题是:《Single-cell transcriptome analysis indicates fatty acid metabolism-mediated metastasis and immunosuppression in male breast cancer》
生信技能树
2024/05/28
2010
男性和女性的乳腺癌患者肿瘤细胞表达量差异基因应该是有很明显的性染色体倾向性?
CNS图表复现14—检查文献的inferCNV流程
CNS图表复现之旅前面我们已经进行了13讲,你可以点击图表复现话题回顾。如果你感兴趣也想加入交流群,自己去:你要的rmarkdown文献图表复现全套代码来了(单细胞)找到我们的拉群小助手哈。
生信技能树jimmy
2020/11/02
3K0
CNS图表复现14—检查文献的inferCNV流程
ilus: 这是我写的一个轻量级全基因组(WGS)和全外显子(WES)最佳实践分析流程生成器
不知觉间,距离我写下第一篇关于 WGS 数据分析系列的文章已经过去了三年多(WGS系列文章),时间真的快啊。
黄树嘉
2021/08/13
2.6K0
ilus: 这是我写的一个轻量级全基因组(WGS)和全外显子(WES)最佳实践分析流程生成器
根据坐标在基因组上面拿到碱基序列来设计引物
如果仅仅是一两个位点, 我们可以很容易通过各种各样的网页工具去查询到它的序列信息,但是高通量测序的结果往往是成千上万的,就算是节省成本,一般来说也会挑选100个左右的位点拿去设计引物进行sanger测序,一个个网页查询工作量有点大,这个时候就可以使用代码实现批量查询。
生信技能树
2020/10/26
1.6K0
根据坐标在基因组上面拿到碱基序列来设计引物
在R语言中的 ATACseq 数据分析全流程实战(二)
在ATAC-seq中,可以检查比对上的reads在染色体上的分布情况,使用idxstatsBam()函数来检查每个染色体上比对上的reads数量。
生信技能树
2025/03/14
1140
在R语言中的 ATACseq 数据分析全流程实战(二)
四种获取fasta序列长度的方法
在处理fasta序列的时候,我们经常需要获取每一条fasta序列的长度。今天小编就跟大家来分享四种获取fasta序列长度的方法。
生信交流平台
2022/09/21
2.4K0
四种获取fasta序列长度的方法
为什么一个基因可以既是lncRNA又是protein_coding
这个 gencode.v36.annotation.gtf.gz 文件也就是不到50M,所以很快就下载完毕,然后使用下面的代码格式化:
生信技能树
2021/02/04
1.6K0
把gwas信息转为bed格式
这个时候需要把两个文件都弄成为bed格式, 然后使用 bedtools "intersect" 命令即可。
生信技能树
2022/03/03
8820
CIRCOS圈图绘制 - 最简单绘图和解释
Circos是绘制圈图的神器,在http://circos.ca/images/页面有很多CIRCOS可视化的示例。 Circos可以在线使用,在线使用时是把表格转为圈图,不过只允许最大75行和75列
生信宝典
2018/02/05
4.8K0
CIRCOS圈图绘制 - 最简单绘图和解释
circos 可视化手册- colors 篇
颜色属性是circos中使用频率最高的属性,由colors这个block进行设置,默认的配置文件为etc/circos.conf。
生信修炼手册
2020/05/09
1.9K0
使用SnpSift filter对VCF文件进行筛选
当完成突变位点注释之后,我们会得到一个巨大的VCF文件,文件大小从几十M到几十G不等。在数量如此多的突变位点中,我们只会根据注释结果从中挑选部分感兴趣的突变位点,这就要求对VCF文件进行过滤。如此大的文件用Excel 操作是不现实的,脚本语言处理大文件时效果也不尽人意,所以SnpEff的开发团队专门开发了一款工具,叫做SnpSift, 用来对VCF文件进行过滤。
生信修炼手册
2020/05/11
3.2K0
小鼠全基因组数据分析
We performed WGS on a CRISPR–Cas9-edited mouse to identify all off-target mutations and found an unexpectedly high number of SNVs compared with the widely accepted assumption that CRISPR causes mostly indels at regions homologous to the sgRNA.
生信技能树
2018/08/16
2.6K0
推荐阅读
相关推荐
ggplot2可视化拷贝数变异CNV的GISTIC score
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验