##################################
#                                #
# Last modified 05/19/2014       # 
#                                #
# Georgi Marinov                 #
#                                # 
##################################

import sys
import string
from sets import Set
import os

def run():

    if len(sys.argv) < 4:
        print 'usage: python %s vcf minDP minGQ fieldID [-noInDels] [-noHet]' % sys.argv[0]
        sys.exit(1)

    vcf = sys.argv[1]
    minDP = int(sys.argv[2])
    minGQ = int(sys.argv[3])
    fieldID = int(sys.argv[4])

    doNoInDels = False
    if '-noInDels' in sys.argv:
        doNoInDels = True

    doNoHet = False
    if '-noHet' in sys.argv:
        doNoHet = True

    if vcf == '-':
        linelist = sys.stdin
    else:
        linelist = open(vcf)
    for line in linelist:
        if line.startswith('#'):
            print line.strip()
            continue
        fields = line.strip().split('\t')
        ref=fields[3]
        variants=fields[4].split(',')
        if fields[7].startswith('DP='):
            DP = int(fields[7].split('DP=')[1].split(';')[0])
        else:
            DP = int(fields[7].split(';DP=')[1].split(';')[0])
        GQpos = fields[8].split(':').index('GQ')
        if fields[fieldID] == './.':
            continue
        GQ = int(fields[fieldID].split(':')[GQpos])
        GTfield = fields[8].split(':').index('GT')
        GT = fields[fieldID].split(':')[GTfield]
        alleles = GT.split('/')
        if doNoInDels:
            if len(ref) != len(variants[int(alleles[0])-1]):
                continue
        if doNoHet:
            if alleles[0] != alleles[1]:
                continue
            if alleles[0] == '0':
                continue
        if DP >= minDP and GQ > minGQ:
            print line.strip()

run()