跳转到主要内容

Pydra tasks package for freesurfer

项目描述

pydra-freesurfer

PyPI - Version PyPI - Python Version PyPI - Downloads Status-docs Status-CICD


FreeSurfer的Pydra任务。

Pydra是一个数据流引擎,它提供了一套轻量级的抽象,用于DAG构建、操作和分布式执行。

FreeSurfer是一个用于处理、分析和可视化人类脑部MRI图像的神经影像学工具包。

该项目将FreeSurfer的一些实用工具作为Pydra任务公开,以便将其集成到更高级的处理工作流程中。

目录

测试接口

模块 接口
gtmseg GTMSeg
mri Aparc2Aseg、Binarize、Convert、Coreg、Label2Vol、RobustRegister、RobustTemplate、Surf2Surf、Vol2Vol
mrismris 解剖统计, CALabel, CATrain, Expand, 预处理
recon_all ReconAll, BaseReconAll, LongReconAll

安装

pip install pydra-freesurfer

使用此包需要单独安装FreeSurfer。请查看以下说明许可详情

自动转换

自动生成的任务可以在子包pydra.tasks.freesurfer.auto中找到。这些接口应谨慎使用,因为它们可能未通过测试。经过编辑并通过测试的生成任务将被导入到相应的pydra.tasks.freesurfer.v*子包中(例如,pydra.tasks.freesurfer.v7_4),这些子包对应于为FreeSurfer工具包设计的版本。

持续集成

此模板使用GitHub Actions运行测试并将包部署到PYPI。当在GitHub上创建发布或发布Nipype或Nipype2Pydra转换工具的新版本时,将构建和上传新包。由Nipype或Nipype2Pydra更新触发的发布通过postN后缀表示,其中N = <nipype-version><nipype2pydra-version>,点被删除,例如v0.2.3post185010对应于此存储库的v0.2.3标签,使用Nipype2Pydra 0.1.0自动生成从Nipype 1.8.5的包。

开发

方法论

此包的开发预计将有两个阶段

  1. 在此阶段,相应的Nipype接口被认为是基准,Pydra任务由此生成
  2. 当Pydra任务被认为是成熟的,并且它们被手动编辑时

不同的任务可能在不同时间成熟,因此可能在1和2之间有一个中间阶段。

开发者安装

在生成并安装pydra任务接口之前,需要安装与Freesurfer特定文件格式相对应的文件格式类包fileformats

pip install -e ./related-packages/fileformats[dev]
pip install -e ./related-packages/fileformats-extras[dev]

接下来安装运行自动转换脚本的要求,并从它们的Nipype对应物生成Pydra任务接口

pip install -r nipype-auto-conv/requirements.txt

运行转换脚本来将Nipype接口转换为Pydra

nipype-auto-conv/generate

从源目录以开发者模式安装repo并安装pre-commit以确保一致的代码风格和质量。

pip install -e .[test,dev]
pre-commit install

自动转换阶段

自动转换的Pydra任务是结合位于nipype-auto-conv/specs/中的YAML规范中的“转换提示”从相应的Nipype接口生成的。应手动编辑自文档化的转换规范,以帮助自动转换器生成有效的pydra任务。编辑一个或多个转换规范后,应通过运行来重新生成pydra.tasks.freesurfer.auto

nipype-auto-conv/generate

应在自动生成的任务上运行测试,以查看它们是否有效

pytest pydra/tasks/freesurfer/auto/tests/test_<the-name-of-the-task-you-edited>.py

如果测试通过,则应编辑pydra/tasks/freesurfer/v*/__init__.py文件以导入自动生成的任务接口,表示它已通过验证并准备好使用,其中v*对应于测试的Freesurfer版本,例如

from pydra.tasks.freesurfer.auto import <the-task-you-have-validated>

并将测试文件pydra/tasks/freesurfer/auto/tests/test_<validated-task>.py复制到pydra/tasks/freesurfer/v*/tests

文件格式和样本测试数据

自动生成的测试将尝试根据字段的类型及其上的任何约束为要测试的任务实例提供合理的默认值。但是,在咨询底层工具的文档后,这些值通常需要手动覆盖。

对于基于文件的数据,系统将自动为所选的格式类型(例如 Nifti、Dicom)创建文件系统对象。因此,在 YAML 规范的 inputs > typesoutputs > types 字典中使用对应于 fileformats 类的 "mime-like" 字符串来指定文件的格式非常重要。

如果所需的文件类型在 fileformats 中未实现,请参阅 fileformats 文档 [https://arcanaframework.github.io/fileformats/developer.html],了解如何定义新的文件格式类型,并查看 fileformats-medimage-extras 中的示例,了解如何实现生成这些格式的样本数据的方法。针对 Freesurfer 的新文件格式及其样本数据生成函数的实现应分别定义在 related-packages/fileformatsrelated-packages/fileformats-extras 中。

许可

本项目遵循 Apache License, Version 2.0 许可协议。

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面