if( has_rave_subject("demo/DemoSubject") ) {
# ---- An use-case example ------------------------------------------------
# Install subject via install_subject("DemoSubject")
subject <- as_rave_subject("demo/DemoSubject")
# list all blocks
subject$blocks
repository <- prepare_subject_voltage_with_blocks(
subject,
electrodes = 13:16,
blocks = "008",
reference = "default"
)
print(repository)
repository$blocks
# get data
container <- repository$get_container()
# block data
container$`008`
lfp_list <- container$`008`$LFP
channel_sample_rate <- lfp_list$sample_rate
# Even we only load channels 14-16, all the channels are here for
# in case we want to use the cache for future purposes
lfp_list$dimnames$Electrode
# Plot all loaded channels
channel_sel <- lfp_list$dimnames$Electrode %in% c(14, 15, 16)
channel_signals <- lfp_list$data[, channel_sel,
drop = FALSE,
dimnames = FALSE]
ravetools::plot_signals(t(channel_signals),
sample_rate = channel_sample_rate,
channel_names = 14:16)
# Load channel 14 and plot pwelch
channel_sel <- lfp_list$dimnames$Electrode == 14
channel_signals <- lfp_list$data[, channel_sel,
drop = TRUE,
dimnames = FALSE]
ravetools::diagnose_channel(channel_signals,
srate = channel_sample_rate,
name = "Channel 14",
nclass = 30)
# ---- Use cache ---------------------------------------------------
subject <- as_rave_subject("demo/DemoSubject")
# Lazy-load block 008
repository <- prepare_subject_voltage_with_blocks(
subject,
electrodes = 13:16,
blocks = "008",
reference = "default",
lazy_load = TRUE # <-- trick
)
# Immediately load data with force=FALSE to use cache if exists
repository$mount_data(force = FALSE)
# ---- More examples ---------------------------------------------
subject <- as_rave_subject("demo/DemoSubject")
repository <- prepare_subject_power_with_blocks(
subject,
electrodes = 14,
blocks = "008",
reference_name = "default"
)
block_008 <- repository$power$`008`$LFP
channel_sel <- block_008$dimnames$Electrode == 14
# Drop electrode margin
power <- block_008$data[, , channel_sel,
drop = TRUE, dimnames = FALSE]
# global baseline
power_baselined_t <- 10 * log10(t(power))
power_baselined_t <- power_baselined_t - rowMeans(power_baselined_t)
ravetools::plot_signals(
power_baselined_t,
sample_rate = block_008$sample_rate,
channel_names = block_008$dimnames$Frequency,
space = 1,
start_time = 20,
duration = 30, ylab = "Frequency",
main = "Channel 14 - Power with Global Baseline (20-50 sec)"
)
}
Run the code above in your browser using DataLab