信号反褶积算法的张量流实现

flowdec的Python项目详细描述


[![构建状态](https://travis-ci.org/hammerlab/flowdec.svg?branch=master)](https://travis ci.org/hammerlab/flowdec)


目前,只有[理查森-露西反褶积](https://en.wikipedia.org/wiki/richardson%e2%80%93lucy_deconvolution)已经实现,但其他的可能会在将来实现。

BR/>下面是本项目的其他一些特征、优点和缺点:
BR/> *突出**BR/> BR/>**支持Windows、MAC和Linux **,因为TySoFoad可以在这些平台上运行,Flowdec也可以。使用Python和Java的FuffDEC图对Java、GO、C++和Python **进行了测试,但从理论上讲,它们也可以被任何[TunSorFaseAPI客户端库]使用(http://www. tTorsFor.org/APIIODCOS/)。使用[Fast Gibson Lanni近似模型](http://www.ee.cuhk.edu.hk/~jzli/microscpsf/)在反褶积过程中动态生成的文件(也可以创建Born&;Wolf内核是一个退化的案例。
-**GPU加速**-执行[TensorFlow Graphs on GPU](https://w w w.tensorflow.org/programmers_guide/using_GPU)很简单,如果满足所有TensorFlow要求(即安装CUDA工具包,NVIDIA),默认情况下会执行w/flowdec驱动程序等)。
-**性能**-还有其他开源和商用反褶积库运行*部分*GPU加速,这通常意味着只有FFT和IFFT操作在GPU上运行,而所有其他操作在CPU上运行。例如,在一个大约10000x1000x11的3D卷上,具有相同尺寸的PSF,这意味着执行时间看起来像:
-仅限CPU的解决方案:**10分钟**
-其他具有FFT/IFFT GPU加速的解决方案:**~40秒**
-具有完整GPU加速的FlowDec/TensorFlow:**1第二个**
-**信号尺寸**-FlowDec可以支持1、2或3维图像/信号。
-**多GPU使用**-这有待测试,但是理论上这是可能的,因为TF可以做到这一点(并且这个[多GPU实例](Java/Fuffe/Src/Ma/Java/OrgReal/HaveLab/Fuffe/Exp/MulgPUpase.java)是一个开始)。使用更快的fft实现所需的裁剪——在flowdec中,可以手动指定使用图像沿每个轴的反射的图像填充,或者让它自动取整并填充到最接近的2次方(这将使使用更快的cooley tukey算法而不是由tf使用的nvidia cufft提供的bluestein算法)。
-**可视化迭代**-迭代反褶积算法的另一个困难是确定何时应该停止。和理查森·露西在一起,这通常是基于对不同迭代次数的结果的可视化而主观地完成的,flowdec至少有助于实现这一点,它让``observer``函数给出,这些函数将反褶积过程的中间结果写入图像序列或堆栈人工检查。未来的工作可能包括使用[tensorboard]来代替它(https://www.tensorflow.org/programmers_guide/summaries_and_tensorboard),但目前,很难获得在tf"while"循环中工作的图像摘要。一些熟悉编程的人使用,但一些未来的工作可能包括imagej插件(如果有兴趣的话)。对于那些想要更具互动性的人,[imagej ops](https://github.com/imagej/imagej-ops)可能是您的最佳选择,它目前支持flowdec和richardson-lucy反褶积中使用的相同psf生成模型。目前它还没有包括完整的gpu加速,但这可能是[imagej ops实验](https://github.com/imagej/ops实验)的一部分。请参阅[Github问题](https://github.com/hadim/deconvolutionlab2/issues/1)了解更多详细信息。
-**没有盲目的反褶积**-目前,在这个领域中没有尝试过任何东西,但由于最近对这个问题的研究都集中在深入学习的解决方案上,TensorFlow有望在未来成为一个良好的平台。

inline
将numpy导入为np
将matplotlib.pyplot导入为plt
从skipage导入exposure
从scipy导入ndimage,信号
从FlowDec导入数据作为FD PCT数据
从FlowDec导入还原作为FD PCT数据

256)

使用我们的假psf
data=signal.fftconvolve(actual,kernel,mode='same')
data.shape=(50,256,256)

运行反褶积过程,注意反褶积初始化最好与执行分开,因为"initialize"操作对应于创建张量流图,这是一个
相对昂贵的操作,不应在多个执行过程中重复
algo=fd廑restoration.richardsonlucydecondalver(data.ndim.initialize()
res=algo.run(fd廑data.acquisition(data=data,kernel=kernel),niter=30.data

fig,axs=plt.subblots(1,3)
axs=axs.ravel()
fig.set廑size廑in(18,12)
中心=元组([切片(无),切片(10,-10),切片(10,-10)])
标题=["原始图像","模糊图像","重建图像"]
对于枚举中的i,d([实际,数据,分辨率]):
img=曝光。调整γ(d[中心]).max(轴=0),γ=.2)
axs[i].imshow(img,cmap="光谱u r")
axs[i]。设置γ标题(标题[i])
axs[i].axis('off')
````

![神经元示例](docs/images/neuron.png"neuron results")



作为一个更现实的用例,这里有一个示例展示了点扩散函数配置如何在无头反褶积中使用:

*请参见完整的反褶积脚本[此处](python/flowdec/cmd/deconvolution.py)*

`` bash
包含PSF参数(有关详细信息,请参阅flowdec.psf模块)
echo{"na":0.75,"wavelength":0.425,"size_z":32,"size_x":64,"size_y":64}>;/tmp/psf.json

您可以运行"deconvolution"命令。
python examples/scripts/deconvolution.py\
--data path=flowdec/datasets/bars-25pct/data.tif\
--psf config path=/tmp/psf.json\
--output path=/tmp/result.tif\
--n-iter=25--log level=debug
>;debug:加载了形状为32、64、64的数据,加载了形状为32、64、64的psf
>;信息:开始数据文件"flowdec/datasets/bars-25pct/data.tif"的反褶积"信息:反褶积完成(在7.427秒内)
>;信息:结果保存到"/tm"p/result.tif"
```

elegans](python/examples/notebooks/celegans%20-%20multiple%20channel%20example.ipynb)-3个独立通道712x672x104采集的反褶积
-[宇航员](python/examples/notebooks/宇航员%20-%20ringing%20artifacts.ipynb)-处理反褶积图像中的伪影
-[监视迭代](python/examples/notebooks/monitoring%20iterations.ipynb)-通过可视化每次迭代的结果来跟踪反褶积过程
-[空心条](python/examples/notebooks/hollow%20bar%20-%20synthetic%20deconvolution.ipynb)-下采样64x64x32的反褶积合成卷(作为一个CPU友好的示例)
-[空心条GPU基准](python/examples/notebooks/hollo%20bar%20-%20benchmarking.ipynb)-在启用GPU系统的完整256x256x128卷上测试运行时间
-[反卷积lab2比较](python/examples/notebooks/deconvolutionlab2%20-%20benchmarking.ipynb)-比较[deconvolutionlab2](http://bigwww.epfl.ch/deconvolution/deconvolutionlab2/)和flowdec
-[图形导出](python/examples/notebooks/algorithm%20graph%20export.ipynb)之间的执行时间-定义并导出张量流图
- [命令行接口](Python/FuffDC/CMD/反褶积,Py)-CLI,用于执行预先定义的或动态生成的点扩展函数
BR/>Java
BR/> -[多GPU ]示例:(如何在多个GPU上并行执行反褶积(未经测试-等待用例出现,虽然很可能做到))安装

该项目可以安装,最好是在python 3.6环境中(尽管它也应该在3.5环境中工作),方法是运行:

``bash
pip install flowdec[tf-gpu]
````

但也要确保'tensorflow'
安装时支持gpu。出于测试目的,您可以通过运行以下命令安装未启用gpu的"tensorflow"版本:

``bash
`pip install flowdec[tf]
````

,如果未指定`[tf]`或`[tf-gpu]`,TensorFlow安装保留为外部管理的先决条件。

该项目可以通过以下操作从源代码安装:

``bash
git clone https://github.com/hammerlab/flowdec.git
cd flowdec/python
pip install-e.
````

docker指令

运行:

`` bash
cd flowdec注意:不是flowdec/docker,只是cd flowdec

docker build--没有cache-t flowdec-f docker/dockerfile。

启用GPU的版本可以通过以下方式生成:
nvidia docker build--no cache-t flowdec-f docker/dockerfile.gpu。
````

然后可以使用:

``bash
在前台运行映像(端口映射为主机:如果已使用8888,则为容器)
docker run-ti-p8888:8888 flowdec

类似地,在前台运行它会自动启动jupyter笔记本,并打印一个链接,通过主机系统上的浏览器连接到它。


上一个图像是从github.com/hammerlab/flowdec.git的当前主分支构建的。要使用源代码的本地副本构建映像,可以使用以下命令:

``bash
docker build——没有cache-t flowdec-f docker/dockerfile.devel.
````


您可能希望将其与本地源树的绑定装载合并到正在运行的容器中。此安装程序允许您对源进行编辑,并使其立即在运行容器中生效。


``bash
local_src=$(pwd)
dest_src=/repos/flowdec

docker run-ti-p 88888:88888-v${local{dest{dest{dest{dest{dest{dest{dest{dest{dest}flowdec
`` ```






` ` ` ` ` ` ` ` ` `>通过在很大程度上,本项目的目的是通过更快的实现,实现与[反褶积lab2](http://bigwww.epfl.ch/deconvolution/deconvolutionlab2/)和[psfgenerator](http://bigwww.epfl.ch/algorithms/psfgenerator/)提供的功能子集几乎相等。验证这一点已经完成,[python/validation](python/validation)文件夹中有两个笔记本,演示了以下内容:

-[deconvolution validation](python/validation/deconvolution/validation.ipynb)-此笔记本汇总了应用于多个参考的flowdec和deconvolutionlab2的结果数据集并验证解除卷合并后的卷几乎完全相同
-[psf生成验证](python/validation/psf generation/validation.ipynb)-此笔记本聚合了flowdec和psfgenerator的结果,这些结果用于从各种不同的配置生成psf,以及评估它们的相似性(这也是非常高的)

李济州帮助更好地理解衍射模型,玛丽为开放源代码反褶积库的状态提供了良好的背景,诺桑为图书馆的性能提供了良好的建议/背景,盲反褶积和点扩散函数的一般工作原理。


方法-生物学家图像处理,115,2017。<;br>;
-[2]J.Li,F.Xue和T.Blu<;br>;
荧光显微镜快速准确的三维点扩散函数计算<;br>;
J.opt。SOC。是。A,第34卷,第6期,第1029-10342017页。<;br>;
-[3]Brandner,D.和Withers,G.<;br>;
细胞图像库,CIL:10106、10107和10108。<;br>;
可从http://www.cell image library.org获得。2010年12月8日访问。<;br>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
打开OrientDB数据库时发生java错误   java Hibernate合并函数偶尔会导致主键冲突   java如何在SourceTransferndexit将msg放入MQ   JavaEclipse不正确地导入项目   Java中的数据结构,带有删除节点后所有节点的操作   java创建zip存档时,什么构成重复条目   java如何计算所有值并比较每个对象?   java Threadflipbegin在Google Pixel 3上被阻止55秒   java Eclipse Hibernate:未找到适合jdbc的驱动程序:mysql://localhost:3306/hibernatedb   java Quartz计划程序未运行   java如何从junit扩展向@Test返回值?   java忽略搜索字段中的大小写   java如何从图库中选取图像,裁剪并保存在数据分区中   java CST/CDT时区更改问题   url从Java读取Twitter页面   java是否要在每个列表项中打开WebView单击?   比较输入值的Java布尔逻辑初学者   如何在服务器端使用java从客户端的HTTP POST请求接收和解析JSON对象   javascript在一个get请求中,如何启动程序,然后使用另一个get请求停止它?