利用PyVCF模块处理VCF文件

利用PyVCF模块处理VCF文件

转载自:微信公众号 生信说

欢迎大家扫码关注

利用PyVCF模块处理VCF文件_第1张图片

 


                   利用PyVCF模块处理VCF文件_第2张图片

工欲善其事,必先利其器。

VCF,全称Variant Call Format,是生物信息学领域最常用的遗传突变存储格式。对VCF格式中遗传突变信息的挖掘是分析DNA突变的基础。本文将带你探究如何使用python的PyVCF模块解析VCF文件。

 

VCF文件格式介绍

 

VCF是一种文本(text)文件格式,分析人员可以直接查看。但VCF文件中保存着大量突变信息,人为的查看显然不是一个好办法。在分析过程中,往往需要借助一些工具(软件,脚本)去处理解析VCF文件中存储的突变信息。

VCF文件有三部分组成:

  1. Meta-information lines

    Meta-information lines以##开头,并且必须以key=value键值对的形式存在。虽然Meta-information lines不存储具体的突变信息,但它对于VCF文件来说却格外重要,主要作用是对正文中INFO,FILTER和FORMAT列信息的解释说明。比如正文某一突变的INFO列出现了DP=504,这代表了什么意思呢?这时我们就可以去Meta-information lines中查找对应的解释(如下图),一目了然。

     

  2. Header line syntax

    顾名思义,Header line syntax是VCF文件的表头行,TAB键分割。Header line有8列必须列,分别是:

    利用PyVCF模块处理VCF文件_第3张图片

    如果存在genotype数据,则紧随其后的是FORMAT列,然后是样品信息列,样品信息列可以是多列,具体列数由样品数量决定。

  3. Data lines

    Data lines是实际存储突变信息的行,每一行包含一个突变,列数和表头行的列数一致,每一列的信息即表头行每一列对应的信息。

    FORMAT列和样品列是具有一一对应关系的,FORMAT所解释的信息即样品列对应的信息,一般情况下FORMAT列和样品列的信息都可以按“:”切割成多个分块,如下图:

     

    以上就是VCF文件格式的简单介绍,如果想详细了解VCF文件格式,后台回复“VCF”哦!

     

 使用PyVCF模块处理VCF文件

 

VCF是一种文本文件,我们可以很轻松的编写脚本进行VCF文件处理,但是为了避免“造轮子”,这里我们介绍一种简单快速的VCF文件处理方法---利用PyVCF模块进行VCF文件处理

 

实例说明:

 

PyVCF是一个第三方python包,用于读取处理VCF文件。使用PyVCF之前我们首先安装这个包:

 

然后我们就可以导入使用啦

 

利用PyVCF模块处理VCF文件_第4张图片

对于每一列的信息,我们都可以通过Header line获取得到:

 

利用PyVCF模块处理VCF文件_第5张图片

我们可以继续获得INFO列对应的信息:

 

对于FORMAT列信息,同样可以用record.FORMAT方法获得,但这样处理并没有实际的意义,我们更关心的是样品列对应的信息。样品列的信息如何获取呢?PyVCF将一个VCF中所有的样品信息都存放在samples列表中:

 

并可以通过下标的方式获取每一个样品的信息,每一个样品的信息又存放在一个字典中,因此可以继续通过dict[key]的形式获得每个key的值:

 

但实际情况中,我们并不能很方便的知道VCF文件中样品的顺序,因此通过上述samples的方法获取每个样品详细信息的方法并不是很方便。我们可以另辟蹊径,寻求更适合的方法,利用record.genotype获取:

这样就可以避免下标带来的未知性,可以直接通过索引样品名获取样品的详细突变信息。

 

以上就是利用PyVCF模块读取VCF文件的介绍,是不是很简单!当然,PyVCF模块还有其他的一些功能,这里就不一一介绍了,感兴趣的朋友可以自行到官网(https://github.com/jamescasbon/PyVCF)学习。

你可能感兴趣的:(生物信息)