# -*- coding: utf-8 -*- """ Created on Fri Apr 23 08:31:24 2021 @author: shawn """ import re import sys #%% Validation regex = re.compile('^(\d*|[MXY])\t(\d*)\t(\w*)\t(\w*)\t([\d.]*)\t([\d.]*)\t(\w)\t(.*)$') file = open(sys.argv[1]) file.readline() linenum = 1 for line in file: line = line.rstrip() linenum += 1 m = regex.match(line) if not m: print('line:%d is invalid,'%linenum, line.rstrip(), sep='\n') sys.exit(1) arr = line.split('\t') if len(arr) == 8: chr, pos, ref, alt, score, std, pred, comment = arr else: assert(0) try: score = float(score) except: print('line:%d is invalid,'%linenum, line.rstrip(), sep='\n') print('score value "%s" is invalid float format' % score) sys.exit(1) if not ( score >= 0 and score <= 1): print('line:%d is invalid,'%linenum, line.rstrip(), sep='\n') print('score value "%f" is not in the correct range' % score) sys.exit(1) try: std = float(std) except: print('line:%d is invalid,'%linenum, line.rstrip(), sep='\n') print('standard deviation value "%s" is invalid float format' % std) sys.exit(1) if not ( std >= 0 ): print('line:%d is invalid,'%linenum, line.rstrip(), sep='\n') print('standard deviation value "%f" is invalid. the value should be positive' % std) sys.exit(1) if not ( pred in "DTU" ): print('line:%d is invalid,'%linenum, line.rstrip(), sep='\n') print('pred "%s" is invalid' % pred) sys.exit(1) print('The file\'s format is valid! You are good to submit now!')