FSL-FAST使用举例 with PBS and qsub

这个例子展示如何用FAST 分割三种组织,计算出三种组织的体积,最后使用R语言导入到一个表里并且计算Brain volume

FAST(FMRIB's Automated Segmentation Tool)主要分割全脑灰质GM、白质WM和脑脊液CSF

在运行FAST之前,应该使用BET剥头皮

处理上百个数据会耗费很长时间,为了提高效率,可以利用qsub和PBS将任务提交到cluster上

指令的详细说明在官网可见BET, FAST

结构像文件结构如下图所示(设当前路径为pwd),每一个人的结构像都放在相应文件夹里并且命名为t1.nii

结构说明

如果结构像同级放在一个文件夹下,可以参考Shell script - 处理同一文件夹下的一批数据来修改。

1. bet和fast的使用

分割结构像的脚本tissueSegmentOnSingle.sh存放于pwd路径

segmentOnSingle.sh如下

#!/bin/bash
# PBS -l nodes=1:ppn=8
# PBS -q short
bet t1.nii t1_brain.nii.gz # 剥头皮后生成t1_brain.nii.gz,这一步还算比较快
fast -t 1 -n 3 -H 0.1 -I 4 -l 20.0 -b -o t1_brain.nii t1_brain.nii.gz # fast分割,这一步不会很快
# fast运行结束以后生成
# t1_brain_bias.nii.gz  
# t1_brain_mixeltype.nii.gz
# t1_brain_pve_0.nii.gz: CSF (intensity = 属于对应组织的概率)
# t1_brain_pve_1.nii.gz: GM(intensity = 属于对应组织的概率)
# t1_brain_pve_2.nii.gz: WM(intensity = 属于对应组织的概率)
# t1_brain_pveseg.nii.gz
# t1_brain_seg.nii.gz

重点关注的结果(Inspection by freeview)
t1_brain_pve_0.nii.gz: CSF

t1_brain_pve_0.nii.gz: CSF

t1_brain_pve_1.nii.gz: GM
t1_brain_pve_1.nii.gz: GM

t1_brain_pve_2.nii.gz: WM


t1_brain_pve_2.nii.gz: WM

tissueSegmentOnSingle.sh用于处理单个结构像

对于多个数据,应该在循环里多次将该脚本作为作业提交到服务器,如存放在pwd的脚本qsubTissueSegment.sh所示

#!/bin/bash
for n in {1..2..1} ###### 根据你的样本量修改,下面的编号也是如此
do
    number=`echo $n|awk '{printf("%04d",$0)}'`  # 自动补0
    patient=`echo "S"$number`                   # Modify here (Now patient: S0001)
    echo $patient
    qsub -d `pwd`/$patient/ `pwd`/qsubTissueSegment.sh
    # -d 指明single脚本的工作路径
done

900人左右的数据进入short队列后,5个半小时左右运行结束

2. 输出三种脑组织的体积

现在每个人的文件夹里都有那几个文件了,下面开始利用fslstats将所有人的数据写到一个txt里

fslstats简单例子 参考帖子

$ fslstats t1_brain_pve_0.nii.gz -M -V
0.738002 394821 394821.000000

# -m           : output mean
# -M           : output mean (for nonzero voxels)
# -v           : output <voxels> <volume>
# -V           : output <voxels> <volume> (for nonzero voxels)

忽略所有的零体素(就是脑袋外的体素不算在内)
第一个数字表示整个图像上相应组织的平均体素,一个百分比
第二个是整张图体素数目
第三个数字是图像的总体积(单位:mm³)
将第一和第三个数字相乘可以得到相应组织的总体积

$ fslstats t1_brain_pve_1.nii.gz -M -V | awk '{print $1 * $3}'
490514

现在可以写出批处理的脚本getTissueVolume.sh了(根据实际情况适当修改)

#!/bin/bash
for n in {1..2..1} ###### Modify here
do
    number=`echo $n|awk '{printf("%04d",$0)}'`  # 自动补0
    patient=`echo "S"$number`                   # Modify here (Now patient: S0001)
    echo $patient
    csf=`fslstats $patient/t1_brain_pve_0.nii.gz -M -V | awk '{print $1 * $3}'`
    gm=`fslstats $patient/t1_brain_pve_1.nii.gz -M -V | awk '{print $1 * $3}'`
    wm=`fslstats $patient/t1_brain_pve_2.nii.gz -M -V | awk '{print $1 * $3}'`
    echo -e $csf" "$gm" "$wm >> res # 自动追加换行符
done

fslstats运行速度比较快,平均1.5s就能处理完一个人的数据


运行结果

3.使用R语言整理出全脑体积并导出表格

全脑体积=三种体积之和

original = read.table("~/Share/temp/res.txt")
colnames(original) = c("CSF", "GM", "WM")

L = length(original$CSF)
serial = rep(0, L)
for (i in 1:L) {
  serial[i] = paste("S", sprintf("%04d", i), sep = "") # 自动补0
}

result = data.frame(
  serial = serial,
  CSF = original$CSF,
  GM = original$GM,
  WM = original$WM,
  brainVolume = original$CSF + original$GM + original$WM
)

write.csv(result, "~/Share/result.csv", row.names = F)

全脑体积在1.4×10^6mm³左右上是正常的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352