Phybers:脑纤维束分析软件包

摘要

本研究提供了一个用于分析脑纤维束数据的Python库(Phybers)。纤维束数据集包含由表示主要白质通路的3D点组成的流线(也称为纤维束)。目前已经提出了一些算法来分析这些数据,包括聚类、分割和可视化方法。由于流线的几何复杂性、文件格式和数据集的大小(可能包含数百万条纤维束),对纤维束数据的处理并不简单。因此,本研究收集和整理了最新的脑纤维束分析方法,并将其集成到Python库中,以整合和共享脑纤维束示踪分析工具。由于计算要求较高,最具挑战性的模块需要用C/c++实现。可用的功能包括纤维束分割(FiberSeg)、分层纤维聚类(HClust)、快速纤维聚类(FFClust)、归一化到参考坐标系、纤维采样、计算大脑纤维集合之间的交点、聚类过滤工具、从聚类中计算测量值以及纤维束可视化。该库分为四个主要模块:分割(Segmentation)、聚类(Clustering)、实用工具(Utils)和可视化(Fibervis)。Phybers可以在GitHub上免费获得,并提供了样本数据和大量文档。此外,该库可以通过pip库轻松地在Windows和Ubuntu操作系统上安装。

引言

大脑结构连通性可以通过扩散磁共振成像(dMRI)进行研究。这是一种无创的在体技术,通过测量脑组织中水分子的运动,提供关于脑白质(WM)的微观尺度信息。利用dMRI数据上的扩散局部模型重建和纤维束示踪算法,可以计算出3D WM束的主要轨迹。为了简便起见,这些流线也被称为“纤维束”,尽管它们并不代表单个轴突。

多年来,随着MRI设备和重建以及纤维束成像算法的改进,用于分析纤维束成像数据集的工具也在不断发展。如今,大脑纤维束数据相当复杂,包含长短不一的纤维,以及噪声和复杂的几何结构。此外,这些数据集可能包含数百万条纤维用于概率性纤维追踪,从而产生额外的计算需求,尤其是在执行多被试分析时。这就是为什么有许多示踪数据分析算法旨在对这些数据进行聚类、识别模式、分割、过滤、可视化和计算测量值的原因。由于示踪数据具有复杂性,这些算法通常难以使用,并且需要对文件格式、输入参数和结果有深入的了解。因此,为了简化和推广dMRI的使用,一些研究小组创建了用于处理dMRI图像的软件包。这些工具提供了dMRI数据处理各步骤所需的算法,从图像失真校正到示踪分析。最终目标是开发出一套处理纤维束示踪数据的方法,以更好地描述基于高质量数据的WM纤维,并研究健康被试和病理性大脑的WM微结构。

可用于处理dMRI数据的工具有许多。表1、2总结了影像学研究社区常用的软件包。表中列出了这些工具的主要特性和功能,如编程语言、操作系统(OS)、软件许可证、dMRI格式、纤维追踪格式、扩散加权(DW)模型重建、纤维追踪、纤维聚类、纤维束分割、可视化以及纤维测量计算等。主要软件包括:BrainSUITE、Camino、Diffusion toolkit、ExploreDTI、FSL、MRtrix、Freesurfer、DSI Studio、Dipy、DiffusionKit和SlicerDMRI。

表1.dMRIs研究使用的主要软件。

图片

表2.dMRIs研究使用的主要软件。

图片

如表1、2所示,这些工具包具有不同的功能。其中一些更侧重于dMRI预处理、模型重建和纤维束成像,而其他一些则包括示踪分析方法。用户通常会使用多个软件来实现其处理流程,但需要注意文件格式、参考坐标系和三维空间。尽管有一些较为全面的工具包,但没有一个工具包涵盖所有现有的算法。

