Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/timstaley/pyds9_ex

Extensions to the pyds9 package, providing easy scripting of the ds9 fits file viewer from python.
https://github.com/timstaley/pyds9_ex

Last synced: about 11 hours ago
JSON representation

Extensions to the pyds9 package, providing easy scripting of the ds9 fits file viewer from python.

Awesome Lists containing this project

README

        

pyds9_ex
======================

A lightweight wrapper class and associated functions,
adding extended functionality and ease of use to the pyds9 package.

---------------------------------------------------------------------

The main aims are:
- To provide python bindings for common actions, in order to avoid frequent use of error prone ``ds9.set(some_command_string)``, etc.
- To make complex interactions with multiple frames more streamlined.

Prerequisites: ds9, xpa, pyds9

Note that this mini-project is very much in the alpha stage - essentially I threw it together during an afternoon, and I'm currently adding functionality as and when I need it. As such, there is not yet any packaging or testing, let alone suggestion of reliability.
*(Note a quick and dirty method of installation is to symlink the ds9_ex folder from ~/.local/python2.7/site-packages )*

I've decided to publish the code anyway as
- It might attract the attention of collaborators / perhaps this sort of functionality could be integrated into the original pyds9 package.
- It might save somebody some time by functioning as a template.
- I'm trying to move towards a practice of 'publish everything when possible' , and this seemed like a good place to start.

I'm also quietly pleased with the ``@per_frame`` function decorator.
This takes a function and binds in an additional wrapped version with the prefix ``all_``
that will apply the action to all frames,
so for example implementing a zoom function:

``foo.zoom_to(4) # zoom active frame to 4x``

trivially provides the same functionality for all frames:

``foo.all_zoom_to(4) # zoom all frames to 4x``

Applying the same action to all frames is particularly useful when say, panning around filtered and original versions of an image, in tandem.

Comments and collaborators very welcome!