JuliaHealth 项目

JuliaHealth 致力于通过推广开源技术和数据标准来改善医疗保健。我们的社区由研究人员、数据科学家、软件开发人员和医疗保健专业人员组成,他们热衷于利用技术改善患者预后并促进数据驱动的决策。我们相信,通过共同努力,共享我们的知识和专业技能,我们可以创造出具有改变医疗保健潜力的强大工具和解决方案。

观察性健康子生态系统项目

项目 1:在 Julia 中开发用于观察性健康研究的工具

描述: OMOP 通用数据模型 (OMOP CDM) 是一种广泛使用的数据标准,它允许研究人员以一致且高效的方式分析大型、异构的医疗保健数据集。JuliaHealth 有几个可以与符合 OMOP CDM 的数据库交互的包(例如 OMOPCDMCohortCreator.jl 或 OMOPCDMDatabaseConnector.jl)。对于这个项目,我们正在寻找对进一步开发 Julia 中与 OMOP CDM 数据库交互的工具感兴趣的学生。

一些潜在的项目成果可能是

对于 JuliaHealth 中开发的任何功能,还将期望学生为现有的包文档做出贡献,以突出显示如何使用新功能。虽然不是必需的,但如果学生希望将来向 JuliaCon 提交闪电演讲、海报等关于他们工作的成果,我们将支持他们的努力!

如果您有兴趣并希望讨论在这个项目过程中还可以追求什么,请联系该项目的导师。

项目 2:在 Julia 中开发患者级预测工具

描述: 患者级预测 (PLP) 是医疗保健研究中的一个重要领域,它涉及使用患者数据来预测结果,例如疾病进展、治疗反应和医院再入院。JuliaHealth 有兴趣开发利用历史患者数据(例如患者医疗索赔或电子健康记录)的 PLP 工具,这些数据遵循 OMOP 通用数据模型 (OMOP CDM),这是一种广泛使用的数据标准,它允许研究人员以一致且高效的方式分析大型、异构的医疗保健数据集。对于这个项目,我们正在寻找对在 Julia 中开发 PLP 工具感兴趣的学生。

这个项目本质上将是非常实验性和探索性的。为了限制对这个项目的期望,以下是在这个项目中学生可能遵循的一种方法

对于 JuliaHealth 中开发的任何功能,还将期望学生为现有的包文档做出贡献,以突出显示如何使用新功能。对于这个项目,将期望作为提案的一部分来追求起草并在 JuliaCon 上发表演讲。此外,虽然不是必需的,但在 JuliaCon 论文集中发表文章也将受到鼓励并得到项目导师的支持。

此外,根据包的成功情况,有可能对实际患者数据进行实验,以根据所选研究问题生成实际患者群体见解。这可能会发展成单独的研究论文、会议提交或海报提交。在这种情况下的任何可能发生的事情都将得到项目导师的支持。

医学影像子生态系统项目

MedPipe3D.jl 以及 MedEye3D.jl MedEval3D.jl 和目前正在开发中的 MedImage.jl 是一组创建的库,旨在为 Julia 语言生态系统提供 3D 医学成像的基本工具。

MedImage 是一个用于标准化加载医学影像数据以及进行基本处理的包,这些处理考虑了其空间元数据。MedEye3D 是一个支持医学影像数据显示的包。MedEval3D 已经实现了一些高性能算法来计算评估 3d 分割模型性能所需的指标。MedPipe3D 被创建为一个包,用于改进小型生态系统(MedEye3D、MedEval3D 和 MedImage)之间其他部分的集成。

项目 3:向医学影像可视化添加功能

描述: MedEye3D 是一个支持医学影像数据显示的包。它包含多个特定于此用例的功能,例如自动窗口化以显示软组织、肺和其他组织。显示考虑了体素间距、多模态成像的叠加显示支持等。所有这些都具有由 OpenGL 和 Rocket.jl 提供支持的高性能。尽管如此,仍然可以进行许多进一步的改进,并在“潜在成果”部分进行了描述。

虽然 MedEye3D 已经支持显示医学图像,但仍然有一些功能对于实现一些更高级的算法(如超体素分割或图像配准)非常有用(并且它们都对于解决医学影像中的许多重要问题至关重要)。为了实现这一点,该项目的目标是实现。

  1. 开发对具有图像配准指示符的多图像查看的支持,例如显示边界和连接点的显示线。

  2. MRI 和 PET 的自动正确窗口化。

  3. 支持超体素 (sv) 的显示。显示 sv 的边界;指示图像的梯度是否与 sv 边界一致。

  4. 改进启动时间。

  5. 通过提供高级函数简化基本用法。

  1. 用户可以加载 2 个不同的图像,并且它们会并排显示。在滚动过程中,应根据提供的元数据显示身体的相同区域(对于已良好配准的样本图像)。当鼠标光标在一个图像上移动时,应显示另一个图像上相同物理位置的光标位置(从空间元数据计算出的物理位置)。120 小时

  2. 给定最常见的 PET 和 MRI 模式(随机 FDG PET/CT 以及 MRI 上的 T2、T1、FLAIR、ADC、DWI) - 用户将看到类似于 3DSlicer 中自动显示的图像 - 10 小时

  3. 给定一个整数掩码,其中唯一整数值将编码有关单个超体素的信息以及底层 3d 医学图像,用户可以选择将原始图像与超像素的边界叠加,其中相邻边界将具有不同的颜色,或者在与边缘滤波器(例如 Sobel 滤波器)进行卷积的图像背景上显示这些边界 - 180 小时

  4. 查看器启动时间的任何可衡量的减少 - 20 小时

  5. 用户只需将 MedImage.jl 库中的 MedImage 对象提供给单个显示函数即可显示图像 - 20 小时

