lsst.skymap
13.0-4-gd4595c5+5
Main Page
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Variables
Pages
python
lsst
skymap
cachingSkyMap.py
Go to the documentation of this file.
1
from
builtins
import
range
2
#
3
# LSST Data Management System
4
# Copyright 2008-2012 LSST Corporation.
5
#
6
# This product includes software developed by the
7
# LSST Project (http://www.lsst.org/).
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 LSST License Statement and
20
# the GNU General Public License along with this program. If not,
21
# see <http://www.lsstcorp.org/LegalNotices/>.
22
#
23
24
from
.baseSkyMap
import
BaseSkyMap
25
26
__all__ = [
"CachingSkyMap"
]
27
28
class
CachingSkyMap
(BaseSkyMap):
29
"""A SkyMap that generates its tracts on request and caches them
30
31
A subclass should define
32
* __init__ to calculate the required number of tracts (and pass it up)
33
* generateTract to generate a tract
34
35
Subclassers should also check that the arguments to the constructor are
36
consistent with the below __reduce__ method.
37
"""
38
39
def
__init__
(self, numTracts, config=None, version=0):
40
super(CachingSkyMap, self).
__init__
(config)
41
self.
_numTracts
= numTracts
42
self.
_tractCache
= [
None
] * self.
_numTracts
43
self.
_tractInfo
=
None
# We shouldn't need this; we will generate tracts on demand
44
self.
_version
= version
45
46
def
__reduce__
(self):
47
"""To support pickling
48
49
Warning: This method assumes that the constructor should be defined:
50
__init__(self, config, version=defaultVersion)
51
The use of 'config' is effectively set by the registry mechanism.
52
If additional optional arguments are added, this method should be
53
overridden to correspond.
54
"""
55
return
(self.__class__, (self.config, self.
_version
))
56
57
def
__iter__
(self):
58
"""Iterator over tracts"""
59
for
i
in
range(self.
_numTracts
):
60
yield
self[i]
61
62
def
__len__
(self):
63
"""Length is number of tracts"""
64
return
self.
_numTracts
65
66
def
__getitem__
(self, index):
67
"""Get the TractInfo for a particular index
68
69
The tract is returned from a cache, if available, otherwise generated
70
on the fly.
71
"""
72
if
index < 0
or
index > self.
_numTracts
:
73
raise
IndexError(
"Index out of range: %d vs %d"
% (index, self.
_numTracts
))
74
if
self.
_tractCache
[index]
is
not
None
:
75
return
self.
_tractCache
[index]
76
tract = self.
generateTract
(index)
77
self.
_tractCache
[index] = tract
78
return
tract
79
80
def
generateTract
(self, index):
81
"""Generate the TractInfo for the particular index"""
82
raise
NotImplementedError(
"Subclasses must define this method."
)
lsst.skymap.cachingSkyMap.CachingSkyMap._numTracts
_numTracts
Definition:
cachingSkyMap.py:41
lsst.skymap.cachingSkyMap.CachingSkyMap._version
_version
Definition:
cachingSkyMap.py:44
lsst.skymap.cachingSkyMap.CachingSkyMap.__reduce__
def __reduce__
Definition:
cachingSkyMap.py:46
lsst.skymap.cachingSkyMap.CachingSkyMap
Definition:
cachingSkyMap.py:28
lsst.skymap.cachingSkyMap.CachingSkyMap._tractCache
_tractCache
Definition:
cachingSkyMap.py:42
lsst.skymap.cachingSkyMap.CachingSkyMap._tractInfo
_tractInfo
Definition:
cachingSkyMap.py:43
lsst.skymap.cachingSkyMap.CachingSkyMap.__iter__
def __iter__
Definition:
cachingSkyMap.py:57
lsst.skymap.cachingSkyMap.CachingSkyMap.generateTract
def generateTract
Definition:
cachingSkyMap.py:80
lsst.skymap.cachingSkyMap.CachingSkyMap.__len__
def __len__
Definition:
cachingSkyMap.py:62
lsst.skymap.cachingSkyMap.CachingSkyMap.__init__
def __init__
Definition:
cachingSkyMap.py:39
lsst.skymap.cachingSkyMap.CachingSkyMap.__getitem__
def __getitem__
Definition:
cachingSkyMap.py:66
Generated on Sat Jul 1 2017 12:26:02 for lsst.skymap by
1.8.5