See also

This page was generated from examples/efm.ipynb.

Download the Jupyter Notebook for this section: efm.ipynb. View in nbviewer.

https://colab.research.google.com/assets/colab-badge.svg https://mybinder.org/badge_logo.svg

EFM ImagingΒΆ

This is an example using scopyon (https://scopyon.readthedocs.io/).

[1]:
import scopyon

Set the configuration first.

[2]:
config = scopyon.DefaultConfiguration()
config.default.magnification = 360.0
config.default.detector.exposure_time = 33.0e-3  # second
config.default.detector.image_size = [128, 128]
[3]:
# config.environ.processes = 20

A field of microscopic view could be calculated as follows:

[4]:
pixel_length = config.default.detector.pixel_length / config.default.magnification
L_2 = config.default.detector.image_size[0] * pixel_length * 0.5

Randomly generate positions of 30 molecules on membrane.

[5]:
import numpy
rng = numpy.random.RandomState(1)
num_frames = 100
dt = config.default.detector.exposure_time
t = numpy.linspace(0, dt, num_frames + 1)
depth = 0.5e-6  # m
[6]:
Nm = 30
Dm = 0.1e-12  # m ** 2 / s
inputs1 = scopyon.sample_inputs(t, N=Nm, lower=(-L_2, -L_2, 0.0), upper=(+L_2, +L_2, 0.0), ndim=2, D=Dm, rng=rng)
[7]:
scopyon.form_image(inputs1, config=config, rng=rng)

Next, 244 molecules (corresponding to 100 nM) are distributed in volume.

[8]:
Nc = 244  # ~100 nM
Dc = 5.0e-12  # m ** 2 / s
inputs2 = scopyon.sample_inputs(t, N=Nc, lower=(-L_2, -L_2, -depth), upper=(+L_2, +L_2, 0.0), ndim=3, D=Dc, start=Nm, rng=rng)
[9]:
inputs = [(inputs1_[0], numpy.vstack((inputs1_[1], inputs2_[1]))) for inputs1_, inputs2_ in zip(inputs1, inputs2)]

scopyon.form_image generates a single image from the given inputs.

[10]:
# import logging
# logging.basicConfig(level=logging.INFO)
[11]:
img = scopyon.form_image(inputs, config=config, rng=rng)
[12]:
img

TIRF Imaging is the special case, where source angle exceeds critical angle. When source angle is less than critical angle, penetration depth is assumed to be infinity (Oblique illumination).

[13]:
# theta = numpy.arcsin(1.384 / 1.46) = 1.2467198316493195  # Critical Angle
config.default.light_source.angle = 1.24
config.default.light_source.flux_density = config.default.light_source.flux_density * 3.977927479215699

Only the molecules on the focal plane:

[14]:
scopyon.form_image(inputs1, config=config, rng=rng)

With the molecules in volume:

[15]:
scopyon.form_image(inputs, config=config, rng=rng)