-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathshowCamera.py
executable file
·86 lines (74 loc) · 2.84 KB
/
showCamera.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python
#
# LSST Data Management System
# Copyright 2008, 2009, 2010 LSST Corporation.
#
# This product includes software developed by the
# LSST Project (http://www.lsst.org/).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the LSST License Statement and
# the GNU General Public License along with this program. If not,
# see <http://www.lsstcorp.org/LegalNotices/>.
#
import logging
import sys
import matplotlib.pyplot as plt
import lsst.afw.cameraGeom.utils as cameraGeomUtils
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description='Show the layout of CCDs in a camera.',
epilog='The corresponding obs-package must be setup (e.g. obs_decam '
'if you want to see DECam)'
)
parser.add_argument(
'mapper', help="Name of camera (e.g. decam)", default=None)
parser.add_argument('--outputFile', type=str,
help="File to write plot to", default=None)
parser.add_argument('--ids', action="store_true",
help="Use CCD's IDs, not names")
args = parser.parse_args()
#
# Import the obs package and lookup the mapper
#
obsPackageName = f"lsst.obs.{args.mapper}" # guess the package
try:
__import__(obsPackageName)
except Exception:
print(f"Unable to import {obsPackageName} -- is it setup?", file=sys.stderr)
sys.exit(1)
# __import__ returns the top-level module, so look ours up
obsPackage = sys.modules[obsPackageName]
# Guess the name too.
mapperName = f"{args.mapper[0].title()}{args.mapper[1:]}Mapper"
try:
mapper = getattr(obsPackage, mapperName)
except AttributeError:
print("Unable to find mapper {mapperName} in {obsPackageName}", file=sys.stderr)
sys.exit(1)
#
# Control verbosity from obs packages
#
log = logging.getLogger("lsst.obs")
log.setLevel(logging.FATAL)
#
# And finally find the camera
#
camera = mapper().camera
if not args.outputFile:
plt.interactive(True)
cameraGeomUtils.plotFocalPlane(camera, useIds=args.ids,
showFig=not args.outputFile, savePath=args.outputFile)
if not args.outputFile:
print("Hit any key to exit", end=' ')
input()
sys.exit(0)