fMRIPrep的安装及运行

fMRIPrep是一种基于Python的软件,用于对功能磁共振成像(fMRI)数据进行预处理和分析,旨在提高分析的效率和可重复性。它是一个自动化工具,可以将原始fMRI数据转换为常用的分析格式,并将其预处理以减少可能影响数据解释的伪差异。这些步骤包括去除头部运动、去除噪声、校准时间偏移等。该软件的目标是使fMRI数据处理更容易、更快速、更准确,从而提高神经影像学研究的质量和可靠性。

这里我用的是docker 容器的形式使用fMRIPrep, 主要是简单无脑。

本教程总结安装过程和使用过程中遇到OSError: [Errno 28] No space left on device,

File Path: Files with such naming scheme are not part of BIDS specification和sqlite3.OperationalError: database is locked的问题并且解决方案如下:

安装

先确保已经安装了docker,docker安装可自行去官网查看。

docker pull nipreps/fmriprep #下载fMRIPrep的镜像,这个镜像包含了额外包(FSL,FreeSurfer在内)的所有配置
docker run --rm nipreps/fmriprep:latest --version # 测试下是否能运行

然后去FreeSurfer 那里下载license许可证文件

这个是网站:https://surfer.nmr.mgh.harvard.edu/registration.html

下载好许可证后,记得保存在你的工作目录中,以便代码运行时需要

运行

之后根据你的预处理需求进行代码。以下是代码例子:

docker run --rm \
    -v /path/to/input/data:/data \
    -v /path/to/output:/out \
    -v /path/to/freesurfer/license.txt:/opt/freesurfer/license.txt \
    nipreps/fmriprep:latest \
    /data /out \
    participant \
    --participant-label sub-01 \
    --fs-license-file /opt/freesurfer/license.txt \
    --use-aroma \
    --notrack \
    --output-spaces MNI152NLin2009cAsym:res-2mm T1w \
    --fs-no-reconall \
    --use-syn-sdc \
    --nthreads 8 \
    --mem_mb 32000 \
    --work-dir /out/working_dir \
    --skip_bids_validation \
在这个示例中,代码使用了 nipreps /fmriprep 的 Docker 镜像,将输入数据目录 /path/to/input/data 和输出目录 /path/to/output 挂载到了 Docker 容器中,并设置了
--participant-label 参数来指定预处理特定的参与者。其他参数包括:
--fs-license-file:指定 FreeSurfer 许可文件的路径
--use-aroma:使用 ICA-AROMA 去除数据中的伪影
--notrack:禁用匿名使用追踪
--output-spaces:指定输出数据的空间,这里输出了两个空间:MNI152NLin2009cAsym:res-2mm 和 T1w
--fs-no-reconall:禁用 FreeSurfer 的重建过程
--use-syn-sdc:使用 SyN 算法进行畸变校正
--nthreads:指定 CPU 线程数
--mem_mb:指定最大内存量
--work-dir:指定工作目录,这里为 /out/working_dir
--skip_bids_validation:跳过 BIDS 数据验证

运行中遇到的问题:

  1. OSError: [Errno 28] No space left on device


原因是:fmriprep会把预处理的中间结果保存在local directory,那本机直接满了就弹出问题;
查询过程:先在本机上 df -h,查询哪里满了。df -h /var/lib/docker/
然后df -h /var/lib/docker/,弹出/dev/mapper/ubuntu--vg-ubuntu--lv 197G 57G 131G 31% / 的使用情况。 你会发现占用100%。

解决方案:设置work-dir,将中间结果保存在别的directory,比如挂载磁盘或者外接磁盘,总之空间要大。将下面的代码分别加入到代码中

-v (your work_dir path)/work:/work \
--work-dir /work \

第二种就是扩容磁盘 sudo vgdisplay 然后查看Free PE / Size 还有多少可以扩容

然后进行操作:

lvextend -L 100G /dev/mapper/ubuntu--vg-ubuntu--lv    # 增加至 10 G
lvextend -L +100G /dev/mapper/ubuntu--vg-ubuntu--lv   # 再增加 100 G 

运行完后记得:

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv # 进行调整。
df -h #检查是否成功

2. File Path: Files with such naming scheme are not part of BIDS specification

先去https://bids-standard.github.io/bids-validator/ 检查BIDS 是否正确,也就是你数据集的目录格式

如果是从openneuro下载的,确认无误后,继续运行。

但还是出现该问题,加这个代码

--skip_bids_validation #跳过检验。

3. sqlite3.OperationalError: database is locked”

这个问题似乎是在挂载服务器上,存在的访问权限问题。

解决方案是-bids-database-dir 标志到本地目录。避免将数据集在挂载磁盘上。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值