CCSDSPy - IO Interface for Reading CCSDS Data in Python.
========================================================
.. image:: https://github.com/ccsdspy/ccsdspy/actions/workflows/ccsdspy-ci.yml/badge.svg
:target: https://github.com/ccsdspy/ccsdspy/actions
:alt: CI Status
.. image:: https://codecov.io/gh/ccsdspy/ccsdspy/branch/main/graph/badge.svg?token=Ia45f4cW8f
:target: https://codecov.io/gh/ccsdspy/ccsdspy
:alt: Code Coverage
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.7819991.svg
:target: https://doi.org/10.5281/zenodo.7819991
:alt: Zenodo DOI
This community-developed package provides a Python interface for reading tightly packed bits in the `Consultative Committee for Space Data Systems (CCSDS) `__ format used by many NASA and ESA missions. The library is developed with requirements sourced from the community and extensive automated testing.
Used By
-------
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/goes-r.png
:target: https://www.goes-r.gov/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/europa-clipper.png
:target: https://europa.nasa.gov/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/mms.jpg
:target: https://mms.gsfc.nasa.gov/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/pace.png
:target: https://pace.gsfc.nasa.gov/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/hermes.png
:target: https://science.nasa.gov/missions/hermes
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/csa.png
:target: https://www.asc-csa.gc.ca/eng/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/punch.png
:target: https://punch.space.swri.edu/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/spherex.png
:target: https://www.jpl.nasa.gov/missions/spherex
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/elfin.jpg
:target: https://elfin.igpp.ucla.edu/
.. image:: https://raw.githubusercontent.com/ccsdspy/ccsdspy/main/docs/_static/used-by/small/padre.png
:target: https://padre.ssl.berkeley.edu
Do you know of other missions that use CCSDSPy? Let us know `through a github issue`_!
.. _through a github issue: https://github.com/ccsdspy/ccsdspy/issues/new
Installation
============
To install ccsdspy
.. code::
pip install ccsdspy
Usage Example
=============
The following example shows how simple it is to read in fixed length CCSDS packets.
.. code-block:: python
import ccsdspy
from ccsdspy import PacketField, PacketArray
pkt = ccsdspy.FixedLength([
PacketField(name='SHCOARSE', data_type='uint', bit_length=32),
PacketField(name='SHFINE', data_type='uint', bit_length=20),
PacketField(name='OPMODE', data_type='uint', bit_length=3),
PacketField(name='SPACER', data_type='fill', bit_length=1),
PacketField(name='VOLTAGE', data_type='int', bit_length=8),
PacketArray(
name='SENSOR_GRID',
data_type='uint',
bit_length=16,
array_shape=(32, 32),
array_order='C'
),
])
result = pkt.load('mypackets.bin')
Documentation
=============
Our documentation is hosted on readthedocs and can be found `here `__.
Getting Help
============
For more information or to ask questions about the library or CCSDS data in general, check out the `CCSDSPy Discussion Board `__ hosted through GitHub.
Acknowledging or Citing ccsdspy
===============================
If you use ccsdspy, it would be appreciated if you let us know and mention it in your publications. The code can be cited using the `DOI provided by Zenodo `__. The continued growth and development of this package is dependent on the community being aware of it.
Code of Conduct
===============
When interacting with this package please behave consistent with the following `Code of Conduct `__.