ctdFindProfiles | R Documentation |
Examine the pressure record looking for extended periods of either ascent or descent, and return either indices to these events or a vector of CTD records containing the events.
ctdFindProfiles(
x,
cutoff = 0.5,
minLength = 10,
minHeight,
smoother = smooth.spline,
direction = c("descending", "ascending"),
breaks,
arr.ind = FALSE,
distinct,
debug = getOption("oceDebug"),
...
)
x |
a ctd object. |
cutoff |
criterion on pressure difference; see “Details”. If not provided, this defaults to 0.5. |
minLength |
lower limit on number of points in candidate profiles. If not provided, this defaults to 10. |
minHeight |
lower limit on height of candidate profiles. If not provided, this defaults to 0.1 times the pressure span. |
smoother |
The smoothing function to use for identifying down/up
casts. The default is |
direction |
String indicating the travel direction to be selected. |
breaks |
optional integer vector indicating the indices of last
datum in each profile stored within |
arr.ind |
logical value indicating whether the array indices should be returned; the alternative is to return a vector of ctd objects. |
distinct |
An optional string indicating how to identify profiles
by unique values. Use |
debug |
an integer specifying whether debugging information is
to be printed during the processing. This is a general parameter that
is used by many |
... |
Optional extra arguments that are passed to the smoothing function, |
The method works by examining the pressure record. First, this is smoothed using
smoother()
(see “Arguments”), and then the result is first-differenced
using diff()
. Median values of the positive and
negative first-difference values are then multiplied by cutoff
. This establishes criteria
for any given point to be in an ascending profile, a descending profile, or a non-profile.
Contiguous regions are then found, and those that have fewer than minLength
points are
discarded. Then, those that have pressure ranges less than minHeight
are discarded.
Caution: this method is not well-suited to all datasets. For example, the default
value of smoother
is smooth.spline()
, and this works well for just a few
profiles, but poorly for a tow-yo with a long sequence of profiles; in the latter case,
it can be preferable to use simpler smoothers (see “Examples”). Also, depending
on the sampling protocol, it is often necessary to pass the resultant profiles through
ctdTrim()
, to remove artifacts such as an equilibration phase, etc.
Generally, one is well-advised to use the present function for a quick look at the data,
relying on e.g. plotScan()
to identify profiles visually, for a final product.
If arr.ind=TRUE
, a data frame with columns start
and end
, the indices
of the downcasts. Otherwise, a vector of ctd
objects. In this second case,
the station names are set to a form like "10/3"
, for the third profile within an
original ctd object with station name "10"
, or to "3"
, if the original
ctd object had no station name defined.
library(oce) # These examples cannot be tested, because they are based on # data objects that are not provided with oce. # Example 1. Find profiles within a towyo file, as can result # if the CTD is cycled within the water column as the ship # moves. profiles <- ctdFindProfiles(towyo) # Example 2. Use a moving average to smooth pressure, instead of the # default smooth.spline() method. This might avoid a tendency of # the default scheme to miss some profiles in a long towyo. movingAverage <- function(x, n = 11, ...) { f <- rep(1/n, n) stats::filter(x, f, ...) } casts <- ctdFindProfiles(towyo, smoother=movingAverage) # Example 3: glider data read into a ctd object. Chop # into profiles by looking for pressure jumps exceeding # 10 dbar. breaks <- which(diff(gliderAsCtd[["pressure"]]) > 10) profiles <- ctdFindProfiles(gliderAsCtd, breaks=breaks)
Dan Kelley and Clark Richards
The documentation for ctd explains the structure of CTD objects, and also outlines the other functions dealing with them.
Other things related to ctd data:
CTD_BCD2014666_008_1_DN.ODF.gz
,
[[,ctd-method
,
[[<-,ctd-method
,
as.ctd()
,
cnvName2oceName()
,
ctd
,
ctd-class
,
ctd.cnv.gz
,
ctdDecimate()
,
ctdFindProfilesRBR()
,
ctdRaw
,
ctdRepair()
,
ctdTrim()
,
ctd_aml.csv.gz
,
d200321-001.ctd.gz
,
d201211_0011.cnv.gz
,
handleFlags,ctd-method
,
initialize,ctd-method
,
initializeFlagScheme,ctd-method
,
oceNames2whpNames()
,
oceUnits2whpUnits()
,
plot,ctd-method
,
plotProfile()
,
plotScan()
,
plotTS()
,
read.ctd()
,
read.ctd.aml()
,
read.ctd.itp()
,
read.ctd.odf()
,
read.ctd.odv()
,
read.ctd.saiv()
,
read.ctd.sbe()
,
read.ctd.ssda()
,
read.ctd.woce()
,
read.ctd.woce.other()
,
setFlags,ctd-method
,
subset,ctd-method
,
summary,ctd-method
,
woceNames2oceNames()
,
woceUnit2oceUnit()
,
write.ctd()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.