def run(directory, bidirectionalfilepath, homedir):
    fimodirectorylist = Functions.fimo_directories(directory)
    counts = dict()
    for fimo in fimodirectorylist:
        TF = fimo.split('/')[5]
        if TF not in counts:
            counts[TF] = []
        fimoname = fimo.split('/')[9]
        fimofile = fimo + "/fimo.cut.rmdup.ord.merge.bed"
        chipfile = Functions.parent_dir(Functions.parent_dir(fimo)) + '/ConsolidatedPeaks.merge.bed'
        vennlist = Functions.venn_d3(bidirectionalfilepath, chipfile, fimofile) 
        counts[TF].append([fimoname, vennlist])
    
    os.chdir(homedir)
    os.chdir('..')
    os.chdir("./files")
    outfile = open("BidirChIpMotifOverlaps.txt",'w')
    outfile.write("TF\nMotif#\nBidir\tChip\tMotif\tBC\tCB\tBM\tMB\tCM\tMC\tBCM\tCBM\tMBC\n")
    for key in counts:
        outfile.write(key)
        outfile.write("\n")
        for item in counts[key]:
            outfile.write(item[0])
            outfile.write("\n")
            for value in item[1]:  
                outfile.write(value)
                outfile.write("\t")
            outfile.write("\n")
예제 #2
0
def run(directory):
    directorylist = Functions.fimo_directories(directory)
    for item in directorylist:
        os.chdir(item)
        FileList = Functions.parse_file("fimo.txt")
        Functions.cut_file("fimo.txt", [i for i in range(1, len(FileList[0]))], "fimo.cut.bed")
        Functions.remove_duplicates_int("fimo.cut.bed", "fimo.cut.rmdup.bed", True)
        Functions.order_file("fimo.cut.rmdup.bed", "fimo.cut.rmdup.ord.bed", True)
        Functions.replace_header("fimo.cut.rmdup.ord.bed", "#chrom\tstart\tstop\tstrand")
        os.system("bedtools merge -i fimo.cut.rmdup.ord.bed > fimo.cut.rmdup.ord.merge.bed")
def run(directory, bidirectionalfilepath, homedir):
    directorylist = Functions.fimo_directories(directory)
    distances = dict()
    for item in directorylist:
        if os.path.exists(item):
            os.chdir(item)
            TF = item.split('/')[5]
            Motif = item.split('/')[9]
            os.system("bedtools intersect -a " + bidirectionalfilepath + " -b fimo.cut.rmdup.ord.merge.bed -wa -wb > BidirectionalMotifIntersect.bed")
            FileList = Functions.parse_file("BidirectionalMotifIntersect.bed")
            fimodist = []
            for line in FileList:
                chrom1, start1, stop1, chrom2, start2, stop2 = line[0:6]
                i = (float(start1) + float(stop1))/2
                x = (float(start2) + float(stop2))/2
                fimodist.append((i-x)/(float(stop1)-float(start1)))
            if len(fimodist) > 0:
                if TF in distances:
                    distances[TF].append(Motif)
                    distances[TF].append(fimodist)
                else:
                    distances[TF] = [Motif, fimodist]
                
    os.chdir(homedir)
    os.chdir('..')
    os.chdir("./files")
    outfile = open("TFMotifToBidirDistance.txt",'w')
    for key in distances:
        outfile.write(key)
        outfile.write("\n")
        for item in distances[key]:    
            if 'fimo_out' in item:   
                outfile.write(str(item))
            else:
                for value in item:
                    outfile.write(str(value))
                    outfile.write(",")
            outfile.write("\n")
예제 #4
0
import os
import Functions

##Removes duplicates and creates non-overlapping intervals for FIMO files


def run(directory):
    directorylist = Functions.fimo_directories(directory)
    for item in directorylist:
        os.chdir(item)
        FileList = Functions.parse_file("fimo.txt")
        Functions.cut_file("fimo.txt", [i for i in range(1, len(FileList[0]))], "fimo.cut.bed")
        Functions.remove_duplicates_int("fimo.cut.bed", "fimo.cut.rmdup.bed", True)
        Functions.order_file("fimo.cut.rmdup.bed", "fimo.cut.rmdup.ord.bed", True)
        Functions.replace_header("fimo.cut.rmdup.ord.bed", "#chrom\tstart\tstop\tstrand")
        os.system("bedtools merge -i fimo.cut.rmdup.ord.bed > fimo.cut.rmdup.ord.merge.bed")


if __name__ == "__main__":
    directory = "/projects/dowellLab/ENCODE/HL60"
    directorylist = Functions.fimo_directories(directory)
    for item in directorylist:
        os.chdir(item)
        FileList = Functions.parse_file("fimo.txt")
        Functions.cut_file("fimo.txt", [i for i in range(1, len(FileList[0]))], "fimo.cut.bed")
        Functions.remove_duplicates_int("fimo.cut.bed", "fimo.cut.rmdup.bed", True)
        Functions.order_file("fimo.cut.rmdup.bed", "fimo.cut.rmdup.ord.bed", True)
        Functions.replace_header("fimo.cut.rmdup.ord.bed", "#chrom\tstart\tstop\tstrand")
        os.system("bedtools merge -i fimo.cut.rmdup.ord.bed > fimo.cut.rmdup.ord.merge.bed")
def run(directory, bidirectionalfilepath, homedir):
    directorylist = Functions.fimo_directories(directory)
def run(directory, bidirectionalfilepath, homedir):
    TFdirectorylist = Functions.chip_peak_directories(directory)
    fimodirectorylist = Functions.fimo_directories(directory)
    counts = dict()
    for item in TFdirectorylist:
        if os.path.exists(item + "/outfiles"):
            os.chdir(item + "/outfiles")
            TF = item.split('/')[5]
            counts[TF] = []
            os.system("bedtools intersect -a " + bidirectionalfilepath + " -b ConsolidatedPeaks.merge.bed -c > Bidir_Chip_Counts.bed")
    for item in fimodirectorylist:
        os.chdir(item)
        TF = item.split('/')[5]
        fimo = item.split('/')[9]
        os.system("bedtools intersect -a " + bidirectionalfilepath + " -b fimo.cut.rmdup.ord.merge.bed -c > Bidir_Motif_Counts.bed")
        os.system("bedtools intersect -a " + directory + "/" + TF + "/peak_files/outfiles/ConsolidatedPeaks.merge.bed -b fimo.cut.rmdup.ord.merge.bed -c > Chip_Motif_Counts.bed")
        

        BidirChipFile = open(directory + "/" + TF + "/peak_files/outfiles/Bidir_Chip_Counts.bed") 
        BidirMotifFile = open("Bidir_Motif_Counts.bed")
        ChipMotifFile = open("Chip_Motif_Counts.bed")
        BidirTot = Functions.line_count("Bidir_Motif_Counts.bed")
        ChipTot = Functions.line_count("Chip_Motif_Counts.bed")
        MotifTot = Functions.line_count("fimo.cut.rmdup.ord.merge.bed")
        BidirChipCount = 0
        ChipBidirCount = 0
        BidirMotifCount = 0
        MotifBidirCount = 0
        ChipMotifCount = 0
        MotifChipCount = 0
        AllCount = 0
        for line1 in BidirChipFile:
            line2 = BidirMotifFile.readline()
            x = int(line1.strip().split()[3])
            y = int(line2.strip().split()[3])
            if x != 0 and y != 0:
                AllCount += 1.0
                ChipBidirCount += x-1
                MotifBidirCount += y-1
            elif x != 0:
                BidirChipCount += 1
                ChipBidirCount += x
            elif y != 0:
                BidirMotifCount += 1
                MotifBidirCount += y
        for line3 in ChipMotifFile:
            z = int(line3.strip().split()[3])
            if z != 0:
                ChipMotifCount += 1
                MotifChipCount += z
        ChipMotifCount =  ChipMotifCount - AllCount
        MotifChipCount = MotifChipCount - AllCount
        BidirCount = BidirTot - AllCount - BidirChipCount - BidirMotifCount
        ChipCount = ChipTot - AllCount  - ChipMotifCount - ChipBidirCount
        MotifCount = MotifTot - AllCount  - MotifBidirCount - MotifChipCount
        counts[TF].append([fimo, BidirCount, ChipCount, MotifCount, BidirChipCount, BidirMotifCount, ChipMotifCount, AllCount])
                
    os.chdir(homedir)
    os.chdir('..')
    os.chdir("./files")
    outfile = open("BidirChIpMotifOverlaps.txt",'w')
    outfile.write("TF\nMotif#\nBidir\tChip\tMotif\tBC\tBM\tCM\tBCM\n")
    for key in counts:
        outfile.write(key)
        outfile.write("\n")
        for item in counts[key]:
            outfile.write(item[0])
            outfile.write("\n")
            for i in range(1,len(item)):  
                outfile.write(str(item[i]))
                outfile.write("\t")
            outfile.write("\n")