.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "wo_examples/models/phase_thick_3d.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_wo_examples_models_phase_thick_3d.py: phase thick 3d ====================== # 3D partially coherent optical diffraction tomography (ODT) simulation # J. M. Soto, J. A. Rodrigo, and T. Alieva, "Label-free quantitative # 3D tomographic imaging for partially coherent light microscopy," Opt. Express # 25, 15699-15712 (2017) .. GENERATED FROM PYTHON SOURCE LINES 10-85 .. code-block:: Python import napari import numpy as np from waveorder.models import phase_thick_3d # Parameters # all lengths must use consistent units e.g. um simulation_arguments = { "zyx_shape": (100, 256, 256), "yx_pixel_size": 6.5 / 63, "z_pixel_size": 0.25, "index_of_refraction_media": 1.3, } phantom_arguments = {"index_of_refraction_sample": 1.50, "sphere_radius": 5} transfer_function_arguments = { "z_padding": 0, "wavelength_illumination": 0.532, "numerical_aperture_illumination": 0.9, "numerical_aperture_detection": 1.2, } # Create a phantom zyx_phase = phase_thick_3d.generate_test_phantom( **simulation_arguments, **phantom_arguments ) # Calculate transfer function ( real_potential_transfer_function, imag_potential_transfer_function, ) = phase_thick_3d.calculate_transfer_function( **simulation_arguments, **transfer_function_arguments ) # Display transfer function viewer = napari.Viewer() zyx_scale = np.array( [ simulation_arguments["z_pixel_size"], simulation_arguments["yx_pixel_size"], simulation_arguments["yx_pixel_size"], ] ) phase_thick_3d.visualize_transfer_function( viewer, real_potential_transfer_function, imag_potential_transfer_function, zyx_scale, ) input("Showing OTFs. Press to continue...") viewer.layers.select_all() viewer.layers.remove_selected() # Simulate zyx_data = phase_thick_3d.apply_transfer_function( zyx_phase, real_potential_transfer_function, transfer_function_arguments["z_padding"], brightness=1e3, ) # Reconstruct zyx_recon = phase_thick_3d.apply_inverse_transfer_function( zyx_data, real_potential_transfer_function, imag_potential_transfer_function, transfer_function_arguments["z_padding"], ) # Display viewer.add_image(zyx_phase.numpy(), name="Phantom", scale=zyx_scale) viewer.add_image(zyx_data.numpy(), name="Data", scale=zyx_scale) viewer.add_image(zyx_recon.numpy(), name="Reconstruction", scale=zyx_scale) input("Showing object, data, and recon. Press to quit...") .. _sphx_glr_download_wo_examples_models_phase_thick_3d.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: phase_thick_3d.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: phase_thick_3d.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: phase_thick_3d.zip `