Skip to content

Commit

Permalink
reordered sections, editing documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
IvoVellekoop committed Oct 7, 2024
1 parent 3b8b8a5 commit 03ccf5a
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 146 deletions.
2 changes: 1 addition & 1 deletion docs/source/conclusion.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ In this work we presented an open-source Python package for conducting and simul

OpenWFS incorporates features to reduce the chances of errors in the design of wavefront shaping code. Notably, the use of units of measure prevents the accidental mixing of units, and the automatic synchronization mechanism ensures that hardware is properly synchronized without the need to write any synchronization code. Finally, the ability to simulate full experiments, and to mock individual components, allows the user to test wavefront shaping algorithms without the need for physical hardware. We find this feature particularly useful since there is a lot that can go wrong in an experiment, (also see :cite:`Mastiani2024PracticalConsiderations`), and experimental issues and software issues are not always easy to distinguish. With OpenWFS, it is now possible to fully test the algorithms before entering the lab, which can save a lot of time and frustration.

We envision that OpenWFS will hold a growing collection of components for hardware control, advanced simulations, and wavefront shaping. The standardised interfaces for detectors, actuators and SLMs, enables the cooperative development of complex functionality. Additionally, standardized components and algorithms will greatly simplify developing reusable code that can be used across different setups and experiments. The simulation tools may additionally be used for research and education, ushering in a new phase of applications in wavefront shaping. We therefore encourage the reader to join us in developing new algorithms and components for this framework.
We envision that OpenWFS will hold a growing collection of components for hardware control, advanced simulations, and wavefront shaping. Further expansion of the supported hardware is of high priority, especially wrapping c-based libraries and adding support for Micro-Manager device adapters. The standardised interfaces for detectors, actuators and SLMs will greatly simplify developing reusable code that can be used across different setups and experiments. The simulation tools may additionally be used for research and education, ushering in a new phase of applications in wavefront shaping. We therefore encourage the reader to join us in developing new algorithms and components for this framework.

Code availability
------------------------------------------------
Expand Down
27 changes: 17 additions & 10 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
latex_elements = {
"preamble": r"""
\usepackage{authblk}
\usepackage{etoolbox} % Reduce font size for all tables
\AtBeginEnvironment{tabular}{\small}
""",
"maketitle": r"""
\author[1]{Daniël~W.~S.~Cox}
Expand All @@ -61,16 +63,21 @@
this research field is expanding rapidly.
As the field advances, it stands out that many breakthroughs are driven by the development of better
software that incorporates increasingly advanced physical models and algorithms.
Typical control software involves fragmented implementations for scanning microscopy, image processing,
optimization algorithms, low-level hardware control, calibration and troubleshooting,
and simulations for testing new algorithms.
The complexity of the many different aspects of wavefront shaping software, however,
is becoming a limiting factor for further developments in the field, as well as for end-user adoption.
OpenWFS addresses these challenges by providing a modular and extensible Python library that
incorporates elements for hardware control, software simulation, and automated troubleshooting.
Using these elements, the actual wavefront shaping algorithm and its automated tests can be written
in just a few lines of code.
Typical WFS software involves a complex combination of low-level hardware control, signal processing,
calibration, troubleshooting, simulation, and the wavefront shaping algorithm itself.
This complexity makes it hard to compare different algorithms and to extend existing software with new
hardware or algorithms. Moreover, the complexity of the software can be a significant barrier for end
users of microscopes to adopt wavefront shaping.
OpenWFS addresses these challenges by providing a modular Python library that
separates hardware control from the wavefront shaping algorithm itself.
Using these elements, an wavefront shaping algorithm can be written
in just a few lines of code, with OpenWFS taking care of low-level hardware control, synchronization,
and troubleshooting. Algorithms can be used on different hardware or in a completely
simulated environment without changing the code. Moreover, we provide full integration with
the \textmu Manager microscope control software, enabling wavefront shaping experiments to be
executed from a user-friendly graphical user interface.
}
}
\maketitle
Expand Down
166 changes: 84 additions & 82 deletions docs/source/core.rst

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ OpenWFS - a library for conducting and simulating wavefront shaping experiments
core
slms
simulations
micromanager
troubleshooting
development
pydevice
api
auto_examples/index
5 changes: 2 additions & 3 deletions docs/source/index_latex.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ OpenWFS - a library for conducting and simulating wavefront shaping experiments
core
slms
simulations
pydevice
micromanager
troubleshooting
development
conclusion

auto_examples/index
4 changes: 2 additions & 2 deletions docs/source/pydevice.rst → docs/source/micromanager.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.. _section-pydevice:
.. _micromanager:

OpenWFS in PyDevice
OpenWFS in μ-Manager
==============================================

To smoothly enable end-user interaction with wavefront shaping algorithms, the Micro-Manager device adapter PyDevice was developed :cite:`PyDevice`. A more detailed description can be found in the mmCoreAndDevices source tree :cite:`mmCoreAndDevices`. In essence, PyDevice is Micro-Manager adapter that imports objects from a Python script and integrates them as devices, e.g. a camera or stage. OpenWFS was written in compliance with the templates required for PyDevice, which means OpenWFS cameras, scanners and algorithms can be loaded into Micro-Manager as devices. Examples of this are found in the example gallery :cite:`readthedocsOpenWFS`. Further developments due to this seamless connection can be a dedicated Micro-Manager based wavefront shaping GUI.
Loading

0 comments on commit 03ccf5a

Please sign in to comment.