Docker 基础
Docker 是一个开源的平台,用于开发、部署和运行应用程序。它允许您将应用程序及其所有依赖项打包到一个标准化的单元(称为容器)中,确保在任何环境中都可以一致地运行。
Docker 的工作流程
- Docker 镜像:这是一个包含应用程序及其所有依赖项的只读模板。
- Docker 容器:这是从镜像创建的一个可运行的实例。可以将其视为轻量级、独立的虚拟机。
- Docker Hub:这是一个存储 Docker 镜像的公共仓库。
Docker 的基本命令
-
启动 Docker 服务(有些系统可能需要手动启动 Docker 服务):
sudo systemctl start docker sudo systemctl enable docker
-
拉取 Docker 镜像:
docker pull nipreps/fmriprep:latest
-
运行 Docker 容器:从镜像创建并运行容器。
1. 安装 fMRIPrep
使用 Docker 安装 fMRIPrep
-
安装 Docker:
如果尚未安装 Docker,请先安装 Docker。
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
-
将当前用户添加到 Docker 组(需要注销并重新登录):
sudo usermod -aG docker $USER
-
拉取 fMRIPrep Docker 镜像:
docker pull nipreps/fmriprep:latest
2. 准备数据
fMRIPrep 需要 BIDS(Brain Imaging Data Structure)格式的数据。您可以使用 HeuDiConv 或 dcm2bids 将您的数据转换为 BIDS 格式。
3. 运行 fMRIPrep
假设您的 BIDS 数据集位于 /path/to/bids_dataset
,输出目录为 /path/to/output
,工作目录为 /path/to/workdir
。
-
运行 fMRIPrep:
docker run -ti --rm \ -v /path/to/bids_dataset:/data:ro \ -v /path/to/output:/out \ -v /path/to/workdir:/work \ nipreps/fmriprep:latest /data /out participant \ --participant-label <participant_id> \ --fs-license-file /path/to/freesurfer_license.txt \ --work-dir /work
/data:ro
:挂载 BIDS 数据集目录为只读。/out
:挂载输出目录。/work
:挂载工作目录。--participant-label <participant_id>
:指定参与者标签。--fs-license-file /path/to/freesurfer_license.txt
:指定 FreeSurfer 许可证文件路径。
4. 解释输出
fMRIPrep 生成的预处理结果将存储在您指定的输出目录中。主要输出包括:
- 预处理后的 fMRI 数据
- 报告文件,详细说明每一步的预处理过程
- 日志文件,用于调试和记录预处理过程
详细步骤
-
安装 Docker:
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER
注销并重新登录以应用用户组更改。
-
拉取 fMRIPrep Docker 镜像:
docker pull nipreps/fmriprep:latest
-
转换数据为 BIDS 格式:
可以使用 HeuDiConv 或 dcm2bids 将 DICOM 数据转换为 BIDS 格式。这里以 HeuDiConv 为例:
heudiconv -d '/path/to/dicom/{subject}/*/*.dcm' -o /path/to/bids_dataset -s subject1 subject2 -f heuristic.py -c dcm2niix -b
-
运行 fMRIPrep:
假设您的 BIDS 数据集路径为
/path/to/bids_dataset
,输出路径为/path/to/output
,工作目录为/path/to/workdir
,FreeSurfer 许可证文件路径为/path/to/freesurfer_license.txt
。docker run -ti --rm \ -v /path/to/bids_dataset:/data:ro \ -v /path/to/output:/out \ -v /path/to/workdir:/work \ nipreps/fmriprep:latest /data /out participant \ --participant-label <participant_id> \ --fs-license-file /path/to/freesurfer_license.txt \ --work-dir /work
注意事项
- BIDS 数据集结构:确保您的数据集符合 BIDS 规范。
- FreeSurfer 许可证:您需要一个有效的 FreeSurfer 许可证文件。可以从 FreeSurfer 官网 获取。
- 资源需求:fMRIPrep 可能需要大量的计算资源,包括CPU、内存和存储空间。根据数据集大小调整相应的资源配置。