physion 1.0__tar.gz → 1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. {physion-1.0/src/physion.egg-info → physion-1.2}/PKG-INFO +24 -7
  2. {physion-1.0 → physion-1.2}/README.md +19 -5
  3. {physion-1.0 → physion-1.2}/pyproject.toml +6 -3
  4. physion-1.2/src/physion/__init__.py +3 -0
  5. {physion-1.0 → physion-1.2}/src/physion/__main__.py +6 -3
  6. physion-1.2/src/physion/acquisition/__init__.py +10 -0
  7. physion-1.2/src/physion/acquisition/configs/Adrianna-Bacci-2P.json +21 -0
  8. {physion-1.0 → physion-1.2}/src/physion/acquisition/configs/Jo-Bacci-2P.json +2 -6
  9. {physion-1.0 → physion-1.2}/src/physion/acquisition/configs/Taddy-A1-2P.json +2 -6
  10. {physion-1.0 → physion-1.2}/src/physion/acquisition/configs/Troubleshooting.json +2 -5
  11. {physion-1.0 → physion-1.2}/src/physion/acquisition/configs/Yann-A1-2P.json +1 -1
  12. {physion-1.0 → physion-1.2}/src/physion/acquisition/configs/Yann-Bacci-2P.json +6 -8
  13. {physion-1.0 → physion-1.2}/src/physion/acquisition/gui.py +10 -23
  14. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/FFDG-contrast-curve+blank.json +4 -2
  15. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/Light-Levels-Symmetric-5b-5g-10blank-5g-5b.json +3 -1
  16. physion-1.2/src/physion/acquisition/protocols/Millman-et-al-2020.json +41 -0
  17. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/NDNF-protocol.json +6 -4
  18. physion-1.2/src/physion/acquisition/protocols/black-grey-white-20s-each-x5.json +16 -0
  19. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/drifting-gratings.json +13 -10
  20. physion-1.2/src/physion/acquisition/protocols/ff-gratings-2orientations-8contrasts-15repeats.json +38 -0
  21. physion-1.2/src/physion/acquisition/protocols/ff-gratings-8orientation-2contrasts-15repeats.json +38 -0
  22. physion-1.2/src/physion/acquisition/protocols/injection-monitoring.json +38 -0
  23. physion-1.2/src/physion/acquisition/protocols/old-NDNF-protocol.json +19 -0
  24. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/quick-spatial-mapping.json +14 -10
  25. physion-1.0/src/physion/acquisition/protocols/size-tuning-protocol.json → physion-1.2/src/physion/acquisition/protocols/size-tuning-protocol-linear.json +2 -0
  26. physion-1.2/src/physion/acquisition/protocols/size-tuning-protocol-log-long.json +14 -0
  27. physion-1.2/src/physion/acquisition/protocols/size-tuning-protocol-log.json +14 -0
  28. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/size-tuning-protocol-long.json +5 -3
  29. {physion-1.0 → physion-1.2}/src/physion/acquisition/protocols/spatial-mapping.json +2 -1
  30. physion-1.2/src/physion/acquisition/protocols/stim-demo.json +34 -0
  31. {physion-1.0 → physion-1.2}/src/physion/acquisition/recordings/Scan1Plane_Screen342V.py +3 -2
  32. {physion-1.0 → physion-1.2}/src/physion/acquisition/recordings/Scan1Plane_Screen356VOffPeriodScan.py +3 -3
  33. physion-1.2/src/physion/acquisition/run.py +346 -0
  34. {physion-1.0 → physion-1.2}/src/physion/acquisition/settings.py +13 -8
  35. physion-1.2/src/physion/acquisition/tools.py +125 -0
  36. physion-1.2/src/physion/analysis/__init__.py +3 -0
  37. {physion-1.0 → physion-1.2}/src/physion/analysis/process_NWB.py +16 -12
  38. {physion-1.0 → physion-1.2}/src/physion/analysis/protocols/FFDG.py +1 -1
  39. {physion-1.0 → physion-1.2}/src/physion/analysis/protocols/FFDG_with_blank.py +1 -1
  40. {physion-1.0 → physion-1.2}/src/physion/analysis/protocols/Light_Levels.py +1 -1
  41. {physion-1.0 → physion-1.2}/src/physion/analysis/protocols/contrast_curves.py +1 -1
  42. {physion-1.0 → physion-1.2}/src/physion/analysis/protocols/size_tuning.py +1 -1
  43. {physion-1.0 → physion-1.2}/src/physion/analysis/protocols/spatial_mapping.py +1 -1
  44. {physion-1.0 → physion-1.2}/src/physion/analysis/read_NWB.py +122 -52
  45. {physion-1.0 → physion-1.2}/src/physion/analysis/stat_tools.py +1 -1
  46. {physion-1.0 → physion-1.2}/src/physion/analysis/summary_pdf.py +2 -2
  47. {physion-1.0 → physion-1.2}/src/physion/analysis/tools.py +1 -1
  48. {physion-1.0 → physion-1.2}/src/physion/analysis/trial_averaging.py +3 -3
  49. {physion-1.0 → physion-1.2}/src/physion/assembling/add_ophys.py +65 -107
  50. {physion-1.0 → physion-1.2}/src/physion/assembling/gui.py +26 -34
  51. physion-1.0/src/physion/assembling/build_NWB.py → physion-1.2/src/physion/assembling/nwb.py +305 -173
  52. {physion-1.0 → physion-1.2}/src/physion/assembling/realign_from_photodiode.py +15 -36
  53. {physion-1.0 → physion-1.2}/src/physion/assembling/tools.py +1 -1
  54. {physion-1.0 → physion-1.2}/src/physion/assembling/update_metadata.py +5 -3
  55. physion-1.2/src/physion/behavior/convert_to_movie.py +119 -0
  56. {physion-1.0 → physion-1.2}/src/physion/dataviz/FOV.py +24 -53
  57. physion-1.2/src/physion/dataviz/__init__.py +2 -0
  58. {physion-1.0 → physion-1.2}/src/physion/dataviz/camera.py +2 -2
  59. {physion-1.0 → physion-1.2}/src/physion/dataviz/episodes/evoked_raster.py +3 -3
  60. {physion-1.0 → physion-1.2}/src/physion/dataviz/episodes/trial_average.py +1 -1
  61. {physion-1.0 → physion-1.2}/src/physion/dataviz/gui.py +1 -1
  62. {physion-1.0 → physion-1.2}/src/physion/dataviz/imaging.py +63 -36
  63. physion-1.2/src/physion/dataviz/movie.py +202 -0
  64. {physion-1.0 → physion-1.2}/src/physion/dataviz/plots.py +42 -35
  65. physion-1.2/src/physion/dataviz/protocols/template.py +32 -0
  66. {physion-1.0 → physion-1.2}/src/physion/dataviz/pupil.py +1 -1
  67. {physion-1.0 → physion-1.2}/src/physion/dataviz/raw.py +7 -7
  68. physion-1.2/src/physion/dataviz/snapshot.py +447 -0
  69. {physion-1.0 → physion-1.2}/src/physion/dataviz/tools.py +2 -2
  70. {physion-1.0 → physion-1.2}/src/physion/facemotion/gui.py +26 -26
  71. {physion-1.0 → physion-1.2}/src/physion/facemotion/process.py +20 -19
  72. {physion-1.0 → physion-1.2}/src/physion/gui/calendar.py +15 -10
  73. {physion-1.0 → physion-1.2}/src/physion/gui/main.py +33 -14
  74. {physion-1.0 → physion-1.2}/src/physion/gui/menu.py +9 -6
  75. {physion-1.0 → physion-1.2}/src/physion/gui/parts.py +24 -12
  76. {physion-1.0 → physion-1.2}/src/physion/hardware/FLIRcamera/main.py +21 -10
  77. {physion-1.0 → physion-1.2}/src/physion/hardware/LogitechWebcam/main.py +1 -1
  78. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/main.py +9 -5
  79. physion-1.2/src/physion/hardware/Thorlabs/usb_camera.py +104 -0
  80. {physion-1.0 → physion-1.2}/src/physion/imaging/Calcium.py +1 -1
  81. physion-1.2/src/physion/imaging/bruker/__init__.py +0 -0
  82. {physion-1.0 → physion-1.2}/src/physion/imaging/bruker/xml_parser.py +8 -5
  83. physion-1.2/src/physion/imaging/convert_to_movie.py +308 -0
  84. {physion-1.0 → physion-1.2}/src/physion/imaging/gui.py +142 -41
  85. {physion-1.0 → physion-1.2}/src/physion/imaging/red_label.py +1 -0
  86. physion-1.2/src/physion/imaging/suite2p/__init__.py +0 -0
  87. physion-1.2/src/physion/imaging/suite2p/default_ops.py +167 -0
  88. {physion-1.0 → physion-1.2}/src/physion/imaging/suite2p/preprocessing.py +42 -29
  89. physion-1.2/src/physion/imaging/suite2p/presets.py +35 -0
  90. physion-1.0/src/physion/assembling/IO/suite2p_to_nwb.py → physion-1.2/src/physion/imaging/suite2p/to_nwb.py +35 -21
  91. {physion-1.0 → physion-1.2}/src/physion/intrinsic/RetinotopicMapping.py +2 -1
  92. physion-1.2/src/physion/intrinsic/__init__.py +0 -0
  93. {physion-1.0 → physion-1.2}/src/physion/intrinsic/acquisition.py +144 -150
  94. {physion-1.0 → physion-1.2}/src/physion/intrinsic/analysis.py +30 -31
  95. physion-1.2/src/physion/intrinsic/build_protocols.py +71 -0
  96. {physion-1.0 → physion-1.2}/src/physion/intrinsic/pdf.py +41 -26
  97. {physion-1.0 → physion-1.2}/src/physion/intrinsic/somatosensory.py +5 -5
  98. {physion-1.0 → physion-1.2}/src/physion/intrinsic/tools.py +86 -41
  99. physion-1.2/src/physion/pupil/__init__.py +0 -0
  100. {physion-1.0 → physion-1.2}/src/physion/pupil/gui.py +35 -30
  101. {physion-1.0 → physion-1.2}/src/physion/pupil/process.py +9 -10
  102. physion-1.2/src/physion/utils/__init__.py +1 -0
  103. physion-1.2/src/physion/utils/camera.py +210 -0
  104. {physion-1.0 → physion-1.2}/src/physion/utils/files.py +43 -5
  105. physion-1.2/src/physion/utils/management/__init__.py +0 -0
  106. physion-1.2/src/physion/utils/management/delete.py +96 -0
  107. {physion-1.0 → physion-1.2}/src/physion/utils/npz.py +1 -1
  108. {physion-1.0 → physion-1.2}/src/physion/utils/paths.py +6 -4
  109. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/adjust_plots.py +6 -2
  110. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/annotations.py +4 -0
  111. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/bar.py +4 -0
  112. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/export.py +5 -1
  113. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/figure.py +5 -0
  114. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/legend.py +35 -32
  115. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/line.py +5 -1
  116. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/morphologies.py +6 -1
  117. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/pie.py +3 -2
  118. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/scatter.py +4 -0
  119. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/time_freq.py +3 -0
  120. physion-1.2/src/physion/utils/plot_tools/src/violin.py +58 -0
  121. {physion-1.0 → physion-1.2}/src/physion/utils/progressBar.py +4 -2
  122. physion-1.2/src/physion/utils/sharing/__init__.py +0 -0
  123. physion-1.2/src/physion/utils/sharing/prepare_nwb_files.py +315 -0
  124. physion-1.2/src/physion/utils/transfer/__init__.py +0 -0
  125. physion-1.2/src/physion/utils/transfer/__main__.py +32 -0
  126. {physion-1.0/src/physion → physion-1.2/src/physion/utils}/transfer/gui.py +69 -34
  127. physion-1.2/src/physion/utils/transfer/types.py +77 -0
  128. physion-1.2/src/physion/visual_stim/build.py +205 -0
  129. physion-1.2/src/physion/visual_stim/main.py +679 -0
  130. {physion-1.0 → physion-1.2}/src/physion/visual_stim/screens.py +11 -26
  131. physion-1.2/src/physion/visual_stim/show.py +131 -0
  132. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/__init__.py +1 -1
  133. physion-1.2/src/physion/visual_stim/stimuli/center_drifting_grating.py +86 -0
  134. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/center_grating.py +32 -17
  135. physion-1.2/src/physion/visual_stim/stimuli/flickering_bar.py +112 -0
  136. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/gaussian_blob.py +20 -7
  137. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/line_moving_dots.py +34 -30
  138. physion-1.2/src/physion/visual_stim/stimuli/looming_stim.py +102 -0
  139. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/natural_image.py +29 -12
  140. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/oscillDG.py +1 -2
  141. physion-1.2/src/physion/visual_stim/stimuli/random_dots.py +90 -0
  142. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/scattered_moving_dots.py +23 -9
  143. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/template.py +2 -3
  144. {physion-1.0 → physion-1.2}/src/physion/visual_stim/stimuli/uniform_bg.py +2 -8
  145. physion-1.2/src/physion/visual_stim/tests/opencv.py +72 -0
  146. physion-1.2/src/physion/visual_stim/tests/psychopy.py +95 -0
  147. physion-1.2/src/physion/visual_stim/tests/qt.py +101 -0
  148. {physion-1.0 → physion-1.2/src/physion.egg-info}/PKG-INFO +24 -7
  149. {physion-1.0 → physion-1.2}/src/physion.egg-info/SOURCES.txt +35 -20
  150. {physion-1.0 → physion-1.2}/src/physion.egg-info/requires.txt +4 -1
  151. physion-1.0/src/physion/__init__.py +0 -5
  152. physion-1.0/src/physion/acquisition/__init__.py +0 -1
  153. physion-1.0/src/physion/acquisition/configs/Marie-A1-2P.json +0 -21
  154. physion-1.0/src/physion/acquisition/protocols/stim-demo.json +0 -12
  155. physion-1.0/src/physion/acquisition/run.py +0 -304
  156. physion-1.0/src/physion/acquisition/subjects/mice_jo.csv +0 -8
  157. physion-1.0/src/physion/acquisition/subjects/mice_marie.csv +0 -3
  158. physion-1.0/src/physion/acquisition/subjects/mice_taddy.csv +0 -10
  159. physion-1.0/src/physion/acquisition/subjects/mice_yann.csv +0 -4
  160. physion-1.0/src/physion/acquisition/tools.py +0 -96
  161. physion-1.0/src/physion/analysis/__init__.py +0 -3
  162. physion-1.0/src/physion/assembling/IO/__init__.py +0 -1
  163. physion-1.0/src/physion/assembling/IO/bruker_data.py +0 -185
  164. physion-1.0/src/physion/assembling/IO/bruker_xml_parser.py +0 -154
  165. physion-1.0/src/physion/assembling/__init__.py +0 -1
  166. physion-1.0/src/physion/dataviz/__init__.py +0 -1
  167. physion-1.0/src/physion/dataviz/dataframe/__init__.py +0 -1
  168. physion-1.0/src/physion/dataviz/dataframe/raw.py +0 -268
  169. physion-1.0/src/physion/dataviz/dataframe/tools.py +0 -82
  170. physion-1.0/src/physion/dataviz/movie.py +0 -378
  171. physion-1.0/src/physion/dataviz/snapshot.py +0 -492
  172. physion-1.0/src/physion/gui/__init__.py +0 -1
  173. physion-1.0/src/physion/hardware/__init__.py +0 -1
  174. physion-1.0/src/physion/imaging/suite2p/presets.py +0 -87
  175. physion-1.0/src/physion/imaging/suite2p/to_nwb.py +0 -195
  176. physion-1.0/src/physion/intrinsic/__init__.py +0 -1
  177. physion-1.0/src/physion/utils/__init__.py +0 -1
  178. physion-1.0/src/physion/utils/plot_tools/src/violin.py +0 -65
  179. physion-1.0/src/physion/visual_stim/build.py +0 -117
  180. physion-1.0/src/physion/visual_stim/main.py +0 -1021
  181. physion-1.0/src/physion/visual_stim/psychopy_test.py +0 -34
  182. physion-1.0/src/physion/visual_stim/stimuli/center_drifting_grating.py +0 -94
  183. physion-1.0/src/physion/visual_stim/stimuli/looming_stim.py +0 -114
  184. physion-1.0/src/physion/visual_stim/stimuli/random_dots.py +0 -66
  185. {physion-1.0 → physion-1.2}/LICENSE +0 -0
  186. {physion-1.0 → physion-1.2}/setup.cfg +0 -0
  187. {physion-1.0 → physion-1.2}/src/physion/acquisition/recordings/__init__.py +0 -0
  188. {physion-1.0 → physion-1.2}/src/physion/analysis/behavior.py +0 -0
  189. {physion-1.0 → physion-1.2}/src/physion/analysis/dataframe.py +0 -0
  190. {physion-1.0/src/physion/dataviz → physion-1.2/src/physion/analysis}/protocols/__init__.py +0 -0
  191. {physion-1.0 → physion-1.2}/src/physion/assembling/FOV_coordinates.py +0 -0
  192. {physion-1.0/src/physion/electrophy → physion-1.2/src/physion/assembling}/__init__.py +0 -0
  193. {physion-1.0/src/physion/facemotion → physion-1.2/src/physion/behavior}/__init__.py +0 -0
  194. {physion-1.0 → physion-1.2}/src/physion/behavior/locomotion.py +0 -0
  195. {physion-1.0/src/physion/hardware/Dummy → physion-1.2/src/physion/dataviz/dataframe}/__init__.py +0 -0
  196. {physion-1.0 → physion-1.2}/src/physion/dataviz/episodes/__init__.py +0 -0
  197. {physion-1.0 → physion-1.2}/src/physion/dataviz/episodes/behavior.py +0 -0
  198. {physion-1.0/src/physion/analysis → physion-1.2/src/physion/dataviz}/protocols/__init__.py +0 -0
  199. {physion-1.0/src/physion/hardware/FLIRcamera → physion-1.2/src/physion/electrophy}/__init__.py +0 -0
  200. {physion-1.0/src/physion/hardware/LogitechWebcam → physion-1.2/src/physion/facemotion}/__init__.py +0 -0
  201. {physion-1.0 → physion-1.2}/src/physion/facemotion/roi.py +0 -0
  202. {physion-1.0/src/physion/hardware/RaspberryPi → physion-1.2/src/physion/gui}/__init__.py +0 -0
  203. {physion-1.0/src/physion/hardware/Thorlabs → physion-1.2/src/physion/hardware/Dummy}/__init__.py +0 -0
  204. {physion-1.0 → physion-1.2}/src/physion/hardware/Dummy/camera.py +0 -0
  205. {physion-1.0/src/physion/hardware/zaber_stage → physion-1.2/src/physion/hardware/FLIRcamera}/__init__.py +0 -0
  206. {physion-1.0 → physion-1.2}/src/physion/hardware/FLIRcamera/export.py +0 -0
  207. {physion-1.0 → physion-1.2}/src/physion/hardware/FLIRcamera/launch.py +0 -0
  208. {physion-1.0 → physion-1.2}/src/physion/hardware/FLIRcamera/test.py +0 -0
  209. {physion-1.0 → physion-1.2}/src/physion/hardware/Igor/hdf5.py +0 -0
  210. {physion-1.0 → physion-1.2}/src/physion/hardware/Igor/igor.py +0 -0
  211. {physion-1.0/src/physion/imaging/bruker → physion-1.2/src/physion/hardware/LogitechWebcam}/__init__.py +0 -0
  212. {physion-1.0 → physion-1.2}/src/physion/hardware/LogitechWebcam/test.py +0 -0
  213. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/__init__.py +0 -0
  214. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/config.py +0 -0
  215. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/inputs_for_screen.py +0 -0
  216. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/pulse.py +0 -0
  217. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/recording.py +0 -0
  218. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/steps.py +0 -0
  219. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/subprocess.py +0 -0
  220. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/test.py +0 -0
  221. {physion-1.0 → physion-1.2}/src/physion/hardware/NIdaq/zero_AO.py +0 -0
  222. {physion-1.0 → physion-1.2}/src/physion/hardware/QCamera/camera_core_test.py +0 -0
  223. {physion-1.0 → physion-1.2}/src/physion/hardware/QCamera/frame_rate_test.py +0 -0
  224. {physion-1.0/src/physion/imaging/suite2p → physion-1.2/src/physion/hardware/RaspberryPi}/__init__.py +0 -0
  225. {physion-1.0 → physion-1.2}/src/physion/hardware/RaspberryPi/main.py +0 -0
  226. {physion-1.0/src/physion/pupil → physion-1.2/src/physion/hardware/Thorlabs}/__init__.py +0 -0
  227. {physion-1.0 → physion-1.2}/src/physion/hardware/Thorlabs/cam_test.py +0 -0
  228. {physion-1.0 → physion-1.2}/src/physion/hardware/Thorlabs/thorcam.py +0 -0
  229. {physion-1.0 → physion-1.2}/src/physion/hardware/Thorlabs/tkinter_camera_live_view.py +0 -0
  230. {physion-1.0/src/physion/transfer → physion-1.2/src/physion/hardware}/__init__.py +0 -0
  231. /physion-1.0/src/physion/dataviz/dataframe/episodes.py → /physion-1.2/src/physion/hardware/zaber_stage/__init__.py +0 -0
  232. {physion-1.0 → physion-1.2}/src/physion/hardware/zaber_stage/main.py +0 -0
  233. {physion-1.0 → physion-1.2}/src/physion/imaging/__init__.py +0 -0
  234. {physion-1.0 → physion-1.2}/src/physion/imaging/dcnv.py +0 -0
  235. {physion-1.0/src/physion/assembling/IO → physion-1.2/src/physion/imaging/suite2p}/binary.py +0 -0
  236. {physion-1.0 → physion-1.2}/src/physion/intrinsic/SS_analysis.py +0 -0
  237. {physion-1.0 → physion-1.2}/src/physion/pupil/outliers.py +0 -0
  238. {physion-1.0 → physion-1.2}/src/physion/pupil/roi.py +0 -0
  239. {physion-1.0/src/physion/imaging/suite2p → physion-1.2/src/physion/utils}/binary.py +0 -0
  240. {physion-1.0/src/physion/assembling/IO → physion-1.2/src/physion/utils}/hdf5.py +0 -0
  241. {physion-1.0 → physion-1.2}/src/physion/utils/matplotlib_style.py +0 -0
  242. {physion-1.0 → physion-1.2}/src/physion/utils/misc.py +0 -0
  243. {physion-1.0 → physion-1.2}/src/physion/utils/plot_export.py +0 -0
  244. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/__init__.py +0 -0
  245. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/setup.py +0 -0
  246. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/colors.py +0 -0
  247. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/src/inset.py +0 -0
  248. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/style-sheets/dark-notebook.py +0 -0
  249. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/style-sheets/dark.py +0 -0
  250. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/style-sheets/manuscript.py +0 -0
  251. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/tests/Notebook.py +0 -0
  252. {physion-1.0 → physion-1.2}/src/physion/utils/plot_tools/tests/envs.py +0 -0
  253. {physion-1.0 → physion-1.2}/src/physion/visual_stim/__init__.py +0 -0
  254. {physion-1.0 → physion-1.2}/src/physion/visual_stim/gamma-correction.py +0 -0
  255. {physion-1.0 → physion-1.2}/src/physion/visual_stim/preprocess_NI.py +0 -0
  256. {physion-1.0 → physion-1.2}/src/physion.egg-info/dependency_links.txt +0 -0
  257. {physion-1.0 → physion-1.2}/src/physion.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: physion
