LSST Applications g1653933729+a8ce1bb630,g171997e3ee+76e92115be,g1a997c3884+a8ce1bb630,g28da252d5a+4013ff5194,g2bbee38e9b+d6d0f9f6ae,g2bc492864f+d6d0f9f6ae,g2cdde0e794+ccb74358b7,g3156d2b45e+07302053f8,g347aa1857d+d6d0f9f6ae,g35bb328faa+a8ce1bb630,g3a166c0a6a+d6d0f9f6ae,g3e281a1b8c+130fae20e3,g4005a62e65+17cd334064,g414038480c+c9f68e2a12,g41af890bb2+3e1f62f438,g4e1a3235cc+9db7d56ad0,g7b55021d1b+7b623691d5,g80478fca09+334cc8d2bd,g82479be7b0+b568f6b267,g858d7b2824+37b39d8760,g9125e01d80+a8ce1bb630,ga5288a1d22+11cb34fefe,gae0086650b+a8ce1bb630,gb4ec7eb0ab+37b39d8760,gb58c049af0+d64f4d3760,gc081298178+284e133171,gc28159a63d+d6d0f9f6ae,gcf0d15dbbd+00fe2e0b07,gd6b7c0dfd1+8b62435e69,gda3e153d99+37b39d8760,gda6a2b7d83+00fe2e0b07,gdaeeff99f8+1711a396fd,gdd5a9049c5+23f3b3239a,ge2409df99d+5d9f551a54,ge33fd446bb+37b39d8760,ge79ae78c31+d6d0f9f6ae,gf0baf85859+2dea8344a2,gf5289d68f6+3777f3df5e,w.2024.41
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand Class Reference
Inheritance diagram for lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand:

Public Member Functions

 __init__ (self)
 
 get (self, var, x, y)
 
 invoke (self, args, fromTty)
 

Detailed Description

Print an Image

Definition at line 508 of file printers.py.

Constructor & Destructor Documentation

◆ __init__()

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

Definition at line 511 of file printers.py.

511 def __init__(self):
512 super(PrintImageCommand, self).__init__("show image",
513 gdb.COMMAND_DATA,
514 gdb.COMPLETE_SYMBOL)
515

Member Function Documentation

◆ get()

lsst.gdb.afw.printers.GdbOptionParser.PrintImageCommand.get ( self,
var,
x,
y )

Definition at line 516 of file printers.py.

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

◆ invoke()

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

Definition at line 531 of file printers.py.

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

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