Skip to content

Commit dd1fad4

Browse files
committed
Updating rss_ringoccs to work with Python 3.13.
1 parent 6907da0 commit dd1fad4

File tree

5 files changed

+140
-62
lines changed

5 files changed

+140
-62
lines changed

ReleaseNotes.md

Lines changed: 119 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,199 @@
11
# Release Notes #
22

3-
rss_ringoccs does not run on Python 3.8 or 3.9 and needs to be used on 3.6.
4-
There is active work in rewriting the code in C89/C90 compliant code for future
5-
portability, using the C-Python API to allow users the convenience of Python.
6-
3+
There is active work to remove some of the dependencies from rss_ringoccs.
4+
We are slowly converting the Python code to C.
75

86
## rss_ringoccs V1.3-beta ##
97

8+
Release date: 2025, March 31
9+
10+
### Changes from V1.3-alpha ###
11+
12+
1. CSV readers are now implemented in C. `pandas` dependency removed.
13+
14+
2. rss_ringoccs now works with Python 3.11 to 3.13. Tested on
15+
Linux, macOS, and FreeBSD. Windows has not be extenively tested.
16+
17+
3. Introduced `libtmpl` as a submodule to simplify the build process.
18+
19+
4. Simplified build instructions. All handled by pip.
20+
21+
### Lien list for V1.3-beta ###
22+
23+
1. Process proximal egress occultations in Grand Finale orbits.
24+
25+
2. Data catalog query - we will work with the PDS to ensure that our
26+
recently-submitted RSS ring occultation observation data catalog
27+
is compliant with current PDS search capabilities.
28+
29+
3. Improve processing and documenting of the scattered signal.
30+
This should include appropriate Doppler footprint contours and
31+
correcting the observed frequency drift to account for
32+
wavelength-dependents and motion of the spacecraft.
33+
34+
## rss_ringoccs V1.3-alpha ##
35+
1036
Release date: 2021, January 12
1137

1238
### Changes from V1.2 ###
1339

1440
1. Fix minor typographical errors in user Guide.
1541

16-
2. Clearer explanation of differences between end-to-end batch processing scripts.
42+
2. Clearer explanation of differences between
43+
end-to-end batch processing scripts.
1744

1845
3. C code implemented for diffraction reconstruction and special functions.
1946

2047
4. Support restricted to Anaconda Python for compatibility reasons.
2148

22-
5. Enhance post-USO support. This includes addressing the discontinuous frequency offsets and modeling the phase echo introduced by diffraction of the uplink signal by the ring system.
49+
5. Enhance post-USO support. This includes addressing the discontinuous
50+
frequency offsets and modeling the phase echo introduced by diffraction
51+
of the uplink signal by the ring system.
2352

24-
6. Runnable scripts to perform push-button diffraction correction, starting either from raw RSS files or from Essam Marouf's (or our) PDS-style geometry, calibration, and diffraction-limited profiles, at any desired resolution (consistent with the sampling theorem and justified by the SNR), for the full set of RSS occultations at S, X, and Ka-band up to the point of USO failure.
53+
6. Runnable scripts to perform push-button diffraction correction,
54+
starting either from raw RSS files or from Essam Marouf's (or our)
55+
PDS-style geometry, calibration, and diffraction-limited profiles,
56+
at any desired resolution (consistent with the sampling theorem and
57+
justified by the SNR), for the full set of RSS occultations at S, X,
58+
and Ka-band up to the point of USO failure.
2559

26-
**Resolved V1.2-2**
27-
Some post-USO files contain discontinuous frequency offsets. rss_rings v1.3 now supports the processing of these files.
60+
**Resolved Issues**
61+
1. Some post-USO files contain discontinuous frequency offsets.
62+
rss_ringoccs v1.3 now supports the processing of these files.
2863

29-
### Known Issues and Limitations of V1.3 ###
64+
2. rss_ringoccs was unable to process very low angle Revs such as Rev133.
65+
Fixed in v1.3 using the new `newtond`, `newtondphi`, and `newtondold`
66+
windows.
3067