目前很少有专门用于分析示踪数据的软件包,例如纤维聚类和分割,以及纤维束过滤。因此,本研究提出了一种用于分析大脑纤维示踪数据的工具包。该工具包结合了多种纤维示踪分析工具(由本研究小组开发),其中包括使用脑纤维图谱优化的纤维束分割算法,基于K-Means的分层纤维聚类和快速纤维聚类(FFClust)算法。由于缺乏统一的代码、编程语言的多样性、多个库依赖以及缺乏示例代码/数据和文档,这些工具对外部用户而言难以应用。为此,本研究开发了一个名为Phybers的开源库,它集成了所有这些算法以及其他纤维聚类分析和可视化工具。

Phybers

Phybers包含四个模块,其中包括用于不同预处理阶段的算法。Utils套件包含用于纤维分割或聚类之前对纤维示踪数据进行预处理的工具,例如使用变形场(NIfTI格式)将纤维(bundles格式)转换到另一个空间。分析模块包括基于脑纤维束图谱的纤维束分割算法,以及快速纤维聚类(FFClust)和分层聚类(HClust)两种聚类算法。此外,还提供了一套用于分析纤维束分割和纤维聚类算法结果(bundles格式)的后处理工具。可视化模块支持不同类型的数据,例如体积(NIfTI)、网格(mesh和GIfTI格式)、纤维束(TRK、TCK和bundles)。此外,它集成了一个交互式图形用户界面(GUI),允许用户实时操纵3D对象。例如,可以通过定位两个或多个3D区域来执行脑纤维束的手动分割。

Phybers是基于Python开发的,以便在PyPI存储库中发布和更新。本研究使用C/C++和Python 3.9实现了这些算法,其中使用了numpy、nibabel、pandas和subprocess等Python依赖项。然而,所有依赖项都会随着软件包的安装而自动安装。可以使用命令$ pip install phybers来执行库安装,并且该软件发行版包含所有支持功能的示例数据和代码示例。Phybers兼容Python 3.9以上的版本,并支持Jupyter Notebook和Spyder等Python平台,为满足每个用户的特定需求提供了强大的灵活性。此外,它可以在Ubuntu和Windows系统上无缝运行,也可以通过虚拟机在macOS上使用。最后,使用Sphinx生成库文档。Phybers库包含四个模块(图1),分别定义为Segmentation、Clustering、Utils和Visualization。

图片

图1.四个模块:(A)分割,(B)聚类,(C)实用工具和(D)可视化。

Phybers层次结构

分割模块

该模块包括基于多被试图谱的白质纤维束分割算法(图2)。该方法使用相应点之间的最大欧氏距离(dME)作为纤维对之间相似性的度量,定义为:

图片

图片

图2.分割模块图示。

其中ai和bi分别表示纤维A和B中点的三维坐标,两者具有相等数量的点(Np),按直接顺序列出。这里纤维A的点依次遍历为ai=[a1,a2,…,aNp],而纤维B的点同样定义为bi=[b1,b2,…,bNp]。因此,纤维B的逆序表示为bNp−i=[bNp,bNp−1,…,b1]。

Phybers分割模块中的FiberSeg具有以下输入(图2):

1.file_in:被试的全脑纤维束成像数据集文件。这些纤维束必须与所使用的纤维束图谱位于同一参考系中,并以bundles格式表示。

2.subj_name:被试名称,用于标记结果。

3.atlas_dir:bundle图谱文件夹,其中每个bundle都存放在单独的文件中,并以21个等距点进行采样。

4.atlas_info:与所用图谱相关联的文本文件,其中存储了应用分割算法所需的信息,即图谱束的列表,包含名称、分割阈值(mm)和每个束的大小。请注意,分割阈值可以根据要使用的数据库进行调整。

5.dir_out:存储算法生成的所有结果的目录名。

FiberSeg的输出是:

1.final_bundles:存储分割后纤维束的目录,即从被试纤维束数据集中提取的图谱束,这些束被标记并以bundles式保存在单独的文件中。

2.centroids:包含每个分割束质心的目录,以bundles格式保存在单个文件中。

3.bundles_id:一个文本文件,该文件记录了每个分割束的索引。

