waveorder 3.0.0a0__tar.gz → 3.0.0a2__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 (212) hide show
  1. waveorder-3.0.0a2/.github/workflows/test.yml +39 -0
  2. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.gitignore +2 -2
  3. waveorder-3.0.0a2/.readthedocs.yaml +28 -0
  4. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/CONTRIBUTING.md +29 -4
  5. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/PKG-INFO +41 -17
  6. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/README.md +17 -8
  7. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/README.md +9 -8
  8. waveorder-3.0.0a2/docs/_static/css/custom.css +8 -0
  9. waveorder-3.0.0a2/docs/_static/switcher.json +14 -0
  10. waveorder-3.0.0a2/docs/_static/waveorder.ico +0 -0
  11. waveorder-3.0.0a2/docs/_static/waveorder.png +0 -0
  12. waveorder-3.0.0a2/docs/api/settings.rst +6 -0
  13. waveorder-3.0.0a2/docs/api/stokes.rst +5 -0
  14. waveorder-3.0.0a2/docs/api.rst +14 -0
  15. waveorder-3.0.0a2/docs/conf.py +250 -0
  16. waveorder-3.0.0a2/docs/contact_us.rst +15 -0
  17. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/configs/README.md +18 -10
  18. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/configs/fluorescence.yml +1 -0
  19. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/PTI_simulation/PTI_Simulation_Forward_2D3D.py +8 -2
  20. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/PTI_simulation/PTI_Simulation_Recon2D.py +5 -0
  21. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/PTI_simulation/PTI_Simulation_Recon3D.py +6 -1
  22. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/QLIPP_simulation/2D_QLIPP_forward.py +6 -0
  23. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/QLIPP_simulation/2D_QLIPP_recon.py +6 -0
  24. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/README.md +4 -1
  25. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/models/README.md +8 -5
  26. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/models/inplane_oriented_thick_pol3d.py +6 -0
  27. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/models/inplane_oriented_thick_pol3d_vector.py +7 -0
  28. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/models/isotropic_fluorescent_thick_3d.py +8 -0
  29. waveorder-3.0.0a2/docs/examples/models/isotropic_fluorescent_thin_3d.py +88 -0
  30. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/models/isotropic_thin_3d.py +5 -0
  31. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/models/phase_thick_3d.py +5 -0
  32. waveorder-3.0.0a2/docs/examples/visuals/README.rst +4 -0
  33. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/visuals/plot_greens_tensor.py +6 -0
  34. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/visuals/plot_vector_transfer_function_support.py +6 -0
  35. waveorder-3.0.0a2/docs/examples.rst +13 -0
  36. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/QLIPP.md +1 -1
  37. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/buyers-guide.md +5 -3
  38. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/calibration-guide.md +4 -3
  39. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/development-guide.md +1 -1
  40. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/microscope-installation-guide.md +7 -3
  41. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/napari-plugin-guide.md +21 -21
  42. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/reconstruction-guide.md +1 -1
  43. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/software-installation-guide.md +1 -1
  44. waveorder-3.0.0a2/docs/guide.rst +25 -0
  45. waveorder-3.0.0a2/docs/index.rst +12 -0
  46. waveorder-3.0.0a2/docs/scripts/fix_md_links.py +156 -0
  47. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/pyproject.toml +22 -11
  48. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/cli_tests/test_compute_tf.py +17 -0
  49. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/cli_tests/test_reconstruct.py +74 -6
  50. waveorder-3.0.0a2/tests/models/test_isotropic_fluorescent_thick_3d.py +109 -0
  51. waveorder-3.0.0a2/tests/models/test_isotropic_fluorescent_thin_3d.py +192 -0
  52. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/models/test_phase_thick_3d.py +16 -12
  53. waveorder-3.0.0a2/tests/test_examples.py +64 -0
  54. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_focus_estimator.py +71 -0
  55. waveorder-3.0.0a2/tests/util_tests/test_create_empty.py +111 -0
  56. waveorder-3.0.0a2/waveorder/_version.py +34 -0
  57. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/acq/acquisition_workers.py +6 -7
  58. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/calib/calibration_workers.py +1 -0
  59. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/apply_inverse_models.py +68 -5
  60. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/apply_inverse_transfer_function.py +43 -102
  61. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/compute_transfer_function.py +137 -8
  62. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/gui_widget.py +3 -2
  63. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/main.py +10 -6
  64. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/monitor.py +1 -1
  65. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/parsing.py +0 -13
  66. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/reconstruct.py +2 -7
  67. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/settings.py +1 -0
  68. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/utils.py +70 -0
  69. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/filter.py +1 -2
  70. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/focus.py +54 -16
  71. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/io/visualization.py +8 -5
  72. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/models/inplane_oriented_thick_pol3d_vector.py +3 -3
  73. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/models/isotropic_fluorescent_thick_3d.py +92 -0
  74. waveorder-3.0.0a2/waveorder/models/isotropic_fluorescent_thin_3d.py +331 -0
  75. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/models/isotropic_thin_3d.py +2 -2
  76. waveorder-3.0.0a2/waveorder/plugin/job_manager.py +42 -0
  77. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/plugin/main_widget.py +11 -13
  78. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/plugin/tab_recon.py +158 -877
  79. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/scripts/simulate_zarr_acq.py +3 -6
  80. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/visuals/napari_visuals.py +1 -1
  81. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder.egg-info/PKG-INFO +41 -17
  82. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder.egg-info/SOURCES.txt +60 -43
  83. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder.egg-info/requires.txt +24 -7
  84. waveorder-3.0.0a2/waveorder.egg-info/top_level.txt +1 -0
  85. waveorder-3.0.0a0/.github/workflows/test.yml +0 -45
  86. waveorder-3.0.0a0/tests/models/test_isotropic_fluorescent_thick_3d.py +0 -51
  87. waveorder-3.0.0a0/tests/test_examples.py +0 -65
  88. waveorder-3.0.0a0/tests/util_tests/test_create_empty.py +0 -60
  89. waveorder-3.0.0a0/tox.ini +0 -34
  90. waveorder-3.0.0a0/waveorder/_version.py +0 -21
  91. waveorder-3.0.0a0/waveorder/cli/jobs_mgmt.py +0 -206
  92. waveorder-3.0.0a0/waveorder.egg-info/top_level.txt +0 -5
  93. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.git-blame-ignore-revs +0 -0
  94. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  95. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  96. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  97. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.github/workflows/pr.yml +0 -0
  98. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/.pre-commit-config.yaml +0 -0
  99. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/CITATION.cff +0 -0
  100. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/LICENSE +0 -0
  101. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/__init__.py +0 -0
  102. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/JCh_Color_legend.png +0 -0
  103. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/acq_finished.png +0 -0
  104. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/acquire_buttons.png +0 -0
  105. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/acquisition_settings.png +0 -0
  106. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/advanced.png +0 -0
  107. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/cap_bg.png +0 -0
  108. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/cli_structure.png +0 -0
  109. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/comms_video_screenshot.png +0 -0
  110. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/connect_to_mm.png +0 -0
  111. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/create_group.png +0 -0
  112. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/create_group_voltage.png +0 -0
  113. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/create_preset.png +0 -0
  114. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/create_preset_voltage.png +0 -0
  115. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/general_reconstruction_settings.png +0 -0
  116. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/ideal_plot.png +0 -0
  117. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/modulation.png +0 -0
  118. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/no-overlay.png +0 -0
  119. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/overlay-demo.png +0 -0
  120. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/overlay.png +0 -0
  121. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/phase_reconstruction_settings.png +0 -0
  122. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/poincare_swing.svg +0 -0
  123. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/reconstruction_birefriengence.png +0 -0
  124. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/reconstruction_data.png +0 -0
  125. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/reconstruction_data_info.png +0 -0
  126. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/reconstruction_models.png +0 -0
  127. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/reconstruction_queue.png +0 -0
  128. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/run_calib.png +0 -0
  129. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/run_port.png +0 -0
  130. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/_static}/images/waveorder_Fig1_Overview.png +0 -0
  131. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/README.md +0 -0
  132. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/configs/birefringence-and-phase.yml +0 -0
  133. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/configs/birefringence.yml +0 -0
  134. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/configs/phase.yml +0 -0
  135. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_Experiment_Recon3D_anisotropic_target_small.py +0 -0
  136. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_anisotropic_target.ipynb +0 -0
  137. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_cardiac_muscle.ipynb +0 -0
  138. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_cardiomyocyte_infected_1.ipynb +0 -0
  139. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_cardiomyocyte_infected_2.ipynb +0 -0
  140. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_cardiomyocyte_mock.ipynb +0 -0
  141. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_human_uterus.ipynb +0 -0
  142. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/PTI_full_FOV_mouse_brain_aco.ipynb +0 -0
  143. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/PTI_experiment/README.md +0 -0
  144. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/QLIPP_experiment/2D_QLIPP_recon_experiment.ipynb +0 -0
  145. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/QLIPP_experiment/3D_QLIPP_recon_experiment.ipynb +0 -0
  146. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/deprecated/fluorescence_deconvolution/fluorescence_deconv.ipynb +0 -0
  147. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/PTI_simulation/PTI_formulation.html +0 -0
  148. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/examples/maintenance/PTI_simulation/README.md +0 -0
  149. {waveorder-3.0.0a0/docs → waveorder-3.0.0a2/docs/guide}/data-schema.md +0 -0
  150. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/docs/valuable-prs/2023-02-27.110.pr.open.md +0 -0
  151. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/readme.png +0 -0
  152. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/setup.cfg +0 -0
  153. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/__init__.py +0 -0
  154. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/acq_tests/test_acq.py +0 -0
  155. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/calibration_tests/test_calibration.py +0 -0
  156. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/cli_tests/test_cli.py +0 -0
  157. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/cli_tests/test_settings.py +0 -0
  158. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/conftest.py +0 -0
  159. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/mmcore_tests/test_core_func.py +0 -0
  160. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/models/test_inplane_oriented_thick_pol3D.py +0 -0
  161. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/models/test_isotropic_thin_3d.py +0 -0
  162. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_correction.py +0 -0
  163. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_filter.py +0 -0
  164. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_optics.py +0 -0
  165. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_sampling.py +0 -0
  166. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_stokes.py +0 -0
  167. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/test_util.py +0 -0
  168. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/util_tests/test_io.py +0 -0
  169. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/util_tests/test_overlays.py +0 -0
  170. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/widget_tests/test_dock_widget.py +0 -0
  171. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/tests/widget_tests/test_sample_contributions.py +0 -0
  172. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/__init__.py +0 -0
  173. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/acq/__init__.py +0 -0
  174. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/acq/acq_functions.py +0 -0
  175. {waveorder-3.0.0a0/docs/images → waveorder-3.0.0a2/waveorder/assets}/HSV_legend.png +0 -0
  176. {waveorder-3.0.0a0/docs/images → waveorder-3.0.0a2/waveorder/assets}/JCh_legend.png +0 -0
  177. {waveorder-3.0.0a0/docs/images → waveorder-3.0.0a2/waveorder/assets}/waveorder_plugin_logo.png +0 -0
  178. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/background_estimator.py +0 -0
  179. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/calib/Calibration.py +0 -0
  180. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/calib/Optimization.py +0 -0
  181. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/calib/__init__.py +0 -0
  182. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/option_eat_all.py +0 -0
  183. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/cli/printing.py +0 -0
  184. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/correction.py +0 -0
  185. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/io/__init__.py +0 -0
  186. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/io/_reader.py +0 -0
  187. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/io/core_functions.py +0 -0
  188. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/io/metadata_reader.py +0 -0
  189. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/io/utils.py +0 -0
  190. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/models/inplane_oriented_thick_pol3d.py +0 -0
  191. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/models/phase_thick_3d.py +0 -0
  192. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/napari.yaml +0 -0
  193. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/optics.py +0 -0
  194. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/plugin/__init__.py +0 -0
  195. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/plugin/gui.py +0 -0
  196. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/plugin/gui.ui +0 -0
  197. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/reconstruct.py +0 -0
  198. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/sampling.py +0 -0
  199. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/scripts/__init__.py +0 -0
  200. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/scripts/launch_napari.py +0 -0
  201. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/scripts/repeat-cal-acq-rec.py +0 -0
  202. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/scripts/repeat-calibration.py +0 -0
  203. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/scripts/samples.py +0 -0
  204. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/stokes.py +0 -0
  205. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/util.py +0 -0
  206. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/visuals/jupyter_visuals.py +0 -0
  207. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/visuals/matplotlib_visuals.py +0 -0
  208. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/visuals/utils.py +0 -0
  209. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/waveorder_reconstructor.py +0 -0
  210. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder/waveorder_simulator.py +0 -0
  211. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder.egg-info/dependency_links.txt +0 -0
  212. {waveorder-3.0.0a0 → waveorder-3.0.0a2}/waveorder.egg-info/entry_points.txt +0 -0
