A wrapper for the NAIF C SPICE Toolkit (N65), compatible with Python 2 and 3, written using ctypes.
IMPORTANT: I have no current affiliation with NASA, NAIF, or JPL. The code is provided "as is", use at your own risk.
The SPICE Toolkit.
In short it is an essential tool for scientists and engineers alike in the planetary science field for Solar System Geometry.
Please visit the NAIF website listed earlier for more details.
A secondary list (non-maintained) of what functions have been wrapped can be found here.
A majority of SPICE functions have written wrappers along with tests mainly derived from the CSPICE documentation.
A small number of functions have no wrapper functions of any kind due to lack of necessity, they are labeled as "Skipped".
The rest of the functions generally have written wrapper functions but remain untested, mostly due to lack of SPICE documentation (the EK kernel functions are one example of this).
Functions that utilize call-backs have not been wrapped or tested yet, although ctypes does support call-backs so they will be revisited.
If you encounter an error with a function please report it or write up a PR to fix it, with ctypes it is easy!
The SpiceyPy docs are available at: spiceypy.readthedocs.org.
The documentation for SpiceyPy is intentionally abridged so as to utilize the excellent documentation provided by the NAIF.
Please refer to C and IDL documentation available on the NAIF website for in-depth explanations.
Each function has a link to the corresponding C function in the NAIF docs at a minimum.
Feedback is always welcomed, if you discover that a function is not working as expected, submit an issue detailing how
to reproduce the problem. If you utilize SpiceyPy frequently please consider contributing to the project by:
writing a test, writing a wrapper, doing some code review, adding documentation, improving infrastructure code (like setup.py), or by spreading the word.
Any changes can be easily shared by submitting a pull request.
If SpiceyPy helps lead to a scientific publication, please consider citing the SPICE toolkit, and listing SpiceyPy in the acknowledgments.
The citation information for SPICE can be found on the NAIF website and please contact the author of this git repository for further information regarding SpiceyPy itself.
- Majorly complete coverage of all existing CSPICE commands, within reason.
- Useful, but abbreviated commenting on functions.
- Enable vectorization of certain functions to be more like ICY.
- Python 2 and 3 support.
- Numpy Support.
First install the dependencies (numpy, six, pytest). Then download the project, extract it, and inside just run python setup.py install
.
If you are updating to the newest commit/version, be sure to completely delete the SpiceyPy folder in your site-packages.
This can most commonly be done by uninstalling SpiceyPy using pip.
These are the following OS environments I have been able to run the exampleProgramTest.py program on. SpiceyPy is being developed in a Python 3.4.1 64-bit Mac OS X 10.9.5 environment. Travis CI is also ubuntu 12.04 LTS to my knowledge.
- Python 3.3.3 64-bit Mac OS X 10.9.4
- Python 2.7.5 64-bit Mac OS X 10.9.4
- Python 3.3.3 64-bit Mac OS X 10.9.2
- Python 2.7.5 64-bit Mac OS X 10.9.2
- Python 3.2.3 64-bit Ubuntu 12.04 LTS (VM)
DaRasch wrote spiceminer, which I looked at to get SpiceCells working, thanks!
The below steps are now integrated into the setup.py file included and can be ignored, but for those who want to try for themselves I left the following sequences for you.
First the user must generate their own shared library of CSPICE. In the Lib subdirectory in CSPICE run the following commands:
ar -x cspice.a
ar -x csupport.a
This will generate a large collection of *.o
files.
Next compile the shared library, last I checked this was correct on my system.
gcc -shared -fPIC -lm *.o -o spice.so