图3显示了使用DWM束图谱对来自HCP数据库中的一名被试进行纤维束分割的结果。显示的分割束包括丘脑辐射(B)、胼胝体节段(C)、弓状束(D)、扣带束(E)、下纵束、下额枕束、钩状束、皮质脊髓束和穹窿束(F)。图4显示了使用SWM束图谱的分割结果。该图谱包括93个束,根据从Desikan-Killiany图谱中提取的解剖ROIs进行标记。四组短联合纤维束为:尾侧额中束(B)、喙侧额中束(C)、枕外侧束(D)和缘上束(E)。

图片

图3.使用DWM束图谱进行分割的结果。

图片

图4.使用SWM束图谱进行分割的结果。

聚类模块

①HClust子模块

HClust是一种分层聚类算法,它基于成对纤维之间的距离测量来创建束。该算法通过使用纤维点之间的最大欧氏距离(公式1)计算了纤维束数据集中所有纤维对之间的距离矩阵(dij)。然后,对于欧式距离小于最大距离阈值(fiber_thr)(mm)的纤维对,在dij矩阵上计算亲和图。亲和度由公式(2)计算得到。

图片

其中dij是元素i和j之间的距离,σ是定义相似度的参数(单位为mm)。

HClust的输入如下(图5B1):

1.file_in:输入的示踪数据文件。

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:包含每个已创建聚类的质心的目录,以bundle格式保存在单个文件中。

3.bundles_id:一个文本文件,存储了被试纤维示踪数据集中每个聚类纤维的索引。

4.outputs:临时目录。

图6展示了将HClust算法应用于包含4000条纤维的示踪数据集的结果。左图显示了在聚类之前以蓝色呈现的4000条纤维的示踪情况,右图显示了手动选择并使用随机颜色调色板的八个纤维簇。本研究建议将HClust算法应用于最多包含40000条纤维的示踪数据集。如果希望将其应用于整个大脑并使用更大的数据集,则可以考虑首先利用FFClust的被试内聚类,然后将HClust应用于FFClust质心的策略。

图片

图6.使用HClust计算中央后区域纤维示踪的结果。

②FFClust子模块

FFClust(快速纤维聚类)是一种被试内聚类算法,旨在识别大型纤维示踪数据集上紧凑且均匀的纤维簇。该算法包括四个阶段。首先,它在五个特定的纤维点上应用小批量K-Means聚类(阶段1),并合并共享相同点簇的纤维(阶段2)。然后,将小簇重新分配给较大的簇(阶段3),依次考虑纤维的正反序距离。最后,该算法将共享中心点的簇分组并合并由其质心表示的相近簇(阶段4)。纤维之间的距离被定义为对应纤维点之间的最大欧氏距离。该算法支持使用OpenMP进行顺序和并行执行。图5B2显示了模块的层次结构。其输入包括:

1.file_in:输入示踪数据集文件。

2.dir_out:存储算法生成的所有结果的目录。

3.points:点聚类(阶段1)中使用的点的索引,默认值:0、3、10、17、20。

4.ks:使用K-Means(阶段1)计算每个点的聚类数,默认值:300、200、200、200、300。

5.assing_thr:簇重新分配的最大距离阈值(单位:mm)(阶段3),默认值:6.0mm。

6.join_tht:簇合并的最大距离阈值(单位:mm)(阶段4),默认值:6.0mm。

FFClust的输出结构类似于HClust模块。

图7显示了将FFClust应用于全脑示踪数据集的结果(包含150万条流线)。使用Utils模块的PostProcessing子模块对检测到的簇进行筛选,以简化结果可视化。左图显示了尺寸大于150且长度在50-60mm之间的簇,而右图显示了尺寸大于100且长度大于150mm的簇。

图片

图7.使用FFClust算法获得的结果。

Utils模块

Utils模块是一组用于示踪数据集预处理以及大脑纤维聚类和分割结果分析的工具。该模块包括用于读写大脑纤维文件(以bundles格式)、将纤维转换到基于变形场的参考坐标系中、在一定数量的等距点上对纤维进行采样、计算脑纤维集之间的交点,以及提取测量值和过滤纤维簇或分割束的工具。本研究考虑了每个簇(或束)的大小、平均长度(mm)以及纤维之间的距离(mm)等指标。