@@ -0,0 +1,39 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ name: ${{ matrix.platform }} py${{ matrix.python-version }}
11
+ runs-on: ${{ matrix.platform }}
12
+ strategy:
13
+ matrix:
14
+ platform: [ubuntu-latest, windows-latest, macos-latest]
15
+ python-version: ["3.11", "3.12", "3.13"]
16
+
17
+ steps:
18
+ - name: Checkout repo
19
+ uses: actions/checkout@v5
20
+
21
+ - name: Set up Python ${{ matrix.python-version }}
22
+ uses: actions/setup-python@v6
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+
26
+ - uses: pyvista/setup-headless-display-action@v4
27
+ with:
28
+ qt: true
29
+
30
+ - name: Install dependencies
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ python -m pip install '.[all,dev]'
34
+
35
+ - name: Test
36
+ run: python -m pytest -v --color=yes --cov=waveorder --cov-report=xml
37
+
38
+ - name: Coverage
39
+ uses: codecov/codecov-action@v3
@@ -2,7 +2,6 @@
2
2
  *.tif[f]
3
3
  *.jp[e]g
4
4
  *.zar[r]
5
- *.json
6
5
 
7
6
  # pycharm IDE
8
7
  .idea
@@ -19,6 +18,8 @@ __pycache__/
19
18
  # Distribution / packaging
