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 and display data 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 (local and server-side)
  • configure and control JS9 via HTML elements in a web page
  • control JS9 externally, from a command shell or Python
  • print images, save images and sessions, multiple displays, ...
  • simplified desktop app for Mac

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 ...

Want a pristine JS9 display?

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 3.8 (06/21/22) Eric's final release

Release 3.7 (05/16/22) Eric's penultimate release

Patch Release 3.6.2 (01/03/22) add experimental support for converting event tables to 3D cubes

Patch Release 3.6.1 (08/16/21) two bug fixes

Release 3.6 (07/30/21) improvements to regions, including graphical editing of annuli

Release 3.5 (06/01/21) remove long-deprecated fits2png support and improve display of png/jpeg files

Release 3.4 (05/05/21) lots of work on regions, including non-transient groups and boolean selections

Release 3.3 (12/14/20) update three important modules (emscripten, socket.io, fabric.js), along with a few bug fixes

Release 3.2 (11/06/20) mainly changes to support the upcoming desktop Voyager app, but also a few bug fixes

For more details, see the ChangeLog.

JS9 is distributed under the terms of The MIT License.

The JS9 current release tar file is available here: Simply untar to display FITS images with all basic JS9 functionality. Install JS9 to add functionality, such as server-side analysis.

To run the demo pages, download the data tar file here:

The latest bug fixes and enhancements are available on GitHub:

Clone JS9 from GitHub once and then pull updates at any time:
    git clone https://github.com/ericmandel/js9
    git pull

For Mac (Catalina) and Linux (Ubuntu 20.04) users, pre-built desktop apps are available:

Pre-built apps lack some configurability, but their ease of installation and use will make most users happy.

In addition, the pyjs9 Python interface is available on GitHub:

It supports communication with JS9 using the public API.
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)
  • 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)
  • Marwan Ali albahar, Umm Alqura University (security issues)

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

Source code @GitHub
About |  Big Questions |  Research |  Events |  News |  Privacy