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 获取的模型名称和版本。例如:前列腺:123manufacturer
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 文件的时间区域不同,则时间戳可能不是您所期望的。
许可
您对本工具箱生成的任何模型的功能、必要的测试以及如果需要的话任何监管批准负责。
贡献
本项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d8d87ccc840c2e3aa038c20414917af805d0d2223389e34d421c81dda365f505 |
|
MD5 | 6d6f60c190ca6c94a1c6b5c6f43a108f6 |
|
BLAKE2b-256 | 18edf4853c8b7f8befd7963b1a943b8bac2a5a5663acb8dd439ee3e615a4181b |
InnerEye_DICOM_RT-1.1.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e729be1a0525a045af18827e26e2aa1d73db9d2eea65ff92c91d8720d66ad7aa |
|
MD5 | a0eda097369889267dd0c73c0a040233 |
|
BLAKE2b-256 | 10a775439d7198bba3c23820e7bc6034cb08c75c150ef19be8fb4fd54baa0965 |