def line2position(line, reverseFlag): def reversePosition(position): return -1 * (position + 1) chr1 = 0 s1 = 1 e1 = 2 ll = line.strip().split('\t') chr1name = ll[0].strip() chr2name = False for i in range(1, len(ll) - 2): if ll[i].strip() == chr1name: chr2 = i break s2 = chr2 + 1 e2 = chr2 + 2 chromosomeA = ll[chr1] startA = int(ll[s1]) endA = int(ll[e1]) midA = (startA + endA) / 2 startB = int(ll[s2]) endB = int(ll[e2]) midB = (startB + endB) / 2 damagePosition = midB - midA if reverseFlag: bedLine = bedline(line) strand = bedLine.strand() if strand == "-": damagePosition = reversePosition(damagePosition) else: if strand != "+" and strand != ".": raise ValueError("strand is an unexpected character:" + strand) return damagePosition
def getInterval(line, randomness=False): bedLine = bed.bedline(line) middlePoint = bedLine.midpoint() start = middlePoint - windowSize end = middlePoint + windowSize if args.g: chromosome = bedLine.chromosome() chrEnd = chromosomeSizes[chromosome] if start > 0 and end < chrEnd: return bedLine.newline(start, end) return False return bedLine.newline(start, end)
def seqObject2bedLine(seq, regexMotif): lines = [] indexList = regexMotif.getIndexList(seq.getSequence()) startList = indexList[0] endList = indexList[1] for i in range(len(startList)): bedLine = bed.bedline(fastaHeader2bedLine(seq.getHeader())) lines.append(bedLine.chromosome() + "\t" + str(bedLine.start() + startList[i]) + "\t" + str(bedLine.start() + endList[i]) + "\t" + "+" + "\n") if DNAreverseComplementFlag: reverseComplementMotif = regexMotif.DNA_complement().reverse() indexList = reverseComplementMotif.getIndexList(seq.getSequence()) startList = indexList[0] endList = indexList[1] for i in range(len(startList)): bedLine = bed.bedline(fastaHeader2bedLine(seq.getHeader())) lines.append(bedLine.chromosome() + "\t" + str(bedLine.start() + startList[i]) + "\t" + str(bedLine.start() + endList[i]) + "\t" + "-" + "\n") return lines
#!/usr/bin/env python import os import sys import argparse import fileinput from collections import Counter from bed import bedline parser = argparse.ArgumentParser() parser = argparse.ArgumentParser(description='converts bed to one side bed (start or end)') parser.add_argument('-i', nargs='?', type=argparse.FileType('r'), default=sys.stdin, help='input') parser.add_argument('-o', nargs='?', type=argparse.FileType('w'), default=sys.stdout, help='output') parser.add_argument('-s', default='start', choices=['start', 'end'], help='side (start or end)') parser.add_argument('-l', type=int, default=1000, help='length of each side') args = parser.parse_args() bedFile = args.i out = args.o sideLength = int(args.l) side = args.s for line in bedFile: bedLine = bedline(line) if side == 'start': referencePoint = bedLine.start() else: referencePoint = bedLine.end() start = referencePoint - sideLength end = referencePoint + sideLength if start > 0: out.write(bedLine.newline(start, end) + '\n')
os.system("cp " + args.b + " " + args.o) sys.exit() afile = open(args.a, 'r') bfile = open(args.b, 'r') out = open(args.o, 'w') for lineB, lineA in izip(bfile, afile): llA = lineA.strip().split('\t') stringA = '_'.join([llA[0], llA[1], llA[2], llA[5]]) llB = lineB.strip().split('\t') stringB = '_'.join([llB[0], llB[1], llB[2], llB[5]]) while stringB != stringA: BL_A = bedline(lineA) BL_B = bedline(lineB) llA = lineA.strip().split('\t') print(llA) stringA = '_'.join([llA[0], llA[1], llA[2], llA[5]]) llB = lineB.strip().split('\t') stringB = '_'.join([llB[0], llB[1], llB[2], llB[5]]) walkA = False walkB = False if BL_A.chromosome() > BL_B.chromosome(): walkB = True walkA = False elif BL_A.chromosome() < BL_B.chromosome():
def line2newLine(line): bedLine = bed.bedline(line) chromosome = bedLine.chromosome() start = bedLine.start() newEnd = min(start + windowSize, chrDict[chromosome]) return bedLine.newline(start, newEnd)
import bed import sys import argparse from pybedtools import BedTool from bed import bedline parser = argparse.ArgumentParser(description='retrieves certain fragment lengths') parser.add_argument('-b', reqiured=True, help='input') parser.add_argument('-o', reqiured=True, nargs='?', type=argparse.FileType('w'), default=sys.stdout, help='output') parser.add_argument('-a', reqiured=True, help='interval file') parser.add_argument('-fasta', required=False, default=False, help='fasta file') args = parser.parse_args() inputFile = args.b out = args.o bedFile = args.a a = BedTool(inputFile) b = BedTool(bedFile) a_and_b = a.intersect(b, c=True) for line in a_and_b: bedLine = bedline(str(line)) TTcount = bedLine.getFasta().count('TT') out.write(bedLine.addField([str(TTcount)])) # out.write(str(a_and_b))