生成已知体积变化的位移场

disptools的Python项目详细描述


显示工具

生成具有已知体积变化的位移场

github发布pypiwheelslicenseAppveyor

此库提供实用程序来生成和操作具有已知体积更改的置换字段。它实现了三种基于搜索的变形场生成算法,以及一小部分实用功能,并通过CUDA实现提供了可选的GPU加速。

实现的三种算法称为:

  • 梯度:梯度下降法(默认)。
  • 贪心:在[1]中提出的贪心搜索方法
  • 匹配:提出了一种体积匹配方法。该实现来自预测atrophysim工具

这个库是在simpleitk的基础上构建的,目的是为图像分析提供一组简单而强大的功能。存储为numpy数组的图像可以很容易地从和转换到simpleitk和itk图像对象。

文档

有关此软件包的完整文档,请访问https://martinopilia.com/disptools" rel="nofollow">https://martinopilia.com/disptools

快速示例

importSimpleITKassitkimportdisptools.displacementsasdspimportdisptools.drawingasdrw# Create an example Jacobian map# A spherical ROI with a Jacobian of 1.1 (expansion)jacobian=drw.create_sphere(10,40,fg_val=1.1,bg_val=1.0)# Create a binary mask for the ROImask=drw.create_sphere(10,40)>0# Generate the displacementdisplacement=dsp.displacement(jacobian,mask=mask)# Check the correctness of the result within the ROIerror=jacobian-dsp.jacobian(displacement)error=sitk.Mask(error,mask)

使用paraview对生成的位移字段进行三维渲染,并在roi中可视化jacobian上的错误:

