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")
file1 = open(filename1) motiflist = [] for line1 in file1: if 'MOTIF' in line1: motif = line1.strip().split()[1] motiflist.append(motif) return motiflist if __name__ == "__main__": #Right now this calls fimo on each motif by providing the HOCOMOCO database along with a single motif name per #job submitted. It now only submits jobs for motifs who have fimo.txt files less than 1 shellscripttemplatedir = '/Users/joru1876/HOCOMOCODatabaseFIMO' packagedir = '/Users/joru1876/BidirectionalTFAnalyzer' motiflist = run(packagedir + '/files/HOCOMOCOv9_AD_MEME.txt', True) motiflist1 = [] for item in motiflist: if not os.path.exists(shellscripttemplatedir + "/FIMO_OUT/" + item +"_fimo_out"+ "/fimo.txt") or Functions.line_count(shellscripttemplatedir + "/FIMO_OUT/" + item +"_fimo_out"+ "/fimo.txt") < 2: motiflist1.append(item) print motiflist1 print len(motiflist1) os.chdir(shellscripttemplatedir) for motif in motiflist1: os.system("qsub -v arg1='/Users/joru1876/HOCOMOCODatabaseFIMO/FIMO_OUT/" + motif + "_fimo_out',arg2='" + motif + "' runHOCOMOCOv9FIMOTemplate.sh")
TF = item.split('/')[5] counts[TF] = [] os.system("bedtools intersect -a " + bidirectionalfilepath + " -b Consolidatedpeaks.ord.merge.bed -c > Bidir_Chip_Counts.bed") for item in fimodirectorylist: os.chdir(item) TF = item.split('/')[5] print TF fimo = item.split('/')[8] os.system("bedtools intersect -a " + bidirectionalfilepath + " -b fimo.rmdup.ord.cut.merge.bed -c > Bidir_Motif_Counts.bed") os.system("bedtools intersect -a " + directory + "/" + TF + "/peak_files/Consolidatedpeaks.ord.merge.bed -b fimo.rmdup.ord.cut.merge.bed -c > Chip_Motif_Counts.bed") BidirChipFile = open(directory + "/" + TF + "/peak_files/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.rmdup.ord.cut.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