3
- Version: 1.0
3
+ Version: 1.2
4
4
  Summary: Vision Physiology Software
5
5
  Author-email: Yann Zerlaut <yann.zerlaut@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/yzerlaut/physion
@@ -23,10 +23,16 @@ Requires-Dist: pandas>=1.4.4
23
23
  Requires-Dist: pyqt5.sip
24
24
  Requires-Dist: pyqtgraph
25
25
  Requires-Dist: pyqtdarktheme
26
- Requires-Dist: opencv-python-headless
26
+ Requires-Dist: opencv-python
27
+ Requires-Dist: opencv-contrib-python
28
+ Requires-Dist: ffmpeg-python
27
29
  Requires-Dist: pyqt5
30
+ Requires-Dist: openpyxl
28
31
 
29
- <!--<div><img src="https://github.com/yzerlaut/physion/raw/master/docs/physion.png" alt="physion logo" width="35%" align="right" style="margin-left: 10px"></div>-->
32
+ <!-- ** Build Instructions ** -->
33
+ <!-- python -m build -->
34
+ <!-- python -m twine upload --repository pypi dist/* -->
35
+ <!-- -->
30
36
 
31
37
  <div><img src="./docs/icons/physion.png" alt="physion logo" width="35%" align="right" style="margin-left: 10px"></div>
32
38
 
@@ -48,15 +54,25 @@ The different modules are detailed in the [documentation below](README.md#module
48
54
 
49
55
  ## Install
50
56
 
51
- Simply:
57
+ Create a `"physion"` environment running `python 3.11`, with:
58
+
52
59
  ```
53
- pip install physion
60
+ conda create -n "physion" python=3.11
54
61
  ```
55
62
 
56
- N.B. the `PyQt` package can be broken after those steps, re-start from a fresh install with `pip uninstall PyQt5` and `pip install PyQt5`.
63
+ Then simply:
64
+ ```
65
+ pip install physion
66
+ ```
57
67
 
58
68
  **For an installation on an acquisition setup, see the detailed steps in [docs/install/README.md](./docs/install/README.md)**
59
69
 
70
+ #### troubleshooting
71
+
72
+ - the `PyQt` package can be broken after those steps, re-start from a fresh install with `pip uninstall PyQt5` and `pip install PyQt5`.
73
+ - In linux, the `libqxcb.so` binding is making problems, this can be solved by deleting the following file: `rm ~/miniconda3/lib/python3.11/site-packages/cv2/qt/plugins/platforms/libqxcb.so`.
74
+ - In linux, there can be a `krb5` version mismatch between Qt and Ubuntu packages. Download the latest on [the kerboeros website](https://web.mit.edu/kerberos/) and install it from source with: `tar xf krb5-1.18.2.tar.gz; cd krb5-1.18.2/src; ./configure --prefix=/opt/krb5/ ; make && sudo make install`. Then do the binding with: `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/krb5/lib` (you can put this in your `~/.bashrc`).
75
+
60
76
  ## Usage
61
77
 
62
78
  Run:
@@ -84,7 +100,8 @@ The different modules of the software are documented in the following links:
84
100
  - [Hardware control](src/physion/hardware/README.md)
85
101
  - [Visualization](src/physion/dataviz/README.md)
86
102
  - [Analysis](src/physion/analysis/README.md)
87
- - [Sharing](src/physion/sharing/README.md)
103
+ - [Data Management](src/physion/utils/management/README.md)
104
+ - [Data Sharing](src/physion/utils/sharing/README.md)
88
105
 
89
106
  ## Troubleshooting / Issues
90
107
 
@@ -1,4 +1,7 @@
1
- <!--<div><img src="https://github.com/yzerlaut/physion/raw/master/docs/physion.png" alt="physion logo" width="35%" align="right" style="margin-left: 10px"></div>-->
1
+ <!-- ** Build Instructions ** -->
2
+ <!-- python -m build -->
3
+ <!-- python -m twine upload --repository pypi dist/* -->
4
+ <!-- -->
2
5
 
3
6
  <div><img src="./docs/icons/physion.png" alt="physion logo" width="35%" align="right" style="margin-left: 10px"></div>
4
7
 
@@ -20,15 +23,25 @@ The different modules are detailed in the [documentation below](README.md#module
20
23
 
21
24
  ## Install
22
25
 
23
- Simply:
26
+ Create a `"physion"` environment running `python 3.11`, with:
27
+
24
28
  ```
25
- pip install physion
29
+ conda create -n "physion" python=3.11
26
30
  ```
27
31
 
28
- N.B. the `PyQt` package can be broken after those steps, re-start from a fresh install with `pip uninstall PyQt5` and `pip install PyQt5`.
32
+ Then simply:
33
+ ```
34
+ pip install physion
35
+ ```
29
36
 
30
37
  **For an installation on an acquisition setup, see the detailed steps in [docs/install/README.md](./docs/install/README.md)**
31
38
 
39
+ #### troubleshooting
40
+
41
+ - the `PyQt` package can be broken after those steps, re-start from a fresh install with `pip uninstall PyQt5` and `pip install PyQt5`.
42
+ - In linux, the `libqxcb.so` binding is making problems, this can be solved by deleting the following file: `rm ~/miniconda3/lib/python3.11/site-packages/cv2/qt/plugins/platforms/libqxcb.so`.
43
+ - In linux, there can be a `krb5` version mismatch between Qt and Ubuntu packages. Download the latest on [the kerboeros website](https://web.mit.edu/kerberos/) and install it from source with: `tar xf krb5-1.18.2.tar.gz; cd krb5-1.18.2/src; ./configure --prefix=/opt/krb5/ ; make && sudo make install`. Then do the binding with: `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/krb5/lib` (you can put this in your `~/.bashrc`).
44
+
32
45
  ## Usage
33
46
 
34
47
  Run:
@@ -56,7 +69,8 @@ The different modules of the software are documented in the following links:
56
69
  - [Hardware control](src/physion/hardware/README.md)
57
70
  - [Visualization](src/physion/dataviz/README.md)
58
71
  - [Analysis](src/physion/analysis/README.md)
59
- - [Sharing](src/physion/sharing/README.md)
72
+ - [Data Management](src/physion/utils/management/README.md)
73
+ - [Data Sharing](src/physion/utils/sharing/README.md)
60
74
 
61
75
  ## Troubleshooting / Issues
62
76
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "physion"
3
- version = "1.0"
3
+ version = "1.2"
4
4
  authors = [
5
5
  { name="Yann Zerlaut", email="yann.zerlaut@gmail.com" },
6
6
  ]
@@ -24,8 +24,11 @@ dependencies = [
24
24
  "pyqt5.sip",
25
25
  "pyqtgraph",
26
26
  "pyqtdarktheme",
27
- "opencv-python-headless",
27
+ "opencv-python",
28
+ "opencv-contrib-python",
29
+ "ffmpeg-python",
28
30
  "pyqt5",
31
+ "openpyxl",
29
32
  ]
30
33
 
31
34
  [tool.setuptools.packages.find]
@@ -34,7 +37,7 @@ where = ["src"]
34
37
  "physion.acquisition.protocols" = ["*.json"]
35
38
  "physion.acquisition.configs" = ["*.json"]
36
39
  "physion.acquisition.interventions" = ["*.json"]
37
- "physion.acquisition.subjects" = ["*.csv"]
40
+ "physion.acquisition.subjects" = ["*.xlsx"]
38
41
 
39
42
  [project.urls]
40
43
  "Homepage" = "https://github.com/yzerlaut/physion"
@@ -0,0 +1,3 @@
1
+ from . import analysis, utils, dataviz, assembling, electrophy,\
2
+ facemotion, gui, imaging, intrinsic, pupil, acquisition,\
3
+ visual_stim
@@ -1,17 +1,20 @@
1
- import sys
1
+ import sys, os
2
2
  from PyQt5 import QtWidgets
3
3
 
4
4
  from physion.gui.main import MainWindow
5
5
  app = QtWidgets.QApplication(sys.argv)
6
6
 
7
-
8
7
  try:
9
8
  import qdarktheme # pip install pyqtdarktheme
10
9
  app.setStyleSheet(qdarktheme.load_stylesheet('dark'))
11
10
  except ModuleNotFoundError:
12
11
  pass
13
12
 
14
- GUI = MainWindow(app)
13
+ GUI = MainWindow(app,
14
+ filename=sys.argv[-1] if (('.nwb' in sys.argv[-1]) and \
15
+ os.path.isfile(sys.argv[-1])) else None,
16
+ folder=sys.argv[-1] if ((len(sys.argv)>1) and \
17
+ os.path.isdir(sys.argv[-1])) else None)
15
18
 
16
19
  sys.exit(app.exec_())
17
20
 
@@ -0,0 +1,10 @@
1
+ from . import settings, tools, run, recordings
2
+
3
+ MODALITIES = ['Locomotion',
4
+ 'FaceCamera',
5
+ 'RigCamera',
6
+ # 'EphysLFP',
7
+ # 'EphysVm',
8
+ 'Neuropixels',
9
+ 'CaImaging',
10
+ 'onlyDemo']
@@ -0,0 +1,21 @@
1
+ {
2
+ "NIdaq-acquisition-frequency":10000,
3
+ "NIdaq-analog-input-channels":1,
4
+ "NIdaq-digital-input-channels":2,
5
+ "Rig":"Bacci-2P-setup",
6
+ "Screen":"Dell-2020",
7
+ "Z-sign-correction-for-rig":1,
8
+ "FaceCamera-frame-rate":30,
9
+ "FaceCamera-1cm-in-pix":480,
10
+ "RigCamera-frame-rate":20,
11
+ "RigCamera-1cm-in-pix":33, "TO BE DETERMINED !!":"",
12
+ "Height-of-Microscope-Camera-Image-in-mm":10000.0, "TO BE DETERMINED !!":"",
13
+ "rotating-disk":{"radius-position-on-disk-cm":5.5,
14
+ "roto-encoder-value-per-rotation": -12563.0},
15
+ "root_datafolder":"DATA",
16
+ "subjects_folder":"Adrianna",
17
+ "experimenter":"Adrianna Nozownik",
18
+ "lab":"Rebola and Bacci labs",
19
+ "institution":"Institut du Cerveau et de la Moelle, Paris",
20
+ "protocols":"all"
21
+ }
@@ -3,19 +3,15 @@
3
3
  "NIdaq-analog-input-channels":1,
4
4
  "NIdaq-digital-input-channels":2,
5
5
  "Rig":"Bacci-2P-setup",
6
- "Screen":"Dell-2020",
6
+ "Screen":"Dell-2020",
7
7
  "Z-sign-correction-for-rig":1,
8
8
  "FaceCamera-frame-rate":30,
9
9
  "FaceCamera-1cm-in-pix":480,
10
10
  "Height-of-Microscope-Camera-Image-in-mm":10000.0, "TO BE DETERMINED !!":"",
11
- "STEP_FOR_CA_IMAGING_TRIGGER":{"channel":0,
12
- "onset": 0.1,
13
- "duration":0.3,
14
- "value":5.0},
15
11
  "rotating-disk":{"radius-position-on-disk-cm":5.5,
16
12
  "roto-encoder-value-per-rotation": -12563.0},
17
13
  "root_datafolder":"DATA",
18
- "subjects_file":"mice_jo.csv",
14
+ "subjects_folder":"Jo",
19
15
  "experimenter":"Joana Lourenco",
20
16
  "lab":"Rebola and Bacci labs",
21
17
  "institution":"Institut du Cerveau et de la Moelle, Paris",
@@ -4,19 +4,15 @@
4
4
  "NIdaq-digital-input-channels":2,
5
5
  "Screen":"Dell-2020",
6
6
  "Rig":"ICM-A1-2P-setup",
7
- "Screen":"Dell-2020",
7
+ "Screen":"Dell-2020",
8
8
  "Z-sign-correction-for-rig":-1,
9
9
  "FaceCamera-frame-rate":30,
10
10
  "FaceCamera-1cm-in-pix":480,
11
11
  "Height-of-Microscope-Camera-Image-in-mm":2.7,
12
- "STEP_FOR_CA_IMAGING_TRIGGER":{"channel":0,
13
- "onset": 0.1,
14
- "duration":0.3,
15
- "value":5.0},
16
12
  "rotating-disk":{"radius-position-on-disk-cm":9.0,
17
13
  "roto-encoder-value-per-rotation": -25300.0},
18
14
  "root_datafolder":"DATA",
19
- "subjects_file":"mice_taddy.csv",
15
+ "subjects_folder":"Taddy",
20
16
  "experimenter":"Dhanasak Dhanasobhon",
21
17
  "lab":"Rebola and Bacci labs",
22
18
  "institution":"Institut du Cerveau et de la Moelle, Paris",
@@ -5,14 +5,11 @@
5
5
  "FaceCamera-frame-rate":30,
6
6
  "FaceCamera-1cm-in-pix":480,
7
7
  "Screen":"Dell-2020",
8
- "STEP_FOR_CA_IMAGING_TRIGGER":{"channel":0,
9
- "onset": 0.1,
10
- "duration":0.3,
11
- "value":5.0},
8
+ "Height-of-Microscope-Camera-Image-in-mm":2.7,
12
9
  "rotating-disk":{"radius-position-on-disk-cm":5.5,
13
10
  "roto-encoder-value-per-rotation": -12563.0},
14
11
  "root_datafolder":"DATA",
15
- "subjects_file":"mice_yann.json",
12
+ "subjects_folder":"Yann",
16
13
  "experimenter":"Yann Zerlaut",
17
14
  "lab":"Rebola and Bacci labs",
18
15
  "institution":"Institut du Cerveau et de la Moelle, Paris",
@@ -13,7 +13,7 @@
13
13
  "rotating-disk":{"radius-position-on-disk-cm":9.0,
14
14
  "roto-encoder-value-per-rotation": -25300.0},
15
15
  "root_datafolder":"DATA",
16
- "subjects_file":"mice_yann.csv",
16
+ "subjects_folder":"Yann",
17
17
  "experimenter":"Yann Zerlaut",
18
18
  "lab":"Rebola and Bacci labs",
19
19
  "institution":"Institut du Cerveau et de la Moelle, Paris",
@@ -1,21 +1,19 @@
1
1
  {
2
- "NIdaq-acquisition-frequency":200000,
2
+ "NIdaq-acquisition-frequency":10000,
3
3
  "NIdaq-analog-input-channels":1,
4
4
  "NIdaq-digital-input-channels":2,
5
5
  "Rig":"Bacci-2P-setup",
6
- "Screen":"Dell-2020",
6
+ "Screen":"Dell-2020",
7
7
  "Z-sign-correction-for-rig":1,
8
8
  "FaceCamera-frame-rate":30,
9
9
  "FaceCamera-1cm-in-pix":480,
10
+ "RigCamera-frame-rate":20,
11
+ "RigCamera-1cm-in-pix":33, "TO BE DETERMINED !!":"",
10
12
  "Height-of-Microscope-Camera-Image-in-mm":10000.0, "TO BE DETERMINED !!":"",
11
- "STEP_FOR_CA_IMAGING_TRIGGER":{"channel":0,
12
- "onset": 0.1,
13
- "duration":0.3,
14
- "value":5.0},
15
13
  "rotating-disk":{"radius-position-on-disk-cm":5.5,
16
- "roto-encoder-value-per-rotation": -12563.0},
14
+ "roto-encoder-value-per-rotation": -12563.0},
17
15
  "root_datafolder":"DATA",
18
- "subjects_file":"mice_yann.csv",
16
+ "subjects_folder":"Yann",
19
17
  "experimenter":"Yann Zerlaut",
20
18
  "lab":"Rebola and Bacci labs",
21
19
  "institution":"Institut du Cerveau et de la Moelle, Paris",
@@ -1,7 +1,7 @@
1
1
  from PyQt5 import QtWidgets, QtCore
2
2
  import sys, time, os, pathlib, json, tempfile
3
3
  import numpy as np
4
- import multiprocessing # different processes (cameras, visual stim, ...) are sent on different threads...
4
+ import multiprocessing # different processes (cameras, visual stim, ...) are sent on different threads...)
5
5
  from ctypes import c_char_p
6
6
  import pyqtgraph as pg
7
7
  import subprocess
@@ -13,6 +13,8 @@ from physion.visual_stim.screens import SCREENS
13
13
  from physion.acquisition.settings import load_settings
14
14
  from physion.assembling.gui import build_cmd
15
15
 
16
+ from physion.acquisition import MODALITIES
17
+
16
18
  def multimodal(self,
17
19
  tab_id=0):
18
20
 
@@ -23,13 +25,7 @@ def multimodal(self,
23
25
 
24
26
  self.config = None
25
27
  self.subject, self.protocol = None, {}
26
- self.MODALITIES = ['Locomotion',
27
- 'FaceCamera',
28
- 'RigCamera',
29
- 'EphysLFP',
30
- 'EphysVm',
31
- 'CaImaging',
32
- 'onlyDemo']
28
+ self.MODALITIES = MODALITIES
33
29
 
34
30
  ##########################################
35
31
  ######## Multiprocessing quantities #####
@@ -37,8 +33,6 @@ def multimodal(self,
37
33
  # to be used through multiprocessing.Process:
38
34
  self.runEvent = multiprocessing.Event() # to turn on/off recordings
39
35
  self.runEvent.clear()
40
- self.readyEvent = multiprocessing.Event() # to tell of buffering finished
41
- self.readyEvent.clear()
42
36
  self.quitEvent = multiprocessing.Event()
43
37
  self.quitEvent.clear()
44
38
  self.manager = multiprocessing.Manager() # to share a str across processes
@@ -52,7 +46,6 @@ def multimodal(self,
52
46
  self.screen, self.stop_flag = None, False
53
47
  self.FaceCamera_process = None
54
48
  self.RigCamera_process = None
55
- self.VisualStim_process = None
56
49
  self.RigView_process = None
57
50
  self.params_window = None
58
51
 
@@ -113,7 +106,7 @@ def multimodal(self,
113
106
  #------------------- THEN MAIN PANEL -------------------
114
107
  ip, width = 0, 4
115
108
  tab.layout.addWidget(\
116
- QtWidgets.QLabel(40*' '+'** Config **', self),
109
+ QtWidgets.QLabel(40*' '+'** Configuration **', self),
117
110
  ip, self.side_wdgt_length,
118
111
  1, width)
119
112
  ip+=1
@@ -158,6 +151,7 @@ def multimodal(self,
158
151
  ip+=1
159
152
  # -
160
153
  self.protocolBox= QtWidgets.QComboBox(self)
154
+ # self.protocolBox.activated.connect(self.update_visualStim)
161
155
  tab.layout.addWidget(self.protocolBox,\
162
156
  ip, self.side_wdgt_length+1,
163
157
  1, width)
@@ -195,23 +189,17 @@ def multimodal(self,
195
189
 
196
190
  # NOW MENU INTERACTION BUTTONS
197
191
  ip, width = 1, 5
198
- self.initButton = QtWidgets.QPushButton(' * Initialize * ')
199
- self.initButton.clicked.connect(self.initialize)
200
- tab.layout.addWidget(self.initButton,
201
- ip, 10, 1, width)
202
- ip+=2
203
- self.runButton = QtWidgets.QPushButton(' * RUN *')
192
+ self.runButton = QtWidgets.QPushButton(' * START *')
204
193
  self.runButton.clicked.connect(self.run)
205
194
  tab.layout.addWidget(self.runButton,
206
195
  ip, 10, 1, width)
207
- self.runButton.setEnabled(False)
208
196
  ip+=1
209
197
  self.stopButton = QtWidgets.QPushButton(' * Stop *')
210
198
  self.stopButton.clicked.connect(self.stop)
211
199
  tab.layout.addWidget(self.stopButton,
212
200
  ip, 10, 1, width)
213
201
 
214
- for button in [self.initButton, self.runButton, self.stopButton]:
202
+ for button in [self.runButton, self.stopButton]:
215
203
  button.setStyleSheet("font-weight: bold")
216
204
 
217
205
  ip+=2
@@ -229,14 +217,13 @@ def multimodal(self,
229
217
  load_settings(self)
230
218
 
231
219
  if self.animate_buttons:
232
- self.initButton.setEnabled(True)
233
220
  self.runButton.setEnabled(False)
234
221
  self.stopButton.setEnabled(False)
235
222
 
236
223
  def build_NWB_for_last():
237
224
  # last folder
238
- folder = last_datafolder_in_dayfolder(day_folder(FOLDERS['~/DATA']))
239
- print(folder)
225
+ folder = last_datafolder_in_dayfolder(day_folder(FOLDERS[list(FOLDERS.keys())[0]]))
226
+ print('[ ] build NWB file for recording: ', folder)
240
227
  if os.path.isdir(folder):
241
228
  cmd, cwd = build_cmd(folder)
242
229
  print('\n launching the command \n : %s \n ' % cmd)
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "Presentation": "multiprotocol",
3
3
  "shuffling" :"full",
4
- "shuffling-seed" :34,
4
+ "shuffling-seed" :34,
5
+ "movie_refresh_freq":30.0,
6
+ "units":"cm",
5
7
  "Protocol-1": "subprotocols/contrast-curves/ff-drifting-gratings-4orientation-5contrasts-log-spaced-10repeats.json",
6
8
  "Protocol-2": "subprotocols/blank/grey-5min.json",
7
9
  "Protocol-3": "subprotocols/blank/black-5min.json",
8
- "presentation-blank-screen-color": 0,
10
+ "presentation-blank-screen-color": 0.5,
9
11
  "presentation-prestim-period": 2.0,
10
12
  "presentation-poststim-period": 2.0,
11
13
  "presentation-interstim-period": 4.0,
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "Presentation": "multiprotocol",
3
- "shuffling" :"none",
3
+ "shuffling" :"none",
4
+ "movie_refresh_freq":30.0,
5
+ "units":"cm",
4
6
  "Protocol-1": "subprotocols/blank/black-5min.json",
5
7
  "Protocol-2": "subprotocols/blank/grey-5min.json",
6
8
  "Protocol-3": "subprotocols/blank/black-10min.json",
@@ -0,0 +1,41 @@
1
+ {
2
+ "Presentation": "Stimuli-Sequence",
3
+ "Stimulus": "center-drifting-grating",
4
+ "Screen": "Dell-2020",
5
+ "movie_refresh_freq":20,
6
+ "presentation-duration": 2.0,
7
+ "presentation-blank-screen-color": 0.5,
8
+ "presentation-prestim-period": 5.0,
9
+ "presentation-poststim-period": 5.0,
10
+ "presentation-interstim-period": 2.0,
11
+ "units":"cm",
12
+ "starting-index": 0,
13
+ "angle-1": 0.0,
14
+ "angle-2": 315.0,
15
+ "N-angle": 8,
16
+ "spatial-freq-1": 0.04,
17
+ "spatial-freq-2": 0.04,
18
+ "N-spatial-freq": 0,
19
+ "speed-1": 1.0,
20
+ "speed-2": 1.0,
21
+ "N-speed": 0,
22
+ "radius-1": 200,
23
+ "radius-2": 200,
24
+ "N-radius": 0,
25
+ "x-center-1": 0.0,
26
+ "x-center-2": 0.0,
27
+ "N-x-center": 0,
28
+ "y-center-1": 0.0,
29
+ "y-center-2": 0.0,
30
+ "N-y-center": 0,
31
+ "contrast-1": 0.05,
32
+ "contrast-2": 0.8,
33
+ "N-contrast": 6,
34
+ "bg-color-1": 0.5,
35
+ "bg-color-2": 0.5,
36
+ "N-bg-color": 0,
37
+ "phase-1": 90.0,
38
+ "phase-2": 90.0,
39
+ "N-phase": 0,
40
+ "N-repeat": 10
41
+ }
@@ -1,5 +1,8 @@
1
1
  {
2
- "Presentation": "multiprotocol",
2
+ "Presentation": "multiprotocol",
3
+ "Screen": "Dell-2020",
4
+ "movie_refresh_freq":30.0,
5
+ "units":"cm",
3
6
  "shuffling" :"full",
4
7
  "shuffling-seed" :23,
5
8
  "Protocol-1": "subprotocols/NDNF/moving-dots.json",
@@ -7,11 +10,10 @@
7
10
  "Protocol-3": "subprotocols/NDNF/static-patch.json",
8
11
  "Protocol-4": "subprotocols/NDNF/looming-stim.json",
9
12
  "Protocol-5": "subprotocols/NDNF/Natural-Images-4-repeats.json",
10
- "Protocol-6": "subprotocols/blank/grey-10min.json",
13
+ "Protocol-6": "subprotocols/blank/grey-20min.json",
11
14
  "Protocol-7": "subprotocols/NDNF/drifting-gratings.json",
12
15
  "presentation-blank-screen-color": 0.5,
13
16
  "presentation-prestim-period": 6,
14
17
  "presentation-poststim-period": 6,
15
- "presentation-interstim-period": 4,
16
- "Screen": "Dell-2020"
18
+ "presentation-interstim-period": 4
17
19
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "Presentation": "Stimuli-Sequence",
3
+ "Stimulus": "uniform-bg",
4
+ "Screen": "Dell-2020",
5
+ "movie_refresh_freq":30,
6
+ "presentation-duration": 20,
7
+ "presentation-blank-screen-color": 0.5,
8
+ "presentation-prestim-period": 2,
9
+ "presentation-poststim-period": 2,
10
+ "presentation-interstim-period": 0,
11
+ "N-repeat": 5,
12
+ "starting-index": 0,
13
+ "bg-color-1": 0.0,
14
+ "bg-color-2": 1.0,
15
+ "N-bg-color": 3
16
+ }
@@ -2,21 +2,22 @@
2
2
  "Presentation": "Stimuli-Sequence",
3
3
  "Stimulus": "center-drifting-grating",
4
4
  "Screen": "Dell-2020",
5
- "movie_refresh_freq":20,
5
+ "movie_refresh_freq":30.0,
6
+ "units":"cm",
6
7
  "presentation-duration": 3.0,
7
- "presentation-blank-screen-color": 0,
8
+ "presentation-blank-screen-color": 0.5,
8
9
  "presentation-prestim-period": 6.0,
9
10
  "presentation-poststim-period": 6.0,
10
11
  "presentation-interstim-period": 6.0,
11
- "starting-index": 0,
12
+ "N-repeat": 10,
12
13
  "angle-1": 0.0,
13
14
  "angle-2": 270.0,
14
15
  "N-angle": 4,
15
- "spatial-freq-1": 0.1,
16
- "spatial-freq-2": 0.1,
16
+ "spatial-freq-1": 0.05,
17
+ "spatial-freq-2": 0.05,
17
18
  "N-spatial-freq": 0,
18
- "speed-1": 2.0,
19
- "speed-2": 2.0,
19
+ "speed-1": 1.0,
20
+ "speed-2": 1.0,
20
21
  "N-speed": 0,
21
22
  "radius-1": 200,
22
23
  "radius-2": 200,
@@ -27,11 +28,13 @@
27
28
  "y-center-1": 0.0,
28
29
  "y-center-2": 0.0,
29
30
  "N-y-center": 0,
30
- "contrast-1": 1.0,
31
+ "contrast-1": 0.2,
31
32
  "contrast-2": 1.0,
32
- "N-contrast": 0,
33
+ "N-contrast": 3,
33
34
  "bg-color-1": 0.5,
34
35
  "bg-color-2": 0.5,
35
36
  "N-bg-color": 0,
36
- "N-repeat": 10
37
+ "phase-1": 90.0,
38
+ "phase-2": 90.0,
39
+ "N-phase": 0
37
40
  }
@@ -0,0 +1,38 @@
1
+ {
2
+ "Presentation": "Stimuli-Sequence",
3
+ "Stimulus": "center-grating",
4
+ "Screen": "Dell-2020",
5
+ "shuffling-seed": 1,
6
+ "movie_refresh_freq":30.0,
7
+ "units":"lin-deg",
8
+ "presentation-duration": 2,
9
+ "presentation-prestim-period": 4,
10
+ "presentation-poststim-period": 4,
11
+ "presentation-interstim-period": 4,
12
+ "presentation-blank-screen-color": 0.5,
13
+ "N-repeat": 15,
14
+ "angle-1": 0,
15
+ "angle-2": 90,
16
+ "N-angle": 2,
17
+ "spatial-freq-1": 0.04,
18
+ "spatial-freq-2": 0.04,
19
+ "N-spatial-freq": 0,
20
+ "radius-1": 200,
21
+ "radius-2": 200,
22
+ "N-radius": 0,
23
+ "x-center-1": 0.0,
24
+ "x-center-2": 0.0,
25
+ "N-x-center": 0,
26
+ "y-center-1": 0.0,
27
+ "y-center-2": 0.0,
28
+ "N-y-center": 0,
29
+ "contrast-1": 0.05,
30
+ "contrast-2": 1.0,
31
+ "N-contrast": 8,
32
+ "bg-color-1": 0.5,
33
+ "bg-color-2": 0.5,
34
+ "N-bg-color": 0,
35
+ "phase-1": 90.0,
36
+ "phase-2": 90.0,
37
+ "N-phase": 0
38
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "Presentation": "Stimuli-Sequence",
3
+ "Stimulus": "center-grating",
4
+ "Screen": "Dell-2020",
5
+ "shuffling-seed": 1,
6
+ "movie_refresh_freq":30.0,
7
+ "units":"lin-deg",
8
+ "presentation-duration": 2,
9
+ "presentation-prestim-period": 4,
10
+ "presentation-poststim-period": 4,
11
+ "presentation-interstim-period": 4,
12
+ "presentation-blank-screen-color": 0.5,
13
+ "N-repeat": 15,
14
+ "angle-1": 0,
15
+ "angle-2": 157.5,
16
+ "N-angle": 8,
17
+ "spatial-freq-1": 0.04,
18
+ "spatial-freq-2": 0.04,
19
+ "N-spatial-freq": 0,
20
+ "radius-1": 200,
21
+ "radius-2": 200,
22
+ "N-radius": 0,
23
+ "x-center-1": 0.0,
24
+ "x-center-2": 0.0,
25
+ "N-x-center": 0,
26
+ "y-center-1": 0.0,
27
+ "y-center-2": 0.0,
28
+ "N-y-center": 0,
29
+ "contrast-1": 0.5,
30
+ "contrast-2": 1.0,
31
+ "N-contrast": 2,
32
+ "bg-color-1": 0.5,
33
+ "bg-color-2": 0.5,
34
+ "N-bg-color": 0,
35
+ "phase-1": 90.0,
36
+ "phase-2": 90.0,
37
+ "N-phase": 0
38
+ }