【发布时间】:2021-07-25 06:16:28
【问题描述】:
我正在执行 MRI 分析,并编写了一个脚本,循环遍历每个对象的所有扫描,下一步是运行一个名为 feat 的命令,可以在下面的编码块末尾看到该命令。
#! /bin/sh
path=~/rj82/james_folder/data_copy/
cd $path
# Loop through the MND and Control directories
for directory in * ; do
cd $path
cd $directory
# Loop through each subject in each directory
for subject in ??? ; do
cd $path/$directory/$subject
# Loop through each scan for each subject
for scan in MR?? ; do
cd $path/$directory/$subject/$scan
# Run feat on each scan
feat design.fsf
cd ..
done
done
done
您还将看到 feat 需要一个 design.fsf 文件,该文件设置了专长的参数。为了制作这个文件,我使用了一次 MRI 扫描作为输入数据。
下面我附上了design.fsf 代码中的区域,这些区域显示了用于创建文件的文件的路径。
# 4D AVW data or FEAT directory (1)
set feat_files(1) "/projects/rj82/james_folder/data_copy/mnd/002/MR02/fmri/fmri_data"
# Add confound EVs text file
set fmri(confoundevs) 0
# Session's alternate reference image for analysis 1
set alt_ex_func(1) "/projects/rj82/james_folder/data_copy/mnd/002/MR02/fmri_ref/fmri_ref_brain"
# B0 unwarp input image for analysis 1
set unwarp_files(1) "/projects/rj82/james_folder/data_copy/mnd/002/MR02/fmaps/fmap_rads"
# B0 unwarp mag input image for analysis 1
set unwarp_files_mag(1) "/projects/rj82/james_folder/data_copy/mnd/002/MR02/fmaps/mag_e1_brain"
# Subject's structural image for analysis 1
set highres_files(1) "/projects/rj82/james_folder/data_copy/mnd/002/MR02/t1/t1_brain"
如果我运行脚本(第一个编码块)feat 将正确运行,但是由于design.fsf 文件中的路径仅指一次扫描,它只会在这一次扫描中连续运行feat。
由于每个主题中的子目录和文件具有相同的名称,我想将路径 "/projects/rj82/james_folder/data_copy/mnd/002/MR02 替换为脚本中的当前目录(第一个编码块),同时保留结尾部分(例如 fmri/fmri_data")允许我循环遍历每个主题并运行壮举。
我尝试设置 path=pwd 并用 "$path/fmri/fmri_data" 替换上面的路径,这不起作用,以及完全删除 "/projects/rj82/james_folder/data_copy/mnd/002/MR02 部分,因为我希望它只使用当前目录,但这也没有不行。两者的错误信息相同:
/bin/mkdir: cannot create directory ‘/fmri’: Permission denied
while executing
"fsl:exec "/bin/mkdir -p $FD" -n"
(procedure "firstLevelMaster" line 22)
invoked from within
"firstLevelMaster $session"
invoked from within
"if { $done_something == 0 } {
if { ! $fmri(inmelodic) } {
if { $fmri(level) == 1 } {
for { set session 1 } { $session <= $fmri(mult..."
(file "/usr/local/fsl/6.0.4/fsl/bin/feat" line 390)
【问题讨论】:
-
每个扫描目录下都有
design.fsf的副本吗? -
@Armali 感谢您的回复!当我问这个问题时,没有,但我现在在每个扫描目录中都放了一份
design.fsf的副本。在需要路径的部分中,我只放置了包含文件并且在所有扫描中都相同的子目录名称。 -
你能显示一个示例行
set feat_files(1) …现在看起来吗? -
所以为了让它运行,我需要类似
set feat_files(1) "~/rj82/james_folder/data_copy/mnd/002/MR02/fmri/fmri_data"我的脚本导航到每个单独的主题并扫描,所以我将设计文件更改为:set feat_files(1) "/fmri/fmri_data"
标签: bash windows-subsystem-for-linux