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.
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.
rss_ringoccs has a few dependencies:
- A
Ccompiler (gcc,clang,tcc,pcc,icx, andMSVCwork fine). python3(we have tested versions3.7to3.14).libtmplsetuptoolsnumpyscipyspiceypyCSPICEGNU Make(Unix-like) orCMake(Windows).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.
On Debian / Ubuntu-based operating systems, you can install the needed tools using:
sudo apt install gcc python3 make gitMost GNU / Linux systems have these packages readily available. Use your package manager to obtain them.
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 gitOn macOS, install developer tools with:
xcode-select --installLastly, 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:
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.
To obtain rss_ringoccs, clone the repository:
git clone --recursive http://github.com/NASA-Planetary-Science/rss_ringoccs.git
cd rss_ringoccs/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 .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 .This project updates regularly, as does libtmpl. To rebuild, follow the
cleaning instruction below, and then pull the latest changes with:
git pull --recurse-submodulesYou may then re-build the latest changes using the previous commands.
Uninstalling rss_ringoccs can be done using pip:
python3 -m pip uninstall rss_ringoccsTo clean build files, run:
make clean && make clean BUILD_STATIC=1Additionally, if you installed the C library librssringoccs
using sudo make install, do:
sudo make uninstall && sudo make uninstall BUILD_STATIC=1To remove Python egg files, type:
rm -rf rss_ringoccs.egg-infoLastly, if you created a virtual environment using python3 -m venv .venv,
remove this via:
rm -rf .venvType the following in the command prompt.
rmdir /s build
rmdir /s rss_ringoccs.egg-info
rmdir /s .venv
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
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.
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.
If you use rss_ringoccs as the basis of a publication, please consider citing rss_ringoccs using the DOI:10.5281/zenodo.2548947
| 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 |
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.