①Deform子模块

Deform子模块(图8C1)使用非线性变换文件将示踪数据集文件转换到另一个空间。这些图必须以NIfTI格式存储,其中包含要应用于每个体素3D空间位置的变换信息。Deform子模块将变换应用于纤维点的3D坐标。Deform模块需要的输入数据包括形变图、待变换纤维的文件路径以及变换后的输出文件路径。

图片

图8.Utils模块图示。

图9显示了在示踪数据集上应用变换函数的结果,使用解剖图像作为可视化参考。左图显示了在应用变换之前的结果,而右图显示了将示踪数据集变换到MNI空间后的结果。在左图中可以看到明显的错位,而右图则是进行校正后的结果。

图片

图9.使用Deform子模块进行纤维变换的示例。

②Sampling子模块

示踪数据集通常由大量具有可变数量点的三维折线组成。Sampling子模块(图8C2)对纤维进行采样,使用一定数量的等距点重新计算它们的点。该算法的输入数据包括待采样的示踪数据集文件路径,具有n个点的纤维束输出文件,以及点数(npoints)。Sampling子模块用于分割和聚类算法的预处理阶段。

③Intersection子模块

Intersection子模块(图8C3)计算两组脑纤维之间的相似度,它使用最大距离阈值(mm)来判断两种纤维是否相似。两组纤维必须处于同一空间。首先,计算两组纤维之间的欧氏距离矩阵。然后计算一组纤维与另一组纤维相似的纤维数量。相似性度量值的取值范围为0-100%,即输出的是相似性百分比。

④PostProcessing子模块

PostProcessing子模块(图8C4)包含一组可用于对聚类和分割算法生成的结果进行进一步处理和分析的工具。该工具构建了一个Pandas库对象(Dataframe),其中每个键对应于纤维集的名称(簇或分割束),其次是在纤维集上定义的度量指标,如纤维数量(大小)、纤维束内距离(mm)和平均长度(mm)。它可用于对聚类或分割结果执行单个或多个特征筛选。

可视化模块

可视化模块能够呈现多种类型的3D对象,包括纤维示踪数据集、网格和MRI扫描层或体积。对于每个对象,都定义了一组可以通过图形用户界面(GUI)访问的功能。GUI支持同时可视化多个对象,并对脑纤维示踪数据集应用线性变换等。图10说明了可视化模块的流程图。

图片

图10.可视化模块图示。

①可视化算法

纤维示踪数据集文件可以用线条或圆柱形式呈现。在线条情况下,软件加载流线,并为每个顶点定义一个固定的法线,该法线对应于流线特定段的归一化方向。此外,顶点着色器中的Phong光照算法用于计算流线的颜色。MRI数据使用特定的着色器进行层可视化和体绘制。网格可以使用点、线框或阴影三角形来显示。

②基于ROI的交互式3D纤维束分割

该功能允许用户使用球形感兴趣区域(ROI)交互式地提取纤维束。在内部,它创建了一个基于点的数据结构(Octree)用于快速查询。当一个节点被填满并且添加了一个新点时,该节点将其边界框细分为八个新的非重叠节点,并将点移动到新节点中。

在查询过程中,不同的3D对象会检查节点是否与边界框发生冲突或位于边界框内。在第一种情况下,算法会递归地遍历分支节点,直到到达叶节点,在该叶节点中,会测试点并将其添加到验证器缓冲区中。在后一种情况下,所有包含在子节点中的点都会被转换为相应的纤维,并在纤维验证器缓冲区中标记为已选。每个对象的所选纤维可以用于逻辑数学运算(AND、OR、XOR、NOT)。这样可以使用多个ROI来寻找连接特定区域的纤维,同时排除其他区域的纤维。图11展示了选择与两个ROI(绿色和紫色)相交的纤维,同时排除了与蓝色ROI相交的纤维。

图片

