comparison bigwig_outlier_bed.py @ 3:00b3da7776a0 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bigwig_outlier_bed commit 06c54e8066ecbc6292167e7c5bdfb8af945a41ba
author iuc
date Sun, 15 Sep 2024 17:08:45 +0000
parents 61946b8bd43b
children 2488bcddaf14
comparison
equal deleted inserted replaced
2:61946b8bd43b 3:00b3da7776a0
144 if isTop: 144 if isTop:
145 bwex = np.r_[False, bw >= self.bwtop, False] # extend with 0s 145 bwex = np.r_[False, bw >= self.bwtop, False] # extend with 0s
146 else: 146 else:
147 bwex = np.r_[False, bw <= self.bwbot, False] 147 bwex = np.r_[False, bw <= self.bwbot, False]
148 bwexd = np.diff(bwex) 148 bwexd = np.diff(bwex)
149 bwexdnz = bwexd.nonzero()[0] 149 bwexdnz = bwexd.nonzero()[0] # start and end transition of each segment - nice!
150 bwregions = np.reshape(bwexdnz, (-1, 2)) 150 bwregions = np.reshape(bwexdnz, (-1, 2))
151 return bwregions 151 return bwregions
152 152
153 def writeBed(self, bed, bedfname): 153 def writeBed(self, bed, bedfname):
154 """ 154 """
155 potentially multiple 155 potentially multiple
156 """ 156 """
157 bed.sort() 157 bed.sort()
158 beds = ["%s\t%d\t%d\t%s\t%d" % x for x in bed]
159 with open(bedfname, "w") as bedf: 158 with open(bedfname, "w") as bedf:
160 bedf.write("\n".join(beds)) 159 for b in bed:
161 bedf.write("\n") 160 bedf.write("%s\t%d\t%d\t%s\t%d\n" % b)
162 161
163 def makeTableRow(self, bw, bwlabel, chr): 162 def makeTableRow(self, bw, bwlabel, chr):
164 """ 163 """
165 called for every contig, but messy inline 164 called for every contig, but messy inline
166 """ 165 """
192 bedhi = [] 191 bedhi = []
193 bedlo = [] 192 bedlo = []
194 restab = [] 193 restab = []
195 bwlabels = self.bwlabels 194 bwlabels = self.bwlabels
196 bwnames = self.bwnames 195 bwnames = self.bwnames
197 bwnames.sort()
198 reshead = "bigwig\tcontig\tn\tmean\tstd\tmin\tmax\tqtop\tqbot" 196 reshead = "bigwig\tcontig\tn\tmean\tstd\tmin\tmax\tqtop\tqbot"
199 for i, bwname in enumerate(bwnames): 197 for i, bwname in enumerate(bwnames):
200 bwlabel = bwlabels[i].replace(" ", "") 198 bwlabel = bwlabels[i].replace(" ", "")
201 fakepath = "in%d.bw" % i 199 fakepath = "in%d.bw" % i
202 if os.path.isfile(fakepath): 200 if os.path.isfile(fakepath):
249 ) 247 )
250 if self.qlo is not None: 248 if self.qlo is not None:
251 self.bwbot = np.quantile(bw, self.qlo) 249 self.bwbot = np.quantile(bw, self.qlo)
252 bwlo = self.processVals(bw, isTop=False) 250 bwlo = self.processVals(bw, isTop=False)
253 for j, seg in enumerate(bwlo): 251 for j, seg in enumerate(bwlo):
252 seglen = seg[1] - seg[0]
254 if seg[1] - seg[0] >= self.bedwin: 253 if seg[1] - seg[0] >= self.bedwin:
255 score = -1 * np.sum(bw[seg[0]:seg[1]]) / float(seglen) 254 score = (
255 -1 * np.sum(bw[seg[0]:seg[1]]) / float(seglen)
256 )
256 bedlo.append( 257 bedlo.append(
257 ( 258 (
258 chr, 259 chr,
259 seg[0], 260 seg[0],
260 seg[1], 261 seg[1],