31-
#### V1.3-1 (carried over from V1.2-1) ####
32-
For the extreme nearly edge-on viewing geometry of Rev133E at X-band, rss_ringoccs gives slightly different results from PDS, traceable to a difference of about 10% in the cubic term of the varaiable psi. The origin of this discrepancy is unknown, but it is not important for any other occultation data sets we have reduced so far, and is relatively minor even for Rev133E at X band.
68+
### Known Issues and Limitations of V1.3-beta ###
3369

34-
#### V1.3-2 ####
35-
Support for egress occultations at start of proximal orbits in the Grand Finale not yet implemented.
70+
1. Support for egress occultations at start of proximal orbits
71+
in the Grand Finale not yet implemented.
3672

37-
### Lien list for V1.3 ###
73+
### Lien list for V1.3-alpha ###
3874

39-
1. Properly proximal egress occultations in Grand Finale orbits
75+
1. Process proximal egress occultations in Grand Finale orbits.
4076

41-
2. Data catalog query - we will work with the PDS to ensure that our recently-submitted RSS ring occultation observation data catalog is compliant with current PDS search capabilities.
77+
2. Data catalog query - we will work with the PDS to ensure that our
78+
recently-submitted RSS ring occultation observation data catalog
79+
is compliant with current PDS search capabilities.
4280

43-
3. Improve processing and documenting of the scattered signal. This should include appropriate Doppler footprint contours and correcting the observed frequency drift to account for wavelength-dependents and motion of the spacecraft.
81+
3. Improve processing and documenting of the scattered signal.
82+
This should include appropriate Doppler footprint contours and
83+
correcting the observed frequency drift to account for
84+
wavelength-dependents and motion of the spacecraft.
4485

4586
## rss_ringoccs V1.2 ##
4687

4788
Release date: 2019 July 1
4889

4990
### Changes from V1.1 ###
5091

51-
1. Improved sigma-clipping and frequency offset fitting for speed, accuracy, and usability.
52-
53-
2. Adapted code to process Voyager 2 radio occultation data for Uranus' rings.
54-
55-
**Resolved V1.1-1**
92+
1. Improved sigma-clipping and frequency offset fitting
93+
for speed, accuracy, and usability.
5694

57-
1. Introduced push-button scripts starting from either raw RSS files (the `e2e_batch.py` script) or from Essam Marouf's (or our) PDS-style geometry, calibration, and diffraction-limited profiles (the `quick_look.py` script), at any desired resolution (consistent with the sampling theorem and justified by the SNR), for the full set of RSS occultations at S, X, and Ka-band up to the point of USO failure.
95+
2. Adapted code to process Voyager 2 radio occultation
96+
data for Uranus' rings.
5897

59-
**Resolved V1.1-2**
98+
**Resolved Issues**
6099

61-
2. Software is now more extensively documented online, in the User's Guide, and within the push-button scripts.
100+
1. Introduced push-button scripts starting from either raw RSS files
101+
(the `e2e_batch.py` script) or from Essam Marouf's (or our) PDS-style
102+
geometry, calibration, and diffraction-limited profiles
103+
(the `quick_look.py` script), at any desired resolution (consistent
104+
with the sampling theorem and justified by the SNR), for the full set
105+
of RSS occultations at S, X, and Ka-band up to the point of USO failure.
62106

63-
**Resolved V1.1-4**
107+
2. Software is now more extensively documented online, in the User's Guide,
108+
and within the push-button scripts.
64109

65-
3. Improved speed of slowest routines in diffraction reconstruction by re-writing in C, wrapping in Python, and utilizing multi-core processing.
66-
67-
**Resolved V1.1-5**
110+
3. Improved speed of slowest routines in diffraction reconstruction by
111+
re-writing in C, wrapping in Python, and utilizing multi-core processing.
68112

69113
4. Added support for processing many of the post-USO failure RSR files.
70114

71-
**Resolved V1.1-6**
72-
73115
5. Added support for processing the incoherent, or scattered, signal.
74116

75117
### Known Issues and Limitations of V1.2 ###
76118

