我正在执行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文件,该文件设置了feat的参数。为了制作这个文件,我使用了一个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"如果我运行的脚本(第一个编码块)的壮举将正确运行,但是,由于design.fsf文件中的路径仅指一次扫描,它将继续运行这一次扫描壮举。
由于每个主题中的子目录和文件具有相同的名称,我希望用脚本中的当前目录(第一个编码块)替换path "/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)发布于 2021-07-25 23:04:00
我无法得到我想要实现的结果,所以我循环通过上面的内容,将我的design.fsf文件复制到每个目录中,然后用sed对它们进行编辑,以获得正确的路径。
#! /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
# Copy template design.fsf into each scan folder
cp $path/../design.fsf design.fsf
# Change design.fsf file and replace the directory used
# to create the template with the current directory
current=$directory/$subject/$scan
sed -i "s|mnd/002/MR02|$current|g" design.fsf
# Run feat using custome design.fsf file
feat design.fsf
cd ..
done
done
donehttps://stackoverflow.com/questions/68516020
复制相似问题