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,16 +251,21 @@ class csresmap(ctools.cscript):
251 logmap = self._resmap.copy() # Python 3.x kluge 251 logmap = self._resmap.copy() # Python 3.x kluge
252 logmap /= modelmap 252 logmap /= modelmap
253 for i in range(logmap.npix()): 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 else: 262 else:
257 - logmap[i] = 0.0 263 + self._resmap[i] = 0.0
258 264
259 # Compute significance map 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 # Raise exception if algorithm is unknown 270 # Raise exception if algorithm is unknown
266 else: 271 else: