Commit 30fe50a9592d9cd45d6c51fee70e07d723cde527

Authored by Josh Cardenzana
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:
... ...