Brightfield timelapse example
Install and import the dependencies
[1]:
%pip uninstall basicpy -yq
%pip install basicpy -q
Note: you may need to restart the kernel to use updated packages.
Note: you may need to restart the kernel to use updated packages.
[2]:
from basicpy import BaSiC
from basicpy import data as bdata
from matplotlib import pyplot as plt
the value of the environment variable BASIC_DCT_BACKEND is not in ["JAX","SCIPY"]
Load the sample images
[3]:
images = bdata.timelapse_brightfield()
plt.imshow(images[10])
Downloading file 'timelapse_brightfield.npz' from 'https://github.com/peng-lab/BaSiCPy/raw/dev/data/timelapse_brightfield.npz' to '/home/docs/.cache/basicpy'.
[3]:
<matplotlib.image.AxesImage at 0x7f9575418b80>
Fit the flatfield and darkfield
[4]:
basic = BaSiC(get_darkfield=True, lambda_flatfield_coef=10)
basic.fit(images)
WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
INFO:basicpy.basicpy:reweighting iteration 0
INFO:basicpy.basicpy:single-step optimization score: 6.403664087883953e-07.
INFO:basicpy.basicpy:mean of S: 1.0000001192092896.
INFO:basicpy.basicpy:Iteration 0 finished.
INFO:basicpy.basicpy:reweighting iteration 1
INFO:basicpy.basicpy:single-step optimization score: 9.878729088086402e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 1 finished.
INFO:basicpy.basicpy:reweighting score: 0.026257801800966263
INFO:basicpy.basicpy:elapsed time: 6.508570558000429 seconds
INFO:basicpy.basicpy:reweighting iteration 2
INFO:basicpy.basicpy:single-step optimization score: 9.937207323673647e-07.
INFO:basicpy.basicpy:mean of S: 1.0000001192092896.
INFO:basicpy.basicpy:Iteration 2 finished.
INFO:basicpy.basicpy:reweighting score: 0.026257801800966263
INFO:basicpy.basicpy:elapsed time: 8.188184904000082 seconds
INFO:basicpy.basicpy:reweighting iteration 3
INFO:basicpy.basicpy:single-step optimization score: 9.867982271316578e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 3 finished.
INFO:basicpy.basicpy:reweighting score: 0.17522761225700378
INFO:basicpy.basicpy:elapsed time: 9.789261509000426 seconds
INFO:basicpy.basicpy:reweighting iteration 4
INFO:basicpy.basicpy:single-step optimization score: 9.872994723991724e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 4 finished.
INFO:basicpy.basicpy:reweighting score: 0.006575890816748142
INFO:basicpy.basicpy:elapsed time: 11.465960357000768 seconds
INFO:basicpy.basicpy:Reweighting converged.
INFO:basicpy.basicpy:=== BaSiC fit finished in 11.551364736000323 seconds ===
Plot the fit results
[5]:
fig, axes = plt.subplots(1, 3, figsize=(9, 3))
im = axes[0].imshow(basic.flatfield)
fig.colorbar(im, ax=axes[0])
axes[0].set_title("Flatfield")
im = axes[1].imshow(basic.darkfield)
fig.colorbar(im, ax=axes[1])
axes[1].set_title("Darkfield")
axes[2].plot(basic.baseline)
axes[2].set_xlabel("Frame")
axes[2].set_ylabel("Baseline")
fig.tight_layout()
Correct the original images
[6]:
images_transformed = basic.transform(images)
INFO:basicpy.basicpy:=== BaSiC transform started ===
INFO:basicpy.basicpy:unshading in 2 threads
INFO:basicpy.basicpy:=== BaSiC transform finished in 0.016013436000321235 seconds ===
Plot the corrected results
[7]:
i = 12
fig, axes = plt.subplots(1, 2, figsize=(6, 3))
im = axes[0].imshow(images[i])
fig.colorbar(im, ax=axes[0])
axes[0].set_title("Original")
im = axes[1].imshow(images_transformed[i])
fig.colorbar(im, ax=axes[1])
axes[1].set_title("Corrected")
fig.tight_layout()
[ ]: