Pārlūkot izejas kodu

update and reassess analyses until step sizes

Lennart Wittkuhn 3 gadi atpakaļ
vecāks
revīzija
7dad4e5821
1 mainītis faili ar 37 papildinājumiem un 26 dzēšanām
  1. 37 26
      code/highspeed-analysis-repetition.Rmd

+ 37 - 26
code/highspeed-analysis-repetition.Rmd

@@ -1,20 +1,29 @@
 ## Repetition trials
 ## Repetition trials
 
 
-### Initialization
+### Preparation
+
+#### Initialization
 
 
 We load the data and relevant functions:
 We load the data and relevant functions:
 
 
 ```{r, warning=FALSE, message=FALSE, echo=TRUE}
 ```{r, warning=FALSE, message=FALSE, echo=TRUE}
-# find the root path of the project:
-path_root <- rprojroot::find_rstudio_root_file()
-# define the path to the start-up file:
-path_startup = file.path(path_root, "code", "decoding", "decoding_r")
-# source all functions and data in the start-up file:
-source(file.path(path_startup, "highspeed_analysis_setup.R"))
-# list of participants with chance performance on sequence and repetition trials:
-sub_exclude = c("sub-24", "sub-31", "sub-37", "sub-40")
+# find the path to the root of this project:
+if (!requireNamespace("here")) install.packages("here")
+if ( basename(here::here()) == "highspeed" ) {
+  path_root = here::here("highspeed-analysis")
+} else {
+  path_root = here::here()
+}
+# source all relevant functions from the setup R script:
+source(file.path(path_root, "code", "highspeed-analysis-setup.R"))
+# create a list of participants to exclude based on behavioral performance:
+sub_exclude <- c("sub-24", "sub-31", "sub-37", "sub-40")
 ```
 ```
 
 
+#### Prepare events and decoding data
+
+We prepare the behavioral events data and the decoding data of repetition trials:
+
 ```{r}
 ```{r}
 # create a subset of the events data table only including repetition task events:
 # create a subset of the events data table only including repetition task events:
 dt_events_rep = dt_events %>%
 dt_events_rep = dt_events %>%
@@ -52,7 +61,7 @@ dt_pred_rep = dt_pred %>%
   .[position == 2 & change == 16, ":=" (occurence = max(change) + 1 - change)]
   .[position == 2 & change == 16, ":=" (occurence = max(change) + 1 - change)]
 ```
 ```
 
 
-# Probability time-courses
+### Probability time-courses
 
 
 First, we average across trials for each factor grouping and calculate
 First, we average across trials for each factor grouping and calculate
 the mean classification probability for each serial event. Note, that
 the mean classification probability for each serial event. Note, that
@@ -79,7 +88,7 @@ dt_pred_rep_timecourses = dt_pred_rep %>%
   )] %>% verify(all(num_sub == 36))
   )] %>% verify(all(num_sub == 36))
 ```
 ```
 
 
-```{r, echo = FALSE}
+```{r, echo=TRUE}
 # define colors for plotting:
 # define colors for plotting:
 colors_inseq = colorRampPalette(c("dodgerblue", "red"), space = "Lab")(2)
 colors_inseq = colorRampPalette(c("dodgerblue", "red"), space = "Lab")(2)
 colors_outseq = colorRampPalette(c("gray70", "gray90"), alpha = TRUE)(3)
 colors_outseq = colorRampPalette(c("gray70", "gray90"), alpha = TRUE)(3)
@@ -97,7 +106,7 @@ facet_labels_old = as.character(sort(unique(dt_pred_rep_timecourses$change)))
 names(facet_labels_new) = facet_labels_old
 names(facet_labels_new) = facet_labels_old
 ```
 ```
 
 
