FDTD simulation data for Optical Diffraction Tomography
Data Structure
Each dataset is an HDF5 file (https://www.hdfgroup.org) that contains the simulation structure (the cell phantom), a background field (simulation without phantom), and a field for each rotational position of the phantom (sinogram). The fields are slices through the complex electrical field in the original simulation volume behind the phantom at the end of the simulation (supposedly steady state). The slice position is written as the HDF5 attribute “extraction focus distance [px]”. The slice position is important for the reconstruction, because the fields must be numerically refocused to the center of the simulation volume before reconstruction. The perfectly matched layer (PML) has already been cropped from the fields. Alongside each field, the source code of the Meep simulation and the standard-output of the compiled simulation are stored. You can also find the simulation templates in the ODTbrain repository at https://github.com/RI-imaging/ODTbrain/tree/master/misc. I recommend you to explore the files using HDFView (https://www.hdfgroup.org/downloads/hdfview/).
Naming Scheme
I adopted the naming scheme of the original simulations.
- The first part of the file name determines the dimension of the simulation. The larger “phantom_3d” files contain the 3D simulation sinograms.
- “A” is the total number of angles for which simulations were performed.
- “R” is the resolution (number of pixels per wavelength).
- “T” is the total number of simulation steps performed.
- “Nmed” is the refractive index (RI) of the medium surrounding the cell phantom.
- “Ncyt” is the RI of the phantom’s cytoplasm.
- “Nnuc” is the RI of the phantom’s nucleus.
- “Nleo” is the RI of the phantom’s nucleolus.
The final part of the file name indicates to which type of study the simulation belongs:
- “angles”: varying the total number of acquisition angles
- “step-count”: varying the total number of time steps
- “refractive-index”: varying the internal RI values of the cell phantom
- “size”: varying the size of the phantom
Getting Started
I added two Python scripts “recon_2d.py” and “recon_3d.py” (tested with Python 3.9 on Ubuntu 22.04) that will allow you to obtain RI reconstructions from the 2D and 3D sinograms. For this to work, you will have to install the Python libraries imported in those scripts. Note that for the 3D data you can also use the graphical tool CellReel (https://github.com/RI-imaging/CellReel).