TwoPy 0.3.5__tar.gz → 0.3.6__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 (261) hide show
  1. {twopy-0.3.5 → twopy-0.3.6}/PKG-INFO +1 -1
  2. {twopy-0.3.5 → twopy-0.3.6}/pyproject.toml +1 -1
  3. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/empty_state.py +4 -4
  4. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/protocols.py +18 -0
  5. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/viewer.py +6 -0
  6. {twopy-0.3.5 → twopy-0.3.6}/src/twopy.egg-info/PKG-INFO +1 -1
  7. {twopy-0.3.5 → twopy-0.3.6}/tests/test_load_workflow.py +9 -0
  8. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari.py +9 -0
  9. {twopy-0.3.5 → twopy-0.3.6}/README.md +0 -0
  10. {twopy-0.3.5 → twopy-0.3.6}/setup.cfg +0 -0
  11. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/__init__.py +0 -0
  12. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/__init__.pyi +0 -0
  13. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/_segments.py +0 -0
  14. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/_version.py +0 -0
  15. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/__init__.py +0 -0
  16. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/background_subtraction.py +0 -0
  17. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/dff.py +0 -0
  18. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/dff_options.py +0 -0
  19. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/epoch_mapping.py +0 -0
  20. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/group_matching.py +0 -0
  21. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/kernels/__init__.py +0 -0
  22. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/kernels/_fitting.py +0 -0
  23. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/kernels/_stimulus.py +0 -0
  24. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/motion.py +0 -0
  25. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/persistence.py +0 -0
  26. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_context.py +0 -0
  27. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_maps.py +0 -0
  28. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_plotting.py +0 -0
  29. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_processing/__init__.py +0 -0
  30. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_processing/apply.py +0 -0
  31. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_processing/options.py +0 -0
  32. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_processing/persistence.py +0 -0
  33. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_processing/qc.py +0 -0
  34. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_processing/signals.py +0 -0
  35. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/response_window_options.py +0 -0
  36. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/responses.py +0 -0
  37. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/timing.py +0 -0
  38. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/trials.py +0 -0
  39. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis/workflow.py +0 -0
  40. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/analysis_cache.py +0 -0
  41. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/api.py +0 -0
  42. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/cache_inventory.py +0 -0
  43. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/calibrations/pixel_calibration_profiles.csv +0 -0
  44. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/calibrations/pixel_size.csv +0 -0
  45. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/config.example.yml +0 -0
  46. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/config.py +0 -0
  47. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/__init__.py +0 -0
  48. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/alignment_crop.py +0 -0
  49. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/api.py +0 -0
  50. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/hdf5_writing.py +0 -0
  51. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/matlab_values.py +0 -0
  52. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/orientation.py +0 -0
  53. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/source_loading.py +0 -0
  54. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/stimulus_code.py +0 -0
  55. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/conversion/types.py +0 -0
  56. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/converted.py +0 -0
  57. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/__init__.py +0 -0
  58. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/context.py +0 -0
  59. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/discovery.py +0 -0
  60. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/metadata.py +0 -0
  61. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/native.py +0 -0
  62. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/native_workflows/__init__.py +0 -0
  63. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/native_workflows/direction_selectivity.py +0 -0
  64. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/native_workflows/response_kernels.py +0 -0
  65. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/parameters.py +0 -0
  66. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/provenance.py +0 -0
  67. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/registry.py +0 -0
  68. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/results.py +0 -0
  69. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/runner.py +0 -0
  70. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/custom/workflows.py +0 -0
  71. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/__init__.py +0 -0
  72. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/cache.py +0 -0
  73. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/catalog.py +0 -0
  74. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/connection.py +0 -0
  75. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/generic.py +0 -0
  76. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/modeled.py +0 -0
  77. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/search.py +0 -0
  78. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/sql.py +0 -0
  79. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/database/types.py +0 -0
  80. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/filenames.py +0 -0
  81. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/frame_ranges.py +0 -0
  82. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/hdf5_utils.py +0 -0
  83. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/inspection.py +0 -0
  84. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/matlab.py +0 -0
  85. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/__init__.py +0 -0
  86. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/__main__.py +0 -0
  87. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon-128.png +0 -0
  88. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon-16.png +0 -0
  89. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon-256.png +0 -0
  90. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon-32.png +0 -0
  91. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon-512.png +0 -0
  92. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon-64.png +0 -0
  93. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon.icns +0 -0
  94. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/assets/twopy-app-icon.png +0 -0
  95. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/controls.py +0 -0
  96. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/custom_tab.py +0 -0
  97. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/database_favorite_editor.py +0 -0
  98. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/database_favorites.py +0 -0
  99. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/database_search.py +0 -0
  100. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/dims.py +0 -0
  101. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/display.py +0 -0
  102. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/display_paths.py +0 -0
  103. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/errors.py +0 -0
  104. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/__init__.py +0 -0
  105. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/cards.py +0 -0
  106. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/fov_assignment.py +0 -0
  107. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/fov_cards.py +0 -0
  108. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/images.py +0 -0
  109. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/protocols.py +0 -0
  110. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/response_preview.py +0 -0
  111. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/responses.py +0 -0
  112. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/roi_assignment.py +0 -0
  113. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/roi_cards.py +0 -0
  114. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/style.py +0 -0
  115. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/tables.py +0 -0
  116. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/group_matching/window.py +0 -0
  117. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/interactive.py +0 -0
  118. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/latest_worker.py +0 -0
  119. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/launcher.py +0 -0
  120. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/live_analysis.py +0 -0
  121. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/load_controller.py +0 -0
  122. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/load_progress.py +0 -0
  123. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/load_workflow.py +0 -0
  124. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/loaded_recordings_csv.py +0 -0
  125. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/loading.py +0 -0
  126. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/movie.py +0 -0
  127. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/output_routing.py +0 -0
  128. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/paths.py +0 -0
  129. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/__init__.py +0 -0
  130. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/data.py +0 -0
  131. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/dff_options.py +0 -0
  132. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/__init__.py +0 -0
  133. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/api.py +0 -0
  134. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/dynamic_options.py +0 -0
  135. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/options_panel.py +0 -0
  136. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/paths.py +0 -0
  137. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/plot_area.py +0 -0
  138. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/response_map_area.py +0 -0
  139. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/response_plot_widget.py +0 -0
  140. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/save_actions.py +0 -0
  141. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/docks/visibility_state.py +0 -0
  142. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/export.py +0 -0
  143. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/export_controls.py +0 -0
  144. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/form_controls.py +0 -0
  145. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/label_visibility.py +0 -0
  146. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/normalization_options.py +0 -0
  147. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/options.py +0 -0
  148. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/panels.py +0 -0
  149. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/preview_strip.py +0 -0
  150. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/processing_options.py +0 -0
  151. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/response_map_colors.py +0 -0
  152. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/response_map_display.py +0 -0
  153. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/response_map_options.py +0 -0
  154. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/response_window_options.py +0 -0
  155. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/roi_generation/__init__.py +0 -0
  156. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/roi_generation/actions.py +0 -0
  157. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/roi_generation/controls.py +0 -0
  158. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/roi_generation/options.py +0 -0
  159. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/plotting/widgets.py +0 -0
  160. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/responses.py +0 -0
  161. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/roi.py +0 -0
  162. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/roi_signatures.py +0 -0
  163. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/session.py +0 -0
  164. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/sidebar.py +0 -0
  165. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/state.py +0 -0
  166. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/text.py +0 -0
  167. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/trial_timeline.py +0 -0
  168. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/types.py +0 -0
  169. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/napari/version_check.py +0 -0
  170. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/parity/__init__.py +0 -0
  171. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/parity/dff.py +0 -0
  172. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/parity/psycho5.py +0 -0
  173. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/parity/roi.py +0 -0
  174. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/parity/roi_extraction.py +0 -0
  175. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/parity/saved_analysis.py +0 -0
  176. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/photodiode.py +0 -0
  177. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/photodiode_classification.py +0 -0
  178. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/pixel_calibration.py +0 -0
  179. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/pixel_calibration_profiles.py +0 -0
  180. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/response_roi_extraction.py +0 -0
  181. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/roi.py +0 -0
  182. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/roi_extraction.py +0 -0
  183. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/roi_mask_cleanup.py +0 -0
  184. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/session.py +0 -0
  185. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/spatial.py +0 -0
  186. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/spatial_orientation.py +0 -0
  187. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/stimulus.py +0 -0
  188. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/synchronization.py +0 -0
  189. {twopy-0.3.5 → twopy-0.3.6}/src/twopy/typing_guards.py +0 -0
  190. {twopy-0.3.5 → twopy-0.3.6}/src/twopy.egg-info/SOURCES.txt +0 -0
  191. {twopy-0.3.5 → twopy-0.3.6}/src/twopy.egg-info/dependency_links.txt +0 -0
  192. {twopy-0.3.5 → twopy-0.3.6}/src/twopy.egg-info/entry_points.txt +0 -0
  193. {twopy-0.3.5 → twopy-0.3.6}/src/twopy.egg-info/requires.txt +0 -0
  194. {twopy-0.3.5 → twopy-0.3.6}/src/twopy.egg-info/top_level.txt +0 -0
  195. {twopy-0.3.5 → twopy-0.3.6}/tests/test_api.py +0 -0
  196. {twopy-0.3.5 → twopy-0.3.6}/tests/test_background_subtraction.py +0 -0
  197. {twopy-0.3.5 → twopy-0.3.6}/tests/test_cache_inventory.py +0 -0
  198. {twopy-0.3.5 → twopy-0.3.6}/tests/test_config.py +0 -0
  199. {twopy-0.3.5 → twopy-0.3.6}/tests/test_conversion.py +0 -0
  200. {twopy-0.3.5 → twopy-0.3.6}/tests/test_converted.py +0 -0
  201. {twopy-0.3.5 → twopy-0.3.6}/tests/test_custom_workflows.py +0 -0
  202. {twopy-0.3.5 → twopy-0.3.6}/tests/test_database.py +0 -0
  203. {twopy-0.3.5 → twopy-0.3.6}/tests/test_dff.py +0 -0
  204. {twopy-0.3.5 → twopy-0.3.6}/tests/test_epoch_mapping.py +0 -0
  205. {twopy-0.3.5 → twopy-0.3.6}/tests/test_filenames.py +0 -0
  206. {twopy-0.3.5 → twopy-0.3.6}/tests/test_frame_ranges.py +0 -0
  207. {twopy-0.3.5 → twopy-0.3.6}/tests/test_function_inventory.py +0 -0
  208. {twopy-0.3.5 → twopy-0.3.6}/tests/test_group_matching.py +0 -0
  209. {twopy-0.3.5 → twopy-0.3.6}/tests/test_hdf5_utils.py +0 -0
  210. {twopy-0.3.5 → twopy-0.3.6}/tests/test_import.py +0 -0
  211. {twopy-0.3.5 → twopy-0.3.6}/tests/test_inspection.py +0 -0
  212. {twopy-0.3.5 → twopy-0.3.6}/tests/test_kernels.py +0 -0
  213. {twopy-0.3.5 → twopy-0.3.6}/tests/test_matlab.py +0 -0
  214. {twopy-0.3.5 → twopy-0.3.6}/tests/test_motion.py +0 -0
  215. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_database_search.py +0 -0
  216. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_display.py +0 -0
  217. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_export.py +0 -0
  218. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_group_matching_responses.py +0 -0
  219. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_group_matching_roi_cards.py +0 -0
  220. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_live_controller.py +0 -0
  221. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_load_controller.py +0 -0
  222. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_load_progress.py +0 -0
  223. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_load_tab.py +0 -0
  224. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_loaded_recordings.py +0 -0
  225. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_path_resolution.py +0 -0
  226. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_plot_controls.py +0 -0
  227. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_plot_data.py +0 -0
  228. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_plot_widgets.py +0 -0
  229. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_processing_controls.py +0 -0
  230. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_response_map_display.py +0 -0
  231. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_response_workflow.py +0 -0
  232. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_roi_generation.py +0 -0
  233. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_roi_visibility.py +0 -0
  234. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_text.py +0 -0
  235. {twopy-0.3.5 → twopy-0.3.6}/tests/test_napari_timeline.py +0 -0
  236. {twopy-0.3.5 → twopy-0.3.6}/tests/test_packaging.py +0 -0
  237. {twopy-0.3.5 → twopy-0.3.6}/tests/test_parity.py +0 -0
  238. {twopy-0.3.5 → twopy-0.3.6}/tests/test_parity_psycho5.py +0 -0
  239. {twopy-0.3.5 → twopy-0.3.6}/tests/test_parity_roi_extraction.py +0 -0
  240. {twopy-0.3.5 → twopy-0.3.6}/tests/test_persistence.py +0 -0
  241. {twopy-0.3.5 → twopy-0.3.6}/tests/test_photodiode_classification.py +0 -0
  242. {twopy-0.3.5 → twopy-0.3.6}/tests/test_pixel_calibration.py +0 -0
  243. {twopy-0.3.5 → twopy-0.3.6}/tests/test_pixel_calibration_profiles.py +0 -0
  244. {twopy-0.3.5 → twopy-0.3.6}/tests/test_real_fixture.py +0 -0
  245. {twopy-0.3.5 → twopy-0.3.6}/tests/test_recording_timing.py +0 -0
  246. {twopy-0.3.5 → twopy-0.3.6}/tests/test_response_map_area.py +0 -0
  247. {twopy-0.3.5 → twopy-0.3.6}/tests/test_response_maps.py +0 -0
  248. {twopy-0.3.5 → twopy-0.3.6}/tests/test_response_processing.py +0 -0
  249. {twopy-0.3.5 → twopy-0.3.6}/tests/test_response_roi_extraction.py +0 -0
  250. {twopy-0.3.5 → twopy-0.3.6}/tests/test_response_window_options.py +0 -0
  251. {twopy-0.3.5 → twopy-0.3.6}/tests/test_responses.py +0 -0
  252. {twopy-0.3.5 → twopy-0.3.6}/tests/test_roi.py +0 -0
  253. {twopy-0.3.5 → twopy-0.3.6}/tests/test_roi_extraction.py +0 -0
  254. {twopy-0.3.5 → twopy-0.3.6}/tests/test_roi_mask_cleanup.py +0 -0
  255. {twopy-0.3.5 → twopy-0.3.6}/tests/test_saved_analysis.py +0 -0
  256. {twopy-0.3.5 → twopy-0.3.6}/tests/test_session.py +0 -0
  257. {twopy-0.3.5 → twopy-0.3.6}/tests/test_stimulus.py +0 -0
  258. {twopy-0.3.5 → twopy-0.3.6}/tests/test_synchronization.py +0 -0
  259. {twopy-0.3.5 → twopy-0.3.6}/tests/test_trials.py +0 -0
  260. {twopy-0.3.5 → twopy-0.3.6}/tests/test_version_check.py +0 -0
  261. {twopy-0.3.5 → twopy-0.3.6}/tests/test_workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: twopy
