JuliaHealth 致力于通过推广开源技术和数据标准来改善医疗保健。我们的社区由研究人员、数据科学家、软件开发人员和医疗保健专业人员组成,他们热衷于利用技术改善患者预后并促进数据驱动的决策。我们相信,通过共同努力,共享我们的知识和专业技能,我们可以创造出具有改变医疗保健潜力的强大工具和解决方案。
描述: OMOP 通用数据模型 (OMOP CDM) 是一种广泛使用的数据标准,它允许研究人员以一致且高效的方式分析大型、异构的医疗保健数据集。JuliaHealth 有几个可以与符合 OMOP CDM 的数据库交互的包(例如 OMOPCDMCohortCreator.jl 或 OMOPCDMDatabaseConnector.jl)。对于这个项目,我们正在寻找对进一步开发 Julia 中与 OMOP CDM 数据库交互的工具感兴趣的学生。
导师:Jacob Zelko(又名 TheCedarPrince)[电子邮件:jacobszelko@gmail.com]
难度:中等
时长:350 小时
建议技能和背景:
Julia 使用经验
熟悉以下一些 Julia 包将是一个强大的优势
FunSQL.jl
DataFrames.jl
Distributed.jl
OMOPCDMCohortCreator.jl
OMOPCDMDatabaseConnector.jl
OMOPCommonDataModel.jl
熟悉 OMOP 通用数据模型(或愿意学习!)
潜在成果
一些潜在的项目成果可能是
扩展 OMOPCDMCohortCreator.jl 以使用户能够为他们想要创建的潜在患者群体添加约束,例如给定药物或疾病诊断的条件日期范围。
在开发患者群体时,支持基于 OMOPCDMCohortCreator.jl 查询的并行化。
开发和探索 OMOPCDMCohortCreator.jl 中的总体过滤器如何组合在一起以进行快速分析的新方法。
对于 JuliaHealth 中开发的任何功能,还将期望学生为现有的包文档做出贡献,以突出显示如何使用新功能。虽然不是必需的,但如果学生希望将来向 JuliaCon 提交闪电演讲、海报等关于他们工作的成果,我们将支持他们的努力!
如果您有兴趣并希望讨论在这个项目过程中还可以追求什么,请联系该项目的导师。
描述: 患者级预测 (PLP) 是医疗保健研究中的一个重要领域,它涉及使用患者数据来预测结果,例如疾病进展、治疗反应和医院再入院。JuliaHealth 有兴趣开发利用历史患者数据(例如患者医疗索赔或电子健康记录)的 PLP 工具,这些数据遵循 OMOP 通用数据模型 (OMOP CDM),这是一种广泛使用的数据标准,它允许研究人员以一致且高效的方式分析大型、异构的医疗保健数据集。对于这个项目,我们正在寻找对在 Julia 中开发 PLP 工具感兴趣的学生。
导师:Sebastian Vollmer [电子邮件:sjvollmer@gmail.com],Jacob Zelko(又名 TheCedarPrince)[电子邮件:jacobszelko@gmail.com]
难度:困难
时长:350 小时
建议技能和背景:
Julia 使用经验
接触机器学习概念和思想
熟悉以下一些 Julia 包将是一个强大的优势
DataFrames.jl
OMOPCDMCohortCreator.jl
MLJ.jl
ModelingToolkit.jl
熟悉 OMOP 通用数据模型(或愿意学习)
成果
这个项目本质上将是非常实验性和探索性的。为了限制对这个项目的期望,以下是在这个项目中学生可能遵循的一种方法
回顾 PLP 方法的现有文献
熟悉 Julia 生态系统中机器学习和预测的工具
确定 PLP 研究问题以推动包开发
开发利用 JuliaHealth 工具与 OMOP CDM 数据库交互的 PLP 包
测试和验证 PLP 包以调查研究问题
记录发现并起草 JuliaCon 演讲
对于 JuliaHealth 中开发的任何功能,还将期望学生为现有的包文档做出贡献,以突出显示如何使用新功能。对于这个项目,将期望作为提案的一部分来追求起草并在 JuliaCon 上发表演讲。此外,虽然不是必需的,但在 JuliaCon 论文集中发表文章也将受到鼓励并得到项目导师的支持。
此外,根据包的成功情况,有可能对实际患者数据进行实验,以根据所选研究问题生成实际患者群体见解。这可能会发展成单独的研究论文、会议提交或海报提交。在这种情况下的任何可能发生的事情都将得到项目导师的支持。
MedPipe3D.jl 以及 MedEye3D.jl MedEval3D.jl 和目前正在开发中的 MedImage.jl 是一组创建的库,旨在为 Julia 语言生态系统提供 3D 医学成像的基本工具。
MedImage 是一个用于标准化加载医学影像数据以及进行基本处理的包,这些处理考虑了其空间元数据。MedEye3D 是一个支持医学影像数据显示的包。MedEval3D 已经实现了一些高性能算法来计算评估 3d 分割模型性能所需的指标。MedPipe3D 被创建为一个包,用于改进小型生态系统(MedEye3D、MedEval3D 和 MedImage)之间其他部分的集成。
描述: MedEye3D 是一个支持医学影像数据显示的包。它包含多个特定于此用例的功能,例如自动窗口化以显示软组织、肺和其他组织。显示考虑了体素间距、多模态成像的叠加显示支持等。所有这些都具有由 OpenGL 和 Rocket.jl 提供支持的高性能。尽管如此,仍然可以进行许多进一步的改进,并在“潜在成果”部分进行了描述。
导师:Jakub Mitura [电子邮件:jakub.mitura14@gmail.com]
难度:困难
时长:350 小时
建议技能和背景:
潜在成果
虽然 MedEye3D 已经支持显示医学图像,但仍然有一些功能对于实现一些更高级的算法(如超体素分割或图像配准)非常有用(并且它们都对于解决医学影像中的许多重要问题至关重要)。为了实现这一点,该项目的目标是实现。
开发对具有图像配准指示符的多图像查看的支持,例如显示边界和连接点的显示线。
MRI 和 PET 的自动正确窗口化。
支持超体素 (sv) 的显示。显示 sv 的边界;指示图像的梯度是否与 sv 边界一致。
改进启动时间。
通过提供高级函数简化基本用法。
成功标准和所需时间:如何定义上述功能的成功以及每个功能的大概所需时间。
用户可以加载 2 个不同的图像,并且它们会并排显示。在滚动过程中,应根据提供的元数据显示身体的相同区域(对于已良好配准的样本图像)。当鼠标光标在一个图像上移动时,应显示另一个图像上相同物理位置的光标位置(从空间元数据计算出的物理位置)。120 小时
给定最常见的 PET 和 MRI 模式(随机 FDG PET/CT 以及 MRI 上的 T2、T1、FLAIR、ADC、DWI) - 用户将看到类似于 3DSlicer 中自动显示的图像 - 10 小时
给定一个整数掩码,其中唯一整数值将编码有关单个超体素的信息以及底层 3d 医学图像,用户可以选择将原始图像与超像素的边界叠加,其中相邻边界将具有不同的颜色,或者在与边缘滤波器(例如 Sobel 滤波器)进行卷积的图像背景上显示这些边界 - 180 小时
查看器启动时间的任何可衡量的减少 - 20 小时
用户只需将 MedImage.jl 库中的 MedImage 对象提供给单个显示函数即可显示图像 - 20 小时
描述: MedPipe3D 被创建为一个包,用于改进小型生态系统(MedEye3D、MedEval3D 和 MedImage)之间其他部分的集成。目前,需要对其进行扩展和调整,以便它可以成为功能齐全的医学影像管道的基础。它需要特定于医学影像的预处理实用程序 - 例如间距、方向、裁剪或填充的统一化。它需要 k 折交叉验证和简单的集成。分割管道中的其他必要部分是增强,这些增强应该更容易使用,并提供测试时间增强以进行不确定性量化。管道中最后一件事对于从业人员也很重要,那就是后处理 - 最流行的后处理是查找并仅保留最大的连通分量。
导师:Jakub Mitura [电子邮件:jakub.mitura14@gmail.com]
难度:中等
时长:350 小时
建议技能和背景:
Julia 使用经验
熟悉以下一些 Julia 包将是一个强大的优势
MedEye3D.jl
MedEval3D.jl
潜在成果
集成增强,如旋转召回伽马等。
启用可逆增强并支持测试时间增强。
添加基于补丁的数据加载,并进行概率过采样。
计算中值和平均间距,并启用将重采样应用于数据集的中值或平均间距。
添加基本的后处理,如最大的连通分量分析。
在结构体或字典中设置所有超参数(增强;补丁的大小,从概率中获取二值掩码的阈值)以启用超参数调整。
启用在验证时期自动显示算法输出,包括将此类输出保存到持久存储中。
支持 k 折交叉验证。
这组更改虽然实施起来很耗时,但对于任何有 Julia 编程语言经验的人来说都不应该构成重大问题。但是,实施这些更改将是使 Julia 语言成为开发端到端医学影像分割算法的良好 Python 替代方案的巨大一步。
成功标准和所需时间:如何定义上述功能的成功以及每个功能的大概所需时间。
给定用户提供的配置结构体,在加载图像后,将以某些定义的概率执行提供的增强:亮度变换、对比度增强变换、伽马变换、高斯噪声变换、莱斯噪声变换、镜像变换、缩放变换、高斯模糊变换、模拟低分辨率变换、弹性变形变换 -100 小时。
启用在模型输入上执行某些变换,然后在模型输出上反转此变换;当用户提供 n 时执行 n 次模型推理,并将模型产生的分割掩码的均值和标准差作为输出返回 -60 小时。
给定用户指定的 3D 补丁大小,算法在数据加载后将裁剪或填充提供的图像以满足设定的尺寸标准。在裁剪过程中,应比没有标签的区域更频繁地选择存在标签的图像部分,在分割掩码上指示某些标签的区域被选择的概率将等于 p (0-1),其中 p 由用户提供 -40 小时。
给定医学图像路径列表,它将加载这些图像并计算平均或中位间距(用户选择的选项),并返回结果。然后,在管道执行期间,所有图像都应重新采样到用户提供的间距和用户提供的方向 - 40小时。
给定模型输出和一个阈值,该阈值将用于输出的每个通道以二值化输出,用户将可以选择从二值化算法输出中仅检索 n 个最大连通域 - 20小时。
所有增强算法的概率和超参数、所选输出通道二值化的阈值、预处理的间距、测试时增强算法的数量和设置都应在 hyperparam 结构体中可用,该结构体是管道函数的附加参数,可用于超参数调整 -30小时。
在验证时期,图像可以保存到持久存储中,并且可以将单个随机图像与输出掩码一起加载到 MedEye3d 中,以便在训练期间进行可视化 -30小时。
用户可以设置 val_percentage - 这将导致数据集被划分为训练和验证集,或者提供 k,这将导致 k 折交叉验证。在后一种情况下,集成模型的平均值、阈值和标准差将作为模型的最终输出返回 -30小时。
对于每个项目,导师还将向负责实施的人员提供所需的 Python 功能示例,或者指出已经实现它的 Julia 库(只需进行集成)。
描述: KomaMRI.jl 是一个用于高效磁共振成像 (MRI) 模拟的 Julia 包,服务于教育和研究目的。模拟可以帮助理解难以理解的 MRI 概念,如脉冲序列、信号生成和采集。此外,它们可以指导新型脉冲序列的设计,并生成用于训练机器学习模型的合成数据。
目前,我们的模拟器使用 CUDA 数组执行 GPU 加速计算。我们现在正在推进实施一种新的模拟方法 (BlochKernel<:SimulationMethod
),该方法基于使用 KernelAbstractions.jl 的 GPU 内核编程。此增强功能不仅会提高计算速度,还会通过 KernelAbstractions.jl 的多供应商 GPU 支持扩展可访问性。这可以使 MRI 模拟在迭代算法中用于解决反问题。我们正在寻找对开发此功能感兴趣的热心人士。
导师: Carlos Castillo [电子邮件:cncastillo@uc.cl],Boris Oróstica [电子邮件:beorostica@uc.cl],Pablo Irarrazaval [电子邮件:pim@uc.cl]
难度: 困难
持续时间: 350 小时(2 个月,每天 8 小时)
建议技能和背景
Julia 使用经验
接触 MRI 概念和思想
高级 GPU 编程知识
熟悉以下一些 Julia 包将是理想的
KernelAbstractions.jl
CUDA.jl
Adapt.jl
Functors.jl
成果:
我们期望在本程序结束时获得以下结果
扩展和/或改进 GPU 加速模拟,生成了一种新的具有多供应商 GPU 支持的模拟方法 BlochKernel
。
开发了解释新模拟方法的文档,包括展示一些用例示例。
在 Buildkite 上实现了自动管道,用于在多个 GPU 架构上测试模拟。
报告了 BlochKernel
和 Bloch
之间的性能改进。
如果您有兴趣并希望讨论在此项目过程中可以追求的其他方面,请联系此项目的导师。