Skip to content

Commit

Permalink
Added more structure to the sectioning
Browse files Browse the repository at this point in the history
  • Loading branch information
Johnhaug223 committed Aug 16, 2024
1 parent b9a7629 commit 397aa51
Show file tree
Hide file tree
Showing 24 changed files with 269 additions and 14 deletions.
32 changes: 18 additions & 14 deletions docs/source/design_principles/design_process.rst
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ With the baseplate designed, our final assembly for our illumination path looks
:align: center
:alt: Baseplate Assembly Top

Note on Difference in Simulated and Physical Coordinate Definitions
Design/Physical Assembly - Note on Difference in Simulated and Physical Coordinate Definitions
______________________________

It should be noted briefly that when discussing our physical microscope systems using Navigate software, the definitions
Expand All @@ -282,7 +282,7 @@ the picture below:
:align: center
:alt: Difference in coordinate axes for simulation and physical setup

Physical Assembly Process
Physical Assembly - Baseplate Assembly Process
-----------------

Our baseplate design was made with ease of assembly in mind. The basic process involves aligning Polaris posts with
Expand Down Expand Up @@ -310,7 +310,7 @@ just requires screwing 1/4"-20 screws into either an optical breadboard or onto
:alt: General process to place posts on baseplate corners


Finding the Focus
Imaging - Finding the Focus
-----------------

Minimizing Spherical Aberrations
Expand Down Expand Up @@ -355,7 +355,7 @@ focused.
:align: center
:alt: Before and after of adjusting in Z-projections after adjusting the correction collar

Piezo Setup & Troubleshooting
Physical Assembly - Piezo Setup & Troubleshooting
-----------------
On the PCI Board, connect the positive and negative wires to the corresponding analog output (AO) you want, in our case
we used AO 0, so we connected the positive wire to pin 10 and the ground to pin 11, then plug the BNC cable connected to
Expand Down Expand Up @@ -431,7 +431,7 @@ for Navigate looks like the following for setting up our piezo:
:align: center
:alt: How to find the Test Panels panel

Visualization of Axes Mapping
Physical Assembly - Visualization of Axes Mapping
-----------------

In our system we essentially have 5 different translation stages at work: the standard x,y, and z axes, an additional
Expand All @@ -442,10 +442,10 @@ such that its normal is 60.5 degrees away from the y-axis.
:align: center
:alt: Layout of how the axis of the system are mapped

How to Mount a Lens in a Polaris Holder
Physical Assembly - How to Mount a Lens in a Polaris Holder
-------------------

Installing the Piezo Angle Mount
Physical Assembly - Installing the Piezo Angle Mount
-----------------

Processing Images - Deskewing
Expand All @@ -459,7 +459,7 @@ stacked in a straight line but oriented along an angle, which is not the most ac
On the deskewed image on the right, one can see that the beads are now properly angled correspond to our piezo angle
mount, and that the PSFs of the beads is now correctly aligned along the z axis.

.. image:: Images/Bead Deskew Example.png
.. image:: Images/BeadDeskewExample.png
:align: center
:alt: Difference between an image set of 100 nm bead before deskewing (left) and after (right)

Expand All @@ -474,13 +474,17 @@ Processing Images - Rescaling
-------------------------

With a properly deskewed image set, the next step is to work to rescale the image set dimensions to properly
represent the image pixel sizes in every dimension. The first step to doing this involves going to the properties tab
of the image stack (Image-> Properties) and adjusting each dimension such that the x and y values correspond to the
xy pixel size based on the system magnification and camera sensor size, and the z value corresponding to the z step
size. While using our angled piezo configuration, the z step size :math:`\delta _z` doesn't directly correspond to
the step size chosen for the piezo via navigate. Depicted graphically below, the actual z step size is related to
both the angle for the piezo and the piezo step size :math:`\delta _p` .
represent the physical pixel sizes in every dimension. The first step to doing this involves going to the
properties tab of the image stack (Image-> Properties) and adjusting each dimension such that the x and y values
correspond to the xy pixel size based on the system magnification and camera sensor size, and the z value
corresponding to the z step size. While using our angled piezo configuration, the z step size :math:`\delta _z`
doesn't directly correspond to the step size chosen for the piezo via navigate. Depicted graphically below, the
actual z step size is related to both the angle for the piezo and the piezo step size :math:`\delta _p` .

