draw_eye_epochs <- function(experiment){
if(is.character(experiment)){
if(file.exists(paste0(experiment, "/experiment.RData")))
load(paste0(experiment, "/experiment.RData"))
else
load(experiment)
}
for(i in 1:length(experiment)){
if(experiment[[i]]$file_data$record_type == 'test'){
end_epoch <- experiment[[i]]$file_data$process_settings$end_epoch / 1000 * experiment[[i]]$eeg_data$sampling_rate
eye_sampling_rate <- experiment[[1]]$file_data$eye_sampling_rate
break
}
}
summary_list <- list()
for(exp in experiment) {
for( i in 1:nrow(exp$events)){
if(length(exp$eye_data)) {
E <- exp$events[i,]
eye <- exp$eye_data[[i]]
if(E$false_alarm) next
clf_response <-
if(E$quick_fixation) {
if(E$activation)
'true_positive'
else
'true_negative'
} else {
if(E$activation) 'false_negative'
}
summary_list[[clf_response]][[E$field_type]] <- c(summary_list[[clf_response]][[E$field_type]], list(
data.frame(
t=seq(length=nrow(eye), to=end_epoch)*1000/eye_sampling_rate,
x = eye$x,
y= eye$y,
speed = c(sqrt( (diff(eye$x)^2) + (diff(eye$y)^2) ), 0)
)
))
}
}
}
df_for_plot <- c()
for(resp in names(summary_list)) {
for(event in names(summary_list[[resp]])){
data <- summary_list[[resp]][[event]]
minT <- max(sapply(data, function(X) min(X$t)))
N <- abind(lapply(data, function(X){
X[X$t >= minT,]
}), along=3)
M <- rowMeans(N,T, dims=2)
dimnames(M) <- list(M[,'t'], c('t','x','y','speed'))
#ret <- melt(M[,c('speed')], value.name="coord")
#colnames(ret) <- c('time', 'axis', 'coord')
ret <- data.frame(time=M[,'t'], coord=M[,'speed'])
ret$event = event
ret$clf_response = resp
df_for_plot <- rbind(df_for_plot, ret)
}
}
df_for_plot$clf_response <- factor(df_for_plot$clf_response,
levels=c('true_positive','true_negative','false_negative'))
ggplot(df_for_plot, aes(x=time, y=coord)) + geom_line(aes(color = 1))+
geom_vline(xintercept = 0, colour="seagreen4") +
facet_grid(event ~ clf_response) +
ylab("") +
theme(legend.position="none") +
ggtitle(paste0("Eye epochs in experiment ", str_filter(experiment[[1]]$file_data$filename_edf, '.+/([[:digit:]]+)/[[:digit:]]+.edf')[[1]][2]))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.