lsst.afw  21.0.0-25-g1d57be3cd+f385fa6f38
_mask.py
Go to the documentation of this file.
1 # This file is part of afw.
2 #
3 # Developed for the LSST Data Management System.
4 # This product includes software developed by the LSST Project
5 # (https://www.lsst.org).
6 # See the COPYRIGHT file at the top-level directory of this distribution
7 # for details of code ownership.
8 #
9 # This program is free software: you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation, either version 3 of the License, or
12 # (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program. If not, see <https://www.gnu.org/licenses/>.
21 
22 __all__ = ["Mask", "MaskPixel"]
23 
24 import numpy as np
25 
26 from lsst.utils import TemplateMeta
27 from ._fitsIoWithOptions import imageReadFitsWithOptions, imageWriteFitsWithOptions
28 from ._imageLib import MaskX
29 from ._slicing import supportSlicing
30 from ._disableArithmetic import disableMaskArithmetic
31 
32 MaskPixel = np.int32
33 
34 
35 class Mask(metaclass=TemplateMeta):
36  TEMPLATE_PARAMS = ("dtype",)
37  TEMPLATE_DEFAULTS = (MaskPixel,)
38 
39  def __reduce__(self):
40  from lsst.afw.fits import reduceToFits
41  return reduceToFits(self)
42 
43  def __str__(self):
44  return "{}, bbox={}, maskPlaneDict={}".format(self.array, self.getBBox(), self.getMaskPlaneDict())
45 
46  def __repr__(self):
47  return "{}.{}={}".format(self.__module__, self.__class__.__name__, str(self))
48 
49  readFitsWithOptions = classmethod(imageReadFitsWithOptions)
50 
51  writeFitsWithOptions = imageWriteFitsWithOptions
52 
53 
54 Mask.register(MaskPixel, MaskX)
55 Mask.alias("X", MaskX)
56 
57 for cls in (MaskX, ):
58  supportSlicing(cls)