LSST Applications  21.0.0+75b29a8a7f,21.0.0+e70536a077,21.0.0-1-ga51b5d4+62c747d40b,21.0.0-10-gbfb87ad6+3307648ee3,21.0.0-15-gedb9d5423+47cba9fc36,21.0.0-2-g103fe59+fdf0863a2a,21.0.0-2-g1367e85+d38a93257c,21.0.0-2-g45278ab+e70536a077,21.0.0-2-g5242d73+d38a93257c,21.0.0-2-g7f82c8f+e682ffb718,21.0.0-2-g8dde007+d179fbfa6a,21.0.0-2-g8f08a60+9402881886,21.0.0-2-ga326454+e682ffb718,21.0.0-2-ga63a54e+08647d4b1b,21.0.0-2-gde069b7+26c92b3210,21.0.0-2-gecfae73+0445ed2f95,21.0.0-2-gfc62afb+d38a93257c,21.0.0-27-gbbd0d29+ae871e0f33,21.0.0-28-g5fc5e037+feb0e9397b,21.0.0-3-g21c7a62+f4b9c0ff5c,21.0.0-3-g357aad2+57b0bddf0b,21.0.0-3-g4be5c26+d38a93257c,21.0.0-3-g65f322c+3f454acf5d,21.0.0-3-g7d9da8d+75b29a8a7f,21.0.0-3-gaa929c8+9e4ef6332c,21.0.0-3-ge02ed75+4b120a55c4,21.0.0-4-g3300ddd+e70536a077,21.0.0-4-g591bb35+4b120a55c4,21.0.0-4-gc004bbf+4911b9cd27,21.0.0-4-gccdca77+f94adcd104,21.0.0-4-ge8fba5a+2b3a696ff9,21.0.0-5-gb155db7+2c5429117a,21.0.0-5-gdf36809+637e4641ee,21.0.0-6-g00874e7+c9fd7f7160,21.0.0-6-g4e60332+4b120a55c4,21.0.0-7-gc8ca178+40eb9cf840,21.0.0-8-gfbe0b4b+9e4ef6332c,21.0.0-9-g2fd488a+d83b7cd606,w.2021.05
LSST Data Management Base Package
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.obs.base.filters.FilterDefinitionCollection Class Reference
Inheritance diagram for lsst.obs.base.filters.FilterDefinitionCollection:

Public Member Functions

def __init__ (self, *filters)
 
def __getitem__ (self, key)
 
def __len__ (self)
 
def __str__ (self)
 
def defineFilters (self)
 
def reset (cls)
 
def findAll (self, name)
 

Public Attributes

 physical_to_band
 

Static Public Attributes

dictionary physical_to_band = {}
 

Detailed Description

An order-preserving collection of multiple `FilterDefinition`.

Parameters
----------
filters : `~collections.abc.Sequence`
    The filters in this collection.

Definition at line 37 of file filters.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.obs.base.filters.FilterDefinitionCollection.__init__ (   self,
filters 
)

Definition at line 59 of file filters.py.

59  def __init__(self, *filters):
60  self._filters = list(filters)
61  self.physical_to_band = {filter.physical_filter: filter.band for filter in self._filters}
62 
daf::base::PropertyList * list
Definition: fits.cc:913

Member Function Documentation

◆ __getitem__()

def lsst.obs.base.filters.FilterDefinitionCollection.__getitem__ (   self,
  key 
)

Definition at line 63 of file filters.py.

63  def __getitem__(self, key):
64  return self._filters[key]
65 

◆ __len__()

def lsst.obs.base.filters.FilterDefinitionCollection.__len__ (   self)

Definition at line 66 of file filters.py.

66  def __len__(self):
67  return len(self._filters)
68 

◆ __str__()

def lsst.obs.base.filters.FilterDefinitionCollection.__str__ (   self)

Definition at line 69 of file filters.py.

69  def __str__(self):
70  return "FilterDefinitions(" + ', '.join(str(f) for f in self._filters) + ')'
71 

◆ defineFilters()

def lsst.obs.base.filters.FilterDefinitionCollection.defineFilters (   self)
Define all the filters to `lsst.afw.image.Filter`.

`~lsst.afw.image.Filter` objects are singletons, so we protect against
filters being defined multiple times.

Raises
------
RuntimeError
    Raised if any other `FilterDefinitionCollection` has already called
    ``defineFilters``.

Definition at line 72 of file filters.py.

72  def defineFilters(self):
73  """Define all the filters to `lsst.afw.image.Filter`.
74 
75  `~lsst.afw.image.Filter` objects are singletons, so we protect against
76  filters being defined multiple times.
77 
78  Raises
79  ------
80  RuntimeError
81  Raised if any other `FilterDefinitionCollection` has already called
82  ``defineFilters``.
83  """
84  if self._defined is None:
85  with warnings.catch_warnings():
86  # surpress Filter warnings; we already know this is deprecated
87  warnings.simplefilter('ignore', category=FutureWarning)
88  self.reset()
89  for filter in self._filters:
90  filter.defineFilter()
91  FilterDefinitionCollection._defined = self
92  elif self._defined is self:
93  # noop: we've already defined these filters, so do nothing
94  pass
95  else:
96  msg = f"afw Filters were already defined on: {self._defined}"
97  raise RuntimeError(msg)
98 

◆ findAll()

def lsst.obs.base.filters.FilterDefinitionCollection.findAll (   self,
  name 
)
Return the FilterDefinitions that match a particular name.

This method makes no attempt to prioritize, e.g., band names over
physical filter names; any definition that makes *any* reference
to the name is returned.

Parameters
----------
name : `str`
    The name to search for. May be any band, physical, or alias name.

Returns
-------
matches : `set` [`FilterDefinition`]
    All FilterDefinitions containing ``name`` as one of their
    filter names.

Definition at line 110 of file filters.py.

110  def findAll(self, name):
111  """Return the FilterDefinitions that match a particular name.
112 
113  This method makes no attempt to prioritize, e.g., band names over
114  physical filter names; any definition that makes *any* reference
115  to the name is returned.
116 
117  Parameters
118  ----------
119  name : `str`
120  The name to search for. May be any band, physical, or alias name.
121 
122  Returns
123  -------
124  matches : `set` [`FilterDefinition`]
125  All FilterDefinitions containing ``name`` as one of their
126  filter names.
127  """
128  matches = set()
129  for filter in self._filters:
130  if name == filter.physical_filter or name == filter.band or name == filter.afw_name \
131  or name in filter.alias:
132  matches.add(filter)
133  return matches
134 
135 
136 @dataclasses.dataclass(frozen=True)
daf::base::PropertySet * set
Definition: fits.cc:912

◆ reset()

def lsst.obs.base.filters.FilterDefinitionCollection.reset (   cls)
Reset the afw Filter definitions and clear the `defined` singleton.
Use this in unittests that define different filters.

Definition at line 100 of file filters.py.

100  def reset(cls):
101  """Reset the afw Filter definitions and clear the `defined` singleton.
102  Use this in unittests that define different filters.
103  """
104  with warnings.catch_warnings():
105  # surpress Filter warnings; we already know this is deprecated
106  warnings.simplefilter('ignore', category=FutureWarning)
108  cls._defined = None
109 

Member Data Documentation

◆ physical_to_band [1/2]

dictionary lsst.obs.base.filters.FilterDefinitionCollection.physical_to_band = {}
static

Definition at line 52 of file filters.py.

◆ physical_to_band [2/2]

lsst.obs.base.filters.FilterDefinitionCollection.physical_to_band

Definition at line 61 of file filters.py.


The documentation for this class was generated from the following file: