Based on an AP “brown bag” discussion in Seattle on 2019-06-19, with many thanks to Meredith Rawls facilitating & note taking!

Present: Meredith RawlsJohn ParejkoRussell OwenUnknown User (cmorrison)Unknown User (gkovacs)Ian Sullivan

Notes based on questions/prompts here https://confluence.lsstcorp.org/display/DM/Image+Display+Working+Group+Meeting%3A+2019-06-12

Local+Terminal

  • matplotlib imshow
    • Full support for matplotlib built-in things
    • Doesn't know about wcs, mask planes, other things you can only do with afwDisplay and/or ds9
  • matplotlib inside afwDisplay
    • Good for showing mask plane type info
    • Very limited matplotlib options, e.g., no subplots, doesn't support imshow-like options
  • ds9 from command line
    • Good to compare images side by side
    • Nice GUI for zoom/scale
    • Doesn't auto-show AFW mask plane stuff
    • Cannot even mosaic with a zillion different WCSs
  • ds9 from inside afwDisplay
    • Does show AFW mask plane stuff
    • Have to already be inside python+stack land to use it
    • Many things I only know how to do by clicking/navigating menus are probably doable by typing commands but aren't really documented anywhere
  • display invoked via debug plots in stack code
    • Cannot save state (e.g., regenerate plot later easily with specific zoom or color stretch without rerunning everything)
    • Can save static images
    • This is true for both ds9 and matplotlib invoked this way
    • "debug" is a very odd name for this, it does not dump me into ipdb, it makes plots?! What is happening and why don't these plots have captions
  • Nightlight?
    • 3rd party tool for FITS files that doesn't have any python plugins
    • Broken in some key ways, but really great in theory
    • Mac only and not free
  • Firefly?
    • Nobody present at AP brownbag uses this
    • Not clear how to incorporate this into day-to-day workflow
    • Lets users link source catalogs and images, which is great
  • Glueviz?
    • Demos look cool but nobody present at AP brownbag has used it
    • Potentially fulfills similar role as Firefly

Remote+Terminal

  • Use case 1: sshing into lsst-dev from UW
    • Possible latency problems from UW end, but should be super fast
    • Local UW folks can contact astro help help@astro.washington.edu
    • Meredith's ethernet hates her and she is usually on wifi
  • Use case 2: sshing into [wherever] from home/remote
    • List of tools is very similar to list above for local + terminal ... however
  • Using most of the tools listed above can be hard/slow/bad remotely
    • XPRA is better than X11 for GUI (e.g., ds9) but can be tedious to set up
    • Local machine: alias remote='xpra attach ssh:lsstdev:XX --ssh="ssh -x"&' (where XX is a number... there is some range... and I have "ssh lsstdev" aliased to log me in with my ssh key)
    • Remote machine: alias remote='xpra start :XX && export DISPLAY=:XX' (where XX is the same number as above)
    • Supports reasonably snappy ds9, matplotlib, etc., up to a point
    • Getting remote solutions like this set up feels like one more secret that's not officially part of onboarding that some people use all the time and others have never heard of
  • Another approach is sshfs for mounting parts of /project locally, but this is slow/clumsy for interactive image display (and also not documented as a suggested option for use by DM anywhere as far as I know)
  • Some support for local cacheing of data so we don't have to do everything over a remote connection would be amazing!
    • Depends on use case as to where it makes sense for the cacheing to happen
    • I know of no standard documented set of options if you want to try this

JupyterLab/Notebook

  • matplotlib all the things
    • Can use with inline and/or notebook (e.g., %matplotlib notebook, but backends can make life complicated and are hard to troubleshoot)
    • Cannot presently use interactive figures while in Lab, only %matplotlib inline works, must be in regular (Tree) for notebook to work
    • TIL about %matplotlib ipympl which gives a rudimentary non-javascript implementation of interactive figures a la %matplotlib notebook in Lab! What! (Still not quite as shiny but perfectly serviceable)
    • It's hard to share notebooks so more than one person can use them (sharing them view-only is much easier)
  • Can launch a jupyter notebook on lsst-dev with --nobrowser and then open it locally
    • Less sandbox-y than JupyterLab but also a bit slower due to tunneling
  • This is the first time nearly anyone in the room had heard of "nublado"
  • Same afwDisplay + matplotlib limitations as in local + terminal
  • lol version control

Native Web (Portal/Firefly? We don't know what JS9 is?)

  • Nope

Dreams

  • Build mosaics of many images/dataIds on the fly
  • afwDisplay and matplotlib play super great together
  • Automatic mask/variance plane display in non-afwDisplay-land
  • Hover over things and learn fun metadata facts
    • e.g. anything from the visitInfo about an image or anything from an associated catalog/database about a source (intentionally left this vague because I'm sure different people want different things)
  • Toggle individual mask planes and choose colors
  • Plot data about sources from a catalog on top of an image
  • Trivially swap between pixel/sky/focal plane coordinates
  • Default rotation/flip for coadds same as calexps when just displayed
  • Local cacheing for remote work that makes everything fast
  • Quickly visualize everything in a repo (calibs, templates, parents/children, dataIds/spatial coverage for different data products, etc.)