.. image:: Images/CalculatingZstep.png
:align: center
:alt: Depiction of how :math:`\delta _z` is derived

An example of what these values can be is shown below, where for our camera and system magnification our xy pixel
size is the same at 130 nm, while we used a piezo step size of 200 nm. Using the relationship shown above to find
:math:`\delta _z`, we find our actual z-step size is roughly 98.5 nm.
Binary file added docs/source/imaging/Images/BeadAnalysis.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/source/imaging/Images/BeadDeskewExample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/source/imaging/Images/CalculatingZstep.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/source/imaging/Images/PhysicalAxesMaps.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/source/imaging/Images/SphericalExample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
102 changes: 102 additions & 0 deletions docs/source/imaging/imaging.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
.. _process-home:

###############################
Imaging with the System
###############################

Visualization of Axes Mapping
-----------------

In our system we essentially have 5 different translation stages at work: the standard x,y, and z axes, an additional
stage along the z axis to control the focus of the detection path (f), and and axis associated with the piezo positioned
such that its normal is 60.5 degrees away from the y-axis.

.. image:: Images/PhysicalAxesMaps.png
:align: center
:alt: Layout of how the axis of the system are mapped

Finding the Focus
-----------------

Minimizing Spherical Aberrations
-----------------

Once the system has been assembled to the point of being able to take image stacks, the process of
minimizing the effects of spherical aberrations can begin. Spherical aberrations are typically
introduced into optical systems due to the surface curvature of different lens elements. This
type of aberration typically presents itself visually as a sort of stretching or bending of the focus
of light in the system. Certain microscope objectives, such as the Nikon 25x/1.1 NA that we employ in this setup,
have a built-in collar that can be adjusted to minimize spherical aberration (PICTURE).

In our system, we expect the effects of spherical aberrations to be along the axis of our detection path (defined
as z in our imaging scheme). In order to visualize these effects and adjust the correction collar of our objective
to mitigate them, we employ a process of taking a z-stack of fluorescent beads suspended in agarose
and using ImageJ to quickly process those images.

1. Take a z-stack within Navigate of your sample
2. Open up the z-stack within ImageJ
3. Reslice the z-stack (Image -> Stacks -> Reslice)
4. Do a maximum intensity project of the resliced stack (Image -> Stacks -> Z-Projection)
5. Take note if spherical aberration is present in the projected image.
6. If spherical aberration is still present, make slight adjustments to the objective
correction collar and repeat Steps 1-5.

As a note, observing the camera live-feed via Navigate's "Continuous Scan" mode while adjusting the correction collar
can help to get in the general vicinity of the correct placement of the correction collar. An example of how change in
the correction collar affect live images are shown below for fluorescent beads. Aiming to get to get the beads near the
expected light sheet position to be as in-focus as possible is a general guide for what direction to move the collar;
however, true correction needs to be done with the z-projection method mentioned above.

.. image:: Images/ChangingCorrectionCollar.png
:align: center
:alt: Correction collar effects

As a quick example of what an image of a z-projection could look like before and after trying to correct for spherical aberration is shown
below. Here, one can see in the top panel that the bead features are essentially smoothed out and fuzzy due to
aberrations, while in the bottom panel with adjustments made to the correction collar the beads appear much cleaner and
focused.

.. image:: Images/SphericalExample.png
:align: center
:alt: Before and after of adjusting in Z-projections after adjusting the correction collar

Processing Images - Deskewing
-------------------------

With an image stack acquired, some post processing is still required in order to remove the effects of shearing in our
images. The root of this shearing is due to the angled method in which our sample is mounted and similarly, the angled path that
the sample moves as the piezo is scanned. A basic visual idea of how deskewing affects the resulting image is shown
below for 100 nm fluorescent beads. Here before deskewing for the same image plane (yz), the beads appear to be
stacked in a straight line but oriented along an angle, which is not the most accurate representation of our system.
On the deskewed image on the right, one can see that the beads are now properly angled correspond to our piezo angle
mount, and that the PSFs of the beads is now correctly aligned along the z axis.

