神经影像计算环境管理器
项目描述
ReproMan
ReproMan旨在简化神经影像计算环境的创建和管理。虽然它专注于神经影像用例,但绝不限于这个科学领域,工具在其他领域也将有用。
状态
ReproMan正处于快速发展阶段。虽然代码库仍在增长,但重点越来越多地转向稳健和安全的操作以及合理的API。由于组织和配置仍然是相当重组和标准化的主题,因此尚未发布任何重大公共版本。
如果您对内部结构和/或为项目做出贡献感兴趣,请参阅CONTRIBUTING.md。
安装
ReproMan需要Python 3 (>= 3.6)。
基于Debian的系统(Windows尚未实现 TODO) - 通过pip
默认情况下,通过pip(pip install reproman
)安装reproman的核心功能,允许管理数据集等。还有其他安装方案可供选择,因此您可以通过pip install 'reproman[SCHEME]'
提供增强的安装,其中SCHEME
可以是
- tests 以安装reproman单元测试电池使用的依赖项
- full 以安装所有可能的依赖项,例如 DataLad
对于通过pip
进行安装,您可能需要一些外部依赖项(例如docker
、singularity
等),有关这些依赖项的信息,请参阅下一节。
基于Debian的系统
在基于Debian的系统上,我们建议启用NeuroDebian,我们将很快提供ReproMan的最新版本。我们还将从该存储库提供所有必要软件包的回溯版本。
依赖项
我们的setup.py
和相关打包描述了所有必要的依赖。在基于Debian的系统上,我们建议启用NeuroDebian,因为我们用它来提供我们所依赖的最近修复的外部模块的后端口。此外,如果您想开发和运行我们的测试套件,请参阅CONTRIBUTING.md以了解有关额外依赖项的更多信息。
reproman run
的典型工作流程
此示例主要基于为"典型工作流程"创建的示例,该示例针对///repronim/containers创建,我们建议您参阅以了解更多关于YODA原则等内容。在这个reproman示例中,我们将遵循完全相同的目标——在样本数据集上运行MRIQC,但这次利用ReproMan在远程运行计算的能力。DataLad和///repronim/containers
仍将用于数据和处理容器,而reproman将在AWS云中建立一个小HTCondor集群,运行分析并获取结果。
步骤1:创建HTCondor AWS EC2集群
如果您第一次使用ReproMan与AWS云服务交互,您应该首先提供ReproMan用于与AWS交互的秘密凭据。为此,编辑其配置文件(Linux上的~/.config/reproman/reproman.cfg
,OSX上的~/Library/Application Support/reproman/reproman.cfg
)
[aws]
access_key_id = ...
secret_access_key = ...
免责声明/警告:请勿公开共享或发布这些秘密。
填写...
。如果reproman
无法找到这些信息,将出现错误消息Unable to locate credentials
。
运行(需要执行一次,使资源可用于reproman login
或reproman run
)
reproman create aws-hpc2 -t aws-condor -b size=2 -b instance_type=t2.medium
创建新的ReproMan资源:2个安装了HTCondor的AWS EC2实例(我们使用NITRC-CE实例)。
免责声明/警告:在云提供商仪表板(s)中监控您的云资源非常重要,以确保没有运行离开的实例等,以帮助避免因使用云服务而造成高昂的费用。
步骤2:创建分析DataLad数据集并在aws-hpc2上运行计算
以下脚本是从///repronim/containers复制的一个确切副本,其中只将datalad containers-run
命令(该命令从本地获取数据并在本地串行运行计算)替换为reproman run
,该命令将数据集(无数据)发布到远程资源,获取数据,通过HTCondor在2个节点上并行运行计算,然后获取结果
#!/bin/sh
( # so it could be just copy pasted or used as a script
PS4='> '; set -xeu # to see what we are doing and exit upon error
# Work in some temporary directory
cd $(mktemp -d ${TMPDIR:-/tmp}/repro-XXXXXXX)
# Create a dataset to contain mriqc output
datalad create -d ds000003-qc -c text2git
cd ds000003-qc
# Install our containers collection:
datalad install -d . ///repronim/containers
# (optionally) Freeze container of interest to the specific version desired
# to facilitate reproducibility of some older results
datalad run -m "Downgrade/Freeze mriqc container version" \
containers/scripts/freeze_versions bids-mriqc=0.16.0
# Install input data:
datalad install -d . -s https://github.com/ReproNim/ds000003-demo sourcedata
# Setup git to ignore workdir to be used by pipelines
echo "workdir/" > .gitignore && datalad save -m "Ignore workdir" .gitignore
# Execute desired preprocessing in parallel across two subjects
# on remote AWS EC2 cluster, creating a provenance record
# in git history containing all condor submission scripts and logs, and
# fetching them locally
reproman run -r aws-hpc2 \
--sub condor --orc datalad-pair \
--jp "container=containers/bids-mriqc" --bp subj=02,13 --follow \
--input 'sourcedata/sub-{p[subj]}' \
--output . \
'{inputs}' . participant group -w workdir --participant_label '{p[subj]}'
)
ReproMan:执行文档部分提供了有关reproman run
命令的底层原理的更多信息。
步骤3:删除资源
每当计算和获取完成后,您对结果满意时,请使用reproman delete aws-hpc2
终止AWS中的远程集群,以免造成不必要的费用。
许可
MIT/Expat
免责声明
它处于beta阶段——大多数功能可用,但文档和API增强仍在进行中,以使其更好。请不要犹豫,提出问题或发送pull request。有关指导,请参阅CONTRIBUTING.md。