LSST Applications g0265f82a02+c6dfa2ddaf,g1162b98a3f+ffe7eabc7e,g2079a07aa2+1b2e822518,g2bbee38e9b+c6dfa2ddaf,g337abbeb29+c6dfa2ddaf,g36da64cc00+ea84795170,g3ddfee87b4+955a963fd8,g50ff169b8f+2eb0e556e8,g52b1c1532d+90ebb246c7,g555ede804d+955a963fd8,g591dd9f2cf+bac198a2cb,g5ec818987f+420292cfeb,g858d7b2824+d6c9a0a3b8,g876c692160+aabc49a3c3,g8a8a8dda67+90ebb246c7,g8cdfe0ae6a+4fd9e222a8,g99cad8db69+e6cd765486,g9ddcbc5298+a1346535a5,ga1e77700b3+df8f93165b,ga8c6da7877+acd47f83f4,gae46bcf261+c6dfa2ddaf,gb0e22166c9+8634eb87fb,gb3f2274832+12c8382528,gba4ed39666+1ac82b564f,gbb8dafda3b+0574160a1f,gbeb006f7da+dea2fbb49f,gc28159a63d+c6dfa2ddaf,gc86a011abf+d6c9a0a3b8,gcf0d15dbbd+955a963fd8,gdaeeff99f8+1cafcb7cd4,gdc0c513512+d6c9a0a3b8,ge79ae78c31+c6dfa2ddaf,geb67518f79+ba1859f325,gee10cc3b42+90ebb246c7,gf1cff7945b+d6c9a0a3b8,w.2024.13
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand Class Reference
Inheritance diagram for lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand:

Public Member Functions

 __init__ (self)
 
 invoke (self, args, fromTty)
 

Protected Member Functions

 _mget (self, var, x, y=0)
 
 _vget (self, var, x)
 

Detailed Description

Print an eigen Matrix or Vector
Usage: show eigen <matrix> [x0 y0 [nx ny]]
   show eigen <vector> [x0 [nx]]

Definition at line 194 of file printers.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand.__init__ ( self)

Definition at line 200 of file printers.py.

200 def __init__(self):
201 super(PrintEigenCommand, self).__init__("show eigen",
202 gdb.COMMAND_DATA,
203 gdb.COMPLETE_SYMBOL)
204

Member Function Documentation

◆ _mget()

lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand._mget ( self,
var,
x,
y = 0 )
protected

Definition at line 205 of file printers.py.

205 def _mget(self, var, x, y=0):
206 return getEigenValue(var, x, y)
207

◆ _vget()

lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand._vget ( self,
var,
x )
protected

Definition at line 208 of file printers.py.

208 def _vget(self, var, x):
209 return getEigenValue(var, x)
210

◆ invoke()

lsst.gdb.afw.printers.GdbOptionParser.PrintEigenCommand.invoke ( self,
args,
fromTty )

Definition at line 211 of file printers.py.

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()
int min

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