.. image:: Images/BeadDeskewExample.png
:align: center
:alt: Difference between an image set of 100 nm bead before deskewing (left) and after (right)

To do this deskew processing, we utilize custom-built python code via Jupyter notebooks (HAVE LINK TO NOTEBOOK
DOWNLOAD?). The user needs to provide the correct file path to the .tif image stack collected via navigate, as well
as the parameters of the imaging system like z-step size, xy pixel size, and the angle that the images should be
deskewed over. In our case, our deskew angle is equivalent to 90-60.5 degrees, where 60.5 degrees corresponds to the
difference between the normal of our angle mount and the y-axis. If this value is unknown, one can use different
values for the deskew angle until the bead PSFs are correctly aligned along the z-axis and not angled.

Processing Images - Rescaling
-------------------------

With a properly deskewed image set, the next step is to work to rescale the image set dimensions to properly
represent the physical pixel sizes in every dimension. The first step to doing this involves going to the
properties tab of the image stack (Image-> Properties) and adjusting each dimension such that the x and y values
correspond to the xy pixel size based on the system magnification and camera sensor size, and the z value
corresponding to the z step size. While using our angled piezo configuration, the z step size :math:`\delta _z`
doesn't directly correspond to the step size chosen for the piezo via navigate. Depicted graphically below, the
actual z step size is related to both the angle for the piezo and the piezo step size :math:`\delta _p` .

.. image:: Images/CalculatingZstep.png
:align: center
:alt: Depiction of how :math:`\delta _z` is derived

An example of what these values can be is shown below, where for our camera and system magnification our xy pixel
size is the same at 130 nm, while we used a piezo step size of 200 nm. Using the relationship shown above to find
:math:`\delta _z`, we find our actual z-step size is roughly 98.5 nm.
12 changes: 12 additions & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,18 @@ evaluated in their entirety through time.
:caption: Development
:maxdepth: 2

.. toctree::
:caption: Hardware and Physical Assembly
:maxdepth: 5

physical_assembly/physical_assembly

.. toctree::
:caption: Imaging with the System
:maxdepth: 5

imaging/imaging

contributing/software_architecture


Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
137 changes: 137 additions & 0 deletions docs/source/physical_assembly/physical_assembly.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
.. _process-home:

###############################
Hardware and Physical Assembly
###############################

Note on Difference in Simulated and Physical Coordinate Definitions
______________________________

It should be noted briefly that when discussing our physical microscope systems using Navigate software, the definitions
for the coordinate axes is different than that of our simulations. This is due to a difference in standardized
definitions for the axes in our previous systems and how Zemax defines these same axes. This difference is depicted in
the picture below:

.. image:: Images/CoordinateSchemeChange.png
:align: center
:alt: Difference in coordinate axes for simulation and physical setup

Baseplate Assembly Process
-----------------

Our baseplate design was made with ease of assembly in mind. The basic process involves aligning Polaris posts with
dowell pins and screwing them using 1/4"-20 Screws in at the predetermined hole locations on the breadboard.
This general process is depicted below:

.. image:: Images/BaseplateAssembly.png
:align: center
:alt: General process to place posts on baseplate

We used various different Polaris post sizes in our assembly based on what element was being mounted on them.
Also worth noting is that three elements are designed to be placed on 0.5" posts and as such require 0.5" post holders at
their designated locations: the L1 focus iris, the rectangular aperture after L2, and the ND filter after the 45 degree mirror.
The overal breakdown of which size posts went with each hole location is listed below:

.. image:: Images/PostHeightBreakdown.png
:align: center
:alt: Schematic of which holes use which post heights

To either mount the baseplate onto an optical table or onto separate posts, the process is similar in that
just requires screwing 1/4"-20 screws into either an optical breadboard or onto separate posts at the four corner holes.

.. image:: Images/BaseplateAssembly_Corners.png
:align: center
:alt: General process to place posts on baseplate corners

