vcfutils用于解析多个vcf文件

时间:2015-10-08 15:52:44

标签: python

我有多个VCF文件,我需要实现的是根据定义的过滤器从VCF文件中提取一些行。所以为了实现我开始使用

import vcf
import vcf.utils

这似乎是直截了当的。但是我遇到了问题,如果有人看一看并引导一点点达到预期的输出,那将会非常好。

VCF文件看起来像这样,它的行以#开头,以及我们需要的后续信息,(带标题的行数和所需的行如下所示)

##fileformat=VCFv4.1
##source=V2
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total depth of quality bases">
##INFO=<ID=SOMATIC,Number=0,Type=Flag,Description="Indicates if record is a somatic mutation">
##INFO=<ID=SS,Number=1,Type=String,Description="Somatic status of variant (0=Reference,1=Germline,2=Somatic,3=LOH, or 5=Unknown)">
chr10   197523  .   G   A   .   PASS    DP=26;SS=1;SSC=2;GPV=5.4595E-6;SPV=6.1327E-1    GT:GQ:DP:RD:AD:FREQ:DP4 0/1:.:17:8:9:52.94%:5,3,4,5 0/1:.:9:4:5:55.56%:2,2,2,3
chr10   198411  .   T   G   .   PASS    DP=37;SS=1;SSC=5;GPV=1.2704E-5;SPV=2.7151E-1    GT:GQ:DP:RD:AD:FREQ:DP4 0/1:.:19:13:6:31.58%:8,5,1,5    0/1:.:18:9:8:47.06%:3,6,5,3

所以我使用下面的python代码来获取我需要的信息,

流动的代码抛出错误消息,

reader_BM_CR_ID = vcf.Reader(filename="sample/sam/sample.vcf", compressed=False)
writer_CR = vcf.Writer(open('same/sam/sample_filtered.vcf', 'w'), reader_BM_CR_ID)
 for variants in vcf.utils(reader_BM_CR_ID):

     for call in variants.samples:
           if call.sample == 'T':
                if call.data.FREQ >='20%':
                    if call.data.FREQ >'0%':
                         if call.data.FREQ !='100%':
                                if call.data.DP >=20:
        writer.write_record(id_var)   

错误消息

        TypeError                                 Traceback (most recent call last)
<ipython-input-471-526e4c3bbab1> in <module>()
----> 1 for variants in vcf.utils(reader_BM_CR_ID):
      2 
      3          for call in variants.samples:
      4                if call.sample == 'T':
      5                     if call.data.FREQ >='20%':

TypeError: 'module' object is not callable

任何帮助都非常感谢.. !!

1 个答案:

答案 0 :(得分:0)

您正尝试将module称为function

Python仔细报告了它:

TypeError: 'module' object is not callable