Skip to main content

Python/JS9 connection, with numpy and astropy/fits support

Project description

My software career comes to an end on July 1, 2022 and with it will end active development of pyjs9. Please plan accordingly. Eric

https://zenodo.org/badge/DOI/10.5281/zenodo.6675877.svg

JS9 brings image display right into your browser:

- display URL-based FITS images and binary tables
- drag and drop FITS images and binary tables
- change the colormap and scale
- manipulate the contrast/bias with the mouse
- display pixel values and WCS position information
- create and manipulate geometric regions of interest
- add your own extensions using plugins and the Public API
- perform data analysis (local and server-side)
- display RGB composite images
- control JS9 from the command line
- print images
- much more ...

See: https://js9.si.edu for more information about JS9.

pyjs9.py connects Python and JS9 via the js9Helper.js back-end server:

- The JS9 class constructor connects to a single JS9 instance in a Web page.
- The JS9 object supports the JS9 Public API and a shorter command-line syntax.
- See: https://js9.si.edu/js9/help/publicapi.html for info about the public api
- Send/retrieve numpy arrays and astropy (or pyfits) hdulists to/from JS9.

Requirements: Python 3.5 or higher is required. Beyond that, pyjs9 communicates with a JS9 back-end Node server (which communicates with the browser itself). By default, pyjs9 utilizes the requests <http://www.python-requests.org/en/latest/> module to communicate with the JS9 back-end server. However, if you install python-socketio <https://pypi.org/project/python-socketio>`, pyjs9 will use the faster, persistent socket.io http://socket.io/ protocol.

Install from the repository using pip3, as usual:

> pip3 install git+https://github.com/ericmandel/pyjs9.git#egg=pyjs9

or from a local copy:

> pip3 install /path/to/local/copy

Mandatory dependencies:

requests

Optional dependencies:

numpy               # support for GetNumpy and SetNumpy methods
astropy             # support for GetFITS and SetFITS methods
python-socketio     # fast, persistent socket.io protocol, instead of html
                    # (install version 5.x, version 4.x is deprecated)

To run:

> # ensure JS9 node-server is running ...
> # visit your local JS9 Web page in your browser ...
> python
... (startup messages) ...
>>> import pyjs9
>>>
>>> j = pyjs9.JS9()        # default: connect to 'http://localhost'
>>>
>>> j.GetColormap()
{'bias': 0.5, 'colormap': 'grey', 'contrast': 1}
>>> j.SetColormap('red')
>>> j.cmap()
'red 1 0.5'
>>>
>>> hdul = j.GetFITS()
>>> hdul.info()
Filename: (No file associated with this HDUList)
No.    Name         Type      Cards   Dimensions   Format
0    PRIMARY     PrimaryHDU       6   (1024, 1024)   int32
>>>
>>> narr = j.GetNumpy()
>>> narr.shape
(1024, 1024)

If you have internet connectivity, visit the JS9 Web page at https://js9.si.edu with your browser and:

> python
... (startup messages) ...
>>> import pyjs9
>>>
>>> j = pyjs9.JS9('https://js9.si.edu')        # connect to JS9 Web site
>>>
>>> j.GetColormap()
{'bias': 0.5, 'colormap': 'grey', 'contrast': 1}
>>>
>>> # etc ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyjs9-3.8.tar.gz (49.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page