figure_5.Rmd 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. ---
  2. title: "Spacek et al., 2021, Figure 5"
  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/fig5.csv")
  14. ```
  15. ```{r tidy, include = FALSE}
  16. # Transform columns st8 and opto into binary, numerical predictors
  17. tb = tib %>% mutate(run = ifelse(st8 == "run", 1, 0))
  18. tb = tb %>% mutate(feedback = ifelse(opto == "TRUE", 0, 1))
  19. tbf = tb %>% filter(feedback == 1) # feedback, panels c-f
  20. tbs = tb %>% filter(feedback == 0) # suppression, panels i-l
  21. ```
  22. # Figure 5c
  23. ## Effect of locomotion state on firing rate
  24. ```{r fit_model_5c}
  25. # Random intercept, random slope for neurons,
  26. # random intercept for experiments, nested in series
  27. lmer.5c = lmer(rates ~ run + (1 + run | uid) + (1 | sid/eid),
  28. data = tbf %>% drop_na(rates))
  29. display(lmer.5c)
  30. anova(lmer.5c)
  31. ```
  32. ```{r get_predicted_average_effect_5c, include=F}
  33. mSit = fixef(lmer.5c)[1]
  34. diffMeans = fixef(lmer.5c)[2]
  35. mRun = fixef(lmer.5c)[1] + diffMeans
  36. ```
  37. Running: `r format(mRun, digits=1, nsmall=1)` spikes/s \newline
  38. Sitting: `r format(mSit, digits=1, nsmall=1)` spikes/s \newline
  39. n = `r nrow(tbf %>% drop_na(rates) %>% count(uid))` neurons from `r nrow(tbf %>% drop_na(rates) %>% count(mid))` mice
  40. \newpage
  41. # Figure 5d
  42. ## Effect of locomotion state on burst ratio
  43. ```{r fit_model_5d}
  44. # Random intercept, random slope for neurons,
  45. # random intercept for experiments, nested in series
  46. lmer.5d = lmer(burstratios ~ run + (1 + run | uid) + (1 | sid/eid),
  47. data = tbf %>% drop_na(burstratios))
  48. display(lmer.5d)
  49. anova(lmer.5d)
  50. ```
  51. ```{r get_predicted_average_effect_5d, include=F}
  52. mSit = fixef(lmer.5d)[1]
  53. diffMeans = fixef(lmer.5d)[2]
  54. mRun = fixef(lmer.5d)[1] + diffMeans
  55. ```
  56. Running: `r format(mRun, digits=2, nsmall=2)` \newline
  57. Sitting: `r format(mSit, digits=2, nsmall=2)` \newline
  58. n = `r nrow(tbf %>% drop_na(burstratios) %>% count(uid))` neurons from `r nrow(tbf %>% drop_na(burstratios) %>% count(mid))` mice
  59. \newpage
  60. # Figure 5e
  61. ## Effect of locomotion state on sparseness
  62. ```{r tidy_for_5ef, include=FALSE}
  63. # 'Sparseness', and 'reliability' are not computed on a trial-by-trial basis. In the csv-file,
  64. # these two measures are therefore identical across trials, so we simply pull out the first trial of each neuron
  65. tbfef = tbf %>% select(mid, sid, eid, uid, mseu, run, spars, rel) %>% distinct(mseu, run, .keep_all = TRUE)
  66. ```
  67. ```{r fit_model_5e}
  68. # Random intercept for neurons,
  69. # random intercept for experiments, nested in series
  70. lmer.5e = lmer(spars ~ run + (1 | uid) + (1 | sid/eid),
  71. data = tbfef %>% drop_na(spars))
  72. display(lmer.5e)
  73. anova(lmer.5e)
  74. ```
  75. ```{r get_predicted_average_effect_5e, include=F}
  76. mSit = fixef(lmer.5e)[1]
  77. diffMeans = fixef(lmer.5e)[2]
  78. mRun = fixef(lmer.5e)[1] + diffMeans
  79. ```
  80. Running: `r format(mRun, digits=2, nsmall=2)` \newline
  81. Sitting: `r format(mSit, digits=2, nsmall=2)` \newline
  82. n = `r nrow(tbfef %>% drop_na(spars) %>% count(uid))` neurons from `r nrow(tbfef %>% drop_na(spars) %>% count(mid))` mice
  83. \newpage
  84. # Figure 5f
  85. ## Effect of locomotion state on reliability
  86. ```{r fit_model_5f}
  87. # Random intercept for neurons,
  88. # random intercept for experiments, nested in series
  89. lmer.5f = lmer(rel ~ run + (1 | uid) + (1 | sid/eid),
  90. data = tbfef %>% drop_na(rel))
  91. display(lmer.5f)
  92. anova(lmer.5f)
  93. ```
  94. ```{r get_predicted_average_effect_5f, include=F}
  95. mSit = fixef(lmer.5f)[1]
  96. diffMeans = fixef(lmer.5f)[2]
  97. mRun = fixef(lmer.5f)[1] + diffMeans
  98. ```
  99. Running: `r format(mRun, digits=2, nsmall=2)` \newline
  100. Sitting: `r format(mSit, digits=2, nsmall=2)` \newline
  101. n = `r nrow(tbfef %>% drop_na(rel) %>% count(uid))` neurons from `r nrow(tbfef %>% drop_na(rel) %>% count(mid))` mice
  102. \newpage
  103. # Figure 5i
  104. ## Effect of locomotion state on firing rate during V1 suppression
  105. ```{r fit_model_5i}
  106. # Random intercept, random slope for neurons,
  107. # random intercept for experiments nested in series
  108. lmer.5i = lmer(rates ~ run + (1 + run | uid) + (1 | sid/eid),
  109. data = tbs %>% drop_na(rates))
  110. display(lmer.5i)
  111. anova(lmer.5i)
  112. ```
  113. ```{r get_predicted_average_effect_5i, include=F}
  114. mSit = fixef(lmer.5i)[1]
  115. diffMeans = fixef(lmer.5i)[2]
  116. mRun = fixef(lmer.5i)[1] + diffMeans
  117. ```
  118. Running: `r format(mRun, digits=1, nsmall=1)` spikes/s \newline
  119. Sitting: `r format(mSit, digits=1, nsmall=1)` spikes/s \newline
  120. n = `r nrow(tbs %>% drop_na(rates) %>% count(uid))` neurons from `r nrow(tbs %>% drop_na(rates) %>% count(mid))` mice
  121. \newpage
  122. # Figure 5j
  123. ## Effect of locomotion state on burst ratio during V1 suppression
  124. ```{r fit_model_5j}
  125. # Random intercept, random slope for neurons,
  126. # random intercept for experiments, nested in series
  127. lmer.5j = lmer(burstratios ~ run + (1 + run | uid) + (1 | sid/eid),
  128. data = tbs %>% drop_na(burstratios))
  129. display(lmer.5j)
  130. anova(lmer.5j)
  131. ```
  132. ```{r get_predicted_average_effect_5j, include=F}
  133. mSit = fixef(lmer.5j)[1]
  134. diffMeans = fixef(lmer.5j)[2]
  135. mRun = fixef(lmer.5j)[1] + diffMeans
  136. ```
  137. Running: `r format(mRun, digits=2, nsmall=2)` \newline
  138. Sitting: `r format(mSit, digits=2, nsmall=2)` \newline
  139. n = `r nrow(tbs %>% drop_na(burstratios) %>% count(uid))` neurons from `r nrow(tbs %>% drop_na(burstratios) %>% count(mid))` mice
  140. ```{r tidy_for_5kl, include=FALSE}
  141. # 'Sparseness', and 'reliability' are not computed on a trial-by-trial basis. In the csv-file,
  142. # these two measures are therefore identical across trials, so we simply pull out the first trial of each neuron
  143. tbskl = tbs %>% select(mid, sid, eid, uid, mseu, run, spars, rel) %>% distinct(mseu, run, .keep_all = TRUE)
  144. ```
  145. \newpage
  146. # Figure 5k
  147. ## Effect of locomotion state on sparseness during V1 suppression
  148. ```{r fit_model_5k}
  149. # Random intercept for neurons,
  150. # random intercept for experiments, nested in series, nested in mice
  151. lmer.5k = lmer(spars ~ run + (1 | uid) + (1 | mid/sid/eid),
  152. data = tbskl %>% drop_na(spars))
  153. display(lmer.5k)
  154. anova(lmer.5k)
  155. ```
  156. ```{r get_predicted_average_change_5k, include=F}
  157. mSit = fixef(lmer.5k)[1]
  158. diffMeans = fixef(lmer.5k)[2]
  159. mRun = fixef(lmer.5k)[1] + diffMeans
  160. ```
  161. Running: `r format(mRun, digits=2, nsmall=2)` \newline
  162. Sitting: `r format(mSit, digits=2, nsmall=2)` \newline
  163. n = `r nrow(tbskl %>% drop_na(spars) %>% count(uid))` neurons from `r nrow(tbskl %>% drop_na(spars) %>% count(mid))` mice
  164. \newpage
  165. # Figure 5l
  166. ## Effect of locomotion state on reliability during V1 suppression
  167. ```{r fit_model_5l}
  168. # Random intercept for neurons,
  169. # random intercept for experiments, nested in series
  170. lmer.5l = lmer(rel ~ run + (1 | uid) + (1 | sid/eid),
  171. data = tbskl %>% drop_na(rel))
  172. display(lmer.5l)
  173. anova(lmer.5l)
  174. ```
  175. ```{r get_predicted_average_effect_5l, include=F}
  176. mSit = fixef(lmer.5l)[1]
  177. diffMeans = fixef(lmer.5l)[2]
  178. mRun = fixef(lmer.5l)[1] + diffMeans
  179. ```
  180. Running: `r format(mRun, digits=2, nsmall=2)` \newline
  181. Sitting: `r format(mSit, digits=2, nsmall=2)` \newline
  182. n = `r nrow(tbskl %>% drop_na(rel) %>% count(uid))` neurons from `r nrow(tbskl %>% drop_na(rel) %>% count(mid))` mice