20
19
  .Python
21
20
  build/
21
+ docs/build/
22
+ docs/wo_examples/
22
23
  develop-eggs/
23
24
  dist/
24
25
  downloads/
@@ -148,7 +149,6 @@ waveorder/_version.py
148
149
 
149
150
  # images
150
151
  *.npz
151
- *.png
152
152
  *.tif[f]
153
153
  *.pdf
154
154
 
@@ -0,0 +1,28 @@
1
+ # Read the Docs configuration file
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ # Required
5
+ version: 2
6
+
7
+ # Set the OS, Python version, and other tools you might need
8
+ build:
9
+ os: ubuntu-24.04
10
+ tools:
11
+ python: "3.12"
12
+ jobs:
13
+ post_build:
14
+ - python docs/scripts/fix_md_links.py
15
+
16
+ # Optionally, but recommended,
17
+ # declare the Python requirements required to build your documentation
18
+ # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
19
+ python:
20
+ install:
21
+ - method: pip
22
+ path: .
23
+ extra_requirements:
24
+ - docs
25
+
26
+ # Build documentation in the "docs/" directory with Sphinx
27
+ sphinx:
28
+ configuration: docs/conf.py
@@ -41,15 +41,18 @@ git clone https://github.com/mehta-lab/waveorder.git
41
41
  Otherwise, you can follow [these instructions](https://docs.github.com/en/get-started/quickstart/fork-a-repo)
42
42
  to [fork](https://github.com/mehta-lab/waveorder/fork) the repository.
43
43
 
44
- Then install the package in editable mode with the development dependencies:
44
+ Next, install the package in editable mode with all dependencies
45
45
 
46
46
  ```sh
47
47
  cd waveorder/ # or the renamed project root directory
48
- pip install -e ".[dev]"
48
+ pip install -e ".[all]"
49
+ ```
50
+ and check that the tests pass with
51
+ ```sh
52
+ pytest
49
53
  ```
50
54
 
51
- Then make the changes and [track them with Git](https://docs.github.com/en/get-started/using-git/about-git#example-contribute-to-an-existing-repository).
52
-
55
+ Finally, make the changes and [track them with Git](https://docs.github.com/en/get-started/using-git/about-git#example-contribute-to-an-existing-repository).
53
56
 
54
57
  ### Code style
55
58
 
@@ -60,3 +63,25 @@ pre-commit install
60
63
  ```
61
64
 
62
65
  When these packages are executed within the project root directory, they should automatically use the [project settings](./pyproject.toml).
66
+
67
+ ### Developing documentation
68
+
69
+ Documentation infrastructure is built using [Markdown (.md)](https://www.sphinx-doc.org/en/master/usage/markdown.html) and [reStructuredText (.rst)](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html) files. [Sphinx](https://www.sphinx-doc.org/en/master/index.html) utilizes these to build highly customization .html pages for User Guides, API References and Examples rendered directly from source code files.
70
+
71
+ #### Building the HTML version locally
72
+
73
+ ```sh
74
+ cd waveorder/ # or the renamed project root directory
75
+ pip install -e ".[all]"
76
+ cd docs/
77
+ sphinx-build -M html ./ ./build
78
+ ```
79
+
80
+ Generated HTML documentation can be found in the ``build/html`` directory. Open ``build/html/index.html`` to view the home page for the documentation.
81
+
82
+ Automated building of `docs` is done via _read-the-docs_ which will automatically pull commits to the `main` branch and host them here: <https://waveorder.readthedocs.io>
83
+
84
+ #### Documentation change
85
+
86
+ If you find that any documentation in this project is incomplete, inaccurate, or ambiguous, please open an issue.
87
+ We welcome contributions to the documentation from users, particularly user guides that we can collaboratively edit.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: waveorder
3
- Version: 3.0.0a0
3
+ Version: 3.0.0a2
4
4
  Summary: Wave-optical simulations and deconvolution of optical properties
5
5
  Author-email: CZ Biohub SF <compmicro@czbiohub.org>
6
6
  Maintainer-email: Talon Chandler <talon.chandler@czbiohub.org>, Shalin Mehta <shalin.mehta@czbiohub.org>
@@ -56,7 +56,7 @@ License-File: LICENSE
56
56
  Requires-Dist: click>=8.0.1
57
57
  Requires-Dist: colorspacious>=1.1.2
58
58
  Requires-Dist: importlib-metadata
59
- Requires-Dist: iohub<0.3,>=0.2
59
+ Requires-Dist: iohub<0.4,>=0.2
60
60
  Requires-Dist: ipywidgets>=7.5.1
61
61
  Requires-Dist: matplotlib>=3.1.1
62
62
  Requires-Dist: natsort>=7.1.1
@@ -66,24 +66,39 @@ Requires-Dist: pyqtgraph>=0.12.3
66
66
  Requires-Dist: pydantic
67
67
  Requires-Dist: pywavelets>=1.1.1
68
68
  Requires-Dist: scipy>=1.3.0
69
- Requires-Dist: submitit
70
69
  Requires-Dist: torch>=2.4.1
71
70
  Requires-Dist: qtpy
72
71
  Requires-Dist: wget>=3.2
73
- Provides-Extra: all
74
- Requires-Dist: napari[pyqt6]; extra == "all"
75
- Requires-Dist: napari-ome-zarr>=0.3.2; extra == "all"
76
- Requires-Dist: pycromanager==0.27.2; extra == "all"
77
- Requires-Dist: jupyter; extra == "all"
72
+ Provides-Extra: visual
73
+ Requires-Dist: napari[pyqt6]; extra == "visual"
74
+ Requires-Dist: napari-ome-zarr>=0.3.2; extra == "visual"
75
+ Requires-Dist: pycromanager==0.27.2; extra == "visual"
76
+ Requires-Dist: jupyter; extra == "visual"
78
77
  Provides-Extra: dev
79
78
  Requires-Dist: black==25.1.0; extra == "dev"
80
79
  Requires-Dist: click>=8.2.0; extra == "dev"
81
80
  Requires-Dist: hypothesis; extra == "dev"
81
+ Requires-Dist: napari[pyqt6]; extra == "dev"
82
82
  Requires-Dist: pre-commit; extra == "dev"
83
83
  Requires-Dist: pytest-cov; extra == "dev"
84
84
  Requires-Dist: pytest-qt; extra == "dev"
85
85
  Requires-Dist: pytest>=5.0.0; extra == "dev"
86
- Requires-Dist: tox; extra == "dev"
86
+ Provides-Extra: docs
87
+ Requires-Dist: sphinx_copybutton; extra == "docs"
88
+ Requires-Dist: sphinxcontrib-video; extra == "docs"
89
+ Requires-Dist: myst_parser; extra == "docs"
90
+ Requires-Dist: sphinx_mdinclude; extra == "docs"
91
+ Requires-Dist: linkify-it-py; extra == "docs"
92
+ Requires-Dist: numpydoc; extra == "docs"
93
+ Requires-Dist: sphinx_sitemap; extra == "docs"
94
+ Requires-Dist: sphinx_gallery; extra == "docs"
95
+ Requires-Dist: pydata_sphinx_theme; extra == "docs"
96
+ Requires-Dist: matplotlib; extra == "docs"
97
+ Requires-Dist: importlib_metadata; extra == "docs"
98
+ Provides-Extra: all
99
+ Requires-Dist: waveorder[visual]; extra == "all"
100
+ Requires-Dist: waveorder[dev]; extra == "all"
101
+ Requires-Dist: waveorder[docs]; extra == "all"
87
102
  Dynamic: license-file
88
103
 
89
104
  <p align="center">
@@ -289,23 +304,32 @@ conda create -y -n waveorder python=3.12
289
304
  conda activate waveorder
290
305
  ```
291
306
 
292
- Install `waveorder` from PyPI:
293
-
307
+ Most users should install `waveorder` with:
294
308
  ```sh
295
- pip install waveorder
309
+ pip install waveorder[visual]
296
310
  ```
297
311
 
298
- (Optional) Install all visualization dependencies (napari, jupyter), clone the repository, and run an example script:
312
+ We also maintain three dependency sets for different interfaces:
313
+
299
314
  ```sh
300
- pip install "waveorder[all]"
301
- git clone https://github.com/mehta-lab/waveorder.git
302
- python waveorder/examples/models/phase_thick_3d.py
315
+ pip install waveorder # API, CLI
316
+ pip install waveorder[visual] # API, CLI, GUI
317
+ pip install waveorder[all] # API, CLI, GUI, docs, dev dependencies
303
318
  ```
304
319
 
320
+
321
+
305
322
  (M1 users) `pytorch` has [incomplete GPU support](https://github.com/pytorch/pytorch/issues/77764),
306
323
  so please use `export PYTORCH_ENABLE_MPS_FALLBACK=1`
307
324
  to allow some operators to fallback to CPU if you plan to use GPU acceleration for polarization reconstruction.
308
325
 
309
326
 
310
327
  ## Examples
311
- The [examples](https://github.com/mehta-lab/waveorder/tree/main/docs/examples) illustrate simulations and reconstruction for 2D QLIPP, 3D phase from brightfield, and 2D/3D PTI methods.
328
+ The [examples](https://github.com/mehta-lab/waveorder/tree/main/docs/examples) illustrate simulations and reconstruction for 2D QLIPP, 3D phase from brightfield, and 2D/3D PTI methods. To run examples, use
329
+
330
+ ```sh
331
+ git clone https://github.com/mehta-lab/waveorder.git
332
+ cd waveorder
333
+ pip install -e .[all]
334
+ python ./docs/examples/models/phase_thick_3d.py
335
+ ```
@@ -201,23 +201,32 @@ conda create -y -n waveorder python=3.12
201
201
  conda activate waveorder
202
202
  ```
203
203
 
204
- Install `waveorder` from PyPI:
205
-
204
+ Most users should install `waveorder` with:
206
205
  ```sh
207
- pip install waveorder
206
+ pip install waveorder[visual]
208
207
  ```
209
208
 
210
- (Optional) Install all visualization dependencies (napari, jupyter), clone the repository, and run an example script:
209
+ We also maintain three dependency sets for different interfaces:
210
+
211
211
  ```sh
212
- pip install "waveorder[all]"
213
- git clone https://github.com/mehta-lab/waveorder.git
214
- python waveorder/examples/models/phase_thick_3d.py
212
+ pip install waveorder # API, CLI
213
+ pip install waveorder[visual] # API, CLI, GUI
214
+ pip install waveorder[all] # API, CLI, GUI, docs, dev dependencies
215
215
  ```
216
216
 
217
+
218
+
217
219
  (M1 users) `pytorch` has [incomplete GPU support](https://github.com/pytorch/pytorch/issues/77764),
218
220
  so please use `export PYTORCH_ENABLE_MPS_FALLBACK=1`
219
221
  to allow some operators to fallback to CPU if you plan to use GPU acceleration for polarization reconstruction.
220
222
 
221
223
 
222
224
  ## Examples
223
- The [examples](https://github.com/mehta-lab/waveorder/tree/main/docs/examples) illustrate simulations and reconstruction for 2D QLIPP, 3D phase from brightfield, and 2D/3D PTI methods.
225
+ The [examples](https://github.com/mehta-lab/waveorder/tree/main/docs/examples) illustrate simulations and reconstruction for 2D QLIPP, 3D phase from brightfield, and 2D/3D PTI methods. To run examples, use
226
+
227
+ ```sh
228
+ git clone https://github.com/mehta-lab/waveorder.git
229
+ cd waveorder
230
+ pip install -e .[all]
231
+ python ./docs/examples/models/phase_thick_3d.py
232
+ ```
@@ -4,24 +4,25 @@ We have organized our documentation by user type and intended task.
4
4
 
5
5
  ## Software users
6
6
 
7
- **Reconstruct existing data:** start with the [reconstruction guide](./reconstruction-guide.md) and consult the [data schema](./data-schema.md) for `waveorder`'s data format.
7
+ **Reconstruct existing data:** start with the [reconstruction guide](guide/reconstruction-guide.md) and consult the [data schema](guide/data-schema.md) for `waveorder`'s data format.
8
8
 
9
- **Reconstruct with a GUI:** start with the [plugin's reconstruction guide](./napari-plugin-guide.md#reconstruction-tab).
9
+ **Reconstruct with a GUI:** start with the [plugin's reconstruction guide](guide/napari-plugin-guide.md#acquisition--reconstruction-tab).
10
10
 
11
- **Integrate `waveorder` into my software:** start with [`examples/`](./examples/)
11
+
12
+ **Integrate `waveorder` into my software:** start with [`examples/`](examples/)
12
13
 
13
14
  ## Hardware users
14
15
 
15
- **Buy hardware for a polarized-light installation:** start with the [buyer's guide](./buyers-guide.md).
16
+ **Buy hardware for a polarized-light installation:** start with the [buyer's guide](guide/buyers-guide.md).
16
17
 
17
- **Install `waveorder` on my microscope:** start with the [microscope installation guide](./microscope-installation-guide.md).
18
+ **Install `waveorder` on my microscope:** start with the [microscope installation guide](guide/microscope-installation-guide.md).
18
19
 
19
- **Use the `napari plugin` to calibrate:** start with the [plugin guide](./napari-plugin-guide.md).
20
+ **Use the `napari plugin` to calibrate:** start with the [plugin guide](guide/napari-plugin-guide.md).
20
21
 
21
- **Understand `waveorder`'s calibration routine**: read the [calibration guide](./calibration-guide.md).
22
+ **Understand `waveorder`'s calibration routine**: read the [calibration guide](guide/calibration-guide.md).
22
23
 
23
24
  ## Software developers
24
25
 
25
- **Set up a development environment and test `waveorder`**: start with the [development guide](./development-guide.md).
26
+ **Set up a development environment and test `waveorder`**: start with the [development guide](guide/development-guide.md).
26
27
 
27
28
  **Report an error in the documentation or code:** [open an issue](https://github.com/mehta-lab/waveorder/issues/new/choose) or [send us an email](mailto:shalin.mehta@czbiohub.org,talon.chandler@czbiohub.org). We appreciate your help!
@@ -0,0 +1,8 @@
1
+ blockquote {
2
+ background-color: var(--pst-color-background);
3
+ border-left: none;
4
+ }
5
+
6
+ video {
7
+ width: -webkit-fill-available;
8
+ }
@@ -0,0 +1,14 @@
1
+ [
2
+ {
3
+ "version": "latest",
4
+ "url": "/en/latest/index.html"
5
+ },
6
+ {
7
+ "version": "v3.0.0a0",
8
+ "url": "/en/v3.0.0a0/index.html"
9
+ },
10
+ {
11
+ "version": "v2.2.1",
12
+ "url": "/en/v2.2.1/index.html"
13
+ }
14
+ ]
@@ -0,0 +1,6 @@
1
+ Settings
2
+ ========
3
+
4
+ .. automodule:: waveorder.cli.settings
5
+ :members:
6
+ :undoc-members:
@@ -0,0 +1,5 @@
1
+ Stokes
2
+ ========
3
+
4
+ .. automodule:: waveorder.stokes
5
+ :members:
@@ -0,0 +1,14 @@
1
+ API Reference
2
+ =============
3
+
4
+ .. toctree::
5
+ :maxdepth: 3
6
+
7
+ api/settings
8
+ api/stokes
9
+
10
+ Index
11
+ -----
12
+
13
+ * :ref:`genindex`
14
+ * :ref:`search`
@@ -0,0 +1,250 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ import os
5
+ import re
6
+
7
+ # Add any Sphinx extension module names, as strings. They can be extensions
8
+ # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
9
+ import sys
10
+
11
+ import importlib_metadata
12
+
13
+ # -- General configuration ----------------------------------------------------
14
+
15
+ # If your documentation needs a minimal Sphinx version, state it here.
16
+ # needs_sphinx = '1.0'
17
+
18
+
19
+ # If extensions (or modules to document with autodoc) are in another directory,
20
+ # add these directories to sys.path here. If the directory is relative to the
21
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
22
+ sys.path.insert(0, os.path.abspath("../"))
23
+
24
+ source_dir = os.path.dirname(__file__)
25
+ sys.path.insert(0, os.path.join(source_dir, "ext"))
26
+
27
+ extensions = [
28
+ "sphinx.ext.autodoc",
29
+ "sphinx.ext.doctest",
30
+ "sphinx.ext.mathjax",
31
+ "sphinx.ext.intersphinx",
32
+ "sphinx.ext.autosummary",
33
+ "sphinx.ext.extlinks",
34
+ "sphinx.ext.viewcode",
35
+ "sphinx_copybutton",
36
+ "numpydoc",
37
+ "myst_parser",
38
+ "sphinx_sitemap",
39
+ "sphinxcontrib.video",
40
+ "sphinx_gallery.gen_gallery",
41
+ ]
42
+
43
+ myst_enable_extensions = [
44
+ "amsmath",
45
+ "attrs_inline",
46
+ "colon_fence",
47
+ "deflist",
48
+ "dollarmath",
49
+ "fieldlist",
50
+ "linkify",
51
+ "html_admonition",
52
+ "html_image",
53
+ "replacements",
54
+ "smartquotes",
55
+ "strikethrough",
56
+ "substitution",
57
+ "tasklist",
58
+ ]
59
+
60
+ myst_file_suffixes = [".md"]
61
+ myst_all_links_external = True
62
+
63
+ # default url is a dummy for local build
64
+ html_baseurl = os.environ.get("GITHUB_PAGES_URL", f"/build/html/")
65
+ sitemap_locales = ["en"]
66
+ sitemap_url_scheme = "{link}"
67
+
68
+ numpydoc_show_class_members = True
69
+
70
+ # Add any paths that contain templates here, relative to this directory.
71
+ # templates_path = ["_templates"]
72
+
73
+ # The suffix of source filenames.
74
+ source_suffix = {
75
+ ".rst": "restructuredtext",
76
+ ".md": "markdown",
77
+ }
78
+
79
+ # The encoding of source files.
80
+ # source_encoding = 'utf-8-sig'
81
+
82
+ # The master toctree document.
83
+ master_doc = "index"
84
+
85
+ # General information about the project.
86
+ project = "waveorder"
87
+ copyright = "2023. Talon Chandler. Chan Zuckerberg Biohub. All rights reserved"
88
+ release = importlib_metadata.version("waveorder")
89
+
90
+ json_url = f"./_static/switcher.json"
91
+ if "dev" in release or "rc" in release:
92
+ # json_url = "_static/switcher.json"
93
+ version_match = "latest"
94
+ else:
95
+ version_match = release
96
+
97
+ # The language for content autogenerated by Sphinx. Refer to documentation
98
+ # for a list of supported languages.
99
+ # language = None
100
+
101
+ # There are two options for replacing |today|: either, you set today to some
102
+ # non-false value, then it is used:
103
+ # today = ''
104
+ # Else, today_fmt is used as the format for a strftime call.
105
+ # today_fmt = '%B %d, %Y'
106
+
107
+ # List of patterns, relative to source directory, that match files and
108
+ # directories to ignore when looking for source files.
109
+ exclude_patterns = []
110
+
111
+ # The reST default role (used for this markup `text`) to use for all documents.
112
+ # default_role = None
113
+
114
+ # If true, '()' will be appended to :func: etc. cross-reference text.
115
+ # add_function_parentheses = True
116
+
117
+ # If true, the current module name will be prepended to all description
118
+ # unit titles (such as .. function::).
119
+ # add_module_names = True
120
+
121
+ # If true, sectionauthor and moduleauthor directives will be shown in the
122
+ # output. They are ignored by default.
123
+ # show_authors = False
124
+
125
+ # The name of the Pygments (syntax highlighting) style to use.
126
+ pygments_style = "default"
127
+
128
+ # A list of ignored prefixes for module index sorting.
129
+ # modindex_common_prefix = []
130
+
131
+
132
+ # -- Options for HTML output --------------------------------------------------
133
+
134
+ html_theme = "pydata_sphinx_theme"
135
+
136
+ # Theme options are theme-specific and customize the look and feel of a theme
137
+ # further. For a list of options available for each theme, see the
138
+ # documentation.
139
+ html_theme_options = {
140
+ "show_toc_level": 2,
141
+ "switcher": {
142
+ "json_url": json_url,
143
+ "version_match": version_match,
144
+ },
145
+ "icon_links": [
146
+ {
147
+ "name": "GitHub",
148
+ "url": "https://github.com/mehta-lab/waveorder",
149
+ "icon": "fa-brands fa-square-github",
150
+ "type": "fontawesome",
151
+ }
152
+ ],
153
+ "navbar_end": ["theme-switcher", "navbar-icon-links", "version-switcher"],
154
+ }
155
+
156
+ # Add any paths that contain custom themes here, relative to this directory.
157
+ # html_theme_path = []
158
+
159
+ # The name for this set of Sphinx documents. If None, it defaults to
160
+ # "<project> v<release> documentation".
161
+ html_title = "waveorder"
162
+
163
+ # A shorter title for the navigation bar. Default is the same as html_title.
164
+ # html_short_title = None
165
+
166
+ # The name of an image file (relative to this directory) to place at the top
167
+ # of the sidebar.
168
+ # html_logo = "resources/1.png"
169
+
170
+
171
+ # The name of an image file (within the static path) to use as favicon of the
172
+ # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
173
+ # pixels large.
174
+ # emoji favicon code adapted from:
175
+ # https://twitter.com/LeaVerou/status/1241619866475474946
176
+ html_favicon = "_static/waveorder.ico"
177
+
178
+ # Add any paths that contain custom static files (such as style sheets) here,
179
+ # relative to this directory. They are copied after the builtin static files,
180
+ # so a file named "default.css" will overwrite the builtin "default.css".
181
+ html_static_path = ["_static"]
182
+ html_css_files = [
183
+ "css/custom.css", # Adjust path if your CSS is in a subdirectory
184
+ ]
185
+ # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
186
+ # using the given strftime format.
187
+ # html_last_updated_fmt = '%b %d, %Y'
188
+
189
+ # If true, SmartyPants will be used to convert quotes and dashes to
190
+ # typographically correct entities.
191
+ # html_use_smartypants = True
192
+
193
+ # Custom sidebar templates, maps document names to template names.
194
+ html_sidebars = {"**": ["sidebar-nav-bs"]}
195
+
196
+ # Additional templates that should be rendered to pages, maps page names to
197
+ # template names.
198
+ # html_additional_pages = {}
199
+
200
+ # If false, no module index is generated.
201
+ # html_domain_indices = True
202
+
203
+ # If false, no index is generated.
204
+ # html_use_index = True
205
+
206
+ # If true, the index is split into individual pages for each letter.
207
+ # html_split_index = False
208
+
209
+ # If true, links to the reST sources are added to the pages.
210
+ # html_show_sourcelink = True
211
+
212
+ # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
213
+ html_show_sphinx = False
214
+
215
+ # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
216
+ # html_show_copyright = True
217
+
218
+ # If true, an OpenSearch description file will be output, and all pages will
219
+ # contain a <link> tag referring to it. The value of this option must be the
220
+ # base URL from which the finished HTML is served.
221
+ # html_use_opensearch = ''
222
+
223
+ # This is the file name suffix for HTML files (e.g. ".xhtml").
224
+ # html_file_suffix = None
225
+
226
+ # Output file base name for HTML help builder.
227
+ htmlhelp_basename = "waveorderdoc"
228
+
229
+ numpydoc_show_class_members = False
230
+
231
+ # sphinx-gallery config
232
+ sphinx_gallery_conf = {
233
+ "examples_dirs": ["examples"],
234
+ "gallery_dirs": ["wo_examples"],
235
+ "download_all_examples": False,
236
+ "filename_pattern": "/run_",
237
+ "show_signature": False,
238
+ "write_computation_times": False,
239
+ }
240
+
241
+
242
+ def setup(app):
243
+ app.connect("source-read", transform_md_links)
244
+
245
+
246
+ def transform_md_links(app, docname, source):
247
+ content = source[0]
248
+ # Transform .md links to .html for Sphinx build
249
+ content = re.sub(r"\]\(([^)#]+?)\.md(#[^)]+)?\)", r"](\1.html\2)", content)
250
+ source[0] = content
@@ -0,0 +1,15 @@
1
+ Contact Us
2
+ ==========
3
+
4
+ If you would like to report a bug, request a feature, or communicate any related problem,
5
+ please create an issue on our
6
+ `GitHub repository <https://github.com/mehta-lab/waveorder>`_
7
+ if there is not an existing issue on the topic.
8
+ You can also track pull-requests, milestones and our plans on our repository.
9
+
10
+ Contributing
11
+ ------------
12
+
13
+ Feel free to participate in discussions and contribute,
14
+ but do not forget to read our
15
+ `contributing guidelines <https://github.com/mehta-lab/waveorder/blob/main/CONTRIBUTING.md>`_ first.