Welcome to vax’s documentation!

Introduction

vax is a set of routines for converting between NumPy floating point and complex scalars/arrays and VAX-format single- and double-precision floats.

vax is a product of the PDS Ring-Moon Systems Node.

Installation

The vax module is available via the rms-vax package on PyPI and can be installed with:

pip install rms-vax

Getting Started

The vax module provides two functions for converting from VAX-format floats:

  • from_vax32: Interpret a series of bytes or NumPy array as one or more VAX single-precision floats and convert them to a NumPy float or complex scalar or array.

  • from_vax64: Interpret a series of bytes NumPy array as one or more VAX double-precision floats and convert them to a NumPy float or complex scalar or array.

and two functions for converting to VAX-format floats::

  • to_vax32: Convert a NumPy float or complex scalar or array to a NumPy array containing the binary representation of VAX single-precision floats. Such an array can not be used for arithmetic operations since it is not in IEEE 754 format.

  • to_vax32_bytes: Convert a NumPy float or complex scalar or array to a Python bytes object containing the binary representation of VAX single-precision floats.

Note that there are no functions to convert a NumPy array to VAX double-precision format.

Details of each function are available in the module documentation.

Basic operation is as follows:

import vax
b = vax.to_vax32([1., 2., 3.])
print(f'b = {b!r}')
ba = vax.to_vax32_bytes([1., 2., 3.])
print(f'ba = {ba!r}')
v = vax.from_vax32(b)
print(f'v = {v!r}')
va = vax.from_vax32(ba)
print(f'va = {va!r}')

yields:

b = array([2.3138e-41, 2.3318e-41, 2.3407e-41], dtype=float32)
ba = b'\x80@\x00\x00\x00A\x00\x00@A\x00\x00'
v = array([1., 2., 3.], dtype=float32)
va = array([1., 2., 3.], dtype=float32)

As NASA data products stored as VAX-format floats are often provided in JPL’s VICAR file format, you may also be interested in the rms-vicar package (documentation).

Contributing

Information on contributing to this package can be found in the Contributing Guide.

Licensing

This code is licensed under the Apache License v2.0.

Indices and tables