77-
#### V1.2-1 (carried over from V1.1-1) ####
78-
For the extreme nearly edge-on viewing geometry of Rev133E at X-band, rss_ringoccs gives slightly different results from PDS, traceable to a difference of about 10% in the cubic term of the varaiable psi. The origin of this discrepancy is unknown, but it is not important for any other occultation data sets we have reduced so far, and is relatively minor even for Rev133E at X band.
79-
80-
#### V1.2-2 ####
81-
Some post-USO files contain discontinuous frequency offsets. rss_rings v1.2 does not support the processing of these files.
82-
119+
1. For the extreme nearly edge-on viewing geometry of Rev133E at X-band and
120+
S-band cannot be processed (carried over from v1.1).
83121

122+
2. Some post-USO files contain discontinuous frequency offsets.
123+
rss_ringoccss v1.2 does not support the processing of these files.
84124

85125
## rss_ringoccs V1.1 ##
86-
87126
Release date: 2019 Feb 1
88127

89128
### Known Issues and Limitations of V1.1 ###
90129

91130
#### V1.1-1 ####
92-
For the extreme nearly edge-on viewing geometry of Rev133E at X-band, rss_ringoccs gives slightly different results from PDS, traceable to a difference of about 10% in the cubic term of the variable psi. The origin of this discrepancy is unknown, but it is not important for any other occultation data sets we have reduced so far, and is relatively minor even for Rev133E at X band.
131+
For the extreme nearly edge-on viewing geometry of Rev133E at X-band,
132+
rss_ringoccs gives slightly different results from PDS, traceable to a
133+
difference of about 10% in the cubic term of the variable psi. The origin
134+
of this discrepancy is unknown, but it is not important for any other
135+
occultation data sets we have reduced so far, and is relatively minor
136+
even for Rev133E at X band.
93137

94138
### Lien list for V1.2 ###
95139

96-
1. Runnable scripts to perform push-button diffraction correction, starting either from raw RSS files or from Essam Marouf's (or our) PDS-style geometry, calibration, and diffraction-limited profiles, at any desired resolution (consistent with the sampling theorem and justified by the SNR), for the full set of RSS occultations at S, X, and Ka-band up to the point of USO failure.
140+
1. Runnable scripts to perform push-button diffraction correction,
141+
starting either from raw RSS files or from Essam Marouf's (or our)
142+
PDS-style geometry, calibration, and diffraction-limited profiles,
143+
at any desired resolution (consistent with the sampling theorem and
144+
justified by the SNR), for the full set of RSS occultations at S, X,
145+
and Ka-band up to the point of USO failure.
97146

98147
2. More extensive documentation to demonstrate the use of the software.
99148

100-
3. Data catalog query - we will work with the PDS to ensure that our recently-submitted RSS ring occultation observation data catalog is compliant with current PDS search capabilities.
149+
3. Data catalog query - we will work with the PDS to ensure that our
150+
recently-submitted RSS ring occultation observation data catalog is
151+
compliant with current PDS search capabilities.
101152

102153
4. Improve speed of slowest routines by using tested multiprocessor code.
103154

104155
5. Explore possibility of processing post-USO failure RSR files.
105156

106-
6. Explore feasibility, level of effort, and value of archiving scattered signal data -- perhaps as a PDART proposal.
107-
157+
6. Explore feasibility, level of effort, and value of archiving
158+
scattered signal data -- perhaps as a PDART proposal.
108159

109160
## rss_ringoccs V1.0 ##
110161

111162
Release date: 2018 September 30
112163

