做營銷策劃的上哪個網(wǎng)站好鄭州網(wǎng)絡推廣大包
摘要
本研究提供了一個用于分析腦纖維束數(shù)據(jù)的Python庫(Phybers)。纖維束數(shù)據(jù)集包含由表示主要白質通路的3D點組成的流線(也稱為纖維束)。目前已經提出了一些算法來分析這些數(shù)據(jù),包括聚類、分割和可視化方法。由于流線的幾何復雜性、文件格式和數(shù)據(jù)集的大小(可能包含數(shù)百萬條纖維束),對纖維束數(shù)據(jù)的處理并不簡單。因此,本研究收集和整理了最新的腦纖維束分析方法,并將其集成到Python庫中,以整合和共享腦纖維束示蹤分析工具。由于計算要求較高,最具挑戰(zhàn)性的模塊需要用C/c++實現(xiàn)??捎玫墓δ馨ɡw維束分割(FiberSeg)、分層纖維聚類(HClust)、快速纖維聚類(FFClust)、歸一化到參考坐標系、纖維采樣、計算大腦纖維集合之間的交點、聚類過濾工具、從聚類中計算測量值以及纖維束可視化。該庫分為四個主要模塊:分割(Segmentation)、聚類(Clustering)、實用工具(Utils)和可視化(Fibervis)。Phybers可以在GitHub上免費獲得,并提供了樣本數(shù)據(jù)和大量文檔。此外,該庫可以通過pip庫輕松地在Windows和Ubuntu操作系統(tǒng)上安裝。
引言
大腦結構連通性可以通過擴散磁共振成像(dMRI)進行研究。這是一種無創(chuàng)的在體技術,通過測量腦組織中水分子的運動,提供關于腦白質(WM)的微觀尺度信息。利用dMRI數(shù)據(jù)上的擴散局部模型重建和纖維束示蹤算法,可以計算出3D WM束的主要軌跡。為了簡便起見,這些流線也被稱為“纖維束”,盡管它們并不代表單個軸突。
多年來,隨著MRI設備和重建以及纖維束成像算法的改進,用于分析纖維束成像數(shù)據(jù)集的工具也在不斷發(fā)展。如今,大腦纖維束數(shù)據(jù)相當復雜,包含長短不一的纖維,以及噪聲和復雜的幾何結構。此外,這些數(shù)據(jù)集可能包含數(shù)百萬條纖維用于概率性纖維追蹤,從而產生額外的計算需求,尤其是在執(zhí)行多被試分析時。這就是為什么有許多示蹤數(shù)據(jù)分析算法旨在對這些數(shù)據(jù)進行聚類、識別模式、分割、過濾、可視化和計算測量值的原因。由于示蹤數(shù)據(jù)具有復雜性,這些算法通常難以使用,并且需要對文件格式、輸入?yún)?shù)和結果有深入的了解。因此,為了簡化和推廣dMRI的使用,一些研究小組創(chuàng)建了用于處理dMRI圖像的軟件包。這些工具提供了dMRI數(shù)據(jù)處理各步驟所需的算法,從圖像失真校正到示蹤分析。最終目標是開發(fā)出一套處理纖維束示蹤數(shù)據(jù)的方法,以更好地描述基于高質量數(shù)據(jù)的WM纖維,并研究健康被試和病理性大腦的WM微結構。
可用于處理dMRI數(shù)據(jù)的工具有許多。表1、2總結了影像學研究社區(qū)常用的軟件包。表中列出了這些工具的主要特性和功能,如編程語言、操作系統(tǒng)(OS)、軟件許可證、dMRI格式、纖維追蹤格式、擴散加權(DW)模型重建、纖維追蹤、纖維聚類、纖維束分割、可視化以及纖維測量計算等。主要軟件包括:BrainSUITE、Camino、Diffusion toolkit、ExploreDTI、FSL、MRtrix、Freesurfer、DSI Studio、Dipy、DiffusionKit和SlicerDMRI。
表1.dMRIs研究使用的主要軟件。
表2.dMRIs研究使用的主要軟件。
如表1、2所示,這些工具包具有不同的功能。其中一些更側重于dMRI預處理、模型重建和纖維束成像,而其他一些則包括示蹤分析方法。用戶通常會使用多個軟件來實現(xiàn)其處理流程,但需要注意文件格式、參考坐標系和三維空間。盡管有一些較為全面的工具包,但沒有一個工具包涵蓋所有現(xiàn)有的算法。
目前很少有專門用于分析示蹤數(shù)據(jù)的軟件包,例如纖維聚類和分割,以及纖維束過濾。因此,本研究提出了一種用于分析大腦纖維示蹤數(shù)據(jù)的工具包。該工具包結合了多種纖維示蹤分析工具(由本研究小組開發(fā)),其中包括使用腦纖維圖譜優(yōu)化的纖維束分割算法,基于K-Means的分層纖維聚類和快速纖維聚類(FFClust)算法。由于缺乏統(tǒng)一的代碼、編程語言的多樣性、多個庫依賴以及缺乏示例代碼/數(shù)據(jù)和文檔,這些工具對外部用戶而言難以應用。為此,本研究開發(fā)了一個名為Phybers的開源庫,它集成了所有這些算法以及其他纖維聚類分析和可視化工具。
Phybers
Phybers包含四個模塊,其中包括用于不同預處理階段的算法。Utils套件包含用于纖維分割或聚類之前對纖維示蹤數(shù)據(jù)進行預處理的工具,例如使用變形場(NIfTI格式)將纖維(bundles格式)轉換到另一個空間。分析模塊包括基于腦纖維束圖譜的纖維束分割算法,以及快速纖維聚類(FFClust)和分層聚類(HClust)兩種聚類算法。此外,還提供了一套用于分析纖維束分割和纖維聚類算法結果(bundles格式)的后處理工具。可視化模塊支持不同類型的數(shù)據(jù),例如體積(NIfTI)、網(wǎng)格(mesh和GIfTI格式)、纖維束(TRK、TCK和bundles)。此外,它集成了一個交互式圖形用戶界面(GUI),允許用戶實時操縱3D對象。例如,可以通過定位兩個或多個3D區(qū)域來執(zhí)行腦纖維束的手動分割。
Phybers是基于Python開發(fā)的,以便在PyPI存儲庫中發(fā)布和更新。本研究使用C/C++和Python 3.9實現(xiàn)了這些算法,其中使用了numpy、nibabel、pandas和subprocess等Python依賴項。然而,所有依賴項都會隨著軟件包的安裝而自動安裝??梢允褂妹? pip install phybers來執(zhí)行庫安裝,并且該軟件發(fā)行版包含所有支持功能的示例數(shù)據(jù)和代碼示例。Phybers兼容Python 3.9以上的版本,并支持Jupyter Notebook和Spyder等Python平臺,為滿足每個用戶的特定需求提供了強大的靈活性。此外,它可以在Ubuntu和Windows系統(tǒng)上無縫運行,也可以通過虛擬機在macOS上使用。最后,使用Sphinx生成庫文檔。Phybers庫包含四個模塊(圖1),分別定義為Segmentation、Clustering、Utils和Visualization。
圖1.四個模塊:(A)分割,(B)聚類,(C)實用工具和(D)可視化。
Phybers層次結構
分割模塊
該模塊包括基于多被試圖譜的白質纖維束分割算法(圖2)。該方法使用相應點之間的最大歐氏距離(dME)作為纖維對之間相似性的度量,定義為:
圖2.分割模塊圖示。
其中ai和bi分別表示纖維A和B中點的三維坐標,兩者具有相等數(shù)量的點(Np),按直接順序列出。這里纖維A的點依次遍歷為ai=[a1,a2,…,aNp],而纖維B的點同樣定義為bi=[b1,b2,…,bNp]。因此,纖維B的逆序表示為bNp?i=[bNp,bNp?1,…,b1]。
Phybers分割模塊中的FiberSeg具有以下輸入(圖2):
1.file_in:被試的全腦纖維束成像數(shù)據(jù)集文件。這些纖維束必須與所使用的纖維束圖譜位于同一參考系中,并以bundles格式表示。
2.subj_name:被試名稱,用于標記結果。
3.atlas_dir:bundle圖譜文件夾,其中每個bundle都存放在單獨的文件中,并以21個等距點進行采樣。
4.atlas_info:與所用圖譜相關聯(lián)的文本文件,其中存儲了應用分割算法所需的信息,即圖譜束的列表,包含名稱、分割閾值(mm)和每個束的大小。請注意,分割閾值可以根據(jù)要使用的數(shù)據(jù)庫進行調整。
5.dir_out:存儲算法生成的所有結果的目錄名。
FiberSeg的輸出是:
1.final_bundles:存儲分割后纖維束的目錄,即從被試纖維束數(shù)據(jù)集中提取的圖譜束,這些束被標記并以bundles式保存在單獨的文件中。
2.centroids:包含每個分割束質心的目錄,以bundles格式保存在單個文件中。
3.bundles_id:一個文本文件,該文件記錄了每個分割束的索引。
圖3顯示了使用DWM束圖譜對來自HCP數(shù)據(jù)庫中的一名被試進行纖維束分割的結果。顯示的分割束包括丘腦輻射(B)、胼胝體節(jié)段(C)、弓狀束(D)、扣帶束(E)、下縱束、下額枕束、鉤狀束、皮質脊髓束和穹窿束(F)。圖4顯示了使用SWM束圖譜的分割結果。該圖譜包括93個束,根據(jù)從Desikan-Killiany圖譜中提取的解剖ROIs進行標記。四組短聯(lián)合纖維束為:尾側額中束(B)、喙側額中束(C)、枕外側束(D)和緣上束(E)。
圖3.使用DWM束圖譜進行分割的結果。
圖4.使用SWM束圖譜進行分割的結果。
聚類模塊
①HClust子模塊
HClust是一種分層聚類算法,它基于成對纖維之間的距離測量來創(chuàng)建束。該算法通過使用纖維點之間的最大歐氏距離(公式1)計算了纖維束數(shù)據(jù)集中所有纖維對之間的距離矩陣(dij)。然后,對于歐式距離小于最大距離閾值(fiber_thr)(mm)的纖維對,在dij矩陣上計算親和圖。親和度由公式(2)計算得到。
其中dij是元素i和j之間的距離,σ是定義相似度的參數(shù)(單位為mm)。
HClust的輸入如下(圖5B1):
1.file_in:輸入的示蹤數(shù)據(jù)文件。
2.dir_out:存儲算法生成的所有結果的目錄。
3.fiber_thr:最大距離閾值(單位:mm),默認為30mm。
4.partition_thr:自適應分割閾值(單位:mm),默認為40mm。
5.variance:相似度(mm),默認60mm。
圖5.聚類模塊圖示。
HClust輸出為:
1.final_bundles:將所有生成的帶有簇編號標簽的纖維聚類存儲在目錄中,并以bundle格式保存在單獨的文件中。
2.centroids:包含每個已創(chuàng)建聚類的質心的目錄,以bundle格式保存在單個文件中。
3.bundles_id:一個文本文件,存儲了被試纖維示蹤數(shù)據(jù)集中每個聚類纖維的索引。
4.outputs:臨時目錄。
圖6展示了將HClust算法應用于包含4000條纖維的示蹤數(shù)據(jù)集的結果。左圖顯示了在聚類之前以藍色呈現(xiàn)的4000條纖維的示蹤情況,右圖顯示了手動選擇并使用隨機顏色調色板的八個纖維簇。本研究建議將HClust算法應用于最多包含40000條纖維的示蹤數(shù)據(jù)集。如果希望將其應用于整個大腦并使用更大的數(shù)據(jù)集,則可以考慮首先利用FFClust的被試內聚類,然后將HClust應用于FFClust質心的策略。
圖6.使用HClust計算中央后區(qū)域纖維示蹤的結果。
②FFClust子模塊
FFClust(快速纖維聚類)是一種被試內聚類算法,旨在識別大型纖維示蹤數(shù)據(jù)集上緊湊且均勻的纖維簇。該算法包括四個階段。首先,它在五個特定的纖維點上應用小批量K-Means聚類(階段1),并合并共享相同點簇的纖維(階段2)。然后,將小簇重新分配給較大的簇(階段3),依次考慮纖維的正反序距離。最后,該算法將共享中心點的簇分組并合并由其質心表示的相近簇(階段4)。纖維之間的距離被定義為對應纖維點之間的最大歐氏距離。該算法支持使用OpenMP進行順序和并行執(zhí)行。圖5B2顯示了模塊的層次結構。其輸入包括:
1.file_in:輸入示蹤數(shù)據(jù)集文件。
2.dir_out:存儲算法生成的所有結果的目錄。
3.points:點聚類(階段1)中使用的點的索引,默認值:0、3、10、17、20。
4.ks:使用K-Means(階段1)計算每個點的聚類數(shù),默認值:300、200、200、200、300。
5.assing_thr:簇重新分配的最大距離閾值(單位:mm)(階段3),默認值:6.0mm。
6.join_tht:簇合并的最大距離閾值(單位:mm)(階段4),默認值:6.0mm。
FFClust的輸出結構類似于HClust模塊。
圖7顯示了將FFClust應用于全腦示蹤數(shù)據(jù)集的結果(包含150萬條流線)。使用Utils模塊的PostProcessing子模塊對檢測到的簇進行篩選,以簡化結果可視化。左圖顯示了尺寸大于150且長度在50-60mm之間的簇,而右圖顯示了尺寸大于100且長度大于150mm的簇。
圖7.使用FFClust算法獲得的結果。
Utils模塊
Utils模塊是一組用于示蹤數(shù)據(jù)集預處理以及大腦纖維聚類和分割結果分析的工具。該模塊包括用于讀寫大腦纖維文件(以bundles格式)、將纖維轉換到基于變形場的參考坐標系中、在一定數(shù)量的等距點上對纖維進行采樣、計算腦纖維集之間的交點,以及提取測量值和過濾纖維簇或分割束的工具。本研究考慮了每個簇(或束)的大小、平均長度(mm)以及纖維之間的距離(mm)等指標。
①Deform子模塊
Deform子模塊(圖8C1)使用非線性變換文件將示蹤數(shù)據(jù)集文件轉換到另一個空間。這些圖必須以NIfTI格式存儲,其中包含要應用于每個體素3D空間位置的變換信息。Deform子模塊將變換應用于纖維點的3D坐標。Deform模塊需要的輸入數(shù)據(jù)包括形變圖、待變換纖維的文件路徑以及變換后的輸出文件路徑。
圖8.Utils模塊圖示。
圖9顯示了在示蹤數(shù)據(jù)集上應用變換函數(shù)的結果,使用解剖圖像作為可視化參考。左圖顯示了在應用變換之前的結果,而右圖顯示了將示蹤數(shù)據(jù)集變換到MNI空間后的結果。在左圖中可以看到明顯的錯位,而右圖則是進行校正后的結果。
圖9.使用Deform子模塊進行纖維變換的示例。
②Sampling子模塊
示蹤數(shù)據(jù)集通常由大量具有可變數(shù)量點的三維折線組成。Sampling子模塊(圖8C2)對纖維進行采樣,使用一定數(shù)量的等距點重新計算它們的點。該算法的輸入數(shù)據(jù)包括待采樣的示蹤數(shù)據(jù)集文件路徑,具有n個點的纖維束輸出文件,以及點數(shù)(npoints)。Sampling子模塊用于分割和聚類算法的預處理階段。
③Intersection子模塊
Intersection子模塊(圖8C3)計算兩組腦纖維之間的相似度,它使用最大距離閾值(mm)來判斷兩種纖維是否相似。兩組纖維必須處于同一空間。首先,計算兩組纖維之間的歐氏距離矩陣。然后計算一組纖維與另一組纖維相似的纖維數(shù)量。相似性度量值的取值范圍為0-100%,即輸出的是相似性百分比。
④PostProcessing子模塊
PostProcessing子模塊(圖8C4)包含一組可用于對聚類和分割算法生成的結果進行進一步處理和分析的工具。該工具構建了一個Pandas庫對象(Dataframe),其中每個鍵對應于纖維集的名稱(簇或分割束),其次是在纖維集上定義的度量指標,如纖維數(shù)量(大小)、纖維束內距離(mm)和平均長度(mm)。它可用于對聚類或分割結果執(zhí)行單個或多個特征篩選。
可視化模塊
可視化模塊能夠呈現(xiàn)多種類型的3D對象,包括纖維示蹤數(shù)據(jù)集、網(wǎng)格和MRI掃描層或體積。對于每個對象,都定義了一組可以通過圖形用戶界面(GUI)訪問的功能。GUI支持同時可視化多個對象,并對腦纖維示蹤數(shù)據(jù)集應用線性變換等。圖10說明了可視化模塊的流程圖。
圖10.可視化模塊圖示。
①可視化算法
纖維示蹤數(shù)據(jù)集文件可以用線條或圓柱形式呈現(xiàn)。在線條情況下,軟件加載流線,并為每個頂點定義一個固定的法線,該法線對應于流線特定段的歸一化方向。此外,頂點著色器中的Phong光照算法用于計算流線的顏色。MRI數(shù)據(jù)使用特定的著色器進行層可視化和體繪制。網(wǎng)格可以使用點、線框或陰影三角形來顯示。
②基于ROI的交互式3D纖維束分割
該功能允許用戶使用球形感興趣區(qū)域(ROI)交互式地提取纖維束。在內部,它創(chuàng)建了一個基于點的數(shù)據(jù)結構(Octree)用于快速查詢。當一個節(jié)點被填滿并且添加了一個新點時,該節(jié)點將其邊界框細分為八個新的非重疊節(jié)點,并將點移動到新節(jié)點中。
在查詢過程中,不同的3D對象會檢查節(jié)點是否與邊界框發(fā)生沖突或位于邊界框內。在第一種情況下,算法會遞歸地遍歷分支節(jié)點,直到到達葉節(jié)點,在該葉節(jié)點中,會測試點并將其添加到驗證器緩沖區(qū)中。在后一種情況下,所有包含在子節(jié)點中的點都會被轉換為相應的纖維,并在纖維驗證器緩沖區(qū)中標記為已選。每個對象的所選纖維可以用于邏輯數(shù)學運算(AND、OR、XOR、NOT)。這樣可以使用多個ROI來尋找連接特定區(qū)域的纖維,同時排除其他區(qū)域的纖維。圖11展示了選擇與兩個ROI(綠色和紫色)相交的纖維,同時排除了與藍色ROI相交的纖維。
圖11.使用可視化模塊進行基于ROI的交互式3D纖維分割。
結論
本研究提出了一個名為Phybers的軟件庫,其中包含用于分析腦纖維束的最先進工具,旨在為科學界提供便利。Phybers集成了諸如纖維束分割、纖維聚類和可視化算法等工具。此外,還集成了用于對纖維示蹤數(shù)據(jù)集進行采樣和轉換的實用工具,以及用于計算纖維束之間交集并對纖維集進行后處理的工具。該庫提供了示例數(shù)據(jù)和詳盡的文檔,并且在開發(fā)時考慮到了可擴展性,因此可以集成其他現(xiàn)有的最先進算法??偟膩碚f,Phybers有助于促進這些算法的運用,并實現(xiàn)最先進工具的更好共享。
參考文獻:González Rodríguez LL, Osorio I, Cofre G. A, Hernandez Larzabal H, Román C, Poupon C, Mangin J-F, Hernández C and Guevara P (2024) Phybers: a package for brain tractography analysis. Front. Neurosci. 18:1333243. doi: 10.3389/fnins.2024.1333243
小伙伴們關注茗創(chuàng)科技,將第一時間收到精彩內容推送哦~