lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
gdb
afw
printers.py
Go to the documentation of this file.
1
import
gdb
2
import
math
3
import
re
4
import
sys
5
6
try
:
7
debug
# noqa: F821
8
except
Exception:
9
debug =
False
10
11
import
optparse
12
argparse =
None
# we're using optparse
13
14
15
class
GdbOptionParser
(optparse.OptionParser):
16
"""A subclass of the standard optparse OptionParser for gdb
17
18
GdbOptionParser raises GdbError rather than exiting when asked for help, or
19
when given an illegal value. E.g.
20
21
parser = gdb.printing.GdbOptionParser("show image")
22
parser.add_option("-a", "--all", action="store_true",
23
help="Display the whole image")
24
parser.add_option("-w", "--width", type="int", default=8,
25
help="Field width for pixels")
26
27
opts, args = parser.parse_args(args)
28
"""
29
30
def
__init__
(self, prog, *args, **kwargs):
31
"""
32
Like optparse.OptionParser's API, but with an initial command name argument
33
"""
34
# OptionParser is an old-style class, so no super
35
if
not
kwargs.get(
"prog"
):
36
kwargs[
"prog"
] = prog
37
optparse.OptionParser.__init__(self, *args, **kwargs)
38
39
def
parse_args
(self, args, values=None):
40
"""Call OptionParser.parse_args after running gdb.string_to_argv"""
41
if
args
is
None
:
# defaults to sys.argv
42
args =
""
43
try
:
44
args = gdb.string_to_argv(args)
45
except
TypeError:
46
pass
47
48
help = (
"-h"
in
args
or
"--help"
in
args)
49
opts, args = optparse.OptionParser.parse_args(self, args, values)
50
opts.help = help
51
if
help:
52
args = []
53
54
return
opts, args
55
56
def
exit
(self, status=0, msg=""):
57
"""Raise GdbError rather than exiting"""
58
if
status == 0:
59
if
msg:
60
print(msg, file=sys.stderr)
61
else
:
62
raise
gdb.GdbError(msg)
63
64
65
try
:
66
import
gdb.printing
67
68
class
SharedPtrPrinter
:
69
"Print a shared_ptr"
70
71
def
__init__
(self, val):
72
self.
val
= val
73
74
def
to_string
(self):
75
if
self.
val
[
"px"
]:
76
return
"shared_ptr(%s)"
% self.
val
[
"px"
].dereference()
77
else
:
78
return
"NULL"
79
80
class
GilPixelPrinter
:
81
"Print a boost::gil pixel"
82
83
def
__init__
(self, val):
84
self.
val
= val
85
86
def
to_string
(self):
87
import
pdb
88
pdb.set_trace()
89
return
self.
val
[
"_v0"
]
90
91
def
getEigenMatrixDimensions
(val):
92
m_storage = val[
"m_storage"
]
93
try
:
94
nx, ny = m_storage[
"m_cols"
], m_storage[
"m_rows"
]
95
except
gdb.error:
# only available for dynamic Matrices
96
try
:
97
nx, ny = val.type.template_argument(1), \
98
val.type.template_argument(2)
99
except
RuntimeError:
100
# should get dimens from template, but that's gdb bug #11060
101
size = m_storage[
"m_data"
][
"array"
].type.sizeof
102
size0 = m_storage[
"m_data"
][
"array"
].dereference().type.sizeof
103
# guess! Assume square
104
nx = int(math.sqrt(size/size0))
105
ny = size/(nx*size0)
106
107
return
nx, ny
108
109
def
getEigenValue
(var, x, y=0):
110
if
re.search(
r"Matrix"
, str(var.type)):
111
if
False
:
112
return
var[
"operator()(int, int)"
](x, y)
113
114
NX, NY =
getEigenMatrixDimensions
(var)
115
116
if
x < 0
or
x >= NX
or
y < 0
or
y >= NY:
117
raise
gdb.GdbError(
"Element (%d, %d) is out of range 0:%d, 0:%d"
%
118
(x, y, NX - 1, NY - 1))
119
120
m_data = var[
"m_storage"
][
"m_data"
]
121
if
False
:
122
# convert to a pointer to the start of the array
123
import
pdb
124
pdb.set_trace()
125
m_data = m_data.address.cast(m_data.type)
126
127
try
:
128
val = m_data[x + y*NX]
129
except
Exception:
130
val = m_data[
"array"
][x + y*NX]
131
else
:
# Vector
132
if
False
:
133
return
var[
"operator()(int)"
](x)
134
135
NX =
getEigenMatrixDimensions
(var)[0]
136
137
if
x < 0
or
x >= NX:
138
raise
gdb.GdbError(
139
"Element (%d) is out of range 0:%d"
% (x, NX - 1))
140
141
m_data = var[
"m_storage"
][
"m_data"
]
142
143
if
False
:
144
# convert to a pointer to the start of the array
145
m_data = m_data.address.cast(m_data.type)
146
147
try
:
148
val = m_data[x]
149
except
Exception:
150
val = m_data[
"array"
][x]
151
152
if
val.type.code == gdb.TYPE_CODE_INT:
153
val = int(val)
154
elif
val.type.code == gdb.TYPE_CODE_FLT:
155
val = float(val)
156
157
return
val
158
159
class
EigenMatrixPrinter
:
160
"Print an Eigen Matrix"
161
162
def
__init__
(self, val):
163
self.
val
= val
164
165
def
to_string
(self):
166
nx, ny =
getEigenMatrixDimensions
(self.
val
)
167
168
return
"%s{%dx%d}"
% (self.
val
.type, nx, ny)
169
170
class
EigenVectorPrinter
:
171
"Print an Eigen Vector"
172
173
def
__init__
(self, val):
174
self.
val
= val
175
176
def
to_string
(self):
177
m_storage = self.
val
[
"m_storage"
]
178
179
try
:
180
n = m_storage[
"n"
]
181
except
gdb.error:
# only available for dynamic Matrices
182
try
:
183
n = m_storage.type.template_argument(1)
184
except
RuntimeError:
185
# should get dimens from template, but that's gdb bug
186
# #11060
187
size = m_storage[
"m_data"
][
"array"
].type.sizeof
188
size0 = m_storage[
"m_data"
][
"array"
].dereference(
189
).type.sizeof
190
n = math.sqrt(size/size0)
191
192
return
"{%d}"
% (n)
193
194
class
PrintEigenCommand
(gdb.Command):
195
"""Print an eigen Matrix or Vector
196
Usage: show eigen <matrix> [x0 y0 [nx ny]]
197
show eigen <vector> [x0 [nx]]
198
"""
199
200
def
__init__
(self):
201
super(PrintEigenCommand, self).
__init__
(
"show eigen"
,
202
gdb.COMMAND_DATA,
203
gdb.COMPLETE_SYMBOL)
204
205
def
_mget
(self, var, x, y=0):
206
return
getEigenValue
(var, x, y)
207
208
def
_vget
(self, var, x):
209
return
getEigenValue
(var, x)
210
211
def
invoke
(self, args, fromTty):
212
self.dont_repeat()
213
214
parser =
GdbOptionParser
(
"show eigen"
)
215
parser.add_option(
"-d"
,
"--dataFmt"
, default=
"%.2f"
,
216
help=
"Format for values"
)
217
parser.add_option(
"-f"
,
"--formatWidth"
, type=
"int"
,
218
default=8, help=
"Field width for values"
)
219
parser.add_option(
"-o"
,
"--origin"
, type=
"str"
, nargs=
"+"
,
220
help=
"Origin of the part of the object to print"
)
221
if
False
:
222
parser.add_option(
223
"eigenObject"
, help=
"Expression giving Eigen::Matrix/Vector to show"
)
224
parser.add_option(
225
"nx"
, help=
"Width of patch to print"
, type=
"int"
, default=0, nargs=
"?"
)
226
parser.add_option(
227
"ny"
, help=
"Height of patch to print"
, type=
"int"
, default=0, nargs=
"?"
)
228
229
opts = parser.parse_args(args)
230
if
opts.help:
231
return
232
else
:
233
(opts, args) = parser.parse_args(args)
234
if
opts.help:
235
return
236
237
if
not
args:
238
raise
gdb.GdbError(
"Please specify an object"
)
239
opts.eigenObject = args.pop(0)
240
241
opts.nx, opts.ny = 0, 0
242
if
args:
243
opts.nx = int(args.pop(0))
244
if
args:
245
opts.ny = int(args.pop(0))
246
247
if
args:
248
raise
gdb.GdbError(
249
"Unrecognised trailing arguments: %s"
%
" "
.join(args))
250
251
var = gdb.parse_and_eval(opts.eigenObject)
252
253
if
not
re.search(
r"(Eigen|LinearTransform)::(Matrix|Vector)"
, str(var.type)):
254
raise
gdb.GdbError(
255
"Please specify an eigen matrix or vector, not %s"
% var.type)
256
257
if
re.search(
r"shared_ptr<"
, str(var.type)):
258
var = var[
"px"
].dereference()
259
260
if
var.type.code == gdb.TYPE_CODE_PTR:
261
var = var.dereference()
# be nice
262
263
isMatrix = re.search(
r"Matrix"
, str(var.type))
264
if
isMatrix:
265
NX, NY =
getEigenMatrixDimensions
(var)
266
267
if
opts.origin:
268
if
len(opts.origin) != 2:
269
raise
gdb.GdbError(
"Please specify both x0 and y0"
)
270
271
x0 = gdb.parse_and_eval(opts.origin[0])
272
y0 = gdb.parse_and_eval(opts.origin[1])
273
else
:
274
x0, y0 = 0, 0
275
276
nx = opts.nx
277
ny = opts.ny
278
if
nx == 0:
279
nx = NX
280
if
ny == 0:
281
ny = NY
282
283
if
nx == 1
and
ny == 1:
284
print(
"%g"
% self.
_vget
(var, x0))
285
return
286
else
:
287
NX = 0, var[
"m_storage"
][
"n"
]
288
289
if
opts.origin:
290
if
len(opts.origin) != 1:
291
raise
gdb.GdbError(
"Please only specify x0"
)
292
293
x0 = gdb.parse_and_eval(opts.origin[0])
294
else
:
295
x0 = 0
296
297
nx = opts.nx
298
if
nx == 0:
299
nx = NX
300
301
if
nx == 1:
302
print(
"%g"
% self.
_vget
(var, x0))
303
return
304
#
305
# OK, finally time to print
306
#
307
if
isMatrix:
308
print(
"%-4s"
%
""
, end=
' '
)
309
for
x
in
range(x0, min(NX, x0 + nx)):
310
print(
"%*d"
% (opts.formatWidth, x), end=
' '
)
311
print(
""
)
312
313
for
y
in
range(y0, min(NY, y0 + ny)):
314
print(
"%-4d"
% y, end=
' '
)
315
for
x
in
range(x0, min(NX, x0 + nx)):
316
print(
"%*s"
% (opts.formatWidth, (opts.dataFmt %
317
self.
_mget
(var, x, y))), end=
' '
)
318
print(
""
)
319
else
:
320
for
x
in
range(x0, min(NX, x0 + nx)):
321
print(
"%*s"
% (opts.formatWidth, (opts.dataFmt %
322
self.
_vget
(var, x))), end=
' '
)
323
print(
""
)
324
325
PrintEigenCommand
()
326
327
# afw
328
329
class
BaseSourceAttributesPrinter
:
330
"Print a BaseSourceAttributes"
331
332
def
__init__
(self, val):
333
self.
val
= val
334
335
def
to_string
(self):
336
return
"Base: {id=%d astrom=(%.3f, %.3f)}"
% (self.
val
[
"_id"
],
337
self.
val
[
"_xAstrom"
],
338
self.
val
[
"_yAstrom"
])
339
340
class
SourcePrinter
:
341
"Print a Source"
342
343
def
__init__
(self, val):
344
self.
val
= val
345
346
def
to_string
(self):
347
return
"Source{id=%d astrom=(%.3f, %.3f)}"
% (self.
val
[
"_id"
],
348
self.
val
[
"_xAstrom"
],
349
self.
val
[
"_yAstrom"
])
350
351
class
DetectorPrinter
:
352
"Print a cameraGeom::Detector"
353
354
def
__init__
(self, val):
355
self.
val
= val
356
357
def
to_string
(self):
358
return
"Detector{name: %s id: %s type: %s bbox: %s}"
% (self.
val
[
"_name"
], self.
val
[
"_id"
],
359
self.
val
[
"_type"
], self.
val
[
"_bbox"
])
360
361
class
FootprintPrinter
:
362
"Print a Footprint"
363
364
def
__init__
(self, val):
365
self.
val
= val
366
367
def
to_string
(self):
368
if
False
:
369
# Fails (as its type is METHOD, not CODE)
370
nspan = self.
val
[
"_spans"
][
"size"
]()
371
else
:
372
vec_impl = self.
val
[
"_spans"
][
"_M_impl"
]
373
nspan = vec_impl[
"_M_finish"
] - vec_impl[
"_M_start"
]
374
375
return
"Footprint{id=%d, nspan=%d, area=%d; BBox %s}"
% (self.
val
[
"_fid"
], nspan,
376
self.
val
[
"_area"
], self.
val
[
"_bbox"
])
377
378
class
FootprintSetPrinter
:
379
"Print a FootprintSet"
380
381
def
__init__
(self, val):
382
self.
val
= val
383
384
def
to_string
(self):
385
return
"FootprintSet{%s; %s}"
% (self.
val
[
"_region"
], self.
val
[
"_footprints"
])
386
387
class
PeakPrinter
:
388
"Print a Peak"
389
390
def
__init__
(self, val):
391
self.
val
= val
392
393
def
to_string
(self):
394
return
"Peak{%d, (%.2f, %.2f)}"
% (self.
val
[
"_id"
], self.
val
[
"_fx"
], self.
val
[
"_fy"
])
395
396
class
PsfPrinter
:
397
"Print a Psf"
398
399
def
to_string
(self):
400
return
"%s"
% (self.typeName())
401
402
class
Box2Printer
:
403
"Print a Box2"
404
405
def
__init__
(self, val):
406
self.
val
= val
407
408
def
to_string
(self):
409
# Make sure &foo works, too.
410
type = self.
val
.type
411
if
type.code == gdb.TYPE_CODE_REF:
412
type = type.target()
413
414
llc = [
getEigenValue
(self.
val
[
"_minimum"
][
"_vector"
], i)
415
for
i
in
range(2)]
416
dims = [
getEigenValue
(self.
val
[
"_dimensions"
][
"_vector"
], i)
417
for
i
in
range(2)]
418
419
return
"Box2{(%s,%s)--(%s,%s)}"
% (llc[0], llc[1],
420
llc[0] + dims[0] - 1, llc[1] + dims[1] - 1)
421
422
def
display_hint
(self):
423
return
"array"
424
425
class
CoordinateBasePrinter
:
426
"Print a CoordinateBase"
427
428
def
__init__
(self, val):
429
self.
val
= val
430
431
def
to_string
(self):
432
return
self.
val
[
"_vector"
][
"m_storage"
][
"m_data"
][
"array"
]
433
434
def
display_hint
(self):
435
return
"array"
436
437
class
AxesPrinter
:
438
"Print an ellipse::Axes"
439
440
def
__init__
(self, val):
441
self.
val
= val
442
443
def
to_string
(self):
444
vec = self.
val
[
"_vector"
]
445
return
"[%g, %g, %g]"
% (
getEigenValue
(vec, 0),
getEigenValue
(vec, 1),
getEigenValue
(vec, 2))
446
447
class
QuadrupolePrinter
:
448
"Print an ellipse::Quadrupole"
449
450
def
__init__
(self, val):
451
self.
val
= val
452
453
def
to_string
(self):
454
mat = self.
val
[
"_matrix"
]
455
456
if
False
:
457
return
mat
458
else
:
459
return
"[[%g, %g], [%g, %g]]"
% (
getEigenValue
(mat, 0, 0),
getEigenValue
(mat, 0, 1),
460
getEigenValue
(mat, 1, 0),
getEigenValue
(mat, 1, 1))
461
462
class
ImagePrinter
:
463
"Print an ImageBase or derived class"
464
465
def
dimenStr
(self, val=None):
466
if
val
is
None
:
467
val = self.
val
468
469
# Make sure &foo works, too.
470
type = val.type
471
if
type.code == gdb.TYPE_CODE_REF:
472
type = type.target()
473
474
gilView = val[
"_gilView"
]
475
arr = val[
"_origin"
][
"_vector"
][
"m_storage"
][
"m_data"
][
"array"
]
476
477
x0, y0 = arr[0], arr[1]
478
return
"%dx%d%s%d%s%d"
% (
479
# val["getWidth"](), val["getHeight"](),
480
gilView[
"_dimensions"
][
"x"
], gilView[
"_dimensions"
][
"y"
],
481
# i.e. "+" if x0 >= 0 else "" in python >= 2.5
482
[
""
,
"+"
][x0 >= 0], x0,
483
[
""
,
"+"
][y0 >= 0], y0)
484
485
def
typeName
(self):
486
return
self.
typename
.split(
":"
)[-1]
487
488
def
__init__
(self, val):
489
self.
typename
= str(val.type)
490
self.
val
= val
491
492
def
to_string
(self):
493
return
"%s(%s)"
% (self.
typeName
(), self.
dimenStr
())
494
495
class
MaskedImagePrinter
(
ImagePrinter
):
496
"Print a MaskedImage"
497
498
def
to_string
(self):
499
return
"%s(%s)"
% (self.
typeName
(), self.
dimenStr
(self.
val
[
"_image"
][
"px"
].dereference()))
500
501
class
ExposurePrinter
(
ImagePrinter
):
502
"Print an Exposure"
503
504
def
to_string
(self):
505
return
"%s(%s)"
% (self.
typeName
(),
506
self.
dimenStr
(self.
val
[
"_maskedImage"
][
"_image"
][
"px"
].dereference()))
507
508
class
PrintImageCommand
(gdb.Command):
509
"""Print an Image"""
510
511
def
__init__
(self):
512
super(PrintImageCommand, self).
__init__
(
"show image"
,
513
gdb.COMMAND_DATA,
514
gdb.COMPLETE_SYMBOL)
515
516
def
get
(self, var, x, y):
517
if
False
:
518
return
var[
"operator()(int, int, bool)"
](x, y,
True
)
519
else
:
520
dimensions = var[
"_gilView"
][
"_dimensions"
]
521
if
x < 0
or
x >= dimensions[
"x"
]
or
y < 0
or
y >= dimensions[
"y"
]:
522
raise
gdb.GdbError(
"Pixel (%d, %d) is out of range 0:%d, 0:%d"
%
523
(x, y, dimensions[
"x"
] - 1, dimensions[
"y"
] - 1))
524
525
pixels = var[
"_gilView"
][
"_pixels"
][
"_p"
]
526
step = pixels[
"_step_fn"
][
"_step"
] / \
527
var.type.template_argument(0).sizeof
528
529
return
pixels[
"m_iterator"
][x + y*step][
"_v0"
]
530
531
def
invoke
(self, args, fromTty):
532
self.dont_repeat()
533
534
parser =
GdbOptionParser
(
535
"show image"
+ (
""
if
argparse
else
" <image> [<nx> [<ny>]]"
))
536
parser.add_option(
"-a"
,
"--all"
, action=
"store_true"
,
537
help=
"Display the whole image/mask"
)
538
parser.add_option(
"-c"
,
"--center"
, type=
"str"
, nargs=2, default=(
None
,
None
,),
539
help=
"Center the output at (x, y)"
)
540
parser.add_option(
"-o"
,
"--origin"
, type=
"str"
, nargs=2, default=(
None
,
None
,),
541
help=
"Print the region starting at (x, y)"
)
542
parser.add_option(
"-x"
,
"--xy0"
, action=
"store_true"
,
543
help=
"Obey the image's (x0, y0)"
)
544
parser.add_option(
"-f"
,
"--formatWidth"
, type=
"int"
,
545
default=8, help=
"Field width for values"
)
546
parser.add_option(
"-d"
,
"--dataFmt"
, default=
"%.2f"
,
547
help=
"Format for values"
)
548
549
if
argparse:
550
parser.add_option(
551
"image"
, help=
"Expression giving image to show"
)
552
parser.add_option(
553
"width"
, help=
"Width of patch to print"
, default=1, nargs=
"?"
)
554
parser.add_option(
555
"height"
, help=
"Height of patch to print"
, default=1, nargs=
"?"
)
556
557
opts = parser.parse_args(args)
558
if
opts.help:
559
return
560
else
:
561
opts, args = parser.parse_args(args)
562
if
opts.help:
563
return
564
565
if
not
args:
566
raise
gdb.GdbError(
"Please specify an image"
)
567
568
opts.image = args.pop(0)
569
570
opts.width, opts.height = 1, 1
571
if
args:
572
opts.width = int(args.pop(0))
573
if
args:
574
opts.height = int(args.pop(0))
575
576
if
args:
577
raise
gdb.GdbError(
578
"Unrecognised trailing arguments: %s"
%
" "
.join(args))
579
580
for
i
in
range(2):
581
val =
"0"
582
if
opts.origin[i]
is
None
:
583
if
opts.center[i]
is
not
None
:
584
val = opts.center[i]
585
else
:
586
val = opts.origin[i]
587
if
opts.center[i]
is
not
None
:
588
raise
gdb.GdbError(
589
"You may not specify both --center and --origin"
)
590
591
val = gdb.parse_and_eval(val)
592
if
i == 0:
593
x0 = val
594
else
:
595
y0 = val
596
597
if
opts.all:
598
nx, ny = 0, 0
599
else
:
600
nx, ny = opts.width, opts.height
601
602
var = gdb.parse_and_eval(opts.image)
603
604
if
re.search(
r"shared_ptr<"
, str(var.type)):
605
var = var[
"px"
].dereference()
606
607
if
not
re.search(
r"(lsst::afw::image::)?(Image|Mask|MaskedImage)"
, str(var.type.unqualified())):
608
raise
gdb.GdbError(
609
"Please specify an image, not %s"
% var.type)
610
611
if
re.search(
r"MaskedImage"
, str(var.type))
and
\
612
not
re.search(
r"::Image(\s*&)?$"
, str(var.type)):
613
print(
"N.b. %s is a MaskedImage; showing image"
% (opts.image))
614
var = var[
"_image"
]
615
616
if
re.search(
r"shared_ptr<"
, str(var.type)):
617
var = var[
"px"
].dereference()
618
619
if
var.type.code == gdb.TYPE_CODE_PTR:
620
var = var.dereference()
# be nice
621
622
pixelTypeName = str(var.type.template_argument(0))
623
if
opts.dataFmt:
624
dataFmt = opts.dataFmt
625
elif
pixelTypeName
in
[
"short"
,
"unsigned short"
]:
626
dataFmt =
"0x%x"
627
elif
pixelTypeName
in
[
"int"
,
"unsigned int"
]:
628
dataFmt =
"%d"
629
else
:
630
dataFmt =
"%.2f"
631
632
if
nx == 0:
633
nx = var[
"_gilView"
][
"_dimensions"
][
"x"
]
634
if
ny == 0:
635
ny = var[
"_gilView"
][
"_dimensions"
][
"y"
]
636
637
if
opts.center[0]:
638
x0 -= nx//2
639
y0 -= ny//2
640
641
if
opts.xy0
and
not
opts.all:
642
arr = var[
"_origin"
][
"_vector"
][
"m_storage"
][
"m_data"
][
"array"
]
643
644
x0 -= arr[0]
645
y0 -= arr[1]
646
#
647
# OK, finally time to print
648
#
649
print(
"%-4s"
%
""
, end=
' '
)
650
for
x
in
range(x0, x0 + nx):
651
print(
"%*d"
% (opts.formatWidth, x), end=
' '
)
652
print(
""
)
653
654
for
y
in
reversed(list(range(y0, y0 + ny))):
655
print(
"%-4d"
% y, end=
' '
)
656
for
x
in
range(x0, x0 + nx):
657
print(
"%*s"
% (opts.formatWidth, dataFmt %
658
self.
get
(var, x, y)), end=
' '
)
659
print(
""
)
660
661
PrintImageCommand
()
662
663
class
BackgroundPrinter
:
664
"Print a Background"
665
666
def
__init__
(self, val):
667
self.
typename
= str(val.type)
668
self.
val
= val
669
670
def
to_string
(self):
671
return
"Background(%dx%d) %s"
% (
672
self.
val
[
"_imgWidth"
], self.
val
[
"_imgHeight"
],
673
self.
val
[
"_bctrl"
])
674
675
class
BackgroundControlPrinter
:
676
"Print a BackgroundControl"
677
678
def
__init__
(self, val):
679
self.
typename
= str(val.type)
680
self.
val
= val
681
682
def
to_string
(self):
683
return
"{%s %s %s %s}"
% (re.sub(
r"lsst::afw::math::Interpolate::"
,
""
, str(self.
val
[
"_style"
])),
684
re.sub(
r"lsst::afw::math::"
,
""
,
685
str(self.
val
[
"_prop"
])),
686
re.sub(
r"lsst::afw::math::"
,
""
, str(
687
self.
val
[
"_undersampleStyle"
])),
688
self.
val
[
"_sctrl"
][
"px"
].dereference())
689
690
class
KernelPrinter
:
691
"Print a Kernel"
692
693
def
__init__
(self, val):
694
self.
typename
= str(val.type)
695
self.
val
= val
696
697
def
to_string
(self):
698
return
"%s(%dx%d)"
% (self.
typename
,
699
self.
val
[
"_width"
], self.
val
[
"_height"
])
700
701
class
StatisticsControlPrinter
:
702
"Print a StatisticsControl"
703
704
def
__init__
(self, val):
705
self.
typename
= str(val.type)
706
self.
val
= val
707
708
def
to_string
(self):
709
return
"{nSigma=%g nIter=%d ignore=0x%x}"
% (self.
val
[
"_numSigmaClip"
],
710
self.
val
[
"_numIter"
],
711
self.
val
[
"_andMask"
])
712
713
class
TablePrinter
:
714
"Print a table::Table"
715
716
def
__init__
(self, val):
717
self.
typename
= str(val.type)
718
self.
val
= val
719
720
def
to_string
(self):
721
return
"{schema = %s, md=%s}"
% (self.
val
[
"_schema"
], self.
val
[
"_metadata"
])
722
723
class
TableSchemaPrinter
:
724
"Print a table::Schema"
725
726
def
__init__
(self, val):
727
self.
typename
= str(val.type)
728
self.
val
= val
729
730
def
to_string
(self):
731
names = str(self.
val
[
"_impl"
][
"px"
][
"_names"
])
732
names = re.sub(
r"^[^{]*{|}|[\[\]\"\"]|\s*=\s*[^,]*"
,
""
, names)
733
734
return
"%s"
% (names)
735
736
printers = []
737
738
def
register
(obj=None):
739
"Register my pretty-printers with objfile Obj."
740
741
if
obj
is
None
:
742
obj = gdb
743
744
for
p
in
printers:
745
gdb.printing.register_pretty_printer(obj, p, replace=
True
)
746
747
def
build_boost_dictionary
():
748
"""Surely this must be somewhere standard?"""
749
750
printer = gdb.printing.RegexpCollectionPrettyPrinter(
"rhl-boost"
)
751
752
printer.add_printer(
'boost::shared_ptr'
,
753
'^(boost|tr1|std)::shared_ptr'
, SharedPtrPrinter)
754
printer.add_printer(
'boost::gil::pixel'
,
755
'boost::gil::.*pixel_t'
, GilPixelPrinter)
756
757
return
printer
758
759
printers.append(
build_boost_dictionary
())
760
761
def
build_eigen_dictionary
():
762
"""Surely this must be somewhere standard?"""
763
764
printer = gdb.printing.RegexpCollectionPrettyPrinter(
"rhl-eigen"
)
765
766
printer.add_printer(
'eigen::Matrix'
,
767
'^Eigen::Matrix'
, EigenMatrixPrinter)
768
printer.add_printer(
'eigen::Vector'
,
769
'^Eigen::Vector'
, EigenVectorPrinter)
770
771
return
printer
772
773
printers.append(
build_eigen_dictionary
())
774
775
def
build_afw_dictionary
():
776
printer = gdb.printing.RegexpCollectionPrettyPrinter(
"afw"
)
777
778
printer.add_printer(
'lsst::afw::cameraGeom::Detector'
,
779
'^lsst::afw::cameraGeom::(Amp|Ccd|Detector|DetectorMosaic)$'
, DetectorPrinter)
780
781
printer.add_printer(
'lsst::afw::detection::Footprint'
,
782
'^lsst::afw::detection::Footprint$'
, FootprintPrinter)
783
printer.add_printer(
'lsst::afw::detection::FootprintSet'
,
784
'^lsst::afw::detection::FootprintSet'
, FootprintSetPrinter)
785
printer.add_printer(
'lsst::afw::detection::Peak'
,
786
'^lsst::afw::detection::Peak$'
, PeakPrinter)
787
printer.add_printer(
'lsst::afw::detection::Psf'
,
788
'^lsst::afw::detection::Psf$'
, PsfPrinter)
789
printer.add_printer(
'lsst::afw::detection::Source'
,
790
'^lsst::afw::detection::Source$'
, SourcePrinter)
791
printer.add_printer(
'lsst::afw::detection::BaseSourceAttributes'
,
792
'^lsst::afw::detection::BaseSourceAttributes$'
, BaseSourceAttributesPrinter)
793
794
printer.add_printer(
'lsst::afw::geom::Box'
,
795
'^lsst::afw::geom::Box'
, Box2Printer)
796
printer.add_printer(
'lsst::afw::geom::Extent'
,
797
'^lsst::afw::geom::Extent'
, CoordinateBasePrinter)
798
printer.add_printer(
'lsst::afw::geom::Point'
,
799
'^lsst::afw::geom::Point'
, CoordinateBasePrinter)
800
801
printer.add_printer(
'lsst::afw::geom::ellipses::Axes'
,
802
'^lsst::afw::geom::ellipses::Axes'
, AxesPrinter)
803
printer.add_printer(
'lsst::afw::geom::ellipses::Quadrupole'
,
804
'^lsst::afw::geom::ellipses::Quadrupole'
, QuadrupolePrinter)
805
806
printer.add_printer(
'lsst::afw::image::ImageBase'
,
807
'lsst::afw::image::ImageBase<[^>]+>$'
, ImagePrinter)
808
printer.add_printer(
'lsst::afw::image::Image'
,
809
'lsst::afw::image::Image<[^>]+>$'
, ImagePrinter)
810
printer.add_printer(
'lsst::afw::image::Mask'
,
811
'^lsst::afw::image::Mask<[^>]+>$'
, ImagePrinter)
812
printer.add_printer(
'lsst::afw::image::MaskedImage'
,
813
'^lsst::afw::image::MaskedImage<[^>]+>$'
, MaskedImagePrinter)
814
printer.add_printer(
'lsst::afw::image::Exposure'
,
815
'^lsst::afw::image::Exposure'
, ExposurePrinter)
816
817
printer.add_printer(
'lsst::afw::math::Background'
,
818
'^lsst::afw::math::Background$'
, BackgroundPrinter)
819
printer.add_printer(
'lsst::afw::math::BackgroundControl'
,
820
'^lsst::afw::math::BackgroundControl$'
, BackgroundControlPrinter)
821
printer.add_printer(
'lsst::afw::math::Kernel'
,
822
'^lsst::afw::math::.*Kernel'
, KernelPrinter)
823
printer.add_printer(
'lsst::afw::math::StatisticsControl'
,
824
'^lsst::afw::math::StatisticsControl'
, StatisticsControlPrinter)
825
826
printer.add_printer(
'lsst::afw::table::Table'
,
827
'^lsst::afw::table::.*Table$'
, TablePrinter)
828
printer.add_printer(
'lsst::afw::table::Schema'
,
829
'^lsst::afw::table::Schema$'
, TableSchemaPrinter)
830
831
return
printer
832
833
printers.append(
build_afw_dictionary
())
834
835
def
build_daf_base_dictionary
():
836
printer = gdb.printing.RegexpCollectionPrettyPrinter(
"daf::base"
)
837
838
return
printer
839
840
printers.append(
build_daf_base_dictionary
())
841
except
ImportError
as
e:
842
print(
"RHL"
, e)
843
from
.printers_oldgdb
import
*
# noqa: F401, F403
lsst.gdb.afw.printers.GdbOptionParser.AxesPrinter
Definition
printers.py:437
lsst.gdb.afw.printers.GdbOptionParser.AxesPrinter.__init__
__init__(self, val)
Definition
printers.py:440
lsst.gdb.afw.printers.GdbOptionParser.AxesPrinter.to_string
to_string(self)
Definition
printers.py:443
lsst.gdb.afw.printers.GdbOptionParser.AxesPrinter.val
val
Definition
printers.py:441
lsst.gdb.afw.printers.GdbOptionParser.BackgroundControlPrinter
Definition
printers.py:675
lsst.gdb.afw.printers.GdbOptionParser.BackgroundControlPrinter.val
val
Definition
printers.py:680
lsst.gdb.afw.printers.GdbOptionParser.BackgroundControlPrinter.to_string
to_string(self)
Definition
printers.py:682
lsst.gdb.afw.printers.GdbOptionParser.BackgroundControlPrinter.__init__
__init__(self, val)
Definition
printers.py:678
lsst.gdb.afw.printers.GdbOptionParser.BackgroundControlPrinter.typename
typename
Definition
printers.py:679
lsst.gdb.afw.printers.GdbOptionParser.BackgroundPrinter
Definition
printers.py:663
lsst.gdb.afw.printers.GdbOptionParser.BackgroundPrinter.__init__
__init__(self, val)
Definition
printers.py:666
lsst.gdb.afw.printers.GdbOptionParser.BackgroundPrinter.to_string
to_string(self)
Definition
printers.py:670
lsst.gdb.afw.printers.GdbOptionParser.BackgroundPrinter.typename
typename
Definition
printers.py:667
lsst.gdb.afw.printers.GdbOptionParser.BackgroundPrinter.val
val
Definition
printers.py:668
lsst.gdb.afw.printers.GdbOptionParser.BaseSourceAttributesPrinter
Definition
printers.py:329
lsst.gdb.afw.printers.GdbOptionParser.BaseSourceAttributesPrinter.__init__
__init__(self, val)
Definition
printers.py:332
lsst.gdb.afw.printers.GdbOptionParser.BaseSourceAttributesPrinter.to_string
to_string(self)
Definition
printers.py:335
lsst.gdb.afw.printers.GdbOptionParser.BaseSourceAttributesPrinter.val
val
Definition
printers.py:333
lsst.gdb.afw.printers.GdbOptionParser.Box2Printer
Definition
printers.py:402
lsst.gdb.afw.printers.GdbOptionParser.Box2Printer.to_string
to_string(self)
Definition
printers.py:408
lsst.gdb.afw.printers.GdbOptionParser.Box2Printer.__init__
__init__(self, val)
Definition
printers.py:405
lsst.gdb.afw.printers.GdbOptionParser.Box2Printer.val
val
Definition
printers.py:406
lsst.gdb.afw.printers.GdbOptionParser.Box2Printer.display_hint
display_hint(self)
Definition
printers.py:422
lsst.gdb.afw.printers.GdbOptionParser.CoordinateBasePrinter
Definition
printers.py:425
lsst.gdb.afw.printers.GdbOptionParser.CoordinateBasePrinter.display_hint
display_hint(self)
Definition
printers.py:434
lsst.gdb.afw.printers.GdbOptionParser.CoordinateBasePrinter.to_string
to_string(self)
Definition
printers.py:431
lsst.gdb.afw.printers.GdbOptionParser.CoordinateBasePrinter.__init__
__init__(self, val)
Definition
printers.py:428
lsst.gdb.afw.printers.GdbOptionParser.CoordinateBasePrinter.val
val
Definition
printers.py:429
lsst.gdb.afw.printers.GdbOptionParser.DetectorPrinter
Definition
printers.py:351
lsst.gdb.afw.printers.GdbOptionParser.DetectorPrinter.__init__
__init__(self, val)
Definition
printers.py:354
lsst.gdb.afw.printers.GdbOptionParser.DetectorPrinter.val
val
Definition
printers.py:355
lsst.gdb.afw.printers.GdbOptionParser.DetectorPrinter.to_string
to_string(self)
Definition
printers.py:357
lsst.gdb.afw.printers.GdbOptionParser.EigenMatrixPrinter
Definition
printers.py:159
lsst.gdb.afw.printers.GdbOptionParser.EigenMatrixPrinter.__init__
__init__(self, val)
Definition
printers.py:162
lsst.gdb.afw.printers.GdbOptionParser.EigenMatrixPrinter.to_string
to_string(self)
Definition
printers.py:165
lsst.gdb.afw.printers.GdbOptionParser.EigenMatrixPrinter.val
val
Definition
printers.py:163
lsst.gdb.afw.printers.GdbOptionParser.EigenVectorPrinter
Definition
printers.py:170
lsst.gdb.afw.printers.GdbOptionParser.EigenVectorPrinter.__init__
__init__(self, val)
Definition
printers.py:173
lsst.gdb.afw.printers.GdbOptionParser.EigenVectorPrinter.val
val
Definition
printers.py:174
lsst.gdb.afw.printers.GdbOptionParser.EigenVectorPrinter.to_string
to_string(self)
Definition
printers.py:176
lsst.gdb.afw.printers.GdbOptionParser.ExposurePrinter
Definition
printers.py:501
lsst.gdb.afw.printers.GdbOptionParser.ExposurePrinter.to_string
to_string(self)
Definition
printers.py:504
lsst.gdb.afw.printers.GdbOptionParser.FootprintPrinter
Definition
printers.py:361
lsst.gdb.afw.printers.GdbOptionParser.FootprintPrinter.val
val
Definition
printers.py:365
lsst.gdb.afw.printers.GdbOptionParser.FootprintPrinter.to_string
to_string(self)
Definition
printers.py:367
lsst.gdb.afw.printers.GdbOptionParser.FootprintPrinter.__init__
__init__(self, val)
Definition
printers.py:364
lsst.gdb.afw.printers.GdbOptionParser.FootprintSetPrinter
Definition
printers.py:378
lsst.gdb.afw.printers.GdbOptionParser.FootprintSetPrinter.__init__
__init__(self, val)
Definition
printers.py:381
lsst.gdb.afw.printers.GdbOptionParser.FootprintSetPrinter.to_string
to_string(self)
Definition
printers.py:384
lsst.gdb.afw.printers.GdbOptionParser.FootprintSetPrinter.val
val
Definition
printers.py:382
lsst.gdb.afw.printers.GdbOptionParser.GilPixelPrinter
Definition
printers.py:80
lsst.gdb.afw.printers.GdbOptionParser.GilPixelPrinter.to_string
to_string(self)
Definition
printers.py:86
lsst.gdb.afw.printers.GdbOptionParser.GilPixelPrinter.val
val
Definition
printers.py:84
lsst.gdb.afw.printers.GdbOptionParser.GilPixelPrinter.__init__
__init__(self, val)
Definition
printers.py:83
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter
Definition
printers.py:462
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter.to_string
to_string(self)
Definition
printers.py:492
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter.typename
typename
Definition
printers.py:489
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter.typeName
typeName(self)
Definition
printers.py:485
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter.val
val
Definition
printers.py:490
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter.__init__
__init__(self, val)
Definition
printers.py:488
lsst.gdb.afw.printers.GdbOptionParser.ImagePrinter.dimenStr
dimenStr(self, val=None)
Definition
printers.py:465
lsst.gdb.afw.printers.GdbOptionParser.KernelPrinter
Definition
printers.py:690
lsst.gdb.afw.printers.GdbOptionParser.KernelPrinter.typename
typename
Definition
printers.py:694
lsst.gdb.afw.printers.GdbOptionParser.KernelPrinter.__init__
__init__(self, val)
Definition
printers.py:693
lsst.gdb.afw.printers.GdbOptionParser.KernelPrinter.to_string
to_string(self)
Definition
printers.py:697
lsst.gdb.afw.printers.GdbOptionParser.KernelPrinter.val
val
Definition
printers.py:695
lsst.gdb.afw.printers.GdbOptionParser.MaskedImagePrinter
Definition
printers.py:495
lsst.gdb.afw.printers.GdbOptionParser.MaskedImagePrinter.to_string
to_string(self)
Definition
printers.py:498
lsst.gdb.afw.printers.GdbOptionParser.PeakPrinter
Definition
printers.py:387
lsst.gdb.afw.printers.GdbOptionParser.PeakPrinter.__init__
__init__(self, val)
Definition
printers.py:390
lsst.gdb.afw.printers.GdbOptionParser.PeakPrinter.val
val
Definition
printers.py:391
lsst.gdb.afw.printers.GdbOptionParser.PeakPrinter.to_string
to_string(self)
Definition
printers.py:393
lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand
Definition
printers.py:194
lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand.invoke
invoke(self, args, fromTty)
Definition
printers.py:211
lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand._mget
_mget(self, var, x, y=0)
Definition
printers.py:205
lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand.__init__
__init__(self)
Definition
printers.py:200
lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand._vget
_vget(self, var, x)
Definition
printers.py:208
lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand
Definition
printers.py:508
lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand.get
get(self, var, x, y)
Definition
printers.py:516
lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand.invoke
invoke(self, args, fromTty)
Definition
printers.py:531
lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand.__init__
__init__(self)
Definition
printers.py:511
lsst.gdb.afw.printers.GdbOptionParser.PsfPrinter
Definition
printers.py:396
lsst.gdb.afw.printers.GdbOptionParser.PsfPrinter.to_string
to_string(self)
Definition
printers.py:399
lsst.gdb.afw.printers.GdbOptionParser.QuadrupolePrinter
Definition
printers.py:447
lsst.gdb.afw.printers.GdbOptionParser.QuadrupolePrinter.to_string
to_string(self)
Definition
printers.py:453
lsst.gdb.afw.printers.GdbOptionParser.QuadrupolePrinter.val
val
Definition
printers.py:451
lsst.gdb.afw.printers.GdbOptionParser.QuadrupolePrinter.__init__
__init__(self, val)
Definition
printers.py:450
lsst.gdb.afw.printers.GdbOptionParser.SharedPtrPrinter
Definition
printers.py:68
lsst.gdb.afw.printers.GdbOptionParser.SharedPtrPrinter.to_string
to_string(self)
Definition
printers.py:74
lsst.gdb.afw.printers.GdbOptionParser.SharedPtrPrinter.__init__
__init__(self, val)
Definition
printers.py:71
lsst.gdb.afw.printers.GdbOptionParser.SharedPtrPrinter.val
val
Definition
printers.py:72
lsst.gdb.afw.printers.GdbOptionParser.SourcePrinter
Definition
printers.py:340
lsst.gdb.afw.printers.GdbOptionParser.SourcePrinter.val
val
Definition
printers.py:344
lsst.gdb.afw.printers.GdbOptionParser.SourcePrinter.__init__
__init__(self, val)
Definition
printers.py:343
lsst.gdb.afw.printers.GdbOptionParser.SourcePrinter.to_string
to_string(self)
Definition
printers.py:346
lsst.gdb.afw.printers.GdbOptionParser.StatisticsControlPrinter
Definition
printers.py:701
lsst.gdb.afw.printers.GdbOptionParser.StatisticsControlPrinter.val
val
Definition
printers.py:706
lsst.gdb.afw.printers.GdbOptionParser.StatisticsControlPrinter.__init__
__init__(self, val)
Definition
printers.py:704
lsst.gdb.afw.printers.GdbOptionParser.StatisticsControlPrinter.typename
typename
Definition
printers.py:705
lsst.gdb.afw.printers.GdbOptionParser.StatisticsControlPrinter.to_string
to_string(self)
Definition
printers.py:708
lsst.gdb.afw.printers.GdbOptionParser.TablePrinter
Definition
printers.py:713
lsst.gdb.afw.printers.GdbOptionParser.TablePrinter.__init__
__init__(self, val)
Definition
printers.py:716
lsst.gdb.afw.printers.GdbOptionParser.TablePrinter.typename
typename
Definition
printers.py:717
lsst.gdb.afw.printers.GdbOptionParser.TablePrinter.val
val
Definition
printers.py:718
lsst.gdb.afw.printers.GdbOptionParser.TablePrinter.to_string
to_string(self)
Definition
printers.py:720
lsst.gdb.afw.printers.GdbOptionParser.TableSchemaPrinter
Definition
printers.py:723
lsst.gdb.afw.printers.GdbOptionParser.TableSchemaPrinter.__init__
__init__(self, val)
Definition
printers.py:726
lsst.gdb.afw.printers.GdbOptionParser.TableSchemaPrinter.val
val
Definition
printers.py:728
lsst.gdb.afw.printers.GdbOptionParser.TableSchemaPrinter.typename
typename
Definition
printers.py:727
lsst.gdb.afw.printers.GdbOptionParser.TableSchemaPrinter.to_string
to_string(self)
Definition
printers.py:730
lsst.gdb.afw.printers.GdbOptionParser
Definition
printers.py:15
lsst.gdb.afw.printers.GdbOptionParser.register
register(obj=None)
Definition
printers.py:738
lsst.gdb.afw.printers.GdbOptionParser.getEigenMatrixDimensions
getEigenMatrixDimensions(val)
Definition
printers.py:91
lsst.gdb.afw.printers.GdbOptionParser.build_afw_dictionary
build_afw_dictionary()
Definition
printers.py:775
lsst.gdb.afw.printers.GdbOptionParser.__init__
__init__(self, prog, *args, **kwargs)
Definition
printers.py:30
lsst.gdb.afw.printers.GdbOptionParser.build_daf_base_dictionary
build_daf_base_dictionary()
Definition
printers.py:835
lsst.gdb.afw.printers.GdbOptionParser.parse_args
parse_args(self, args, values=None)
Definition
printers.py:39
lsst.gdb.afw.printers.GdbOptionParser.getEigenValue
getEigenValue(var, x, y=0)
Definition
printers.py:109
lsst.gdb.afw.printers.GdbOptionParser.build_boost_dictionary
build_boost_dictionary()
Definition
printers.py:747
lsst.gdb.afw.printers.GdbOptionParser.exit
exit(self, status=0, msg="")
Definition
printers.py:56
lsst.gdb.afw.printers.GdbOptionParser.build_eigen_dictionary
build_eigen_dictionary()
Definition
printers.py:761
Generated on
for lsst.afw by
1.17.0