示例#1
0
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)
示例#2
0
 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()
示例#4
0
 def __init__(self, line):
     temp = bedLine(line)
     self.chromosome = temp.chromosome
     self.start = temp.start