JS9: astronomical image display everywhere
JS9 brings astronomical image display to your browser and desktop:
  • display FITS images, tables, data cubes, multi-extension files
  • drag and drop FITS files and urls, PNG and JPEG images
  • retrieve FITS files and catalogs from astronomical archives
  • adjust the colormap and data scaling
  • pan, zoom, and blink images
  • perform image arithmetic, Gaussian smoothing
  • blend images and apply RGB image filters
  • configure mouse buttons and movements, touch events
  • create and manipulate geometric regions of interest
  • extend JS9 using plugins and the public API
  • perform data analysis (browser and server-side)
  • configure and control JS9 via HTML elements in a web page
  • control JS9 from a command shell or Python
  • print images, save images and sessions, multiple displays, ...

Drag and drop a FITS astronomical data file onto the display and JS9 functionality immediately becomes available: zoom, pan, colormaps, scaling, regions, WCS, image filters, smoothing ...

By extending JS9 with the plugin facility and the public API, you can perform local analysis on the displayed image: click the Plugins tab, create a region, move it around ...

Images loaded on the server, loaded via proxy (File menu), or uploaded (Analysis menu) all support server-side analysis. Results are displayed in your browser: click the Analysis tab, choose a task, create a region, move it around ...

Energy Spectrum Counts in Regions Radial Profile Light Curve
JS9 can be connected to a server-side (back-end) analysis system to run complex analysis tasks. Text and plot results can be displayed on the JS9 web page, or new images loaded into JS9. Virtually any analysis program can be added to the back-end.

Here is a quick introduction to server-side analysis using regions:

  • Create one or more regions using the JS9 Region menu.
  • Press the mouse inside a region and drag it to a desired location. (Use an annulus for radial profiles.)
  • Resize or rotate the region by clicking to select it, and then moving one of the handles.
  • Group regions by pressing the meta key and using mouse selection. You then can move/resize/rotate them together.
  • Choose an analysis to run on the server:
    • Energy Spectrum plots a histogram of the energy values of photons in the region(s).
    • Counts in Regions presents a text display of the number of photons found in the region(s).
    • Radial Profile plots the number of photons in each region of an annulus.
    • Light Curve plots a histogram of the time values of photons in the region(s).
  • Every time a region changes, the chosen task will run on the server, and results will be displayed here.
  • These tasks also can be run from the JS9 Analysis menu.
See the Plugins tab for a demo of local analysis.
Extend JS9 with Plugins, using the JS9 Public API to perform event-driven, local analysis. Create a region, move it around ...

Recent Public Releases:

Release 2.2 (10/09/18) adds support for synchronized images, separate/gather images, mosaic images, user-defined and Mac-style menus, browser-based counts in regions, coordinate grids.

Release 2.1 (05/10/18) adds a graphical toolbar plugin, the ability to separate and gather displays, load colormaps, create light windows, and many improvements/fixes for binning and regions.

Release 2.0 (09/27/17) use WebAssembly where possible to approach native processing speed, upgrade web site (https://js9.si.edu), many aesthetic improvements.

Release 1.12 (07/25/17) adds support for handling large FITS files using FITS rep files, uploading local FITS files to the remote server for analysis, drag/drop regions/catalogs/sessions, improved and expanded region support.

Release 1.11 (01/09/17) adds Desktop support (Mac, Windows, recent Linux) using Electron.js, load/save catalogs, improved memory management, support for HEALPix files.

Release 1.10 (10/11/16) adds support for keyboard actions, full window display, session management, alternate WCS, along with a more modern look.

For more details, see the ChangeLog.

JS9 is distributed under the terms of The MIT License.

The current JS9 source tar file is available below. This will allow you to display FITS images (drag-and-drop and URL-based access) with all essential functionality, including local plugins.

To run the demo pages at your site, download the data tar file.

To configure a back-end Node helper (for server-side analysis and external control), you also will need to install the cfitsio library.

JS9 tar files:

JS9 is also available on GitHub, where the repository contains the very latest bug fixes and enhancements.

In addition, the pyjs9 Python interface is available on GitHub. pyjs9 supports the JS9 Public API and a short-cut command interface, communicating with JS9 through the back-end Node helper.

JS9 on GitHub:

We gratefully acknowledge the technologies that power JS9:
  • HTML5 for image display and most everything
  • jquery for programming ease (jquery.com)
  • emscripten for C-to-JavaScript (emscripten.org)
  • fabric.js for 2D graphics (fabricjs.com)
  • dynamic drive for light windows (www.dynamicdrive.com)
  • flot for plotting (www.flotcharts.org/)
  • swis for jquery.contextMenu (swisnl.github.io/)
  • arrive.js for MutationObserver (github.com/uzairfarooq/arrive)
  • appcropolis for double click support (appcropolis.com/blog/howto/implementing-doubletap-on-iphones-and-ipads/)
  • spin.js for spinner support (spin.js.org/)
  • Marc J Schmidt for CSS element queries (github.com/marcj/css-element-queries)
  • HEASARC for CFITSIO (heasarc.gsfc.nasa.gov/fitsio/)
  • IPAC for Montage (montage.ipac.caltech.edu/)
  • SAO/TDC for WCS lib (tdc-www.harvard.edu/wcstools/)
  • Mark Calabretta for HEALPix (www.atnf.csiro.au/people/mcalabre)

With important suggestions (and sometimes code) from:

  • Doug Burke, CfA (research-level testing)
  • Brian Cherinka, JHU (multi-extension FITS, data cubes)
  • Joseph DePasquale, STScI (image blending techniques)
  • Karl Glazebrook, Swinburne (iPad support)
  • Kenny Glotfelty, CfA (toolbar and toolbar icons)
  • Matias Carrasco Kind, NCSA (Jupyter support)
  • Kathy Lestition, CfA (EPO)
  • Briehan Lombaard SAAO (telescope control)
  • John Roll, Facebook (design philosophy, analysis plugins)
  • Maria Henar Sarmiento, ESA (research-level testing)
  • Pat Slane, CfA (needs of research vs. education)
  • Oleg Smirnov, Rhodes University (Jupyter, large file support)
  • The Science Education Department, CfA (EPO)

JS9 development is supported by Smithsonian Institution, the Chandra X-ray Science Center (NAS8-03060), and NASA's Universe of Learning (STScI-509913).

Questions? Eric Mandel            Source code @GitHub