项目 4:添加数据集范围的功能和增强功能的集成

描述: MedPipe3D 被创建为一个包,用于改进小型生态系统(MedEye3D、MedEval3D 和 MedImage)之间其他部分的集成。目前,需要对其进行扩展和调整,以便它可以成为功能齐全的医学影像管道的基础。它需要特定于医学影像的预处理实用程序 - 例如间距、方向、裁剪或填充的统一化。它需要 k 折交叉验证和简单的集成。分割管道中的其他必要部分是增强,这些增强应该更容易使用,并提供测试时间增强以进行不确定性量化。管道中最后一件事对于从业人员也很重要,那就是后处理 - 最流行的后处理是查找并仅保留最大的连通分量。

  1. 集成增强,如旋转召回伽马等。

  2. 启用可逆增强并支持测试时间增强。

  3. 添加基于补丁的数据加载,并进行概率过采样。

  4. 计算中值和平均间距,并启用将重采样应用于数据集的中值或平均间距。

  5. 添加基本的后处理,如最大的连通分量分析。

  6. 在结构体或字典中设置所有超参数(增强;补丁的大小,从概率中获取二值掩码的阈值)以启用超参数调整。

  7. 启用在验证时期自动显示算法输出,包括将此类输出保存到持久存储中。

  8. 支持 k 折交叉验证。

这组更改虽然实施起来很耗时,但对于任何有 Julia 编程语言经验的人来说都不应该构成重大问题。但是,实施这些更改将是使 Julia 语言成为开发端到端医学影像分割算法的良好 Python 替代方案的巨大一步。

  1. 给定用户提供的配置结构体,在加载图像后,将以某些定义的概率执行提供的增强:亮度变换、对比度增强变换、伽马变换、高斯噪声变换、莱斯噪声变换、镜像变换、缩放变换、高斯模糊变换、模拟低分辨率变换、弹性变形变换 -100 小时。

  2. 启用在模型输入上执行某些变换,然后在模型输出上反转此变换;当用户提供 n 时执行 n 次模型推理,并将模型产生的分割掩码的均值和标准差作为输出返回 -60 小时。

  3. 给定用户指定的 3D 补丁大小,算法在数据加载后将裁剪或填充提供的图像以满足设定的尺寸标准。在裁剪过程中,应比没有标签的区域更频繁地选择存在标签的图像部分,在分割掩码上指示某些标签的区域被选择的概率将等于 p (0-1),其中 p 由用户提供 -40 小时。

  4. 给定医学图像路径列表,它将加载这些图像并计算平均或中位间距(用户选择的选项),并返回结果。然后,在管道执行期间,所有图像都应重新采样到用户提供的间距和用户提供的方向 - 40小时。

  5. 给定模型输出和一个阈值,该阈值将用于输出的每个通道以二值化输出,用户将可以选择从二值化算法输出中仅检索 n 个最大连通域 - 20小时。

  6. 所有增强算法的概率和超参数、所选输出通道二值化的阈值、预处理的间距、测试时增强算法的数量和设置都应在 hyperparam 结构体中可用,该结构体是管道函数的附加参数,可用于超参数调整 -30小时。

  7. 在验证时期,图像可以保存到持久存储中,并且可以将单个随机图像与输出掩码一起加载到 MedEye3d 中,以便在训练期间进行可视化 -30小时。

  8. 用户可以设置 val_percentage - 这将导致数据集被划分为训练和验证集,或者提供 k,这将导致 k 折交叉验证。在后一种情况下,集成模型的平均值、阈值和标准差将作为模型的最终输出返回 -30小时。

对于每个项目,导师还将向负责实施的人员提供所需的 Python 功能示例,或者指出已经实现它的 Julia 库(只需进行集成)。

项目 5:具有多供应商 GPU 支持的高效 MRI 模拟

描述: KomaMRI.jl 是一个用于高效磁共振成像 (MRI) 模拟的 Julia 包,服务于教育和研究目的。模拟可以帮助理解难以理解的 MRI 概念,如脉冲序列、信号生成和采集。此外,它们可以指导新型脉冲序列的设计,并生成用于训练机器学习模型的合成数据。

目前,我们的模拟器使用 CUDA 数组执行 GPU 加速计算。我们现在正在推进实施一种新的模拟方法 (BlochKernel<:SimulationMethod),该方法基于使用 KernelAbstractions.jl 的 GPU 内核编程。此增强功能不仅会提高计算速度,还会通过 KernelAbstractions.jl 的多供应商 GPU 支持扩展可访问性。这可以使 MRI 模拟在迭代算法中用于解决反问题。我们正在寻找对开发此功能感兴趣的热心人士。

我们期望在本程序结束时获得以下结果

  1. 扩展和/或改进 GPU 加速模拟,生成了一种新的具有多供应商 GPU 支持的模拟方法 BlochKernel

  2. 开发了解释新模拟方法的文档,包括展示一些用例示例。

  3. 在 Buildkite 上实现了自动管道,用于在多个 GPU 架构上测试模拟。

  4. 报告了 BlochKernelBloch 之间的性能改进。

如果您有兴趣并希望讨论在此项目过程中可以追求的其他方面,请联系此项目的导师。