置换python c extensionpackage\disptools(其源位于文件python\u c\u extension/\disptools.c中),为上述库提供一个裸的python包装,使用numpy c api来传递数组。这可以直接包含在python项目中,除了numpy之外没有任何依赖项。

  • 一个python包(disptools),它包装了提供文件io(通过simpleitk)和实现高级功能(如多分辨率框架)以及辅助实用程序和函数的包。
    • disptools.displacements:为位移场的生成和操作提供主要功能的模块。
    • disptools.drawing:创建测试图像的实用程序集合。
    • disptools.io:读取和写入文件的实用程序集合。
    • disptools.measure:用于测量某些图像功能的实用程序集合。
    • disptools.simul atrophy:与simul@萎缩工具连接的例程。
    • disptools.predict:与预测工具连接的例程。
  • 安装

    此软件包在pypi上可用,既可以作为源分发版,也可以作为Windows预编译的二进制控制盘。您可以使用pip安装它

     python3 -m pip install disptools
    

    从源代码生成

    要求

    这个库是一个跨平台的Python3.5+包,带有编译的C扩展。python依赖项是:

    构建依赖项是一个标准的C编译器(在Linux上使用GCC 8.2,在Windows 10上使用MingW-W64 7.2和MSVC 19进行测试),cmake,numpy和setuptools包。scikit-build可能需要构建其他python依赖项。

    一些可选的依赖项仅对一组有限的功能是必需的,包应该在没有它们的情况下构建和运行:

    • itkpypi包):对于disptools.drawing.sitk\u to itk
    • vtkpypi包):对于disptools.io.write\u vtk积分
    • plypypi包):对于disptools.io,请读取弹性参数
    • scikit-imagepypi包):用于disptools.drawing.extract_slice,并运行单元测试

    生成选项

    以下生成标志由setup.py识别:

    • --opt:启用非便携式优化。
    • --debug:禁用优化,用调试符号编译。
    • --cuda:启用cuda支持。

    -d开头的附加标志也被接受并直接传递给cmake

    Windows(Visual Studio)和Linux

    使用您喜爱的包管理器安装依赖项。例如,使用pip

    python3 -m pip install scikit-build numpy scipy SimpleITK
    

    该软件包提供了一个基于setuptools的安装脚本。要安装库,请从项目根文件夹运行

    python3 setup.py install
    

    它应该构建c扩展并安装python包。

    窗口(明暗)

    1. 首先,确保mingw、cmake和python已经安装,并且它们的可执行文件在您的路径中。

    2. 确保gcc工作正常:

    3. < > >
      > gcc --version
      gcc (x86_64-posix-seh-rev1, Built by MinGW-W64 project) 7.2.0
      Copyright (C) 2017 Free Software Foundation, Inc.
      This is free software; see the source for copying conditions.  There is NO
      warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      
      1. 确保distutils正确识别您的visual studio版本(即使使用mingw时也是如此)。打开文件c:\ users\yourname\appdata\local\programs\python\python3x\lib\distutils\cygwinccompiler.py(具体位置可能因设置而异),并检查函数get-msvcr()中是否存在您的Visual Studio版本;如果没有,按照以下步骤调整:
      2. < > >
        defget_msvcr():"""Include the appropriate MSVC runtime library if Python was built    with MSVC 7.0 or later.    """msc_pos=sys.version.find('MSC v.')ifmsc_pos!=-1:msc_ver=sys.version[msc_pos+6:msc_pos+10]ifmsc_ver=='1300':# MSVC 7.0return['msvcr70']elifmsc_ver=='1310':# MSVC 7.1return['msvcr71']elifmsc_ver=='1400':# VS2005 / MSVC 8.0return['msvcr80']elifmsc_ver=='1500':# VS2008 / MSVC 9.0return['msvcr90']elifmsc_ver=='1600':# VS2010 / MSVC 10.0return['msvcr100']elifmsc_ver=='1700':# Visual Studio 2012 / Visual C++ 11.0return['msvcr110']elifmsc_ver=='1800':# Visual Studio 2013 / Visual C++ 12.0return['msvcr120']elifmsc_ver=='1900':# Visual Studio 2015 / Visual C++ 14.0# "msvcr140.dll no longer exists" http://blogs.msdn.com/b/vcblog/archive/2014/06/03/visual-studio-14-ctp.aspxreturn['vcruntime140']else:raiseValueError("Unknown MS Compiler version %s "%msc_ver)
        1. 确保库路径中存在库vcruntime140.dll。否则,请下载并将其放在c:\ users\yourname\appdata\local\programs\python\python3x\libs中(具体路径可能因设置而异)。

        2. 安装依赖项:

        3. < > >
          > python -m pip install scikit-build numpy scipy SimpleITK
          
          1. 使用git克隆此包的源代码,或者下载并将其提取为zip存档。移动到源的根文件夹(c:\ users\yourname\disptools在本例中),指定正确的编译器,并启动安装脚本来构建和安装包。
          2. < > >
            > cd C:\Users\yourname\disptools
            > python setup.py setopt --command=build --option=compiler --set-value=mingw32
            > python setup.py install
            

            参考文献

            许可证

            该软件是在麻省理工学院的许可下发布的。

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

            推荐PyPI第三方库


    热门话题
    java Selenium Web驱动程序。负载策略不稳定   JAVAsql。SQLException:没有合适的驱动程序无法创建“oracle”类的JDBC驱动程序。jdbc。驾驶员用于连接URL的OracleDriver   java谷歌地图“优化路径点”如何解决旅行推销员的问题?   java这段代码可能会造成潜在的内存泄漏吗?   java更改JCombobox的高度   java如何清除jtable中的数据   JavaHadoop:错误安全性。UserGroupInformation:MapReduce程序中的PriviledgedActionException   java如何将sonarlint添加到gradle任务中?   性能为什么Java排序优于原语计数排序   java Spring属性PlaceHolderConfigure从数据库加载   java从泛型获取类不起作用   java Spring@Transactional传播属性   java试图拥有主菜单和子菜单类   XSL的java后处理步骤   java第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心   switch语句在Java中的下一个出发点   java 安卓如何在OnBackpress()时设置viewpager的特定项目位置?