Piezo Setup & Troubleshooting
-----------------
On the PCI Board, connect the positive and negative wires to the corresponding analog output (AO) you want, in our case
we used AO 0, so we connected the positive wire to pin 10 and the ground to pin 11, then plug the BNC cable connected to
those wires into the EXT IN input on the Tiger controller panel corresponding to the piezo.

.. image:: Images/DevicePinouts.png
:align: center
:alt: How to find the Device Pinout panel

Plug the piezo cable into the PIEZO input on the Tiger controller panel corresponding to the piezo.

Verify the range of the piezo in the tiger controller software with the command "5 cca x?"

At first, ours output the following:
| :A Q:P1
| 23 P 1 100um RANGE
| 24 P 2 200um RANGE
| 35 P S 150um RANGE
| 36 P 3 300um RANGE
| 37 P 5 500um RANGE
| 34 P f 50um RANGE
| 25 P 4 350um RANGE:N-4
This tells us that our Piezo (Panel 5/Q) corresponded to P1 or a 100 um range, but ASI requires the piezo needed to be
set to a 50 um range to be able to be intitialized instead. To change this, we used the command "5 cca x = 34" and
power cycled the controller.

Then our output became:
| :A Q:Pf
| 23 P 1 100um RANGE
| 24 P 2 200um RANGE
| 35 P S 150um RANGE
| 36 P 3 300um RANGE
| 37 P 5 500um RANGE
| 34 P f 50um RANGE
| 25 P 4 350um RANGE:N-4
Now we can see that the piezo is set to the correct range (Pf).
With that verified, now confirm that the voltage output from the PCI Board is working:

| 1. Put the BNC cable input currently in EXT IN on the Tiger control panel into the input of the oscilloscope instead.
| 2. Go to the test panels for the PCI board in NI MAX.
.. image:: Images/TestPanels.png
:align: center
:alt: How to find the Test Panels panel

| 3. Set the voltage mode to sinewave generation.
| 4. Set the voltage range to be between 0 to 10 V.
| 5. Set the frequency to a desired value (we ended up setting it pretty high at 10000 Hz for ease of viewing on the oscilloscope).
.. image:: Images/TestPanelConfiguration.png
:align: center
:alt: How to find the Test Panels panel

With the voltage output of the PCI board verified, plug the PCI Board voltage cable output back into the EXT IN slot and
verify that the position output of the Piezo reads similarly on the oscilloscope:
1. Plug a BNC Cable into the SENSOR OUT connection on the tiger controller panel.
2. Plug the other end of that cable into the oscilloscope.
3. Verify that a sinewave output is seen on the oscilloscope.

If the PCI Board voltage is working as intended but the piezo position output doesn't seem to work, try ensuring that
the piezo is set in `External Input mode, and not Controller Input mode <https://asiimaging.com/docs/commands/pm>`_:
1. Use the "PM Q?" (Our piezo corresponds to Q) command:
- the output was "Q = 0" originally, telling us that it's in Controller Input mode
2. Use the "PM Q = 1" command to set the piezo into External Input mode:
- now the output of "PM Q?" is "Q = 1"

Another important step is to ensure that the configuration file associated with Navigate is appropriately set up for your piezo.
This involves setting the correct axis and voltage-to-distance mapping for the piezo. As an example our configuration file
for Navigate looks like the following for setting up our piezo:

.. image:: Images/Piezo_Config.png
:align: center
:alt: How to find the Test Panels panel

Physical Assembly - Visualization of Axes Mapping
-----------------

In our system we essentially have 5 different translation stages at work: the standard x,y, and z axes, an additional
stage along the z axis to control the focus of the detection path (f), and and axis associated with the piezo positioned
such that its normal is 60.5 degrees away from the y-axis.

.. image:: Images/PhysicalAxesMaps.png
:align: center
:alt: Layout of how the axis of the system are mapped

Physical Assembly - How to Mount a Lens in a Polaris Holder
-------------------

Physical Assembly - Installing the Piezo Angle Mount
-----------------

0 comments on commit 397aa51

Please sign in to comment.