图11.使用可视化模块进行基于ROI的交互式3D纤维分割。

结论

本研究提出了一个名为Phybers的软件库,其中包含用于分析脑纤维束的最先进工具,旨在为科学界提供便利。Phybers集成了诸如纤维束分割、纤维聚类和可视化算法等工具。此外,还集成了用于对纤维示踪数据集进行采样和转换的实用工具,以及用于计算纤维束之间交集并对纤维集进行后处理的工具。该库提供了示例数据和详尽的文档,并且在开发时考虑到了可扩展性,因此可以集成其他现有的最先进算法。总的来说,Phybers有助于促进这些算法的运用,并实现最先进工具的更好共享。

参考文献: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

小伙伴们关注茗创科技,将第一时间收到精彩内容推送哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML静态网页成品作业(HTML+CSS)—— 环保主题介绍网页(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…

多层tablayout+ViewPager,NestedScrollView+ViewPager+RecyclerView,嵌套吸顶滑动冲突

先看实现的UI效果 其实就是仿BOSS的页面效果,第二层tab下的viewpager滑到最右边再右滑,就操作第一层viewpager滑动。页面上滑时把第一层tab和vp里的banner都推出界面,让第二层tab吸顶。 滑上去第二个tab块卡在顶部,如图 我混乱…

React 渲染函数render、初始化函数、更新函数运行了两次,原因为何,如何解决? React.StrictMode

文章目录 Intro官网解释解决另一篇官网文章——初始化函数或更新函数运行了两次 Intro 我在用 react 写一个 demo ,当我在某个自定义组件的 return 语句之前加上一句log之后,发现:每次页面重新渲染,该行日志都打印了两次&#xf…

vue-loader

Vue Loader 是一个 webpack 的 loader,它允许你以一种名为单文件组件 (SFCs)的格式撰写 Vue 组件 起步 安装 npm install vue --save npm install webpack webpack-cli style-loader css-loader html-webpack-plugin vue-loader vue-template-compiler webpack…

论文阅读Rolling-Unet,卷积结合MLP的图像分割模型

这篇论文提出了一种新的医学图像分割网络Rolling-Unet,目的是在不用Transformer的前提下,能同时有效提取局部特征和长距离依赖性,从而在性能和计算成本之间找到良好的平衡点。 论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/2…

618购物狂欢节有哪些数码好物值得抢购?年终必备神器清单大揭秘!

一年一度的“618年中大促”即将拉开帷幕,大家是否已经挑选好了心仪的宝贝呢?那些平时心仪已久的商品,是否总期待着在价格最优惠时收入囊中?毫无疑问,618就是这样一个绝佳的时机,因为各大电商平台都会纷纷推…

Lecture2——最优化问题建模

一,建模 1,重要性 实际上,我们并没有得到一个数学公式——通常问题是由某个领域的专家口头描述的。能够将问题转换成数学公式非常重要。建模并不是一件容易的事:有时,我们不仅想找到一个公式,还想找到一个…

群晖NAS安装配置Joplin Server用来存储同步Joplin笔记内容

一、Joplin Server简介 1.1、Joplin Server介绍 Joplin支持多种方式进行同步用户的笔记数据(如:Joplin自己提供的收费的云服务Joplin Cloud,还有第三方的云盘如Dropbox、OneDrive,还有自建的云盘Nextcloud、或者通过WebDAV协议来…

长沙干洗服务,打造您的专属衣橱

长沙干洗服务,用心呵护您的每一件衣物!致力于为您打造专属的衣橱,让您的每一件衣物都焕发出独特的魅力。 我们深知每一件衣物都承载着您的故事和情感,因此我们会以更加细心的态度对待每一件衣物。无论是您心爱的牛仔裤&#xff0c…

sizeof和strlen

1.sizeof和strlen的对比 1.1sizeof sizeof是计算变量所占内存空间大小的,单位是:字节 如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。 sizeof只关注占用内存空间的大小,不在乎内存中存放的是什么数据 …

QML Canvas 代码演示

一、文字阴影 / 发光 Canvas{id: root; width: 400; height: 400onPaint: //所有的绘制都在onPaint中{var ctx getContext("2d") //获取上下文// 绘制带阴影的文本ctx.fillStyle "#333" //设置填充颜色ctx.fillRect(0, 0, root.width, root.height…

Stability AI发布新版文生图模型:依然开源

Stability AI最近发布了Stable Diffusion 3 Medium(简称SD3 Medium),这是其最新的文生图模型,被官方称为“迄今为止最先进的开源模型”。SD3 Medium的性能甚至超过了Midjourney 6,特别是在生成手部和脸部图像方面表现出…

一杯咖啡的艺术 | 如何利用数字孪生技术做出完美的意式浓缩咖啡?

若您对数据分析以及人工智能感兴趣,欢迎与我们一起站在全球视野关注人工智能的发展,与Forrester 、德勤、麦肯锡等全球知名企业共探AI如何加速制造进程, 共同参与6月20日由Altair主办的面向工程师的全球线上人工智能会议“AI for Engineers”…

可以自定义的文字识别OCR

可以自定义的文字识别OCR 什么是OCR文档自学习自定义模板单证票据信息抽取操作体验 这里提到的可以自定义的文字识别OCR ,其实就是OCR文档自学习。 什么是OCR文档自学习 什么是OCR文档自学习呢?OCR文档自学习,是面向“无算法基础”的企业与个…

C#——字典diction详情

字典 字典: 包含一个key(键)和这个key所以对应的value&#xff08;值&#xff09;&#xff0c;字典是是无序的&#xff0c;key是唯一的&#xff0c;可以根据key获取值。 定义字典: new Diction<key的类型&#xff0c;value的类型>() 方法 添加 var dic new Dictionar…

OZON芒果店长erp,OZON平台支持什么ERP

在跨境电商的浪潮中&#xff0c;OZON平台凭借其独特的优势&#xff0c;吸引了众多卖家入驻。然而&#xff0c;随着业务规模的不断扩大&#xff0c;如何高效管理商品、处理订单、优化仓储物流等成为了卖家们亟需解决的问题。此时&#xff0c;一款强大的ERP&#xff08;企业资源规…

线性代数|机器学习-P13计算特征值和奇异值

文章目录 1. 特征值1.1 特征值求解思路1.1 相似矩阵构造 1. 特征值 1.1 特征值求解思路 我们想要计算一个矩阵的特征值&#xff0c;一般是用如下公式&#xff1a; ∣ ∣ A − λ I ∣ ∣ 0 → λ 1 , λ 2 , ⋯ , λ n \begin{equation} ||A-\lambda I||0\rightarrow \lamb…

汇聚荣科技有限公司实力强吗?

汇聚荣科技有限公司实力强吗?在当今快速发展的科技行业中&#xff0c;公司的实力往往决定了其市场竞争力和发展前景。对于汇聚荣科技有限公司而言&#xff0c;其是否具备强大的实力&#xff0c;不仅关系到自身的发展&#xff0c;也影响着投资者和合作伙伴的选择。因此&#xf…

植物大战僵尸杂交版2.1版本重磅发布!更新内容介绍讲解

植物大战僵尸杂交版2.1版&#xff0c;简直是游戏迷们的福音&#xff01;这个版本不仅更新了大量的新植物和僵尸角色&#xff0c;还加入了更多的游戏模式和挑战关卡&#xff0c;让玩家们可以更加畅快地玩耍。 植物大战僵尸杂交版V2.1 :苹果安卓 PC防闪退工具修改工具高清工具通关…

16个不为人知的资源网站,强烈建议收藏!

整理了16个不为人知的资源网站&#xff0c;涵盖了课程学习、办公技能、娱乐休闲、小说音乐等多种资源&#xff0c;强烈建议收藏&#xff01; #学习网站 1、中国大学MOOC icourse163.org/ 这是一个汇集了国内顶尖大学免费课程资源的平台&#xff0c;众多985工程院校如北京大…