LSSTApplications
18.1.0
LSSTDataManagementBasePackage
stack
Linux64
afw
18.1.0
python
lsst
afw
table
baseColumnView
baseColumnViewContinued.py
Go to the documentation of this file.
1
#
2
# LSST Data Management System
3
# Copyright 2017 LSST/AURA.
4
#
5
# This product includes software developed by the
6
# LSST Project (http://www.lsst.org/).
7
#
8
# This program is free software: you can redistribute it and/or modify
9
# it under the terms of the GNU General Public License as published by
10
# the Free Software Foundation, either version 3 of the License, or
11
# (at your option) any later version.
12
#
13
# This program is distributed in the hope that it will be useful,
14
# but WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
17
#
18
# You should have received a copy of the LSST License Statement and
19
# the GNU General Public License along with this program. If not,
20
# see <http://www.lsstcorp.org/LegalNotices/>.
21
#
22
23
__all__ = []
# importing this module adds methods to BaseColumnView
24
25
import
numpy
as
np
26
27
from
lsst.utils
import
continueClass
28
from
..schema
import
KeyFlag
29
from
.baseColumnView
import
_BaseColumnViewBase
30
31
# We can't call this "BaseColumnView" because that's the typedef for
32
# "ColumnViewT<BaseRecord>". This is just a mostly-invisible implementation
33
# base class, so we use the same naming convention we use for those.
34
35
36
@continueClass
# noqa: F811
37
class
_BaseColumnViewBase
:
38
39
def
getBits
(self, keys=None):
40
"""Get the bits associated with the specified keys
41
42
Unlike the C++ version, each key may be a field name or a key,
43
and if keys is None then all bits are returned.
44
"""
45
if
keys
is
None
:
46
return
self.getAllBits()
47
arg = []
48
for
k
in
keys:
49
if
isinstance(k, str):
50
arg.append(self.schema.find(k).key)
51
else
:
52
arg.append(k)
53
return
self._getBits(arg)
54
55
def
__getitem__
(self, key):
56
"""Get a column view; key may be a key object or the name of a field.
57
"""
58
if
isinstance(key, str):
59
keyobj = self.schema.find(key).key
60
else
:
61
keyobj = key
62
return
self._basicget(keyobj)
63
64
get = __getitem__
65
66
def
__setitem__
(self, key, value):
67
"""Set a full column to an array or scalar; key may be a key object or
68
the name of a field.
69
"""
70
self.
get
(key)[:] = value
71
72
set = __setitem__
73
74
def
get_bool_array
(self, key):
75
"""Get the value of a flag column as a boolean array; key must be a
76
key object or the name of a field.
77
"""
78
if
isinstance(key, KeyFlag):
79
return
self[key]
80
raise
TypeError(
"key={} not an lsst.afw.table.KeyFlag"
.
format
(key))
81
82
def
extract
(self, *patterns, **kwds):
83
"""Extract a dictionary of {<name>: <column-array>} in which the field
84
names match the given shell-style glob pattern(s).
85
86
Any number of glob patterns may be passed (including none); the result
87
will be the union of all the result of each glob considered
88
separately.
89
90
Note that extract("*", copy=True) provides an easy way to transform a
91
row-major ColumnView into a possibly more efficient set of contiguous
92
NumPy arrays.
93
94
This routines unpacks `Flag` columns into full boolean arrays and
95
covariances into dense (i.e. non-triangular packed) arrays with
96
dimension (N,M,M), where N is the number of records and M is the
97
dimension of the covariance matrix. String fields are silently
98
ignored.
99
100
Additional Keyword Arguments
101
----------------------------
102
items : `list` The result of a call to self.schema.extract(); this
103
will be used instead of doing any new matching, and allows the
104
pattern matching to be reused to extract values from multiple
105
records. This keyword is incompatible with any position arguments
106
and the regex, sub, and ordered keyword arguments.
107
108
where : array index expression
109
Any expression that can be passed as indices to a NumPy array,
110
including slices, boolean arrays, and index arrays, that will be
111
used to index each column array. This is applied before arrays
112
are copied when copy is True, so if the indexing results in an
113
implicit copy no unnecessary second copy is performed.
114
115
copy : `bool`
116
If True, the returned arrays will be contiguous copies rather than
117
strided views into the catalog. This ensures that the lifetime of
118
the catalog is not tied to the lifetime of a particular catalog,
119
and it also may improve the performance if the array is used
120
repeatedly. Default is False.
121
122
regex : `str` or `re` pattern
123
A regular expression to be used in addition to any glob patterns
124
passed as positional arguments. Note that this will be compared
125
with re.match, not re.search.
126
127
sub : `str`
128
A replacement string (see re.MatchObject.expand) used to set the
129
dictionary keys of any fields matched by regex.
130
131
ordered : `bool`
132
If True, a collections.OrderedDict will be returned instead of a
133
standard dict, with the order corresponding to the definition
134
order of the Schema. Default is False.
135
"""
136
copy = kwds.pop(
"copy"
,
False
)
137
where = kwds.pop(
"where"
,
None
)
138
d = kwds.pop(
"items"
,
None
)
139
# If ``items`` is given as a kwd, an extraction has already been performed and there shouldn't be
140
# any additional keywords. Otherwise call schema.extract to load the
141
# dictionary.
142
if
d
is
None
:
143
d = self.schema.
extract
(*patterns, **kwds).copy()
144
elif
kwds:
145
raise
ValueError(
146
"kwd 'items' was specified, which is not compatible with additional keywords"
)
147
148
def
processArray(a):
149
if
where
is
not
None
:
150
a = a[where]
151
if
copy:
152
a = np.ascontiguousarray(a)
153
return
a
154
155
# must use list because we might be adding/deleting elements
156
for
name, schemaItem
in
list
(d.items()):
157
key = schemaItem.key
158
if
key.getTypeString() ==
"String"
:
159
del d[name]
160
else
:
161
d[name] = processArray(self.
get
(schemaItem.key))
162
return
d
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase.get
def get
Definition:
baseColumnViewContinued.py:64
lsst::utils
Definition:
Backtrace.h:29
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase.getBits
def getBits(self, keys=None)
Definition:
baseColumnViewContinued.py:39
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase
Definition:
baseColumnViewContinued.py:37
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase.__setitem__
def __setitem__(self, key, value)
Definition:
baseColumnViewContinued.py:66
lsst.pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition:
history.py:168
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase.get_bool_array
def get_bool_array(self, key)
Definition:
baseColumnViewContinued.py:74
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase.extract
def extract(self, patterns, kwds)
Definition:
baseColumnViewContinued.py:82
list
daf::base::PropertyList * list
Definition:
fits.cc:885
lsst::afw::table.baseColumnView.baseColumnViewContinued._BaseColumnViewBase.__getitem__
def __getitem__(self, key)
Definition:
baseColumnViewContinued.py:55
Generated on Thu Aug 8 2019 20:20:10 for LSSTApplications by
1.8.13