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")
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")
for fimofolder in FileList: directorylist.append(rootdirectory + "/" + TF + "/peak_files/MEME/" + fimofolder) return directorylist directory = "/projects/dowellLab/ENCODE/HCT116" bidirectionalfilepath = "/Users/joru1876/ENCODEBidirectional/bidirectional_hits.merge.bed" homedir = "/Users/joru1876/BidirectionalTFAnalyzer/src" directorylist = fimo_directories(directory) distances = dict() for item in directorylist: os.chdir(item) TF = item.split('/')[5] Motif = item.split('/')[8] os.system("bedtools intersect -a " + bidirectionalfilepath + " -b fimo.rmdup.ord.cut.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))/2)) if len(fimodist) > 0: if TF in distances: samplemean = np.mean(fimodist) samplestanddev = np.std(fimodist) z = samplemean/(samplestanddev/math.sqrt(len(fimodist))) distances[TF].append(Motif) distances[TF].append(fimodist) else: distances[TF] = [Motif, fimodist]
def run(fimodir): fimofile = fimodir + "/fimo.txt" return Functions.parse_file(fimodir + "/fimo.txt")[1 : len(Functions.parse_file(fimodir + "/fimo.txt"))]