跳转到主要内容

InnerEye DICOM到Nifti转换函数

项目描述

介绍

InnerEye-DICOM-RT包含将医学数据集从NIFTI格式转换为DICOM-RT的工具。使用此工具转换的数据集可以直接由InnerEye-DeepLearning使用。

大部分工作由一个.NET Core 2.1项目RTConvert完成,用C#编写。这个包装非常轻量级,以便可以从Python中使用。包装依赖于PyPI软件包https://pypi.ac.cn/project/dotnetcore2/,该软件包包装了.NET Core 2.1。

安装

Git for Windows

Git for Windows获取安装程序

安装程序将提示您“选择组件”。确保您勾选

  • Git LFS(大文件支持)
  • Windows版Git凭据管理器

安装完成后,打开命令提示符或Git Bash

  • 运行 git lfs install 以在git中设置钩子
  • 运行 git config --global core.autocrlf true 以确保行结束符按预期工作

在您的计算机上克隆InnerEye-DICOM-RT存储库:运行 git lfs clone --recursive https://github.com/microsoft/InnerEye-DICOM-RT

Visual Studio / .NET Core

C#组件可以使用.NET Core SDK构建。我们使用2.1版本以与PyPI包dotnetcore2兼容。安装说明在此处:https://docs.microsoft.com/en-us/dotnet/core/install/。构建不需要Visual Studio,但如果您想使用它,那么对于.NET Core 2.1,至少需要:Visual Studio 2017版本15.7

RTConvert

可以从.NET Core命令行构建RTConvert

dotnet build RTConvert

存在单元测试

dotnet test RTConvert

请注意,单元测试依赖于System.Drawing,并且在Linux上System.Drawing需要本机包

apt-get -s install libgdiplus

最后,为了被Python包装器使用,此解决方案必须发布

dotnet publish RTConvert --configuration Release -p:Platform=x64

这应在RTConvert/Microsoft.RTConvert.Console/bin/x64/Release/netcoreapp2.1/publish/*处创建一个包含RTConvert所有需求的文件夹

Echo

Echo是一个非常简单的应用程序,它接受1个或2个参数。第一个参数被打印到stdout,如果有第二个参数,则它被打印到stderr。这仅适用于单元测试,以建立可以调用.NET Core应用程序的事实。

Echo可以从.NET Core命令行构建

dotnet build Echo

没有单元测试。

最后,为了被Python包装器使用,此解决方案必须发布

dotnet publish Echo --configuration Release -p:Platform=x64

这应在Echo/Echo/bin/x64/Release/netcoreapp2.1/publish/*处创建一个包含Echo所有需求的文件夹

Python

Python包装器位于src/InnerEye_DICOM_RT/nifti_to_dicom_rt_converter.py。它只是使用subprocess.Popen来调用.NET Core应用程序,传递相关的dll和命令行参数。

它需要将RTConvert和Echo发布包复制到文件夹:src/InnerEye_DICOM_RT/bin/netcoreapp2.1

请注意,GitHub构建动作会自动执行此操作,但在测试时需要手动执行。

Python包使用以下命令创建:

python setup.py sdist bdist_wheel

它构建源分布和wheel到dist文件夹。

要运行Python测试

pip install pytest dotnetcore2
pytest tests

用法

要使用此包

pip install InnerEye-DICOM-RT

调用RTConvert

    from InnerEye_DICOM_RT.nifti_to_dicom_rt_converter import rtconvert

    (stdout, stderr) = rtconvert(
        in_file=NiftiSegmentationLocation,
        reference_series=DicomVolumeLocation,
        out_file=OutputFile,
        struct_names=StructureNames,
        struct_colors=StructureColors,
        fill_holes=FillHoles,
        roi_interpreted_types=ROIInterpretedTypes,
        manufacturer=Manufacturer,
        interpreter=Interpreter,
        modelId=ModelId
    )

其中

  • in_file是输入Nifti文件的路径。该文件是一个3D体积,格式为Nifti格式
  • reference_series是包含参考DICOM系列的输入文件夹的路径;
  • out_file是输出DICOM-RT文件的路径;
  • struct_names是结构名称列表,例如:["External", "parotid_l", "parotid_r", "smg_l"]。每个结构名称对应输入体积中的非零体素值。在示例中,External对应于体素值1,parotid_l对应于2,等等。体素值为0的体素将被丢弃。如果没有与结构名称相对应的体素,它们也将被丢弃。结构名称将成为DICOM-RT文件中结构集ROI序列中的结构集的ROI名称。
  • struct_colors是十六进制表示的结构颜色列表,例如:["000000", "FF0080", "00FF00", "0000FF"]。列表中的每个颜色对应于struct_names中的结构,并将成为DICOM-RT文件中ROI轮廓中的ROI轮廓序列中的ROI显示颜色。如果颜色少于struct_names,或者如果条目为空,则默认为红色(FF0000);
  • fill_holes是bools列表,例如:[True, False, True]。如果bools少于struct_names,或者如果条目为空,则默认为false。如果为True,则任何在切片中找到的轮廓的孔将被填充,否则轮廓将按找到的返回。
  • modelId 从 AzureML 获取的模型名称和版本。例如:前列腺:123
  • manufacturer DICOM-RT 的制造商(请检查 DICOM-RT 文档)
  • interpreter DICOM-RT 的解释器(请检查 DICOM-RT 文档)
  • roi_interpreted_types 是 ROIInterpretedType 的列表。可能的值(None,CTV,ORGAN,EXTERNAL)。

分割时间戳

在将 NIFTI 面罩转换为 DICOM 的过程中,InnerEye-DICOM-RT 会向序列添加时间戳标签。此时间戳将设置为 rtconvert() 上运行的计算资源的本地时间。这是因为某些 DICOM 读取器无法处理这些标签的时间区域/UTC 偏移,并可能导致显示错误的时间。因此,如果您的计算资源运行的时间区域与您查看 DICOM 文件的时间区域不同,则时间戳可能不是您所期望的。

许可

MIT 许可证

您对本工具箱生成的任何模型的功能、必要的测试以及如果需要的话任何监管批准负责。

贡献

本项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权并且确实授予我们使用您的贡献的权利。有关详细信息,请访问 Microsoft CLA 页面

当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA,并适当装饰 PR(例如,状态检查,注释)。只需遵循机器人提供的说明即可。您在整个使用我们的 CLA 的存储库中只需这样做一次。

本项目已采用 Microsoft Open Source Code of Conduct。有关更多信息,请参阅 Code of Conduct FAQ 或通过 opencode@microsoft.com 联系我们,如有任何其他问题或评论。

商标

本项目可能包含项目、产品或服务的商标或徽标。Microsoft 商标的授权使用受 Microsoft 商标和品牌指南 的约束,并必须遵守。在修改本项目的版本中使用 Microsoft 商标或徽标不得造成混淆或暗示 Microsoft 的赞助。第三方商标或徽标的任何使用均受这些第三方政策的管理。

项目详情


下载文件

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

源分布

InnerEye-DICOM-RT-1.1.0.tar.gz (3.0 MB 查看哈希值

上传时间

构建分布

InnerEye_DICOM_RT-1.1.0-py3-none-any.whl (3.0 MB 查看哈希值

上传时间 Python 3

支持者