A Pythonic package
For all the reasons cited above, we decided to create the first Pythonic
DS9 plugin: pyds9plugin. It is a public domain DS9 extension for
quick-look image processing. It aims to extract quantifiable information
from imaging datasets with improved interaction. The plugin processing
functions can then be generalized automatically to a set of images to
turn the quick-look tool into a multiprocessing pipeline.
It enables new users, from undergraduate students to full-time researchers, to actively interact (process, model, plot, etc.) with astronomical image data with one integrated software package. This package, available both on Pypi and GitHub, has been extensively used within the FIREBall project and for CLAUDS catalogs generation. Before going any further, I highly recommend watching this youtube video for a better understanding of the package. The other videos that are linked in the document to present some functionality are all gathered here.
The way it works
DS9 incorporates the possibility to load extensions via an analysis
file. When the plugin is installed and the analysis file loaded into
the DS9 analysis menu, the extension can be used. The analysis
file is the interface linking DS9 GUI with the plugin's functions.
This file determines what menu is created within DS9, what parameters windows each
function launches, and what Shell command is interpreted. An example
parameter window is shown in next Figure.
Each pyds9plugin function is stored under DS9Utils access point, which links to
pyds9plugin.DS9Utils module. Then command lines begin by DS9Utils
followed by the function to be called and its arguments. pyds9plugin
will then communicate, control, and exchange data with DS9 GUI via
pyds9 package. The way the extension operates is illustrated in next.
 Diagram representing the way the plugin is loaded within
Diagram representing the way the plugin is loaded within DS9 and called. pyds9plugin can be called from the terminal (through command lines) which bypasses the need for DS9 GUI.
Communication
Within the DS9 program, the XPA (X Public Access) messaging system
has been designed to provide seamless communication between DS9 GUI
and other Unix programs (Perl, Tcl/Tk). It also provides an easy way for
users to communicate with DS9 by executing XPA client shell
commands. The pyds9 module uses a Python interface for XPA to
communicate with DS9. It supports communication with all of DS9's
XPA access points in two ways. It enables read and write access to all
DS9 parameters, which allows controlling the display (load images,
display NumPy arrays and catalogs, change parameters, create regions /
DS9 plots, etc.). One interest in using Python is to use the full
capability of its famous packages such as matplotlib, which offers
other possibilities than the DS9 native plotting GUI.
 
SExtractor parameters window allows to show the different parameter possibilities offered by DS9.  In addition to different menu types (entry, menu, and checkboxes, file system browser), the addition of tabs allows navigating through an important number of organized parameters.
Running a function
All the functions are directly accessible from DS9 GUI (within the
analysis menu). Accessing a function will make appear a parameter window
that will then call the plugin.
Navigating through the list of DS9Utils functions can be quite
cumbersome for newcomers. OSX built-in Command Finder / Launcher
provides an expeditive alternative that allows retrieving commands
extremely fast.
Some fundamental functions are available through shortcuts to gain time. The shortcuts are noted between parenthesis next to the function's name. The functions having a shortcut are: Open (o), lock (l), radial profile (r).
 
pyds9plugin's functions divided in the three sub-extensions: generic functions, instrumentation and astronomical software. The terminal icon emphasize functions that do not require DS9 to be launched, which can be interesting for generalizing the processing on a server. Most of these functions (highlighted with the wheel icon) are compatible with multi-image and multi-threaded analysis. Functions with enhanced interactivity based on pickable meta-data for instance are marked with the  interactivity icon.
 Functions are divided into three main menus: Generic functions, Instrumentation-AIT, and Astronomical software, and can be easily accessible via the command finder in the analysis menu bar
Functions are divided into three main menus: Generic functions, Instrumentation-AIT, and Astronomical software, and can be easily accessible via the command finder in the analysis menu bar
Logging and verbosity
The functions are silent when launched from DS9 and will only return
nominal outputs (images, regions, messages). If the code encounters an
error, the error message will pop up. If you run the same command from
the terminal, you will have, in addition, all the verbosity from
pyds9plugin. On top of that, all the logging is saved in
\(\sim\)/DS9QuickLookPlugIn/pyds9plugin_activity.log whether the
function is launched from the terminal or DS9 user interface.