113164
### Known Issues and Limitations of V1.0 ###
114165
#### V1.0-1 ####
115-
rss_ringoccs implements effective radial resolution as defined in Marouf, Tyler, and Rosen 1986 (MTR86, Icarus 68, 120-166) eq. 19, using a Kaiser-Bessel alpha=2.5 window function. In contrast, Marouf et al.'s diffraction-reconstructed profiles on the PDS Ring-Moon Systems Node adopt the shortest resolvable wavelength as the
116-
resolution metric. Its inverse is the
117-
highest spatial frequency preserved in the data. The latter is 1 cycle/km for the 1 km
118-
resolution of Marouf's reconstructed profiles. The value corresponds to ~750 m
119-
processing resolution as defined in MTR86. The bandwidth of the lowpass filter in the final stage of the data processing chain determines such frequency and is selected to achieve the desired resolution.
120-
121-
Workaroud: In order to produce the best match to the RSS diffraction-reconstructed ring profiles on the PDS, specify in rss_ringoccs a desired resolution 0.75 times that given in the PDS files.
166+
rss_ringoccs implements effective radial resolution as defined in
167+
Marouf, Tyler, and Rosen 1986 (MTR86, Icarus 68, 120-166) eq. 19,
168+
using a Kaiser-Bessel alpha=2.5 window function. In contrast,
169+
Marouf et al.'s diffraction-reconstructed profiles on the PDS
170+
Ring-Moon Systems Node adopt the shortest resolvable wavelength as
171+
the resolution metric. Its inverse is the
172+
highest spatial frequency preserved in the data.
173+
The latter is 1 cycle/km for the 1 km resolution of Marouf's reconstructed
174+
profiles. The value corresponds to ~750 m processing resolution
175+
as defined in MTR86. The bandwidth of the lowpass filter in the final
176+
stage of the data processing chain determines such
177+
frequency and is selected to achieve the desired resolution.
178+
179+
Workaroud: In order to produce the best match to the RSS
180+
diffraction-reconstructed ring profiles on the PDS, specify in
181+
rss_ringoccs a desired resolution 0.75 times that given in the PDS files.
122182

123183
#### V1.0-2 ####
124-
Power and frequency calibration GUIs give the following error message under some versions of Python on MacOS systems:
184+
Power and frequency calibration GUIs give the following error message
185+
under some versions of Python on MacOS systems:
125186

126187
-[NSApplication _setup:]: unrecognized selector sent to instance
127188

128189
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance'
129190

130-
Workaround: Use Linux operating system, and post an Issue on the Github page for rss_ringoccs
191+
Workaround: Use Linux operating system, and post an Issue
192+
on the Github page for rss_ringoccs.
131193

132194
#### V1.0-3 ####
133-
Power and frequency calibration GUIs may sometimes not close when users click the "OK" button or the red "X" button.
195+
Power and frequency calibration GUIs may sometimes not close when
196+
users click the "OK" button or the red "X" button.
134197

135-
Workaround: Use Linux operating system, and post an Issue on the Github page for rss_ringoccs
198+
Workaround: Use Linux operating system, and post an Issue on
199+
the Github page for rss_ringoccs.

pyproject.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
[build-system]
2+
requires = ["setuptools", "numpy", "scipy", "matplotlib", "spiceypy"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "rss_ringoccs"
7+
description = "Library for processing RSS ring occultation data."
8+
version = "v1.3-beta"
9+
readme = "README.md"
10+
license = {file = "LICENSE"}
11+
keywords = ["cassini", "radio science", "astronomy", "planetary rings"]
12+
requires-python = ">= 3.7"
13+
authors = [
14+
{name = "Ryan Maguire", email = "[email protected]"}
15+
]
16+
maintainers = [
17+
{name = "Ryan Maguire", email = "[email protected]"}
18+
]

requirements.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
setuptools
2-
pymiescatt
3-
numpy==1.24.2
4-
scipy==1.10.1
2+
numpy
3+
scipy
54
matplotlib
65
spiceypy
7-
pymiescatt

rss_ringoccs/calibration/freq_offset_fit.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
"""
88

99
import numpy as np
10-
import warnings
11-
warnings.simplefilter('ignore', np.RankWarning)
1210
import matplotlib.pyplot as plt
1311
from scipy.interpolate import splrep, splev
1412
from scipy.signal import argrelmax

rss_ringoccs/tools/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@
1919
from .history import get_rev_info as get_rev_info
2020
from .create_summary_doc import plot_summary_doc_v2
2121
from .ring_fit import ring_fit
22-
from .dtau_partsize import *
22+
# from .dtau_partsize import *

0 commit comments

Comments
 (0)