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 details)

Uploaded Source

File details

Details for the file pyjs9-3.8.tar.gz.

File metadata

  • Download URL: pyjs9-3.8.tar.gz
  • Upload date:
  • Size: 49.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.3

File hashes

Hashes for pyjs9-3.8.tar.gz
Algorithm Hash digest
SHA256 3de40a869f989de600ab8c7b7453c584c2d0f50d882240420247e3b6695f6cfe
MD5 ff3f916f474133a146e755eb52126d24
BLAKE2b-256 5cb229016a0109006ef9e026b36c579867193150c5f0ac0945a6c0f801a93c07

See more details on using hashes here.

Supported by

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