Skip to content

Commit d1d37f4

Browse files
committed
added flag to move scattering signal baseline to 0
1 parent cc344bf commit d1d37f4

4 files changed

Lines changed: 10 additions & 5 deletions

File tree

pysp2/util/normalized_derivative_method.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import numpy as np
22
import xarray as xr
33

4-
def central_difference(S, num_records=None, normalize=True):
4+
def central_difference(S, num_records=None, normalize=True, baseline_to_zero=True):
55

66
"""
77
Compute fourth order derivative S'(t) using the
@@ -39,6 +39,11 @@ def central_difference(S, num_records=None, normalize=True):
3939

4040
for ch in channels:
4141
y = S[ch].isel(event_index=slice(0, num_records)).values
42+
43+
# Baseline shift: make each record's minimum be 0
44+
if baseline_to_zero:
45+
y_min = np.nanmin(y, axis=1, keepdims=True) # shape (n_records, 1)
46+
y = y - y_min
4247
d = np.full_like(y, np.nan, dtype=np.float64)
4348

4449
# Interior points (vectorized)
-4.54 KB
Loading

tests/test_ndm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ def test_central_difference():
55
my_sp2b = pysp2.io.read_sp2(pysp2.testing.EXAMPLE_SP2B)
66
my_ini = pysp2.io.read_config(pysp2.testing.EXAMPLE_INI)
77
my_binary = pysp2.util.gaussian_fit(my_sp2b, my_ini, parallel=False)
8-
dSdt = pysp2.util.central_difference(my_binary, normalize=False)
8+
dSdt = pysp2.util.central_difference(my_binary, normalize=False, baseline_to_zero=False)
99

1010
np.testing.assert_almost_equal(dSdt['Data_ch4'].isel(event_index=5876, time=0).item(),
1111
8.3333333333e6, decimal=2)
@@ -15,7 +15,7 @@ def test_central_difference():
1515
1.5e7, decimal=2)
1616
assert np.isfinite(dSdt).all()
1717

18-
dSdt_norm = pysp2.util.central_difference(my_binary, normalize=True)
18+
dSdt_norm = pysp2.util.central_difference(my_binary, normalize=True, baseline_to_zero=False)
1919
np.testing.assert_almost_equal(dSdt_norm['Data_ch4'].isel(event_index=5876, time=0).item(),
2020
8.3333333333e6/-30168, decimal=2)
2121
np.testing.assert_almost_equal(dSdt_norm['Data_ch4'].isel(event_index=5876, time=99).item(),

tests/test_vis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ def test_plot_normalized_derivative():
1414
my_sp2b = pysp2.io.read_sp2(pysp2.testing.EXAMPLE_SP2B)
1515
my_ini = pysp2.io.read_config(pysp2.testing.EXAMPLE_INI)
1616
my_binary = pysp2.util.gaussian_fit(my_sp2b, my_ini, parallel=False)
17-
dSdt_norm = pysp2.util.central_difference(my_binary, normalize=True)
17+
dSdt_norm = pysp2.util.central_difference(my_binary, normalize=True, baseline_to_zero=True)
1818

1919
# Test the plotting function for channel 0 and record number 2
20-
ax = plot_normalized_derivative(dSdt_norm, record_no=304, chn=0)
20+
ax = plot_normalized_derivative(dSdt_norm, record_no=499, chn=0)
2121
fig = ax.figure
2222

2323
return fig

0 commit comments

Comments
 (0)