optode-response-time

Suite of matlab code for determining the response time of an oxygen optode
14 Downloads
Updated 12 Jan 2022

optode-response-time
---
The MATLAB code included in this repository is designed to determine the response time of oxygen optodes deployed on autonomous floats in-situ. The process requires timestamps for each measurement and a sequence of both up- and downcast profiles. For more information on the method see Gordon et al. (2020).

There are two versions of the software, the default and the temperature-dependent version. In the default, temperature is not taken into consideration. In the T-dependent folder, the optimization is for boundary layer thickness, and a temperature profile must be provided along with the oxygen profile. The temperature dependent version uses the lookup table found in the supplement for Bittig & Kortzinger (2017).

User Guide
---
The function calculate_tau.m is the main driver here, and calls on correct_oxygen_profile.m to correct single oxygen profiles. Of course, the user may choose to use this sub-function for their own purposes.

calculate_tau.m takes in matrices of depth, time, and oxygen data (see below) and computes the optimal response time for each pair of profiles. In the T-dependent version, the use must also supply a matrix of temperature values. The derived time constants (or boundary layer thicknesses in T-dependent) can then be used to correct the oxygen measurements for sensor hysteresis. Following Gordon et al. (2020), this would be done using the median time constant, but we leave this decision to the user.

Input Data
---
Input data for calculate_tau.m should be in 2D matrix form, where each row is an individual profile, and rows alternate direction of observation (for example, all even rows could be upcasts and all odd rows downcasts or vice-versa). Time should be in MATLAB datenum format. Profiles should be organized such that time is monotonically increasing (i.e. pressure will be monotonically decreasing for an upcast). Below is some made-up data to demonstrate the proper data format:

% depth matrix
P = [
[200, 195, 190, .., 10, 5]; % profile 1, upcast
[5, 10, 15, .., 195, 200 ]; % profile 2, downcast
[200, 195, 190, .., 10, 5]; % profile 3, upcast
...
[200, 195, 190, .., 10, 5]; % profile N, upcast *or* downcast
];

% time matrix, matlab datenum, monotonically increasing row to row
T = [
[7.36451000e+05, 7.36451005e+05, 7.36451010e+05, .., 7.36451195e+05]
[7.36451200e+05, 7.36451205e+05, 7.36451210e+05, .., 7.36451395e+05]
...
[7.36454804e+05, 7.36454809e+05, 7.36454814e+05, .., 7.36455000e+05]
];

% oxygen data
DO = [
% corresponding oxygen values for each time/depth
];
Parameters
---
The following parameters are optional arguments for calculate_tau.m:

zlim: lower and upper depth bounds to perform optimization over, default is [25,175], dimensions (1, 2)
zres: resolution for profiles to be interpolated to, default is 1, dimensions (scalar)
tlim: lower and upper time constant bounds to perform optimization over, default is [0,100], dimensions (1, 2), OR, in T-dependent mode, the lower and upper bounds of boundary layer thickness
tres: resolution to linearly step through tlim, default is 1 dimensions (scalar)
Tref: only in T-dependent mode, reference temperature at which to report the derived time constant (scalar)

Test
---
In the test directory, the script test.m and data example_data.mat should run with no changes required. This gives a very base level example of how the functions work and the output.

Licensing
---
Please note that this code is provided as-is under the MIT license and is subject to periodic updates and improvements. If you are interested in contributing to this repository, please contact Christopher Gordon at Chris.Gordon@dfo-mpo.gc.ca.

Cite As

Gordon, C., Fennel, K., Richards, C., Shay, L. K., and Brewster, J. K.: Can ocean community production and respiration be determined by measuring high-frequency oxygen profiles from autonomous floats?, Biogeosciences Discuss., https://doi.org/10.5194/bg-2020-119, in review, 2020.

MATLAB Release Compatibility
Created with R2018a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Versions that use the GitHub default branch cannot be downloaded

Version Published Release Notes
1.1.5

See release notes for this release on GitHub: https://github.com/MEMG/optode-response-time/releases/tag/1.1.5

1.1.4

See release notes for this release on GitHub: https://github.com/MEMG/optode-response-time/releases/tag/1.1.4

1.1.3

See release notes for this release on GitHub: https://github.com/MEMG/optode-response-time/releases/tag/1.1.3

1.1.2

See release notes for this release on GitHub: https://github.com/MEMG/optode-response-time/releases/tag/1.1.2

1.1.1

See release notes for this release on GitHub: https://github.com/MEMG/optode-response-time/releases/tag/1.1.1

1.1

Temperature-dependent updates

1.0.3

Updated citation

1.0.2

Added citation, updated description

1.0.1

Updated description

1.0.0

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.