Basics (CLI)
In this example, we will demonstrate how to use faser to simulate the point spread function (PSF) of an optical microscope, using a 1.2 NA objective lens with a 488 nm excitation wavelength, and explore the impact of two different beam profiles on the PSF shape. This example will focus on using the faser command-line interface (CLI) to generate the PSF.
Step by Step Guide
-
Open Terminal
To get started with faser, open a terminal inside a working directory where you would like to output the PSF files (and their corresponding parameter configs).
-
Familiarize yourself with the CLI Parameters
The faser cli accepts a number of parameters that can be used to customize the PSF simulation. To see the available parameters, you can run the following command:
Terminal window faser --helpThis will display a list of available parameters that can be used to customize the PSF simulation.
Terminal window Usage: faser [OPTIONS]╭─ Options ────────────────────────────────────────────────────────────────────╮│ --config FILENAME Path to a JSON file ││ --detector_gaussian_noise FLOAT Detector Gaussian noise ││ --gaussian_beam_noise FLOAT Gaussian_beam noise ││ --add_noise NOISE ││ --loaded_phase_mask OPTIONAL Loaded Phasemak ││ --p FLOAT Ratio between Donut (p) and ││ Bottle (1-p) intensity ││ --mask_offset_y FLOAT Y offset of the phase mask in ││ regard to pupil center ││ --mask_offset_x FLOAT X offset of the phase mask in ││ regard to pupil center ││ --ring_radius FLOAT Radius of the ring phase mask ││ (on unit pupil) ││ --rc FLOAT Ring charge (should be odd to ││ produce bottle) ││ --vc FLOAT Vortex charge (should be ││ integer to produce donut) ││ --epsilon FLOAT Ellipticity of the ││ polarization (in °) ││ --psi FLOAT Direction of the polarization ││ (in °) ││ --ampl_offset_y FLOAT Y offset of the amplitude ││ profile in regard to pupil ││ center ││ --ampl_offset_x FLOAT X offset of the amplitude ││ profile in regard to pupil ││ center ││ --waist FLOAT Diameter of the input beam on ││ the objective pupil (in µm) ││ --wavelength FLOAT Wavelength of light (in µm) ││ --polarization POLARIZATION ││ --mode MODE ││ --aberration_offset_y FLOAT Y offset of the aberration ││ function in regard to pupil ││ center ││ --aberration_offset_x FLOAT X offset of the aberration ││ function in regard to pupil ││ center ││ --a24 ABERRATIONFLOAT Secondary spherical ││ --a12 ABERRATIONFLOAT Primary spherical ││ --a9 ABERRATIONFLOAT Oblique Trefoil ││ --a8 ABERRATIONFLOAT Horizontal Coma ││ --a7 ABERRATIONFLOAT Vertical Coma ││ --a6 ABERRATIONFLOAT Vertical Trefoil ││ --a5 ABERRATIONFLOAT Vertical Astigmatism ││ --a4 ABERRATIONFLOAT Defocus ││ --a3 ABERRATIONFLOAT Oblique Astigmatism ││ --a2 ABERRATIONFLOAT Horizontal Tilt ││ --a1 ABERRATIONFLOAT Vertical Tilt ││ --a0 ABERRATIONFLOAT Piston ││ --wind_offset_y FLOAT Y offset of the cranial window ││ in regard to pupil center ││ --wind_offset_x FLOAT X offset of the cranial window ││ in regard to pupil center ││ --wind_depth FLOAT Depth of the cranial window ││ (in mm) ││ --wind_radius FLOAT Diameter of the cranial window ││ (in mm) ││ --window WINDOW ││ --tilt FLOAT Tilt angle of the coverslip ││ (in °) ││ --depth FLOAT Imaging depth in the sample ││ (in µm) ││ --collar FLOAT Correction collar setting to ││ compensate coverslip thickness ││ --thickness FLOAT Thickness of the coverslip (in ││ µm) ││ --n3 FLOAT Refractive index of the sample ││ --n2 FLOAT Refractive index of the ││ coverslip ││ --n1 FLOAT Refractive index of the ││ immersion medium ││ --wd FLOAT Working Distance of the ││ objective lens (in µm) ││ --na FLOAT Numerical Aperture of ││ Objective Lens ││ --normalize NORMALIZE ││ --nphi INTEGER Integration sted of the ││ aximutal angle on the pupil ││ --ntheta INTEGER Integration sted of the ││ focalization angle ││ --nz INTEGER Discretization of Z axis - ││ better be odd number for ││ perfect 0 ││ --nxy INTEGER Discretization of image plane ││ - better be odd number for ││ perfect 0 ││ --l_obs_z FLOAT Observation scale in Z (in µm) ││ --l_obs_xy FLOAT Observation scale in XY (in ││ µm) ││ --help Show this message and exit. │╰──────────────────────────────────────────────────────────────────────────────╯ -
Run the PSF Simulation
Terminal window faser --na=1.2 --wavelength=0.488 -
Inspect the PSF
Once the simulation is complete, you can inspect the PSF by opening the generated TIFF file in an image viewer or analysis software. You can also import the psf into napari for visualization or reopen the psf_config.json file to see the parameters used for the simulation.
- psf_config.json
- psf.tif