3
- Version: 0.3.5
3
+ Version: 0.3.6
4
4
  Summary: Two-photon imaging analysis tool with a napari interface.
5
5
  Author-email: Gustavo Madeira Santana <fromweb1@gumadeiras.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "twopy"
7
- version = "0.3.5"
7
+ version = "0.3.6"
8
8
  description = "Two-photon imaging analysis tool with a napari interface."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13,<3.14"
@@ -85,10 +85,10 @@ def show_empty_viewer_message(
85
85
  overlay.text = empty_viewer_message(update_command=update_command)
86
86
  overlay.visible = True
87
87
  overlay.position = "top_center"
88
- overlay.font_size = 13
89
- overlay.color = "white"
90
- overlay.box = True
91
- overlay.box_color = (0.0, 0.0, 0.0, 0.65)
88
+ overlay.font_size = 18
89
+ overlay.color = "#c8cdd3"
90
+ overlay.box = False
91
+ overlay.box_color = (0.0, 0.0, 0.0, 0.0)
92
92
 
93
93
 
94
94
  def hide_empty_viewer_message(viewer: object) -> None:
@@ -80,6 +80,24 @@ class NapariViewer(Protocol):
80
80
  """
81
81
  ...
82
82
 
83
+ def reset_view(
84
+ self,
85
+ *,
86
+ margin: float = 0.05,
87
+ reset_camera_angle: bool = True,
88
+ ) -> None:
89
+ """Fit visible layers into the current viewer canvas.
90
+
91
+ Args:
92
+ margin: Fractional padding around visible layer extents.
93
+ reset_camera_angle: Whether to reset camera orientation as well as
94
+ zoom and pan.
95
+
96
+ Returns:
97
+ None.
98
+ """
99
+ ...
100
+
83
101
 
84
102
  class NapariLayerWithData(Protocol):
85
103
  """Small protocol for napari layers that expose array-like data.
@@ -17,6 +17,7 @@ from typing import TYPE_CHECKING, Protocol, cast
17
17
 
18
18
  import numpy as np
19
19
  import numpy.typing as npt
20
+ from qtpy.QtCore import QTimer
20
21
 
21
22
  from twopy._version import __version__
22
23
  from twopy.napari.empty_state import (
@@ -368,6 +369,11 @@ def add_prepared_recording_to_viewer(
368
369
  )
369
370
  set_labels_brush_size(roi_layer, brush_size=6)
370
371
 
372
+ QTimer.singleShot(
373
+ 0,
374
+ lambda: viewer.reset_view(margin=0.05, reset_camera_angle=False),
375
+ )
376
+
371
377
  from twopy.napari.types import NapariRecordingView
372
378
 
373
379
  return NapariRecordingView(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: twopy
3
- Version: 0.3.5
3
+ Version: 0.3.6
4
4
  Summary: Two-photon imaging analysis tool with a napari interface.
5
5
  Author-email: Gustavo Madeira Santana <fromweb1@gumadeiras.com>
6
6
  License-Expression: MIT
@@ -115,6 +115,15 @@ class _Viewer:
115
115
  self.labels.append(layer)
116
116
  return layer
117
117
 
118
+ def reset_view(
119
+ self,
120
+ *,
121
+ margin: float = 0.05,
122
+ reset_camera_angle: bool = True,
123
+ ) -> None:
124
+ """Accept the recording-view camera fit request."""
125
+ del margin, reset_camera_angle
126
+
118
127
 
119
128
  @dataclass
120
129
  class _State:
@@ -31,6 +31,7 @@ from tests.napari_support import (
31
31
  np,
32
32
  open_recording_in_napari,
33
33
  patch,
34
+ process_qt_events_until,
34
35
  roi_label_image_from_layer,
35
36
  save_napari_label_rois,
36
37
  save_roi_set,
@@ -442,6 +443,9 @@ class CoreNapariAdapterTest(NapariAdapterTestCase):
442
443
  self.assertTrue(viewer.text_overlay.text.startswith(f"{APPLICATION_TITLE}\n"))
443
444
  self.assertTrue(viewer.text_overlay.visible)
444
445
  self.assertEqual(viewer.text_overlay.position, "top_center")
446
+ self.assertEqual(viewer.text_overlay.font_size, 18)
447
+ self.assertEqual(viewer.text_overlay.color, "#c8cdd3")
448
+ self.assertFalse(viewer.text_overlay.box)
445
449
  icon = viewer.window._qt_window.window_icon
446
450
  self.assertIsNotNone(icon)
447
451
  assert icon is not None
@@ -730,6 +734,7 @@ class CoreNapariAdapterTest(NapariAdapterTestCase):
730
734
  viewer=viewer,
731
735
  movie_frame_range=(0, 1),
732
736
  )
737
+ process_qt_events_until(lambda: len(viewer.reset_view_calls) == 1)
733
738
 
734
739
  self.assertIs(opened.viewer, viewer)
735
740
  self.assertEqual(opened.recording.movie.shape, (3, 2, 2))
@@ -747,6 +752,10 @@ class CoreNapariAdapterTest(NapariAdapterTestCase):
747
752
  self.assertEqual(viewer.images[1].contrast_limits_range, (0.0, 7.0))
748
753
  self.assertEqual(np.asarray(viewer.images[1].data).shape, (2, 2, 2))
749
754
  self.assertEqual(len(viewer.labels), 1)
755
+ self.assertEqual(
756
+ viewer.reset_view_calls,
757
+ [{"margin": 0.05, "reset_camera_angle": False}],
758
+ )
750
759
  np.testing.assert_array_equal(
751
760
  np.unique(np.asarray(viewer.labels[0].data)),
752
761
  np.array([0, 3, 4]),
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes