首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FSL -我可以将fsf文件(程序安装文件)中的路径设置为当前工作目录吗?

FSL -我可以将fsf文件(程序安装文件)中的路径设置为当前工作目录吗?
EN

Stack Overflow用户
提问于 2021-07-25 06:16:28
回答 1查看 188关注 0票数 1

我正在执行MRI分析,并编写了一个脚本,遍历每个主题的所有扫描,下一步是运行一个名为feat的命令,它可以在下面的编码块的末尾看到。

代码语言:javascript
复制
#! /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代码中的区域,这些区域显示用于创建文件的文件的路径。

代码语言:javascript
复制
# 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部分,因为我希望它只使用当前目录,但这也不起作用。对于这两种情况,错误消息是相同的:

代码语言:javascript
复制
/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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-25 23:04:00

我无法得到我想要实现的结果,所以我循环通过上面的内容,将我的design.fsf文件复制到每个目录中,然后用sed对它们进行编辑,以获得正确的路径。

代码语言:javascript
复制
#! /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
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68516020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档