Skip to content

Commit 12ac4ce

Browse files
authored
Merge pull request #62 from esheldon/ormask
make ormask an official member of the observation
2 parents 6a1229f + f94f218 commit 12ac4ce

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

ngmix/medsreaders.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ def get_obs(self, iobj, icutout, weight_type='weight'):
206206
except Exception:
207207
bmask = None
208208

209+
try:
210+
ormask = self.get_cutout(iobj, icutout, type='ormask')
211+
except Exception:
212+
ormask = None
213+
209214
try:
210215
noise = self.get_cutout(iobj, icutout, type='noise')
211216
except Exception:
@@ -254,6 +259,7 @@ def get_obs(self, iobj, icutout, weight_type='weight'):
254259
im,
255260
weight=wt,
256261
bmask=bmask,
262+
ormask=ormask,
257263
noise=noise,
258264
meta=meta,
259265
jacobian=jacobian,

ngmix/observation.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class Observation(object):
2222
Weight map, same shape as image
2323
bmask: ndarray, optional
2424
A bitmask array
25+
ormask: ndarray, optional
26+
A bitmask array
2527
noise: ndarray, optional
2628
A noise field to associate with this observation
2729
jacobian: Jacobian, optional
@@ -38,6 +40,7 @@ def __init__(self,
3840
image,
3941
weight=None,
4042
bmask=None,
43+
ormask=None,
4144
noise=None,
4245
jacobian=None,
4346
gmix=None,
@@ -62,6 +65,7 @@ def __init__(self,
6265

6366
# optional, if None nothing is set
6467
self.set_bmask(bmask)
68+
self.set_ormask(ormask)
6569
self.set_noise(noise)
6670
self.set_gmix(gmix)
6771
self.set_psf(psf)
@@ -131,6 +135,23 @@ def bmask(self, bmask):
131135
"""
132136
self.set_bmask(bmask)
133137

138+
@property
139+
def ormask(self):
140+
"""
141+
getter for ormask
142+
143+
currently this simply returns a reference
144+
"""
145+
return self._ormask
146+
147+
@ormask.setter
148+
def ormask(self, ormask):
149+
"""
150+
set the ormask
151+
"""
152+
self.set_ormask(ormask)
153+
154+
134155
@property
135156
def noise(self):
136157
"""
@@ -300,6 +321,39 @@ def has_bmask(self):
300321
else:
301322
return False
302323

324+
def set_ormask(self, ormask):
325+
"""
326+
Set the bitmask
327+
328+
parameters
329+
----------
330+
ormask: ndarray (or None)
331+
"""
332+
if ormask is None:
333+
if self.has_ormask():
334+
del self._ormask
335+
else:
336+
337+
image=self.image
338+
339+
# force contiguous C, but we don't know what dtype to expect
340+
ormask=numpy.ascontiguousarray(ormask)
341+
assert len(ormask.shape)==2,"ormask must be 2d"
342+
343+
assert (ormask.shape==image.shape),\
344+
"image and ormask must be same shape"
345+
346+
self._ormask=ormask
347+
348+
def has_ormask(self):
349+
"""
350+
returns True if a bitmask is set
351+
"""
352+
if hasattr(self,'_ormask'):
353+
return True
354+
else:
355+
return False
356+
303357
def set_noise(self, noise):
304358
"""
305359
Set a noise image
@@ -514,6 +568,11 @@ def copy(self):
514568
else:
515569
bmask=None
516570

571+
if self.has_ormask():
572+
ormask=self.ormask.copy()
573+
else:
574+
ormask=None
575+
517576
if self.has_noise():
518577
noise=self.noise.copy()
519578
else:
@@ -536,6 +595,7 @@ def copy(self):
536595
self.image.copy(),
537596
weight=self.weight.copy(),
538597
bmask=bmask,
598+
ormask=ormask,
539599
noise=noise,
540600
gmix=gmix,
541601
jacobian=self.jacobian, # makes a copy

0 commit comments

Comments
 (0)