最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Nipype學習記錄(1): Concepts

2023-03-15 09:01 作者:biobot  | 我要投稿

我得了看見 .sh.m 文件就會心動過速的絕癥,逆天語法和逆天GUI總有一款適合你?

因為最近要處理的影像數(shù)據(jù)太多,各個軟件包又是有的用matlab,有的有自己的gui和cli,所以不得不寫一堆批處理腳本,散落在各個目錄下,名字大多為test.m,ttest.sh,test1.py…… ?

于是出于對自身精神健康狀況的考量,我從網(wǎng)上找到了這個Python庫: Nipype 。它的官網(wǎng)介紹大意是這樣的: ?

Nipype 是一個Python開源項目,將大量神經(jīng)影像處理工具集成為Python下統(tǒng)一的接口,包括ANTS, SPM, FSL, FreeSurfer, Camino, MRtrix, MNE, AFNI, Slicer, DIPY等,從而使用戶可以僅僅通過Python讓這些工具協(xié)同工作,對影像數(shù)據(jù)進行處理。

?

當然,說是學習記錄,其實就是按照這個教程復刻一下( ?

?

1. Installation

呃……安裝就不說了吧,如果連上面那些軟件包都裝不上,那應(yīng)該不是這東西的目標用戶( ?

不過有兩點需要注意的地方可以提一下: ?

  1. pip install 裝的只是這個庫,并不自帶上述軟件包。所有需要使用的工具需要事先裝好,且環(huán)境變量配置正確。

  2. 非要在Windows下使用的話還是考慮一下Docker吧(感覺不如虛擬機……簡單……)

?

2. Concepts

?

?

Interface

如圖所示,Interface可以簡單理解為將各軟件包函數(shù)進行封裝后暴露在Python中的接口,也就是將各種不同形式、不同平臺的函數(shù)抽象為了一組類似的方法(大概學過OOP會好理解一點?)。 ?

舉個例子, BET 是FSL中進行skullstrip的函數(shù),一般需要用bash腳本實現(xiàn)批處理。對于處理完的數(shù)據(jù),如果想要用SPM進行分割,又需要編寫matlab腳本調(diào)用 spm_segment 進行處理。而為了保證影像文件在這兩次處理時的對應(yīng)關(guān)系,還需要編寫冗余的腳本或者配置文件。 ?

引入 Nipype 后, BETspm_segment 就都成了同等地位的Interface,可以在Python中統(tǒng)一到同一套流程下:?

? ? ? ? ? ? ? ? ??

Interface的概念對應(yīng)于class,在具體使用中需要將其實例化,比如 bet=BET()。 ?

?

Node

上面實例化的 bet 已經(jīng)可以在Python下對影像進行處理了,但是為了后續(xù)不同Interface之間的數(shù)據(jù)傳輸,我們需要將它們裝進同一規(guī)格的箱子中,按照抽象程度更高的方式進行交互,這就是Node。 ?

一個Node需要具有以下幾項屬性: ?

  1. IN:Node的輸入

  2. OUT:Node的輸出

  3. Name:Node的名稱

  4. Interface Category:代表Node的具體功能,也就是“箱子”中真正裝著的東西

在定義了多個不同功能的Node后,我們可以將它們按照IN→OUT的順序連接起來實現(xiàn)一條pipeline(實際上就是后面Workflow的概念): ?

比如我們可以假設(shè)node1代表FSL的 BET 函數(shù),node2代表SPM的 spm_segment 函數(shù),那么上面這張圖的意義就是在對輸入的原始影像數(shù)據(jù)進行skullstrip處理后,將輸出文件作為node2的輸入,進行segment處理并輸出結(jié)果。與最開始的做法相比,這樣一套流程有效地將處理代碼全部統(tǒng)一到了Python下,也方便了后續(xù)修改。 ?

?

Workflow

Workflow的基本概念其實就是上面將多個Node連接到一起。對于簡單的任務(wù),其實定義多個Node按順序進行處理就已經(jīng)足夠了,無非是需要多維護一張表來記錄各個結(jié)果對應(yīng)的subject。但是對于復雜任務(wù),就需要使用Workflow明確輸入輸出,并通過cache機制減少處理時長: ?

?

3. Quickstart

先嘗試一個簡單的任務(wù): ?

?? ? ? ? ? ? ? ? ? ??


比較一下處理前后影像(沒有修改參數(shù)所以會有點奇怪,不過可以看出頭骨被去掉了): ?

?? ? ? ? ? ? ? ? ? ??

?

后面的留給下次罷 ?

只是一個求關(guān)注的不知名公眾號



Nipype學習記錄(1): Concepts的評論 (共 條)

分享到微博請遵守國家法律
镇远县| 泸溪县| 海阳市| 正安县| 威远县| 庄河市| 荣昌县| 樟树市| 页游| 济源市| 雅安市| 青岛市| 通辽市| 富蕴县| 喜德县| 宝应县| 林周县| 乐清市| 兴隆县| 汝城县| 玉环县| 乌鲁木齐市| 长宁县| 江北区| 诸城市| 凤阳县| 榆树市| 岳阳县| 蒙自县| 原平市| 鄯善县| 璧山县| 香格里拉县| 崇文区| 濮阳县| 三原县| 永丰县| 定西市| 额济纳旗| 侯马市| 饶平县|