figure_3.Rmd 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. ---
  2. title: "Spacek et al., 2021, Figure 3"
  3. output: pdf_document
  4. ---
  5. ```{r setup, include=FALSE}
  6. knitr::opts_chunk$set(echo = TRUE)
  7. library(arm)
  8. library(lmerTest)
  9. library(tidyverse)
  10. source('get_data.R')
  11. ```
  12. ```{r read_data, include=FALSE}
  13. tib = get_data("../csv/fig3.csv")
  14. ```
  15. ```{r tidy, include = FALSE}
  16. # Transform opto's "false" and "true" into a binary, numeric predictor
  17. tb <- tib %>% mutate(feedback = ifelse(opto == TRUE, 0, 1))
  18. ```
  19. # Figure 3c
  20. ## Feedback effects on firing rate
  21. ```{r fit_model_3c}
  22. # Random-intercept, random-slope for single neurons,
  23. # random intercept for experiments, nested in series
  24. lmer.3c = lmer(rates ~ feedback + (1 + feedback | uid) + (1 | sid/eid),
  25. data = tb %>% drop_na(rates))
  26. display(lmer.3c)
  27. anova(lmer.3c)
  28. ```
  29. ```{r predicted_average_effect_3c, include=F}
  30. mSuppr = fixef(lmer.3c)[1]
  31. diffMeans = fixef(lmer.3c)[2]
  32. mActive = fixef(lmer.3c)[1] + diffMeans
  33. ```
  34. Feedback: `r format(mActive, digits=1, nsmall=1)` spikes/s \newline
  35. Suppression: `r format(mSuppr, digits=1, nsmall=1)` spikes/s \newline
  36. n = `r nrow(tb %>% drop_na(rates) %>% count(uid))` neurons from `r nrow(tb %>% drop_na(rates) %>% count(mid))` mice
  37. \newpage
  38. # Figure 3d
  39. ## Feedback effects on burst ratio
  40. ```{r fit_model_3d}
  41. # Random-intercept, random-slope for single neurons,
  42. # random intercept for experiments, nested in series
  43. lmer.3d = lmer(burstratios ~ feedback + (1 + feedback | uid) + (1 | sid/eid),
  44. data = tb %>% drop_na(burstratios))
  45. display(lmer.3d)
  46. anova(lmer.3d)
  47. ```
  48. ```{r predicted_average_effect_3d, include=F}
  49. mSuppr = fixef(lmer.3d)[1]
  50. diffMeans = fixef(lmer.3d)[2]
  51. mActive = fixef(lmer.3d)[1] + diffMeans
  52. ```
  53. Feedback: `r format(mActive, digits=2, nsmall=2)` \newline
  54. Suppression: `r format(mSuppr, digits=2, nsmall=2)` \newline
  55. n = `r nrow(tb %>% drop_na(burstratios) %>% count(uid))` neurons from `r nrow(tb %>% drop_na(burstratios) %>% count(mid))` mice
  56. \newpage
  57. # Figure 3e
  58. ## Feedback effects on orientation selectivity
  59. ```{r, tidy_for_3eg, include=FALSE}
  60. # 'Orientation selectivity', and 'F1/F0 ratio' are not computed on a trial-by-trial basis. In the csv-file,
  61. # these two measures are therefore identical across trials, so we simply pull out the first trial of each neuron
  62. tbeg = tb %>% select(mid, sid, eid, uid, mseu, feedback, osi, f1f0) %>% distinct(mseu, feedback, .keep_all = TRUE)
  63. ```
  64. ```{r fit_model_3e}
  65. # Random-intercept for single neurons,
  66. # random intercept for experiments, nested in series
  67. lmer.3e = lmer(osi ~ feedback + (1 | uid) + (1 | sid/eid),
  68. data = tbeg %>% drop_na(osi))
  69. display(lmer.3e)
  70. anova(lmer.3e)
  71. ```
  72. ```{r predicted_average_effect_3e, include=F}
  73. mSuppr = fixef(lmer.3e)[1]
  74. diffMeans = fixef(lmer.3e)[2]
  75. mActive = fixef(lmer.3e)[1] + diffMeans
  76. ```
  77. Feedback: OSI = `r format(mActive, digits=2, nsmall=2)` \newline
  78. Suppression: OSI = `r format(mSuppr, digits=2, nsmall=2)` \newline
  79. n = `r nrow(tbeg %>% drop_na(osi) %>% count(uid))` neurons from `r nrow(tbeg %>% drop_na(osi) %>% count(mid))` mice
  80. \newpage
  81. # Figure 3g
  82. ## Feedback effects on F1/F0-ratio
  83. ```{r fit_model_3g}
  84. # Random intercept, random slope for single neurons,
  85. # random intercept for series
  86. lmer.3g = lmer(f1f0 ~ feedback + (1 + feedback | uid) + (1 | sid),
  87. data = tbeg %>% drop_na(f1f0))
  88. display(lmer.3g)
  89. anova(lmer.3g)
  90. ```
  91. ```{r predicted_average_effect_3g, include=F}
  92. mSuppr = fixef(lmer.3g)[1]
  93. diffMeans = fixef(lmer.3g)[2]
  94. mActive = fixef(lmer.3g)[1] + diffMeans
  95. ```
  96. Feedback: $F_1/F_0$-ratio = `r format(mActive, digits=2, nsmall=2)` \newline
  97. Suppression: $F_1/F_0$-ratio = `r format(mSuppr, digits=2, nsmall=2)` \newline
  98. n = `r nrow(tbeg %>% drop_na(f1f0) %>% count(uid))` neurons from `r nrow(tbeg %>% drop_na(f1f0) %>% count(mid))` mice
  99. \newpage
  100. # Figure 3i
  101. ## Feedback effects on distribution of cycle average phase differences
  102. ```{r tidy_3i, include=F}
  103. # Remove redundant rows, select relevant variables
  104. tb3i <- tib %>% filter(opto == "TRUE") %>% select(mid, sid, eid, uid, mseu, dbphi, dnbphi) %>% distinct(mseu, .keep_all = TRUE)
  105. # Grab bursting phis
  106. tb3i_db = tb3i %>% filter(dbphi != "NA")
  107. # Grab non-bursting phis
  108. tb3i_dnb = tb3i %>% filter(dnbphi != "NA")
  109. ```
  110. ```{r test_3i_bursting}
  111. # Of all bursting phis, how many are phase-advanced?
  112. b_adv = sum(tb3i_db$dbphi > 0)
  113. resb = binom.test(b_adv, length(tb3i_db$dbphi), 0.5)
  114. print(resb)
  115. ```
  116. \vspace{0.5cm}
  117. ```{r test_3i_non_bursting}
  118. # Of all non-bursting phis, how many are phase-advanced?
  119. nb_adv = sum(tb3i_dnb$dnbphi > 0)
  120. resnb = binom.test(nb_adv, length(tb3i_dnb$dnbphi), 0.5)
  121. print(resnb)
  122. ```