def sniffBed(path): scoreNames = set() bedRegions = [] tempfile = open(path, 'r') for line in tempfile: line = bedLine(line.split()) if not hasattr(line,'name') or not hasattr(line,'score'): continue bedRegions.append(line) scoreNames.add(line.name) tempfile.close() return (scoreNames,bedRegions)
def __init__(self, line): temp = bedLine(line) self.chromosome = temp.chromosome self.start = temp.start
def run(args): infile = open(args.infile, "r") outfile = open(args.outfile, "w") failfile = None if args.failfile != "": failfile = open(args.failfile, "w") errfile = None if args.errfile != "": errfile = open(args.errfile, "w") if args.expression != "": tempfile = open(args.expression, "r") expression = tempfile.readline() tempfile.close() else: expression = "True" columns = [] if args.columns != "": tempfile = open(args.columns, "r") for line in tempfile: line = line.strip() columns.append(line) tempfile.close() bedRegions = None if args.bed != "": bedRegions = [] tempfile = open(args.bed, "r") for line in tempfile: bedRegions.append(bedLine(line.split())) tempfile.close() for line in infile: if len(line) <= 1: continue elif line.startswith("#"): outfile.write(line) if failfile != None: failfile.write(line) if errfile != None: errfile.write(line) continue else: line = vcfLine(line.strip().split("\t")) expArgs = [] for c in columns: if c == "CHROM": line.extractChrAndPos() expArgs.append(line.chromosome) elif c == "POS": line.extractChrAndPos() expArgs.append(line.position) elif c == "ID": line.extractChrAndPos() expArgs.append(line.name) elif c == "QUAL": line.extractQual() expArgs.append(line.qual) elif c == "FILTER": line.extractFilters() expArgs.append(line.filters) else: line.extractInfo() expArgs.append(line.info.get(c, ".")) # first see if it fails the .bed regions if bedRegions != None: passedBed = False line.extractChrAndPos() for bed in bedRegions: if bed.contains(line.chromosome, line.position): passedBed = True break if not passedBed: if failfile != None: failfile.write(str(line)) continue exp = expression % tuple(expArgs) try: result = eval(exp) if result == True: outfile.write(str(line)) elif result == False: if failfile != None: failfile.write(str(line)) else: if errfile != None: errfile.write(str(line)) except: if errfile != None: errfile.write(str(line)) infile.close() outfile.close() if errfile != None: errfile.close()