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
Example #4
0
#!/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')
Example #5
0
    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():
Example #6
0
def line2newLine(line):
    bedLine = bed.bedline(line)
    chromosome = bedLine.chromosome()
    start = bedLine.start()
    newEnd = min(start + windowSize, chrDict[chromosome])
    return bedLine.newline(start, newEnd)
Example #7
0
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))