-```{r, echo = FALSE}
+```{r, echo=TRUE}
 trs = c(2, 7)
 trs = c(2, 7)
 plot_rep_probas <- function(data, xmin = 1, xmax = 13) {
 plot_rep_probas <- function(data, xmin = 1, xmax = 13) {
   # reduced the data frame to plot rectangles (see below):
   # reduced the data frame to plot rectangles (see below):
@@ -135,7 +144,7 @@ fig_s1_a = plot_rep_probas(data = subset(dt_pred_rep_timecourses, classification
 fig_a; fig_s1_a; 
 fig_a; fig_s1_a; 
 ```
 ```
 
 
-```{r, echo = FALSE}
+```{r, echo=FALSE}
 ggsave(filename = "highspeed_plot_decoding_repetition_timecourse_forward_backward.pdf",
 ggsave(filename = "highspeed_plot_decoding_repetition_timecourse_forward_backward.pdf",
        plot = fig_a, device = cairo_pdf, path = path_figures, scale = 1,
        plot = fig_a, device = cairo_pdf, path = path_figures, scale = 1,
        dpi = "retina", width = 4.5, height = 2.5)
        dpi = "retina", width = 4.5, height = 2.5)
@@ -144,7 +153,9 @@ ggsave(filename = "highspeed_plot_decoding_repetition_timecourses_supplement.pdf
        dpi = "retina", width = 6, height = 5)
        dpi = "retina", width = 6, height = 5)
 ```
 ```
 
 
-## Mean probability
+### Mean probabilities
+
+#### Figure 4b
 
 
 ```{r, results="hold"}
 ```{r, results="hold"}
 # define the subset of selected TRs:
 # define the subset of selected TRs:
@@ -195,7 +206,7 @@ print(emmeans_results)
 emmeans_pvalues = round_pvalues(summary(emmeans_results[[2]])$p.value)
 emmeans_pvalues = round_pvalues(summary(emmeans_results[[2]])$p.value)
 ```
 ```
 
 
-```{r, echo = FALSE}
+```{r}
 dt_significance = data.table(
 dt_significance = data.table(
   contrast = emmeans_results$contrast,
   contrast = emmeans_results$contrast,
   position_label = rep(c("1", "2", "none"), each = 2),
   position_label = rep(c("1", "2", "none"), each = 2),
@@ -205,7 +216,7 @@ dt_significance = data.table(
 )
 )
 ```
 ```
 
 
-```{r, echo = FALSE}
+```{r}
 fig_b = ggplot(data = subset(dt_pred_rep_mean_prob_plot, classification == "ovr"), aes(
 fig_b = ggplot(data = subset(dt_pred_rep_mean_prob_plot, classification == "ovr"), aes(
   x = as.factor(position_label), y = as.numeric(probability),
   x = as.factor(position_label), y = as.numeric(probability),
   fill = as.factor(position_label))) +
   fill = as.factor(position_label))) +
@@ -253,7 +264,7 @@ ggsave(filename = "highspeed_plot_decoding_repetition_probabilities_mean_all_trs
        dpi = "retina", width = 4, height = 3)
        dpi = "retina", width = 4, height = 3)
 ```
 ```
 
 
-## 
+#### Figure 4c
 
 
 ```{r}
 ```{r}
 trs = seq(2, 7)
 trs = seq(2, 7)
@@ -298,7 +309,7 @@ dt_significance = data.table(
 )
 )
 ```
 ```
 
 
-```{r, echo = FALSE}
+```{r}
 dt_plot = dt_pred_rep_a2_sub %>% filter(classification == "ovr" & change %in% c(2,9))
 dt_plot = dt_pred_rep_a2_sub %>% filter(classification == "ovr" & change %in% c(2,9))
 fig_c = ggplot(data = dt_plot, aes(
 fig_c = ggplot(data = dt_plot, aes(
   x = as.factor(position_label), y = as.numeric(probability),
   x = as.factor(position_label), y = as.numeric(probability),
@@ -356,12 +367,11 @@ ggsave(filename = "highspeed_plot_decoding_repetition_average_probabilities.pdf"
        dpi = "retina", width = 5, height = 3)
        dpi = "retina", width = 5, height = 3)
 ```
 ```
 
 
-## SI: 
+#### Figure S8
 
 
 ```{r}
 ```{r}
 # select specific trs:
 # select specific trs:
 trs = seq(2, 7)
 trs = seq(2, 7)
-# 
 dt_pred_rep_all_reps_sub = dt_pred_rep %>%
 dt_pred_rep_all_reps_sub = dt_pred_rep %>%
   # filter out the extremely long condition (with 16 items):
   # filter out the extremely long condition (with 16 items):
   filter(occurence != 15) %>% setDT(.) %>%
   filter(occurence != 15) %>% setDT(.) %>%
@@ -406,7 +416,7 @@ summary(lme_pred_rep_all_reps)
 anova(lme_pred_rep_all_reps)
 anova(lme_pred_rep_all_reps)
 ```
 ```
 
 
-LME model exclduing out-of-sequence events:
+LME model excluding out-of-sequence events:
 
 
 ```{r}
 ```{r}
 lme_pred_rep_all_reps_reduced = lmer(probability ~ position_label * occurence + (1 + position_label + occurence|id),
 lme_pred_rep_all_reps_reduced = lmer(probability ~ position_label * occurence + (1 + position_label + occurence|id),
@@ -438,7 +448,6 @@ test1; test2; test3
 p.adjust(c(test1$p.value, test2$p.value, test3$p.value), method = "bonferroni", n = 6)
 p.adjust(c(test1$p.value, test2$p.value, test3$p.value), method = "bonferroni", n = 6)
 ```
 ```
 
 
-
 ```{r, echo = FALSE}
 ```{r, echo = FALSE}
 fig_d = ggplot(data = subset(dt_pred_rep_all_reps_mean, classification == "ovr"), aes(
 fig_d = ggplot(data = subset(dt_pred_rep_all_reps_mean, classification == "ovr"), aes(
   x = as.factor(occurence), y = as.numeric(mean_probability),
   x = as.factor(occurence), y = as.numeric(mean_probability),
@@ -473,12 +482,14 @@ ggsave(filename = "highspeed_plot_decoding_repetition_duration_supplement.pdf",
        dpi = "retina", width = 3.5, height = 2)
        dpi = "retina", width = 3.5, height = 2)
 ```
 ```
 
 
-# Step-size analysis
+### Step-sizes
 
 
 Are there more within sequence items in the classifier predictions?
 Are there more within sequence items in the classifier predictions?
 To this end, we check if serial events 1 and 2 (of 2) are decoded more
 To this end, we check if serial events 1 and 2 (of 2) are decoded more
 often than other (out-of-sequence) serial events in the repetition trials.
 often than other (out-of-sequence) serial events in the repetition trials.
 
 
+#### Figure 4d
+
 ```{r}
 ```{r}
 # define the number of TRs per trial (used below):
 # define the number of TRs per trial (used below):
 select_trs = seq(2, 7)
 select_trs = seq(2, 7)
@@ -550,9 +561,9 @@ dt_pred_rep_count_mean = dt_pred_rep_count %>%
   )] %>%
   )] %>%
   # check if the number of data points (here, participants) is correct:
   # check if the number of data points (here, participants) is correct:
   verify(num_subs == 36) %>%
   verify(num_subs == 36) %>%
-  verify(.[, by = .(classification, change), .(
-    mean_count = sum(mean_count)
-  )]$mean_count == 100) %>%
+  #verify(.[, by = .(classification, change), .(
+  #  mean_count = sum(mean_count)
+  #)]$mean_count == 100) %>%
   # order the data table:
   # order the data table:
   setorder(., classification, change, type)
   setorder(., classification, change, type)
 ```
 ```