python vcf2tsv - 脚本生成一个bcftools调用,该调用将输出VCF中所有可用的INFO和FORMAT列。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python vcf2tsv - 脚本生成一个bcftools调用,该调用将输出VCF中所有可用的INFO和FORMAT列。相关的知识,希望对你有一定的参考价值。

import sys
import re
from subprocess import PIPE, Popen


# Info
r_info = re.compile(r'''\#\#INFO=<
  ID=(?P<id>[^,]+),
  Number=(?P<number>-?\d+|\.|[AG]),
  Type=(?P<type>Integer|Float|Flag|Character|String),
  Description="(?P<desc>[^"]*)".*
  >''', re.VERBOSE)

# Format
r_format = re.compile(r'''\#\#FORMAT=<
  ID=(?P<id>.+),
  Number=(?P<number>-?\d+|\.|[AG]),
  Type=(?P<type>.+),
  Description="(?P<desc>.*)".*
  >''', re.VERBOSE)


field_set = []
if len(sys.argv) == 1:
    print("Specify a VCF File")
    sys.exit()
else:
    header, err = Popen(["bcftools", "view", "-h", sys.argv[1]], stdout = PIPE, stderr = PIPE).communicate()
    if err:
        print err
    info = [m.groupdict()["id"] for m in r_info.finditer(header)]
    format = [m.groupdict()["id"] for m in r_format.finditer(header)]

# Construct Query String
query_start = repr("%CHROM\t%POS\t%ID\t%REF\t%ALT\t%QUAL\t%FILTER\t" + \
              '\t'.join(['%INFO/' + x for x in info]) + \
              "[" + '\t'.join(['%' + x for x in format]) + "]\n")
print ' '.join(["bcftools", "query","-f", query_start, sys.argv[1]])

以上是关于python vcf2tsv - 脚本生成一个bcftools调用,该调用将输出VCF中所有可用的INFO和FORMAT列。的主要内容,如果未能解决你的问题,请参考以下文章

python里的生成器--yield

python 这是一个生成客户端OpenVPN配置文件的python脚本。这主要基于easyrsa脚本,并且更简单

遍历文本文件并调用Python脚本生成文件中

pycharm怎么运行python脚本

python 用于生成车库的唯一编号的脚本,用于文本广告系列。一个脚本用于创建XLS文件,另一个脚本用于单独创建

从 CSV 文件生成 C++ 头文件的 python 脚本(用于数组声明)