Mercurial > repos > iuc > bigwig_outlier_bed
comparison bigwig_outlier_bed.py @ 1:8377a6abb4da draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bigwig_outlier_bed commit 92ffe42a6ad6e81f3f157bbc9b942c000d450416
author | iuc |
---|---|
date | Sun, 21 Jul 2024 11:03:36 +0000 |
parents | ebcd48f183b3 |
children | 61946b8bd43b |
comparison
equal
deleted
inserted
replaced
0:ebcd48f183b3 | 1:8377a6abb4da |
---|---|
26 | 26 |
27 def __init__(self, args): | 27 def __init__(self, args): |
28 self.bwnames = args.bigwig | 28 self.bwnames = args.bigwig |
29 self.bwlabels = args.bigwiglabels | 29 self.bwlabels = args.bigwiglabels |
30 self.bedwin = args.minwin | 30 self.bedwin = args.minwin |
31 self.qlo = args.qlo | |
32 self.qhi = args.qhi | |
33 self.outbeds = args.outbeds | 31 self.outbeds = args.outbeds |
34 self.bedouthi = args.bedouthi | 32 self.bedouthi = args.bedouthi |
35 self.bedoutlo = args.bedoutlo | 33 self.bedoutlo = args.bedoutlo |
36 self.bedouthilo = args.bedouthilo | 34 self.bedouthilo = args.bedouthilo |
37 self.tableoutfile = args.tableoutfile | 35 self.tableoutfile = args.tableoutfile |
38 self.bedwin = args.minwin | 36 self.bedwin = args.minwin |
39 self.qhi = args.qhi | 37 self.qhi = args.qhi |
40 self.qlo = args.qlo | 38 self.qlo = None |
39 try: | |
40 f = float(args.qlo) | |
41 self.qlo = f | |
42 except Exception as e: | |
43 s = str(e) | |
44 print(s, ' qlo=', args.qlo) | |
41 nbw = len(args.bigwig) | 45 nbw = len(args.bigwig) |
42 nlab = len(args.bigwiglabels) | 46 nlab = len(args.bigwiglabels) |
43 if nlab < nbw: | 47 if nlab < nbw: |
44 self.bwlabels += ["Nolabel"] * (nbw - nlab) | 48 self.bwlabels += ["Nolabel"] * (nbw - nlab) |
45 self.makeBed() | 49 self.makeBed() |
88 bwstd, | 92 bwstd, |
89 bwmin, | 93 bwmin, |
90 bwmax, | 94 bwmax, |
91 ) | 95 ) |
92 if self.qhi is not None: | 96 if self.qhi is not None: |
93 row += "\t%f" % self.bwtop | 97 row += "\t%.2f" % self.bwtop |
94 else: | 98 else: |
95 row += "\t" | 99 row += "\tnoqhi" |
96 if self.qlo is not None: | 100 if self.qlo is not None: |
97 row += "\t%f" % self.bwbot | 101 row += "\t%.2f" % self.bwbot |
98 else: | 102 else: |
99 row += "\t" | 103 row += "\tnoqlo" |
100 return row | 104 return row |
101 | 105 |
102 def makeBed(self): | 106 def makeBed(self): |
103 bedhi = [] | 107 bedhi = [] |
104 bedlo = [] | 108 bedlo = [] |
123 if self.qhi is not None: | 127 if self.qhi is not None: |
124 self.bwtop = np.quantile(bw, self.qhi) | 128 self.bwtop = np.quantile(bw, self.qhi) |
125 bwhi = self.processVals(bw, isTop=True) | 129 bwhi = self.processVals(bw, isTop=True) |
126 for j, seg in enumerate(bwhi): | 130 for j, seg in enumerate(bwhi): |
127 if seg[1] - seg[0] >= self.bedwin: | 131 if seg[1] - seg[0] >= self.bedwin: |
128 bedhi.append((chr, seg[0], seg[1], "%s_hi" % (bwlabel), 1)) | 132 score = np.sum(bw[seg[0]:seg[1]]) |
133 bedhi.append( | |
134 ( | |
135 chr, | |
136 seg[0], | |
137 seg[1], | |
138 "%s_%d" % (bwlabel, score), | |
139 score, | |
140 ) | |
141 ) | |
129 if self.qlo is not None: | 142 if self.qlo is not None: |
130 self.bwbot = np.quantile(bw, self.qlo) | 143 self.bwbot = np.quantile(bw, self.qlo) |
131 bwlo = self.processVals(bw, isTop=False) | 144 bwlo = self.processVals(bw, isTop=False) |
132 for j, seg in enumerate(bwlo): | 145 for j, seg in enumerate(bwlo): |
133 if seg[1] - seg[0] >= self.bedwin: | 146 if seg[1] - seg[0] >= self.bedwin: |
134 bedlo.append((chr, seg[0], seg[1], "%s_lo" % (bwlabel), -1)) | 147 score = -1 * np.sum(bw[seg[0]:seg[1]]) |
148 bedlo.append( | |
149 ( | |
150 chr, | |
151 seg[0], | |
152 seg[1], | |
153 "%s_%d" % (bwlabel, score), | |
154 score, | |
155 ) | |
156 ) | |
135 if self.tableoutfile: | 157 if self.tableoutfile: |
136 row = self.makeTableRow(bw, bwlabel, chr) | 158 row = self.makeTableRow(bw, bwlabel, chr) |
137 restab.append(copy.copy(row)) | 159 restab.append(copy.copy(row)) |
138 if self.tableoutfile: | 160 if self.tableoutfile: |
139 stable = "\n".join(restab) | 161 stable = "\n".join(restab) |
162 | 184 |
163 if __name__ == "__main__": | 185 if __name__ == "__main__": |
164 parser = argparse.ArgumentParser() | 186 parser = argparse.ArgumentParser() |
165 a = parser.add_argument | 187 a = parser.add_argument |
166 a("-m", "--minwin", default=10, type=int) | 188 a("-m", "--minwin", default=10, type=int) |
167 a("-l", "--qlo", default=None, type=float) | 189 a("-l", "--qlo", default=None) |
168 a("-i", "--qhi", default=None, type=float) | 190 a("-i", "--qhi", default=None, type=float) |
169 a("--bedouthi", default=None) | 191 a("--bedouthi", default=None) |
170 a("--bedoutlo", default=None) | 192 a("--bedoutlo", default=None) |
171 a("--bedouthilo", default=None) | 193 a("--bedouthilo", default=None) |
172 a("-w", "--bigwig", nargs="+") | 194 a("-w", "--bigwig", nargs="+") |