Package: pysis
Toolkit for using USGS Isis in Python.Free software: BSD licenseDocumentation:http://pysis.readthedocs.org.How to installAt the command line:$ easy_install pysisOr, if you have virtualenvwrapper installed:$ mkvirtualenv pysis
$ pip install pysisDependenciesFor working with ISIS commands, you must firts haveUSGS ISIS 3installed on
your machine. See the ISIS 3installation guidefor further instructions.
Remember to set your environmental variables (see step 4 of USGS ISIS guide) so
Pysis knows where your installation is.Quickstart GuideHow to write ISIS 3 code in python using Pysis.Using ISIS 3 at the command line you might want to run the following basic
commands (examples for the MDIS camera on the MESSENGER mission):mdis2isis from=filename.IMG to=filename.cub
spiceinit from=filename.cub
mdiscal from=filename.cub to=filename.cal.cubusing Pysis the syntax is:from pysis.isis import mdis2isis, spiceinit, mdiscal
from pysis.util import file_variations

def calibrate_mids(img_name):
    (cub_name, cal_name) = file_variations(img_name, ['.cub', '.cal.cub'])

    mdis2isis(from_=img_name, to=cub_name)
    spiceinit(from_=cub_name)
    mdiscal(from_=cub_name, to=cal_name)You will notice that we use the keywordfrom_when we call a command  becausefromis a reserved word in python.Numerical and String ArgumentsHere is an example of the maptemplate and cam2map commands in Pysis:from pysis import isis

isis.maptemplate(map='MDIS_eqr.map', projection='equirectangular',
                 clon=0.0, clat=0.0, resopt='mpp', resolution=1000,
                 rngopt='user', minlat=-10.0, maxlat=10.0, minlon=-10.0,
                 maxlon=10.0)

isis.cam2map(from_=cal_name, to=proj_name, pixres='map',
             map='MDIS_eqr.map',defaultrange='map')Getting values from ISIS commandsPysis commands will return the command’s STDOUT as a byte string. If the command
returns a nonzero exit code, aProcessErrorwill be thrown. This example
command usesgetkeyto receive values from the label of an ISIS cube:from pysis.isis import getkey

value = getkey(from_='W1467351325_4.map.cal.cub',
               keyword='minimumringradius', grp='mapping')Catching ProcessingErrorsPysis supports catchingISISprocessing errors like so:from pysis.exceptions import ProcessError
from pysis.isis import hi2sis

try:
    hi2isis(from_=filein, to=fileout)
except ProcessError as e:
    print("STDOUT:", e.stdout)
    print("STDERR:", e.stderr)Multiprocessing Isis Commands with IsisPoolPysis has built-in support to make multiprocessing isis commands simple. To run
the above MDIS calibration script for multiple images in multiple processes we
could rewrite the function as so:from pysis import IsisPool
from pysis.util import ImageName

def calibrate_mdis(images):
    images = [ImageName(filename) for filename in images]

    with IsisPool() as isis_pool:
        for filename in images:
            isis_pool.mdis2isis(from_=filename.IMG, to=filename.cub)

    with IsisPool() as isis_pool:
        for filename in images:
            isis_pool.spiceinit(from_=filename.cub)

    with IsisPool() as isis_pool:
        for filename in images:
            isis_pool.mdiscal(from_=filename.cub, to=filename.cal.cub)When using IsisPool we can’t determine which order commands will be executed in
so we much run each command for all the files as a group before moving to the
next command and creating a new IsisPool.History0.6.0 (2016-05-22)Support filenames in image constructor. (thanks @michaelaye)Use pvl for label decoding.0.5.2 (2015-05-30)Relicense as BSD.0.5.1 (2015-05-18)Add support for line comments.Fix packages in setup.py. (thanks @michaelaye)0.5.0 (2015-04-18)Add support for python 2.6/3.3/3.4Simplified command api.Labels package now shares the json module api.Label parser now fully conforms to the PVL spec.Add label encoder.0.4.0 (2015-03-21)First release on PyPI.