glidertools.processing.calc_backscatter¶
-
glidertools.processing.
calc_backscatter
(bb_raw, tempC, salt, dives, depth, wavelength, dark_count, scale_factor, spike_window=7, spike_method='median', iqr=3, profiles_ref_depth=300, deep_multiplier=1, deep_method='median', return_figure=False, verbose=True)¶ The function processes the raw backscattering data in counts into total backscatter (bbp) in metres.
The function uses a series of steps to clean the data before applying the Zhang et al. (2009) functions to convert the data into total backscatter (bbp/m)). The function uses functions from the flo_functions toolkit [1]. The theta angle of sensors (124deg) and xfactor for theta 124 (1.076) are set values that should be updated if you are not using a WetLabs ECO BB2FL
The following standard sequence is applied:
- find IQR outliers (i.e. data values outside of the lower and upper limits calculated by cleaning.outlier_bounds_iqr)
- find_bad_profiles (e.g. high values below 300 m are counted as bad profiles)
- flo_scale_and_offset (factory scale and offset)
- flo_bback_total (total backscatter based on Zhang et al. 2009) [2]
- backscatter_dark_count (based on Briggs et al. 2011) [3]
- despike (using Briggs et al. 2011 - rolling min–max) [3]
Parameters: - bb_raw (np.array / pd.Series, dtype=float, shape=[n, ]) – The raw output from the backscatter channel in counts.
- tempC (np.array / pd.Series, dtype=float, shape=[n, ]) – The QC’d temperature data in degC.
- salt (np.array / pd.Series, dtype=float, shape=[n, ]) – The QC’d salinity in PSU.
- dives (np.array / pd.Series, dtype=float, shape=[n, ]) – The dive count (round is down dives, 0.5 is up dives).
- depth (np.array / pd.Series, dtype=float, shape=[n, ]) – The depth array in metres.
- wavelength (int) – The wavelength of the backscatter channel, e.g. 700 nm.
- dark_count (float) – The dark count factory values from the calibration sheet.
- scale_factor (float) – The scale factor factory values from the calibration sheet.
- spike_window (int) – The window size over which to run the despiking method.
- spike_method (str) – Whether to use a rolling median or combination of min+max filter as the despiking method.
- iqr (int) – Multiplier to determine the lower and upper limits of the interquartile range for outlier detection.
- profiles_ref_depth (int) – The depth threshold for optics.find_bad_profiles below which the median or mean is calculated for identifying outliers.
- deep_multiplier (int=1) – The standard deviation multiplier for calculating outliers, i.e. \(\mu \pm \sigma \cdot[1]\).
- deep_method (str) – Whether to use the deep median or deep mean to determine bad profiles for optics.find_bad_profiles.
- return_figure (bool) – If True, will return a figure object that shows before and after the quenching correction was applied.
- verbose (bool) – If True, will print the progress of the processing function.
Returns: - baseline (numpy.ma.masked_array) – The despiked + bad profile identified backscatter with the mask denoting the filtered values of the backscatter baseline as defined in Briggs et al. (2011).
- quench_corrected (np.array / pd.Series, dtype=float, shape=[n, ]) – The backscatter spikes as defined in Briggs et al. (2011).
- figs (object) – The figures reporting the despiking, bad profiles and quenching correction.
References
[1] https://github.com/ooici/ion-functions Copyright (c) 2010, 2011 The Regents of the University of California [2] Zhang, X., Hu, L., & He, M. (2009). Scattering by pure seawater: Effect of salinity. Optics Express, 17(7), 5698. https://doi.org/10.1364/OE.17.005698 [3] (1, 2) Briggs, N., Perry, M. J., Cetinic, I., Lee, C., D’Asaro, E., Gray, A. M., & Rehm, E. (2011). High-resolution observations of aggregate flux during a sub-polar North Atlantic spring bloom. Deep-Sea Research Part I: Oceanographic Research Papers, 58(10), 1031–1039. https://doi.org/10.1016/j.dsr.2011.07.007