Skip to content

NASA-Planetary-Science/rss_ringoccs

Repository files navigation

rss_ringoccs

rss_ringoccs is a suite of open-source C and Python-based analysis tools for Cassini Radio Science (RSS) ring occultations. It was developed by Team Cassini at Wellesley College (Sophia Flury, Jolene Fong, Ryan Maguire, and Glenn Steranka) under the direction of Richard French, Cassini RSS Team Leader, with funding provided by the NASA/JPL Cassini project.

Introduction

The Cassini Radio Science Subsystem (RSS) was used during the Cassini orbital tour of Saturn to observe a superb series of ring occultations that resulted in high-resolution, high-SNR radial profiles of Saturn's rings at three radio wavelengths: 13 cm (S band), 3.6 cm (X band), and 0.9 cm (Ka band). Radial optical depth profiles of the rings at 1- and 10-km resolution produced by the Cassini RSS team, using state of the art signal processing techniques to remove diffraction effects, are available on NASA's Planetary Data System (PDS). These archived products are likely to be quite adequate for many ring scientists, but for those who wish to generate their own diffraction-reconstructed ring profiles from Cassini RSS observations, we offer rss_ringoccs: a suite of Python-based analysis tools for Cassini Radio Science (RSS) ring occultations.

The purpose of rss_ringoccs is to enable scientists to produce "on demand" radial optical depth profiles of Saturn's rings from the raw RSS data, without requiring a deep familiarity with the complex processing steps involved in calibrating the data and correcting for the effects of diffraction. The code and algorithms are extensively documented, providing a starting point for users who wish to test, refine, or optimize the straightforward methods we have employed. Our emphasis has been on clarity, sometimes at the expense of programming efficiency and execution time. rss_ringoccs does an excellent job of reproducing existing 1 km-resolution RSS processed ring occultation data already present on NASA's PDS Ring-Moons Node, but we make no claim to having achieved the state-of-the-art in every respect. We encourage users to augment our algorithms and to report on those improvements, so that they can be incorporated in future editions of rss_ringoccs.

Building

rss_ringoccs has a few dependencies:

  1. A C compiler (gcc, clang, tcc, pcc, icx, and MSVC work fine).
  2. python3 (we have tested versions 3.7 to 3.14).
  3. libtmpl
  4. setuptools
  5. numpy
  6. scipy
  7. spiceypy
  8. CSPICE
  9. GNU Make (Unix-like) or CMake (Windows).
  10. git (to download the source code).

libtmpl is provided as a submodule, and the Python dependencies can be found in the requirements.txt file. CPSICE can be obtained through the NAIF website. Make sure the CSPICE library files are in your path when building.

Obtaining Dependencies

GNU / Linux

On Debian / Ubuntu-based operating systems, you can install the needed tools using:

sudo apt install gcc python3 make git

Most GNU / Linux systems have these packages readily available. Use your package manager to obtain them.

FreeBSD

On FreeBSD (and other BSDs) you'll need to use gmake (the Makefile uses GNU Make features, the default FreeBSD make will not work). Install the required packages with:

sudo pkg install gcc python3 gmake git

macOS

On macOS, install developer tools with:

xcode-select --install

Windows

Lastly, there is some experimental Windows support using CMake and MSVC (other compilers on Windows should work, but have not been tested). Visit the following links to obtain the necessary build tools:

  1. CMake
  2. MSVC
  3. Python
  4. Git for Windows

Note: There are many ways to install Python on Windows, including through Microsoft's app store. None of these alternative installations have been tested, nor will they be supported by rss_ringoccs. Please use the standard version from the official Python website.

Obtaining rss_ringoccs

To obtain rss_ringoccs, clone the repository:

git clone --recursive http://github.com/NASA-Planetary-Science/rss_ringoccs.git
cd rss_ringoccs/

Compiling (Not Windows)

To build rss_ringoccs in a virtual environment, do the following:

python3 -m venv .venv
source .venv/bin/activate

python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install .

Compiling (Windows)

For Windows the build instructions are slightly different.

py -m venv .venv
.venv\Scripts\activate.bat

py -m pip install --upgrade pip
py -m pip install -r requirements.txt
py -m pip install .

Updating

This project updates regularly, as does libtmpl. To rebuild, follow the cleaning instruction below, and then pull the latest changes with:

git pull --recurse-submodules

You may then re-build the latest changes using the previous commands.

Cleaning / Uninstalling

Not Windows

Uninstalling rss_ringoccs can be done using pip:

python3 -m pip uninstall rss_ringoccs

To clean build files, run:

make clean && make clean BUILD_STATIC=1

Additionally, if you installed the C library librssringoccs using sudo make install, do:

sudo make uninstall && sudo make uninstall BUILD_STATIC=1

To remove Python egg files, type:

rm -rf rss_ringoccs.egg-info

Lastly, if you created a virtual environment using python3 -m venv .venv, remove this via:

rm -rf .venv

Windows

Type the following in the command prompt.

rmdir /s build
rmdir /s rss_ringoccs.egg-info
rmdir /s .venv

Release notes

rss_ringoccs has changed dramatically over the years from a project that was primarily written in Python, to one that is now mostly written in C. Release notes are contained in https://github.com/NASA-Planetary-Science/rss_ringoccs/blob/master/ReleaseNotes.md

Batch Data Processing

Once rss_ringoccs has been installed and the necessary data and ephemeris/geometry files have been downloaded to local storage, as describd in the rss_ringoccs User Guide, users should first test rss_ringoccs using the documented example scripts. Once all is well, users will be able to process a set of Cassini RSS ring observations in batch mode. To simplify and expedite the use of rss_ringoccs, we provide a Python script that performs the end-to-end pipeline for a list of files contained in a reference ASCII text file. The default list is the 1 kHz Cassini RSR files prior to the USO failure, which can be found in the ./tables/ directory. This batch script implementation of the pipeline is located in the ./pipeline/ directory. We suggest running the batch script using the yes command as shown here:

yes | python e2e_batch.py

The rss_ringoccs User Guide includes several additional examples of end-to-end processing scripts, as well as instructions to enable users to construct their own batch end-to-end scripts.

How to (Get) Help

If you have trouble with installation or execution of the rss_ringoccs package, we encourage you to post a issue to https://github.com/NASA-Planetary-Science/rss_ringoccs/issues. We will attempt to respond promptly, and ther users will benefit. Alternatively, you can write email directly to Richard French: rfrench_at_wellesley.edu.

Citing rss_ringoccs

If you use rss_ringoccs as the basis of a publication, please consider citing rss_ringoccs using the DOI:10.5281/zenodo.2548947

Version History

Version Date
1.3-beta January 12, 2021
1.2.1 Septmber 7, 2019
1.2 July 3, 2019
1.1 February 5, 2019
1.0 September 30, 2018
Pre-Release April 22, 2018

Acknowledgements

This work was supported by the NASA/JPL Cassini mission. We are especially grateful to Linda Spilker and Kathryn Weld for their encouragement and support, and to RSS Team Member Essam Marouf for developing the diffraction reconstruction technique that underlies this work.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •