segment_fp_data {forceplate} | R Documentation |
Segmentation to Data per Trial
Description
Processing force-plate data by segmenting the data in trials, baseline correct each trial (optional),
applying a low-pass 4th order Butterworth filter (optional), labeling stimuli and response onsets
in each trial, labeling conditions in each trial, and some more (see below). The output is a
data.table
.
Usage
segment_fp_data(
filenames,
n.trials,
start.trigger,
baseline.trigger,
baseline.intv,
stimulus.trigger.list,
response.trigger.list,
cond.trigger.list,
skip = 19,
sampling.freq = 1000,
cutoff.freq = 10,
control = NULL
)
Arguments
filenames |
A (vector of) character(s) providing the raw force-plate file name(s). Files should be in tab-delimited .txt-format. |
n.trials |
A (vector of) number(s) providing the number of trial (per filename). |
start.trigger |
A (vector of) number(s) providing the trigger(s) marking the beginning of a trial. |
baseline.trigger |
A (vector of) number(s) providing the trigger number(s) providing the reference for
the interval for the baseline correction. For example, if set to 1 the onset of event with trigger 1 is
used as zero point for the next argument ( |
baseline.intv |
A vector of length 2 providing the lower and upper bounds of the interval that will be used as baseline interval (in milliseconds). For each measurement variable, the mean of the data points that fall into this interval will be subtracted from all data points within a trial. |
stimulus.trigger.list |
If a trial contains one task only, then a vector providing the trigger(s)
marking the onset of the stimulus. If a trial contains more than one task, then a named list of vectors
providing the trigger(s) marking the onset of stimuli. For example,
|
response.trigger.list |
Same as |
cond.trigger.list |
A named list of vectors providing the trigger(s) marking the conditions. |
skip |
A number giving the number of lines in the raw force-plate data to skip. In BioWare this is 19. The real data starts at line 20. Therefore the default value is set to 19. |
sampling.freq |
A number giving the sampling frequency. Typically 1000 Hz. |
cutoff.freq |
A number giving the cut-off frequency used for the low-pass 4th order Butterworth filter. If set to 0, no low-pass filter will be applied. Default is 10 Hz. |
control |
List of additional options:
|
Value
A data.table
of the class fp.segm
.
The following variables are included in the data.table
:
-
subj
: subject number, -
block
: block number, -
trial
: trial number, -
forceplate
: force-plate data of each trial asdata.table
. Use, for example,fp.dt$forceplate[[1]]
to open the force-plate data of the first trial, first block, and first subject.
Author(s)
Raphael Hartmann & Anton Koger
References
Johannsen, L., Stephan, D. N., Straub, E., Döhring, F., Kiesel, A., Koch, I., & Müller, H. (2023). Assessing the influence of cognitive response conflict on balance control: An event-related approach using response-aligned force-plate time series data. Psychological Research, 87, 2297–2315.
Winter, D. A. (2009). Biomechanics and Motor Control of Human Movement.
Examples
# Using example data from GitHub which requires internet
# takes longer than 5 seconds
if (curl::has_internet()) {
url <- paste0("https://raw.githubusercontent.com/RaphaelHartmann/forceplate/",
"main/data/subj013_block001.txt")
# Safe download, handling potential errors
tryCatch({
filenames <- tempfile(pattern = c("subj013_block001_"),
tmpdir = tempdir(), fileext = ".txt")
download.file(url, filenames)
# segment raw text file from Bioware
fp.dt <- segment_fp_data(filenames = filenames, n.trials = 80, baseline.trigger = 128,
baseline.intv = c(0, 215), start.trigger = 128,
stimulus.trigger.list = c(1, 2, 4, 8),
response.trigger.list = c(32, 64),
cond.trigger.list = list(stimulus = c(1, 2, 4, 8),
correctness = c(32, 64)),
control = list(prepend.ms = 0))
# Clean up
unlink(filenames)
}, error = function(e) {
message("Failed to download data: ", e$message)
})
}