segmentPattern {adept}  R Documentation 
Segment pattern from a timeseries x
via Adaptive Empirical Pattern
Transformation (ADEPT).
segmentPattern( x, x.fs, template, pattern.dur.seq, similarity.measure = "cov", similarity.measure.thresh = 0, x.adept.ma.W = NULL, finetune = NULL, finetune.maxima.ma.W = NULL, finetune.maxima.nbh.W = NULL, run.parallel = FALSE, run.parallel.cores = 1L, x.cut = TRUE, x.cut.vl = 6000, compute.template.idx = FALSE )
x 
A numeric vector. A timeseries to segment pattern from. 
x.fs 
A numeric scalar. Frequency at which a timeseries 
template 
A list of numeric vectors, or a numeric vector. Each vector represents a distinct pattern template used in segmentation. 
pattern.dur.seq 
A numeric vector. A grid of potential pattern durations used in segmentation. Expressed in seconds. See: Details. 
similarity.measure 
A character scalar. Statistic used to compute similarity
between a timeseries
Default is 
similarity.measure.thresh 
A numeric scalar. Threshold of minimal similarity
value between a timeseries 
x.adept.ma.W 
A numeric scalar.
A length of a window used in moving average smoothing of a timeseries 
finetune 
A character scalar. A type of finetuning procedure employed in
segmentation. Defaults to

finetune.maxima.ma.W 
A numeric scalar.
A length of a window used in moving average smoothing of a timeseries 
finetune.maxima.nbh.W 
A numeric scalar.
A length of the two neighborhoods centered at preliminarily identified
beginning and end of a pattern
within which we search for local maxima of 
run.parallel 
A logical scalar. Whether or not to use parallel execution in the algorithm
with 
run.parallel.cores 
An integer scalar. The number of cores to use for parallel execution. Defaults to 1L (no parallel). DOES NOT WORK ON WINDOWS. 
x.cut 
A logical scalar. Whether or not to use time optimization procedure in
which a timeseries 
x.cut.vl 
An integer scalar.
Defines a vector length of parts that 
compute.template.idx 
A logical scalar. Whether or not to compute and return information about
which of the provided pattern templates yielded a similarity matrix value
that corresponds to an identified pattern occurrence.
Setting to 
Function implements Adaptive Empirical Pattern Transformation (ADEPT) method for pattern segmentation
from a timeseries x
.
ADEPT is optimized to perform fast, accurate walking strides segmentation from
highdensity data collected with a wearable accelerometer during walking.
ADEPT identifies patterns in a timeseries x
via maximization of chosen
similarity statistic (correlation, covariance, etc.) between a timeseries x
and a pattern template(s). It accounts for variability in both
(1) pattern duration and (2) pattern shape.
A data.frame
with segmentation results. Each row
describes one identified pattern occurrence:
tau_i
 index of x
where pattern starts,
T_i
 pattern duration, expressed in x
vector length,
sim_i
 similarity between a pattern and x
;
note: if "maxima"
finetune and/or x
smoothing is employed,
the similarity value between the final segmented pattern and a template
may differ from the value in this table,
template_i
 if compute.template.idx
equals TRUE
:
index of a template best matched to x
;
if compute.template.idx
equals FALSE
: NA
.
Karas, M., Straczkiewicz, M., Fadel, W., Harezlak, J., Crainiceanu, C.M., Urbanek, J.K. (2019). Adaptive empirical pattern transformation (ADEPT) with application to walking stride segmentation. Biostatistics. https://doi.org/10.1093/biostatistics/kxz033
## Example 1: Simulate a timeseries `x`. Assume that ##  `x` is collected at a frequency of 100 Hz, ##  there is one shape of pattern present within `x`, ##  each pattern lasts 1 second, ##  there is no noise in the collected data. true.pattern < cos(seq(0, 2 * pi, length.out = 100)) x < c(true.pattern[1], replicate(10, true.pattern[1])) ## Segment pattern from x. out < segmentPattern( x = x, x.fs = 100, template = true.pattern, pattern.dur.seq = c(0.9, 0.95, 1.03, 1.1), similarity.measure = "cor", compute.template.idx = TRUE) out ## Segment pattern from x. Now assume a grid of potential pattern duratios ## contains true pattern duration out < segmentPattern( x = x, x.fs = 100, template = true.pattern, pattern.dur.seq = c(0.9, 0.95, 1, 1.03, 1.1), similarity.measure = "cor", compute.template.idx = TRUE) out ## Example 2: Simulate a timeseries `x`. Assume that ##  `x` is collected at a frequency of 100 Hz, ##  there are two shapes of pattern present within `x`, ##  patterns have various duration, ##  there is no noise in the collected data. true.pattern.1 < cos(seq(0, 2 * pi, length.out = 200)) true.pattern.2 < true.pattern.1 true.pattern.2[70:130] < 2 * true.pattern.2[min(70:130)] + abs(true.pattern.2[70:130]) x < numeric() for (vl in seq(70, 130, by = 10)){ true.pattern.1.s < approx( seq(0, 1, length.out = 200), true.pattern.1, xout = seq(0, 1, length.out = vl))$y true.pattern.2.s < approx( seq(0, 1, length.out = 200), true.pattern.2, xout = seq(0, 1, length.out = vl))$y x < c(x, true.pattern.1.s[1], true.pattern.2.s[1]) if (vl == 70) x < c(true.pattern.1.s[1], x) } ## Segment pattern from x. Use a `template` object consisting of both ## true patterns used in `x` simulation. out < segmentPattern( x = x, x.fs = 100, template = list(true.pattern.1, true.pattern.2), pattern.dur.seq = 60:130 * 0.01, similarity.measure = "cor", compute.template.idx = TRUE) out ## Example 3: Simulate a timeseries `x`. Assume that ##  `x` is collected at a frequency of 100 Hz, ##  there are two shapes of a pattern present within `x`, ##  patterns have various duration, ##  there is noise in the collected data. set.seed(1) x < x + rnorm(length(x), sd = 0.5) ## Segment pattern from x. out < segmentPattern( x = x, x.fs = 100, template = list(true.pattern.1, true.pattern.2), pattern.dur.seq = 60:130 * 0.01, similarity.measure = "cor", compute.template.idx = TRUE) out ## Segment pattern from x. Use `x.adept.ma.W` to define a length of a smoothing ## window to smooth `x` for similarity matrix computation. out < segmentPattern( x = x, x.fs = 100, template = list(true.pattern.1, true.pattern.2), pattern.dur.seq = 60:130 * 0.01, similarity.measure = "cor", x.adept.ma.W = 0.1, compute.template.idx = TRUE) out ## Segment pattern from x. Use `x.adept.ma.W` to define a length of a smoothing ## window to smooth `x` for similarity matrix computation. Employ a finetuning ## procedure for stride identification. out < segmentPattern( x = x, x.fs = 100, template = list(true.pattern.1, true.pattern.2), pattern.dur.seq = 60:130 * 0.01, similarity.measure = "cor", x.adept.ma.W = 0.1, finetune = "maxima", finetune.maxima.nbh.W = 0.3, compute.template.idx = TRUE) out ## Segment pattern from x. Employ a finetuning procedure for stride ## identification. Smooth `x` for both similarity matrix computation ## (set `x.adept.ma.W = 0.1`) and for finetune peak detection procedure ## (set `finetune.maxima.nbh.W = 0.3`). out < segmentPattern( x = x, x.fs = 100, template = list(true.pattern.1, true.pattern.2), pattern.dur.seq = 60:130 * 0.01, similarity.measure = "cor", x.adept.ma.W = 0.1, finetune = "maxima", finetune.maxima.nbh.W = 0.3, compute.template.idx = TRUE) out