跳转到主要内容

显微镜点扩散函数(PSF)的标量和矢量模型。

项目描述

psfmodels

PyPI Python Version CI codecov

点扩散函数的标量和矢量模型的Python绑定。

原始C++代码和MATLAB MEX绑定版权©2006-2013,Francois Aguet,在GPL-3.0许可下分发。Python绑定由Talley Lambert提供

此软件包包含三个模型

  1. 矢量模型在Auget等人2009年[1]中描述。更多信息和技术细节,请参阅Francois的论文[2]。
  2. 基于Gibson & Lanni[3]的标量模型。
  3. 高斯近似(包括傍轴和非傍轴),使用Zhang等人(2007年)[4]的参数。

[1] F. Aguet等人,(2009)Opt. Express 17(8),第6829-6848页

[2] F. Aguet. (2009)基于物理模型的超分辨率荧光显微镜。瑞士联邦理工学院洛桑EPFL论文编号4418

[3] F. Gibson和F. Lanni(1992)J. Opt. Soc. Am. A,第9卷,第1期,第154-166页

[4] Zhang等人(2007年)。应用光学。2007年4月1日;46(10):1819-29。

另请参阅

有关不同的(更快的)基于标量的 Gibson–Lanni PSF 模型,请参阅基于 Li 等人(2017)MicroscPSF 项目,该模型已在 PythonMATLABImageJ/Java 中实现。

安装

pip install psfmodels

从源代码安装

git clone https://github.com/tlambert03/PSFmodels.git
cd PSFmodels
pip install -e ".[dev]"  # will compile c code via pybind11

用法

psfmodels 中有两个主要函数:vectorial_psfscalar_psf。此外,每个版本都有一个辅助函数,分别称为 vectorial_psf_centeredscalar_psf_centered。主要区别是 _psf 函数接受一个 Z 位置向量 zv(相对于载玻片),在这些位置计算 PSF。因此,点光源可能实际上不在渲染体积的中心。相比之下,_psf_centered 变体不接受 zv,而是接受 nz(z 平面的数量)和 dz(以微米为单位的 z 步长),并且始终生成一个输出体积,其中点光源位于 Z 范围的中间,且各平面之间的距离相等。所有函数都接受一个 pz 参数,指定点光源相对于载玻片的位置。有关其他关键字参数,请参阅以下内容。

请注意,所有输出维度(nxnz)应为奇数。

import psfmodels as psfm
import matplotlib.pyplot as plt
from matplotlib.colors import PowerNorm

# generate centered psf with a point source at `pz` microns from coverslip
# shape will be (127, 127, 127)
psf = psfm.make_psf(127, 127, dxy=0.05, dz=0.05, pz=0)
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.imshow(psf[nz//2], norm=PowerNorm(gamma=0.4))
ax2.imshow(psf[:, nx//2], norm=PowerNorm(gamma=0.4))
plt.show()

Image of PSF

# instead of nz and dz, you can directly specify a vector of z positions
import numpy as np

# generate 31 evenly spaced Z positions from -3 to 3 microns
psf = psfm.make_psf(np.linspace(-3, 3, 31), nx=127)
psf.shape  # (31, 127, 127)

所有 PSF 函数接受以下参数。除非另有说明,单位应为微米。Python API 可能在未来略有变化。请参阅函数文档字符串。

nx (int):       XY size of output PSF in pixels, must be odd.
dxy (float):    pixel size in sample space (microns) [default: 0.05]
pz (float):     depth of point source relative to coverslip (in microns) [default: 0]
ti0 (float):    working distance of the objective (microns) [default: 150.0]
ni0 (float):    immersion medium refractive index, design value [default: 1.515]
ni (float):     immersion medium refractive index, experimental value [default: 1.515]
tg0 (float):    coverslip thickness, design value (microns) [default: 170.0]
tg (float):     coverslip thickness, experimental value (microns) [default: 170.0]
ng0 (float):    coverslip refractive index, design value [default: 1.515]
ng (float):     coverslip refractive index, experimental value [default: 1.515]
ns (float):     sample refractive index [default: 1.47]
wvl (float):    emission wavelength (microns) [default: 0.6]
NA (float):     numerical aperture [default: 1.4]

与其他模型的比较

虽然这些模型肯定比在 Li 等人(2017)MicroscPSF 中实现的模型要慢,但标量和矢量近似之间有一些有趣的差异,尤其是在较高 NA 透镜、非理想样品折射率和从载玻片起随深度增加的球差方面。

有关交互式比较,请参阅 examples.ipynb Jupyter 笔记本。

光线片 PSF 实用函数

psfmodels.tot_psf() 函数提供了一种快速模拟总系统 PSF(激发 x 检测)的方法,这在光线片显微镜上可能会观察到(目前仅支持严格正交的激发和检测)。请参阅 lightsheet.ipynb Jupyter 笔记本中的示例。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码分发

psfmodels-0.3.3.tar.gz (581.1 kB 查看哈希值

上传时间

构建分发

psfmodels-0.3.3-cp311-cp311-win_amd64.whl (111.0 kB 查看哈希值

上传时间 CPython 3.11 Windows x86-64

psfmodels-0.3.3-cp311-cp311-musllinux_1_1_x86_64.whl (673.9 kB 查看哈希值

上传于 CPython 3.11 musllinux: musl 1.1+ x86-64

psfmodels-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.2 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

psfmodels-0.3.3-cp311-cp311-macosx_11_0_arm64.whl (106.1 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

psfmodels-0.3.3-cp311-cp311-macosx_10_9_x86_64.whl (113.1 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

psfmodels-0.3.3-cp310-cp310-win_amd64.whl (111.0 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

psfmodels-0.3.3-cp310-cp310-musllinux_1_1_x86_64.whl (673.9 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

psfmodels-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.2 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

psfmodels-0.3.3-cp310-cp310-macosx_11_0_arm64.whl (106.1 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

psfmodels-0.3.3-cp310-cp310-macosx_10_9_x86_64.whl (113.1 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

psfmodels-0.3.3-cp39-cp39-win_amd64.whl (110.7 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

psfmodels-0.3.3-cp39-cp39-musllinux_1_1_x86_64.whl (673.9 kB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

psfmodels-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.1 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

psfmodels-0.3.3-cp39-cp39-macosx_11_0_arm64.whl (106.2 kB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

psfmodels-0.3.3-cp39-cp39-macosx_10_9_x86_64.whl (113.2 kB 查看哈希值)

上传时间 CPython 3.9 macOS 10.9+ x86-64

psfmodels-0.3.3-cp38-cp38-win_amd64.whl (111.0 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

psfmodels-0.3.3-cp38-cp38-musllinux_1_1_x86_64.whl (673.7 kB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.1+ x86-64

psfmodels-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.0 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

psfmodels-0.3.3-cp38-cp38-macosx_11_0_arm64.whl (106.0 kB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

psfmodels-0.3.3-cp38-cp38-macosx_10_9_x86_64.whl (113.0 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ x86-64

psfmodels-0.3.3-cp37-cp37m-win_amd64.whl (111.5 kB 查看哈希值)

上传时间 CPython 3.7m Windows x86-64

psfmodels-0.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl (675.1 kB 查看哈希值)

上传时间 CPython 3.7m musllinux: musl 1.1+ x86-64

psfmodels-0.3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.1 kB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

psfmodels-0.3.3-cp37-cp37m-macosx_10_9_x86_64.whl (112.9 kB 查看哈希值)

上传于 CPython 3.7m macOS 10.9+ x86-64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面