Brain whole slide image 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.wsi_brain()
plt.imshow(images[12])
Downloading file 'wsi_brain.npz' from 'https://github.com/peng-lab/BaSiCPy/raw/dev/data/wsi_brain.npz' to '/home/docs/.cache/basicpy'.
[3]:
<matplotlib.image.AxesImage at 0x7f6e690a1b80>
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: 5.862551688551321e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 0 finished.
INFO:basicpy.basicpy:reweighting iteration 1
INFO:basicpy.basicpy:single-step optimization score: 8.586401349930384e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 1 finished.
INFO:basicpy.basicpy:reweighting score: 0.4913370609283447
INFO:basicpy.basicpy:elapsed time: 4.790914952000094 seconds
INFO:basicpy.basicpy:reweighting iteration 2
INFO:basicpy.basicpy:single-step optimization score: 9.414103487870307e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 2 finished.
INFO:basicpy.basicpy:reweighting score: 0.03791121393442154
INFO:basicpy.basicpy:elapsed time: 5.414380725000228 seconds
INFO:basicpy.basicpy:reweighting iteration 3
INFO:basicpy.basicpy:single-step optimization score: 6.040669404683285e-07.
INFO:basicpy.basicpy:mean of S: 0.9999999403953552.
INFO:basicpy.basicpy:Iteration 3 finished.
INFO:basicpy.basicpy:reweighting score: 0.2741871774196625
INFO:basicpy.basicpy:elapsed time: 6.003654062999885 seconds
INFO:basicpy.basicpy:reweighting iteration 4
INFO:basicpy.basicpy:single-step optimization score: 6.231510951693053e-07.
INFO:basicpy.basicpy:mean of S: 1.0000001192092896.
INFO:basicpy.basicpy:Iteration 4 finished.
INFO:basicpy.basicpy:reweighting score: 0.023092152550816536
INFO:basicpy.basicpy:elapsed time: 6.616932478000308 seconds
INFO:basicpy.basicpy:reweighting iteration 5
INFO:basicpy.basicpy:single-step optimization score: 6.461627890530508e-07.
INFO:basicpy.basicpy:mean of S: 0.9999999403953552.
INFO:basicpy.basicpy:Iteration 5 finished.
INFO:basicpy.basicpy:reweighting score: 0.014786623418331146
INFO:basicpy.basicpy:elapsed time: 7.216995929000404 seconds
INFO:basicpy.basicpy:reweighting iteration 6
INFO:basicpy.basicpy:single-step optimization score: 6.661320526291092e-07.
INFO:basicpy.basicpy:mean of S: 1.0.
INFO:basicpy.basicpy:Iteration 6 finished.
INFO:basicpy.basicpy:reweighting score: 0.056590840220451355
INFO:basicpy.basicpy:elapsed time: 7.836563122999905 seconds
INFO:basicpy.basicpy:reweighting iteration 7
INFO:basicpy.basicpy:single-step optimization score: 7.044488938845461e-07.
INFO:basicpy.basicpy:mean of S: 1.0000001192092896.
INFO:basicpy.basicpy:Iteration 7 finished.
INFO:basicpy.basicpy:reweighting score: 0.0066207703202962875
INFO:basicpy.basicpy:elapsed time: 8.434077275000163 seconds
INFO:basicpy.basicpy:Reweighting converged.
INFO:basicpy.basicpy:=== BaSiC fit finished in 8.51443919400026 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.05921558000045479 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()