Commit 30fe50a9592d9cd45d6c51fee70e07d723cde527
Committed by
Jürgen Knödlseder
1 parent
a5a1a27a
Fix csresmap 'SIGNIFICANCE' bug (#2136)
Implemented a fix for the csresmap 'SIGNIFICANCE' algorithm which was causing it to take the square root of a negative number.
Showing
1 changed file
with
12 additions
and
7 deletions
cscripts/csresmap.py
| ... | ... | @@ -251,16 +251,21 @@ class csresmap(ctools.cscript): |
| 251 | 251 | logmap = self._resmap.copy() # Python 3.x kluge |
| 252 | 252 | logmap /= modelmap |
| 253 | 253 | for i in range(logmap.npix()): |
| 254 | - if logmap[i] > 0.0: | |
| 255 | - logmap[i] = math.log(logmap[i]) | |
| 254 | + model_val = modelmap[i] | |
| 255 | + if model_val > 0.0: | |
| 256 | + data_val = self._resmap[i] | |
| 257 | + if data_val > 0.0: | |
| 258 | + log_val = math.log(data_val/model_val) | |
| 259 | + self._resmap[i] = (data_val*log_val) + model_val - data_val | |
| 260 | + else: | |
| 261 | + self._resmap[i] = model_val | |
| 256 | 262 | else: |
| 257 | - logmap[i] = 0.0 | |
| 263 | + self._resmap[i] = 0.0 | |
| 258 | 264 | |
| 259 | 265 | # Compute significance map |
| 260 | - signif_squared_map = (self._resmap*logmap) + modelmap - self._resmap | |
| 261 | - signif_squared_map *= 2.0 | |
| 262 | - unsigned_resmap = signif_squared_map.sqrt() | |
| 263 | - self._resmap = unsigned_resmap * signmap | |
| 266 | + self._resmap *= 2.0 | |
| 267 | + self._resmap = self._resmap.sqrt() | |
| 268 | + self._resmap = self._resmap * signmap | |
| 264 | 269 | |
| 265 | 270 | # Raise exception if algorithm is unknown |
| 266 | 271 | else: | ... | ... |