physion 1.1__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 (233) hide show
  1. {physion-1.1/src/physion.egg-info → physion-1.2}/PKG-INFO +11 -4
  2. {physion-1.1 → physion-1.2}/README.md +10 -3
  3. {physion-1.1 → physion-1.2}/pyproject.toml +1 -1
  4. {physion-1.1 → physion-1.2}/src/physion/__main__.py +6 -2
  5. physion-1.2/src/physion/acquisition/protocols/black-grey-white-20s-each-x5.json +16 -0
  6. physion-1.2/src/physion/acquisition/protocols/injection-monitoring.json +38 -0
  7. {physion-1.1 → physion-1.2}/src/physion/acquisition/run.py +10 -5
  8. {physion-1.1 → physion-1.2}/src/physion/acquisition/tools.py +0 -8
  9. physion-1.2/src/physion/analysis/__init__.py +3 -0
  10. {physion-1.1 → physion-1.2}/src/physion/analysis/read_NWB.py +43 -13
  11. {physion-1.1 → physion-1.2}/src/physion/assembling/add_ophys.py +5 -3
  12. {physion-1.1 → physion-1.2}/src/physion/assembling/nwb.py +165 -107
  13. {physion-1.1 → physion-1.2}/src/physion/assembling/realign_from_photodiode.py +9 -6
  14. {physion-1.1 → physion-1.2}/src/physion/assembling/update_metadata.py +2 -0
  15. physion-1.2/src/physion/behavior/convert_to_movie.py +119 -0
  16. {physion-1.1 → physion-1.2}/src/physion/dataviz/episodes/evoked_raster.py +2 -2
  17. {physion-1.1 → physion-1.2}/src/physion/dataviz/imaging.py +2 -2
  18. {physion-1.1 → physion-1.2}/src/physion/dataviz/plots.py +0 -1
  19. physion-1.2/src/physion/dataviz/protocols/template.py +32 -0
  20. {physion-1.1 → physion-1.2}/src/physion/dataviz/snapshot.py +1 -1
  21. {physion-1.1 → physion-1.2}/src/physion/facemotion/gui.py +24 -24
  22. {physion-1.1 → physion-1.2}/src/physion/facemotion/process.py +19 -18
  23. {physion-1.1 → physion-1.2}/src/physion/gui/main.py +16 -2
  24. {physion-1.1 → physion-1.2}/src/physion/gui/menu.py +4 -1
  25. {physion-1.1 → physion-1.2}/src/physion/gui/parts.py +2 -2
  26. {physion-1.1 → physion-1.2}/src/physion/imaging/bruker/xml_parser.py +6 -3
  27. {physion-1.1 → physion-1.2}/src/physion/imaging/convert_to_movie.py +108 -89
  28. {physion-1.1 → physion-1.2}/src/physion/imaging/gui.py +13 -0
  29. physion-1.1/src/physion/assembling/IO/suite2p_to_nwb.py → physion-1.2/src/physion/imaging/suite2p/to_nwb.py +17 -6
  30. {physion-1.1 → physion-1.2}/src/physion/intrinsic/acquisition.py +1 -0
  31. {physion-1.1 → physion-1.2}/src/physion/intrinsic/analysis.py +22 -26
  32. {physion-1.1 → physion-1.2}/src/physion/intrinsic/tools.py +42 -20
  33. {physion-1.1 → physion-1.2}/src/physion/pupil/gui.py +33 -30
  34. {physion-1.1 → physion-1.2}/src/physion/pupil/process.py +7 -8
  35. physion-1.2/src/physion/utils/camera.py +210 -0
  36. physion-1.2/src/physion/utils/management/delete.py +96 -0
  37. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/adjust_plots.py +2 -2
  38. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/export.py +1 -1
  39. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/morphologies.py +1 -1
  40. physion-1.2/src/physion/utils/transfer/__init__.py +0 -0
  41. physion-1.2/src/physion/utils/transfer/__main__.py +32 -0
  42. {physion-1.1 → physion-1.2}/src/physion/utils/transfer/gui.py +7 -24
  43. physion-1.2/src/physion/utils/transfer/types.py +77 -0
  44. {physion-1.1 → physion-1.2}/src/physion/visual_stim/main.py +36 -13
  45. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/center_drifting_grating.py +2 -2
  46. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/gaussian_blob.py +2 -2
  47. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/line_moving_dots.py +2 -2
  48. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/looming_stim.py +2 -2
  49. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/natural_image.py +2 -0
  50. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/scattered_moving_dots.py +3 -4
  51. {physion-1.1 → physion-1.2/src/physion.egg-info}/PKG-INFO +11 -4
  52. {physion-1.1 → physion-1.2}/src/physion.egg-info/SOURCES.txt +9 -9
  53. physion-1.1/src/physion/analysis/__init__.py +0 -3
  54. physion-1.1/src/physion/assembling/IO/__init__.py +0 -1
  55. physion-1.1/src/physion/assembling/IO/bruker_data.py +0 -185
  56. physion-1.1/src/physion/assembling/IO/bruker_xml_parser.py +0 -154
  57. physion-1.1/src/physion/behavior/convert_to_movie.py +0 -139
  58. physion-1.1/src/physion/dataviz/protocols/__init__.py +0 -1
  59. physion-1.1/src/physion/hardware/DummyCamera.py +0 -145
  60. physion-1.1/src/physion/hardware/FLIRCamera.py +0 -151
  61. physion-1.1/src/physion/hardware/ThorlabsCamera.py +0 -194
  62. physion-1.1/src/physion/imaging/suite2p/to_nwb.py +0 -195
  63. {physion-1.1 → physion-1.2}/LICENSE +0 -0
  64. {physion-1.1 → physion-1.2}/setup.cfg +0 -0
  65. {physion-1.1 → physion-1.2}/src/physion/__init__.py +0 -0
  66. {physion-1.1 → physion-1.2}/src/physion/acquisition/__init__.py +0 -0
  67. {physion-1.1 → physion-1.2}/src/physion/acquisition/configs/Adrianna-Bacci-2P.json +0 -0
  68. {physion-1.1 → physion-1.2}/src/physion/acquisition/configs/Jo-Bacci-2P.json +0 -0
  69. {physion-1.1 → physion-1.2}/src/physion/acquisition/configs/Taddy-A1-2P.json +0 -0
  70. {physion-1.1 → physion-1.2}/src/physion/acquisition/configs/Troubleshooting.json +0 -0
  71. {physion-1.1 → physion-1.2}/src/physion/acquisition/configs/Yann-A1-2P.json +0 -0
  72. {physion-1.1 → physion-1.2}/src/physion/acquisition/configs/Yann-Bacci-2P.json +0 -0
  73. {physion-1.1 → physion-1.2}/src/physion/acquisition/gui.py +0 -0
  74. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/FFDG-contrast-curve+blank.json +0 -0
  75. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/Light-Levels-Symmetric-5b-5g-10blank-5g-5b.json +0 -0
  76. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/Millman-et-al-2020.json +0 -0
  77. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/NDNF-protocol.json +0 -0
  78. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/drifting-gratings.json +0 -0
  79. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/ff-gratings-2orientations-8contrasts-15repeats.json +0 -0
  80. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/ff-gratings-8orientation-2contrasts-15repeats.json +0 -0
  81. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/old-NDNF-protocol.json +0 -0
  82. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/quick-spatial-mapping.json +0 -0
  83. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/size-tuning-protocol-linear.json +0 -0
  84. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/size-tuning-protocol-log-long.json +0 -0
  85. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/size-tuning-protocol-log.json +0 -0
  86. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/size-tuning-protocol-long.json +0 -0
  87. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/spatial-mapping.json +0 -0
  88. {physion-1.1 → physion-1.2}/src/physion/acquisition/protocols/stim-demo.json +0 -0
  89. {physion-1.1 → physion-1.2}/src/physion/acquisition/recordings/Scan1Plane_Screen342V.py +0 -0
  90. {physion-1.1 → physion-1.2}/src/physion/acquisition/recordings/Scan1Plane_Screen356VOffPeriodScan.py +0 -0
  91. {physion-1.1 → physion-1.2}/src/physion/acquisition/recordings/__init__.py +0 -0
  92. {physion-1.1 → physion-1.2}/src/physion/acquisition/settings.py +0 -0
  93. {physion-1.1 → physion-1.2}/src/physion/analysis/behavior.py +0 -0
  94. {physion-1.1 → physion-1.2}/src/physion/analysis/dataframe.py +0 -0
  95. {physion-1.1 → physion-1.2}/src/physion/analysis/process_NWB.py +0 -0
  96. {physion-1.1 → physion-1.2}/src/physion/analysis/protocols/FFDG.py +0 -0
  97. {physion-1.1 → physion-1.2}/src/physion/analysis/protocols/FFDG_with_blank.py +0 -0
  98. {physion-1.1 → physion-1.2}/src/physion/analysis/protocols/Light_Levels.py +0 -0
  99. {physion-1.1/src/physion/assembling → physion-1.2/src/physion/analysis/protocols}/__init__.py +0 -0
  100. {physion-1.1 → physion-1.2}/src/physion/analysis/protocols/contrast_curves.py +0 -0
  101. {physion-1.1 → physion-1.2}/src/physion/analysis/protocols/size_tuning.py +0 -0
  102. {physion-1.1 → physion-1.2}/src/physion/analysis/protocols/spatial_mapping.py +0 -0
  103. {physion-1.1 → physion-1.2}/src/physion/analysis/stat_tools.py +0 -0
  104. {physion-1.1 → physion-1.2}/src/physion/analysis/summary_pdf.py +0 -0
  105. {physion-1.1 → physion-1.2}/src/physion/analysis/tools.py +0 -0
  106. {physion-1.1 → physion-1.2}/src/physion/analysis/trial_averaging.py +0 -0
  107. {physion-1.1 → physion-1.2}/src/physion/assembling/FOV_coordinates.py +0 -0
  108. {physion-1.1/src/physion/behavior → physion-1.2/src/physion/assembling}/__init__.py +0 -0
  109. {physion-1.1 → physion-1.2}/src/physion/assembling/gui.py +0 -0
  110. {physion-1.1 → physion-1.2}/src/physion/assembling/tools.py +0 -0
  111. {physion-1.1/src/physion/dataviz/dataframe → physion-1.2/src/physion/behavior}/__init__.py +0 -0
  112. {physion-1.1 → physion-1.2}/src/physion/behavior/locomotion.py +0 -0
  113. {physion-1.1 → physion-1.2}/src/physion/dataviz/FOV.py +0 -0
  114. {physion-1.1 → physion-1.2}/src/physion/dataviz/__init__.py +0 -0
  115. {physion-1.1 → physion-1.2}/src/physion/dataviz/camera.py +0 -0
  116. {physion-1.1/src/physion/electrophy → physion-1.2/src/physion/dataviz/dataframe}/__init__.py +0 -0
  117. {physion-1.1 → physion-1.2}/src/physion/dataviz/episodes/__init__.py +0 -0
  118. {physion-1.1 → physion-1.2}/src/physion/dataviz/episodes/behavior.py +0 -0
  119. {physion-1.1 → physion-1.2}/src/physion/dataviz/episodes/trial_average.py +0 -0
  120. {physion-1.1 → physion-1.2}/src/physion/dataviz/gui.py +0 -0
  121. {physion-1.1 → physion-1.2}/src/physion/dataviz/movie.py +0 -0
  122. {physion-1.1/src/physion/analysis → physion-1.2/src/physion/dataviz}/protocols/__init__.py +0 -0
  123. {physion-1.1 → physion-1.2}/src/physion/dataviz/pupil.py +0 -0
  124. {physion-1.1 → physion-1.2}/src/physion/dataviz/raw.py +0 -0
  125. {physion-1.1 → physion-1.2}/src/physion/dataviz/tools.py +0 -0
  126. {physion-1.1/src/physion/facemotion → physion-1.2/src/physion/electrophy}/__init__.py +0 -0
  127. {physion-1.1/src/physion/gui → physion-1.2/src/physion/facemotion}/__init__.py +0 -0
  128. {physion-1.1 → physion-1.2}/src/physion/facemotion/roi.py +0 -0
  129. {physion-1.1/src/physion/hardware/Dummy → physion-1.2/src/physion/gui}/__init__.py +0 -0
  130. {physion-1.1 → physion-1.2}/src/physion/gui/calendar.py +0 -0
  131. {physion-1.1/src/physion/hardware/FLIRcamera → physion-1.2/src/physion/hardware/Dummy}/__init__.py +0 -0
  132. {physion-1.1 → physion-1.2}/src/physion/hardware/Dummy/camera.py +0 -0
  133. {physion-1.1/src/physion/hardware/LogitechWebcam → physion-1.2/src/physion/hardware/FLIRcamera}/__init__.py +0 -0
  134. {physion-1.1 → physion-1.2}/src/physion/hardware/FLIRcamera/export.py +0 -0
  135. {physion-1.1 → physion-1.2}/src/physion/hardware/FLIRcamera/launch.py +0 -0
  136. {physion-1.1 → physion-1.2}/src/physion/hardware/FLIRcamera/main.py +0 -0
  137. {physion-1.1 → physion-1.2}/src/physion/hardware/FLIRcamera/test.py +0 -0
  138. {physion-1.1 → physion-1.2}/src/physion/hardware/Igor/hdf5.py +0 -0
  139. {physion-1.1 → physion-1.2}/src/physion/hardware/Igor/igor.py +0 -0
  140. {physion-1.1/src/physion/hardware/RaspberryPi → physion-1.2/src/physion/hardware/LogitechWebcam}/__init__.py +0 -0
  141. {physion-1.1 → physion-1.2}/src/physion/hardware/LogitechWebcam/main.py +0 -0
  142. {physion-1.1 → physion-1.2}/src/physion/hardware/LogitechWebcam/test.py +0 -0
  143. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/__init__.py +0 -0
  144. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/config.py +0 -0
  145. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/inputs_for_screen.py +0 -0
  146. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/main.py +0 -0
  147. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/pulse.py +0 -0
  148. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/recording.py +0 -0
  149. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/steps.py +0 -0
  150. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/subprocess.py +0 -0
  151. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/test.py +0 -0
  152. {physion-1.1 → physion-1.2}/src/physion/hardware/NIdaq/zero_AO.py +0 -0
  153. {physion-1.1 → physion-1.2}/src/physion/hardware/QCamera/camera_core_test.py +0 -0
  154. {physion-1.1 → physion-1.2}/src/physion/hardware/QCamera/frame_rate_test.py +0 -0
  155. {physion-1.1/src/physion/hardware/Thorlabs → physion-1.2/src/physion/hardware/RaspberryPi}/__init__.py +0 -0
  156. {physion-1.1 → physion-1.2}/src/physion/hardware/RaspberryPi/main.py +0 -0
  157. {physion-1.1/src/physion/hardware → physion-1.2/src/physion/hardware/Thorlabs}/__init__.py +0 -0
  158. {physion-1.1 → physion-1.2}/src/physion/hardware/Thorlabs/cam_test.py +0 -0
  159. {physion-1.1 → physion-1.2}/src/physion/hardware/Thorlabs/thorcam.py +0 -0
  160. {physion-1.1 → physion-1.2}/src/physion/hardware/Thorlabs/tkinter_camera_live_view.py +0 -0
  161. {physion-1.1 → physion-1.2}/src/physion/hardware/Thorlabs/usb_camera.py +0 -0
  162. {physion-1.1/src/physion/hardware/zaber_stage → physion-1.2/src/physion/hardware}/__init__.py +0 -0
  163. {physion-1.1/src/physion/imaging/bruker → physion-1.2/src/physion/hardware/zaber_stage}/__init__.py +0 -0
  164. {physion-1.1 → physion-1.2}/src/physion/hardware/zaber_stage/main.py +0 -0
  165. {physion-1.1 → physion-1.2}/src/physion/imaging/Calcium.py +0 -0
  166. {physion-1.1 → physion-1.2}/src/physion/imaging/__init__.py +0 -0
  167. {physion-1.1/src/physion/imaging/suite2p → physion-1.2/src/physion/imaging/bruker}/__init__.py +0 -0
  168. {physion-1.1 → physion-1.2}/src/physion/imaging/dcnv.py +0 -0
  169. {physion-1.1 → physion-1.2}/src/physion/imaging/red_label.py +0 -0
  170. {physion-1.1/src/physion/intrinsic → physion-1.2/src/physion/imaging/suite2p}/__init__.py +0 -0
  171. {physion-1.1/src/physion/assembling/IO → physion-1.2/src/physion/imaging/suite2p}/binary.py +0 -0
  172. {physion-1.1 → physion-1.2}/src/physion/imaging/suite2p/default_ops.py +0 -0
  173. {physion-1.1 → physion-1.2}/src/physion/imaging/suite2p/preprocessing.py +0 -0
  174. {physion-1.1 → physion-1.2}/src/physion/imaging/suite2p/presets.py +0 -0
  175. {physion-1.1 → physion-1.2}/src/physion/intrinsic/RetinotopicMapping.py +0 -0
  176. {physion-1.1 → physion-1.2}/src/physion/intrinsic/SS_analysis.py +0 -0
  177. {physion-1.1/src/physion/pupil → physion-1.2/src/physion/intrinsic}/__init__.py +0 -0
  178. {physion-1.1 → physion-1.2}/src/physion/intrinsic/build_protocols.py +0 -0
  179. {physion-1.1 → physion-1.2}/src/physion/intrinsic/pdf.py +0 -0
  180. {physion-1.1 → physion-1.2}/src/physion/intrinsic/somatosensory.py +0 -0
  181. {physion-1.1/src/physion/utils/management → physion-1.2/src/physion/pupil}/__init__.py +0 -0
  182. {physion-1.1 → physion-1.2}/src/physion/pupil/outliers.py +0 -0
  183. {physion-1.1 → physion-1.2}/src/physion/pupil/roi.py +0 -0
  184. {physion-1.1 → physion-1.2}/src/physion/utils/__init__.py +0 -0
  185. {physion-1.1/src/physion/imaging/suite2p → physion-1.2/src/physion/utils}/binary.py +0 -0
  186. {physion-1.1 → physion-1.2}/src/physion/utils/files.py +0 -0
  187. {physion-1.1/src/physion/assembling/IO → physion-1.2/src/physion/utils}/hdf5.py +0 -0
  188. {physion-1.1/src/physion/utils/sharing → physion-1.2/src/physion/utils/management}/__init__.py +0 -0
  189. {physion-1.1 → physion-1.2}/src/physion/utils/matplotlib_style.py +0 -0
  190. {physion-1.1 → physion-1.2}/src/physion/utils/misc.py +0 -0
  191. {physion-1.1 → physion-1.2}/src/physion/utils/npz.py +0 -0
  192. {physion-1.1 → physion-1.2}/src/physion/utils/paths.py +0 -0
  193. {physion-1.1 → physion-1.2}/src/physion/utils/plot_export.py +0 -0
  194. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/__init__.py +0 -0
  195. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/setup.py +0 -0
  196. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/annotations.py +0 -0
  197. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/bar.py +0 -0
  198. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/colors.py +0 -0
  199. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/figure.py +0 -0
  200. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/inset.py +0 -0
  201. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/legend.py +0 -0
  202. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/line.py +0 -0
  203. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/pie.py +0 -0
  204. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/scatter.py +0 -0
  205. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/time_freq.py +0 -0
  206. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/src/violin.py +0 -0
  207. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/style-sheets/dark-notebook.py +0 -0
  208. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/style-sheets/dark.py +0 -0
  209. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/style-sheets/manuscript.py +0 -0
  210. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/tests/Notebook.py +0 -0
  211. {physion-1.1 → physion-1.2}/src/physion/utils/plot_tools/tests/envs.py +0 -0
  212. {physion-1.1 → physion-1.2}/src/physion/utils/progressBar.py +0 -0
  213. {physion-1.1/src/physion/utils/transfer → physion-1.2/src/physion/utils/sharing}/__init__.py +0 -0
  214. {physion-1.1 → physion-1.2}/src/physion/utils/sharing/prepare_nwb_files.py +0 -0
  215. {physion-1.1 → physion-1.2}/src/physion/visual_stim/__init__.py +0 -0
  216. {physion-1.1 → physion-1.2}/src/physion/visual_stim/build.py +0 -0
  217. {physion-1.1 → physion-1.2}/src/physion/visual_stim/gamma-correction.py +0 -0
  218. {physion-1.1 → physion-1.2}/src/physion/visual_stim/preprocess_NI.py +0 -0
  219. {physion-1.1 → physion-1.2}/src/physion/visual_stim/screens.py +0 -0
  220. {physion-1.1 → physion-1.2}/src/physion/visual_stim/show.py +0 -0
  221. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/__init__.py +0 -0
  222. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/center_grating.py +0 -0
  223. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/flickering_bar.py +0 -0
  224. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/oscillDG.py +0 -0
  225. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/random_dots.py +0 -0
  226. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/template.py +0 -0
  227. {physion-1.1 → physion-1.2}/src/physion/visual_stim/stimuli/uniform_bg.py +0 -0
  228. {physion-1.1 → physion-1.2}/src/physion/visual_stim/tests/opencv.py +0 -0
  229. {physion-1.1 → physion-1.2}/src/physion/visual_stim/tests/psychopy.py +0 -0
  230. {physion-1.1 → physion-1.2}/src/physion/visual_stim/tests/qt.py +0 -0
  231. {physion-1.1 → physion-1.2}/src/physion.egg-info/dependency_links.txt +0 -0
  232. {physion-1.1 → physion-1.2}/src/physion.egg-info/requires.txt +0 -0
  233. {physion-1.1 → 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.1
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
@@ -29,9 +29,10 @@ Requires-Dist: ffmpeg-python
29
29
  Requires-Dist: pyqt5
30
30
  Requires-Dist: openpyxl
31
31
 
32
- <!-- ** Build Instructions ** -->
33
- <!-- python -m build -->
32
+ <!-- ** Build Instructions ** -->
33
+ <!-- python -m build -->
34
34
  <!-- python -m twine upload --repository pypi dist/* -->
35
+ <!-- -->
35
36
 
36
37
  <div><img src="./docs/icons/physion.png" alt="physion logo" width="35%" align="right" style="margin-left: 10px"></div>
37
38
 
@@ -53,7 +54,13 @@ The different modules are detailed in the [documentation below](README.md#module
53
54
 
54
55
  ## Install
55
56
 
56
- Simply:
57
+ Create a `"physion"` environment running `python 3.11`, with:
58
+
59
+ ```
60
+ conda create -n "physion" python=3.11
61
+ ```
62
+
63
+ Then simply:
57
64
  ```
58
65
  pip install physion
59
66
  ```
@@ -1,6 +1,7 @@
1
- <!-- ** Build Instructions ** -->
2
- <!-- python -m build -->
1
+ <!-- ** Build Instructions ** -->
2
+ <!-- python -m build -->
3
3
  <!-- python -m twine upload --repository pypi dist/* -->
4
+ <!-- -->
4
5
 
5
6
  <div><img src="./docs/icons/physion.png" alt="physion logo" width="35%" align="right" style="margin-left: 10px"></div>
6
7
 
@@ -22,7 +23,13 @@ The different modules are detailed in the [documentation below](README.md#module
22
23
 
23
24
  ## Install
24
25
 
25
- Simply:
26
+ Create a `"physion"` environment running `python 3.11`, with:
27
+
28
+ ```
29
+ conda create -n "physion" python=3.11
30
+ ```
31
+
32
+ Then simply:
26
33
  ```
27
34
  pip install physion
28
35
  ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "physion"
3
- version = "1.1"
3
+ version = "1.2"
4
4
  authors = [
5
5
  { name="Yann Zerlaut", email="yann.zerlaut@gmail.com" },
6
6
  ]
@@ -1,4 +1,4 @@
1
- import sys
1
+ import sys, os
2
2
  from PyQt5 import QtWidgets
3
3
 
4
4
  from physion.gui.main import MainWindow
@@ -10,7 +10,11 @@ try:
10
10
  except ModuleNotFoundError:
11
11
  pass
12
12
 
13
- 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)
14
18
 
15
19
  sys.exit(app.exec_())
16
20
 
@@ -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
+ }
@@ -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": 10,
10
+ "presentation-poststim-period": 10,
11
+ "presentation-interstim-period": 8,
12
+ "presentation-blank-screen-color": 0.5,
13
+ "N-repeat": 38,
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": 1.0,
30
+ "contrast-2": 1.0,
31
+ "N-contrast": 1,
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
+ }
@@ -59,10 +59,7 @@ def init_VisualStim(self):
59
59
  p = self.protocol.copy() # a copy of the protocol data for saving
60
60
  p['no-window'] = True
61
61
  stim = build_VisualStim(p)
62
- np.save(os.path.join(self.date_time_folder,
63
- 'visual-stim.npy'), stim.experiment)
64
- print('[ok] Visual-stimulation data saved as "%s"' %\
65
- os.path.join(self.date_time_folder, 'visual-stim.npy'))
62
+ stim.save(self.date_time_folder) # writes visual-stim.npy & protocol.json
66
63
 
67
64
  self.max_time = stim.experiment['time_stop'][-1]+\
68
65
  stim.experiment['time_start'][0]
@@ -148,7 +145,14 @@ def run(self):
148
145
 
149
146
  NIdaq_metadata_init(self)
150
147
 
151
- if not self.onlyDemoButton.isChecked():
148
+ if self.onlyDemoButton.isChecked():
149
+ np.save(os.path.join(self.date_time_folder, 'NIdaq.start.npy'),
150
+ time.time()*np.ones(1))
151
+ np.save(os.path.join(self.date_time_folder, 'NIdaq.npy'),
152
+ {'analog':np.zeros((1,20000)),
153
+ 'digital':np.zeros((1,20000)),
154
+ 'dt':1e-2})
155
+ else:
152
156
  try:
153
157
  self.acq = Acquisition(\
154
158
  sampling_rate=\
@@ -164,6 +168,7 @@ def run(self):
164
168
  print(e)
165
169
  print('\n [!!] PB WITH NI-DAQ [!!] \n')
166
170
  self.acq = None
171
+
167
172
 
168
173
  # saving all metadata after full initialization:
169
174
  self.save_experiment(self.metadata)
@@ -50,14 +50,6 @@ def save_experiment(self, metadata):
50
50
  '%s.xlsx' % self.subjectBox.currentText()))
51
51
  print('[ok] Subject data saved as: %s.xlsx' % self.subjectBox.currentText())
52
52
 
53
- # SAVING THE PROTOCOL FILE
54
- if self.protocolBox.currentText()!='None':
55
- shutil.copy(os.path.join(base_path, 'protocols',
56
- self.protocolBox.currentText()+'.json'),
57
- filename.replace('metadata', 'protocol'))
58
-
59
- print('[ok] Protocol data saved as: protocol.json ')
60
-
61
53
 
62
54
 
63
55
  def get_subject_props(self, filename=None):
@@ -0,0 +1,3 @@
1
+ from . import stat_tools, tools, read_NWB, process_NWB, behavior, dataframe, protocols
2
+
3
+
@@ -502,7 +502,6 @@ class Data:
502
502
  ################################################
503
503
 
504
504
  def init_visual_stim(self, verbose=True):
505
- self.metadata['load_from_protocol_data'], self.metadata['no-window'] = False, True
506
505
  self.metadata['verbose'] = verbose
507
506
  self.visual_stim = build_stim(self.metadata)
508
507
 
@@ -590,44 +589,73 @@ class Data:
590
589
 
591
590
  def list_subquantities(self, quantity):
592
591
  if quantity=='CaImaging':
593
- return ['rawFluo', 'dFoF', 'neuropil', 'Deconvolved',
594
- 'F-0.7*Fneu', 'F-Fneu', 'd(F-Fneu)', 'd(F-0.7*Fneu)']
592
+ return ['rawFluo', 'neuropil', 'dFoF', 'Deconvolved']
595
593
  else:
596
594
  return ['']
597
595
 
598
596
 
599
597
 
600
598
  def scan_folder_for_NWBfiles(folder,
599
+ for_protocol=None,
600
+ for_protocols=[],
601
601
  sorted_by='filename',
602
602
  Nmax=1000000,
603
603
  exclude_intrinsic_imaging_files=True,
604
604
  verbose=True):
605
605
  """
606
- scan folders for protocols and returns a A
606
+ scan folders for protocols and returns a list of datafiles
607
607
 
608
- by default: exccludes the intrinsic imaging files
608
+ by default: excludes the intrinsic imaging files
609
609
  """
610
610
  if verbose:
611
611
  print('inspecting the folder "%s" [...]' % folder)
612
612
  t0 = time.time()
613
613
 
614
- FILES = get_files_with_extension(folder,
614
+ if (for_protocol is not None) and (len(for_protocols)==0):
615
+ for_protocols = [for_protocol]
616
+
617
+ FILES0 = get_files_with_extension(folder,
615
618
  extension='.nwb', recursive=True)
616
619
 
617
620
  if exclude_intrinsic_imaging_files:
618
- FILES = [f for f in FILES if (('left-' not in f) and\
621
+ FILES0 = [f for f in FILES0 if (('left-' not in f) and\
619
622
  ('down-' not in f) and\
620
623
  ('right-' not in f) and\
621
624
  ('up-' not in f))]
622
625
 
623
- DATES = np.array([f.split(os.path.sep)[-1].split('-')[0] for f in FILES])
624
- SUBJECTS, PROTOCOLS = [], []
626
+ DATES = np.array([f.split(os.path.sep)[-1].split('-')[0] for f in FILES0])
627
+ FILES, SUBJECTS, PROTOCOLS, PROTOCOL_IDS = [], [], [], []
628
+
629
+ for f in FILES0[:Nmax]:
625
630
 
626
- for f in FILES[:Nmax]:
627
631
  try:
628
632
  data = Data(f, metadata_only=True, verbose=False)
629
- PROTOCOLS.append(data.protocols)
630
- SUBJECTS.append(data.metadata['subject_ID'])
633
+
634
+ if len(for_protocols)>0:
635
+
636
+ # we look for specific protocols
637
+ iProtocols, Protocols = [], []
638
+ for protocol in for_protocols:
639
+ iP = np.flatnonzero(data.protocols==protocol)
640
+ if len(iP)==1:
641
+ iProtocols.append(iP[0])
642
+ Protocols.append(data.protocols[iP[0]])
643
+
644
+ if len(Protocols)>0:
645
+ # if it has at least one protocol, we include it
646
+ FILES.append(f)
647
+ PROTOCOLS.append(Protocols)
648
+ PROTOCOL_IDS.append(iProtocols)
649
+ SUBJECTS.append(data.metadata['subject_ID'])
650
+
651
+ else:
652
+
653
+ # we include with all protocols
654
+ FILES.append(f)
655
+ PROTOCOLS.append(data.protocols)
656
+ PROTOCOL_IDS.append(range(len(data.protocols)))
657
+ SUBJECTS.append(data.metadata['subject_ID'])
658
+
631
659
  except BaseException as be:
632
660
  SUBJECTS.append('N/A')
633
661
  if verbose:
@@ -635,7 +663,8 @@ def scan_folder_for_NWBfiles(folder,
635
663
  print('\n [!!] Pb with "%s" \n' % f)
636
664
 
637
665
  if verbose:
638
- print(' -> found n=%i datafiles (in %.1fs) ' % (len(FILES), (time.time()-t0)))
666
+ print(' -> found n=%i datafiles (in %.1fs) ' % (len(FILES),
667
+ (time.time()-t0)))
639
668
 
640
669
  # sorted by filename
641
670
 
@@ -652,4 +681,5 @@ def scan_folder_for_NWBfiles(folder,
652
681
  return {'files':np.array(FILES)[isorted],
653
682
  'dates':np.array(DATES)[isorted],
654
683
  'subjects':np.array(SUBJECTS)[isorted],
684
+ 'protocol_ids':[PROTOCOL_IDS[i] for i in isorted],
655
685
  'protocols':[PROTOCOLS[i] for i in isorted]}
@@ -11,11 +11,13 @@ sys.path.append(str(pathlib.Path(__file__).resolve().parents[2]))
11
11
  # import the 2P trigger delay from the acquisition module !
12
12
  from physion.acquisition.recordings.Scan1Plane_Screen342V import TwoP_trigger_delay
13
13
 
14
- from physion.assembling.IO.binary import BinaryFile
15
- from physion.assembling.IO.bruker_xml_parser import bruker_xml_parser
14
+ from physion.imaging.bruker.xml_parser import bruker_xml_parser
15
+ from physion.imaging.suite2p.to_nwb import add_ophys_processing_from_suite2p
16
+
16
17
  from physion.utils.files import get_files_with_extension, get_TSeries_folders
18
+ from physion.utils.binary import BinaryFile
19
+
17
20
  from physion.assembling.tools import build_subsampling_from_freq
18
- from physion.assembling.IO.suite2p_to_nwb import add_ophys_processing_from_suite2p
19
21
  from physion.utils.paths import FOLDERS, python_path
20
22
  from physion.analysis.read_NWB import Data
21
23