matlab 读写磁共振影像.nii 数据

news2024/11/20 12:25:19

问题描述:

  参考LEiDA方法和周昌松老师的large-scale network 的分离整合的划分[1],脑区划分结束后需要把脑区的结果用脑图的形式呈现出来,但是因为我划分脑区的结果都是保存在mat文件里,Brainnet Viewer 则需要使用 .nii 类型的文件。因此,研究了一下如何将数据写入.nii文件。

在这里插入图片描述

加载BrainNet Viewer的样例数据

nifti_data = load_nii('D:\Program Files\ThirdTools\BrainNetViewer_20191031\Data\ExampleFiles\AAL90\aal.nii');

数据结构

nifti_data = load_nii('D:\Program Files\ThirdTools\BrainNetViewer_20191031\Data\ExampleFiles\AAL90\aal.nii');

% Extract the voxel values
voxel_values = nifti_data.img(:);

% Filter out zero values
non_zero_values = voxel_values(voxel_values ~= 0);

% Calculate basic statistics
mean_value = mean(non_zero_values);
median_value = median(non_zero_values);
min_value = min(non_zero_values);
max_value = max(non_zero_values);

通过代码,也可以判断数据存储在nifti_data.img中,1表示的是脑区1,2表示脑区2,3表示脑区3…,以此类推。

如果只是划分脑网络,那么就只需要将脑区x的值x替换为所属的脑区y,就可以实现脑区划分,

如果需要达到参考文献C图的效果,以参考文献中的第4层8个网络为例,我们需要将img中保存的116个脑区的所属的脑区id替换为该脑区对应的特征向量。

实际操作过程中遇到了数据无法保存的问题,原因是样例aal.nii文件的.img 格式为unit8,表示无符号,因此,我们写入的负数、小数值会被强制转换为无符号整数,因此,修改数据前需要先修改数据类型,数据类型的具体描述在save_nii.m 文件中有详细说明。

%%----*** 保存每个不同level的network***---
function write_tonii(level)
    disp(level);
    % Load the original NIfTI file
    nifti_data = load_nii('D:\Program Files\ThirdTools\BrainNetViewer_20191031\Data\ExampleFiles\AAL90\aal.nii');

    % 设置数据格式,数据格式在save_nii.m文件中有详细说明,此处选则浮点型,代码为16
    nifti_data.hdr.dime.datatype=16;
    nifti_data.hdr.dime.bitpix=16;
    %将模板文件中的unit8改成浮点型,然后写入数据
    modified_data = double(nifti_data.img);
    %加载我的数据,脑区与特征向量值的对照表,这个表格的数据是从mat文件中读取后整理成csv格式了,也可以直接整理成mat格式保存
    dataTable = readtable(['F:\projects\LEiDA-BD\df_sorted_desc_',num2str(level),'.csv'], 'Delimiter', ',');

    % 写代码,将相应的脑区的数据更改为对应的值然后保存。
    for i = 1:116
        indices = find(modified_data ==i);
        % 根据脑区值获得对应的特征向量值保存到 nii.img 中
        eigen_value =  dataTable.eigen_value(dataTable.region_id == i);
        modified_data(indices) =eigen_value;
    end

    % Update the data in the NIfTI structure
    nifti_data.img = double(modified_data);
    
    % Save the modified NIfTI file with the same format and information
    save_file = ['aal_level',num2str(level),'_eigen_network.nii'];
   
    save_nii(nifti_data, save_file);

然后,使用BrainNet Viewer查看结果,如下图所示。
在这里插入图片描述

参考文献:
[1] Wang, et al. (2021). Segregation, integration, and balance of large-scale resting brain networks configure different cognitive abilities. Proc Natl Acad Sci U S A, 118(23). doi:10.1073/pnas.2022288118

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

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

相关文章

中国xx集团信息技术工程师面试

进入面试间,坐着三位面试官,压力扑面而来,三位面试官先做了自我介绍,介绍了一下面试的流程后才开始面试。 一、自我介绍 不多说。 二、看你学过数据挖掘这门课,能简单介绍一下有哪些章节,学了些什么&…

PHP 智能物业管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 智能物业管理系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP小区物业管理系统1 代码 https://download.csdn.net/download/qq_41221322/88444…

相似性搜索:第 7 部分--LSH 组合物

Vyacheslav Efimov – Medium S相似性搜索是一个问题,给定一个查询,目标是在所有数据库文档中找到与其最相似的文档。 一、说明 在数据科学中,相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中,其中需要检索最相关的文档或项…

机器人控制算法——TEB算法—Obstacle Avoidance and Robot Footprint Model(避障与机器人足迹模型)

1.How Obstacle Avoidance works 1.1处罚条款 避障是作为整体轨迹优化的一部分来实现的。显然,优化涉及到找到指定成本函数(目标函数)的最小成本解(轨迹)。简单地说:如果一个计划的(未来&…

python manage.py makemigrations报错key error

django 运行 python manage.py makemigrations 报错 KeyError 解决:不知道原因, 删除了migration记录就可以了

异或运算.

相同为0,不同为1。 1 ^ 10 0 ^ 00 1 ^ 01 0 ^ 11性质: 0 ^ N N N ^ N 0交换、结合 a ^ b b ^ a; (a ^ b) ^ c a ^ (b ^ c); 因此异或全部的元素的结果就是那个只出现1次的元素。 实现两个值的交换,而不必使…

如何选择优质的静动态住宅代理IP提供商?用前必看

当前,当网络隐私和数据安全备受关注时,住宅代理的使用已成为不可或缺的资源。从网络抓取者和营销人员到安全爱好者和在线安全爱好者,住宅代理在执行任何在线活动时提供基本的匿名性。 然而,并非所有住宅代理提供商都是相同的&…

coreldraw2019安装包下载安装步骤教程

安装之前一定要退出杀毒软件,所有的杀毒软件都要退出。无论360,腾讯管家,或者电脑自带的安全中心,要不然会阻止安装。 第一步:打开安装包 CorelDRAW2019win下载如下:https://wm.makeding.com/iclk/?zoneid55678 Co…

企业著作权数据的价值:探索企业作品著作权API的应用

引言 随着知识经济的崛起,企业的知识产权和著作权保护变得愈发重要。企业拥有大量的著作权作品,包括文档、软件、设计、创意和更多。这些作品代表了企业的创新和核心价值。为了更好地保护和管理这些资产,企业可以探索企业作品著作权API的应用…

《Operating Systems:Three Easy Pieces》 操作系统导论【二】 虚拟化内存

【Operating Systems:Three Easy Pieces 操作系统导论 】 (九) 抽象:地址空间 早期系统 操作系统曾经是一组函数(实际上是一个库),在内存中(在本例中,从物理地址0开始),然后有一…

视频下载小助手儿开通了视频号下载功能

不少人对视频号都有视频下载的需要,但由于平台并不提供该功能,我们视频下载小助手儿,就提供了视频号的视频下载功能。 为什么起名叫下载小助手儿呢? 下载小助手儿更直观让用户了解到他可以下载视频号的视频,但不局限与…

Shopee买家通系统怎么用的?

Shopee买家通系统操作简单方便,可直接根据详细操作文档或操作演示视频进行设置操作。 1、自动批量注册买家号 准备好相应的账号资料后按照软件所需格式填写好之后即可运行注册,运行注册时可以自动输入手机号、自动处理遇到的图形验证、自动接收短信、自…

大模型时代如何拥抱原生AI?“云智一体”千帆改变AI格局

前言 前不久相信很多开发者都被一则“生成未来”视频直播刷屏朋友圈,而直播的正是百度的创始人李彦宏。10月17日,百度世界2023在北京首钢园召开,“大模型带来的智能涌现,这是我们开发AI原生应用的基础。”我们即将进入一个AI原生…

调优zuul1.x(基于arthas)

0. 目录 1. 说在前面2. 关键arthas命令3. 弯路3.1 铺天盖地的宣传下,对于zuul1.x性能信心不足。3.2 zuul1.x 避免开启zuul.debug.request配置,尤其是在性能调优时。3.3 redis的读取存在破20ms的情况。 4. 额外收获4.1 在线动态启停ZuulFilter&#xff1a…

前端页面左右布局,点击左div增加动画过渡效果

效果图如下 以下代码基于Vue2 <template><div class"container"><div class"left-section" :style"{ width: widthLeft vw }" click"toggleRightSection"></div><div class"right-section" :s…

阿里5年经验之谈 —— 接口测试用例如何编写?

接口测试用例如何编写&#xff1f;下面简单给大家讲解一下。 接口测试用例是目前软件开发中不可或缺的一个重要部分&#xff0c;因此编写接口测试用例同样重要。 接口测试用例的作用非常明显&#xff0c;它能够帮助我们了解产品正在考验、调整它如何表现在特定情境之下、产品…

工欲善其事,必先利其器,五款实用的办公软件推荐

​ 你电脑中用的最久的软件是哪些&#xff1f;以下是否有你曾经使用过的软件呢&#xff1f;工欲善其事&#xff0c;必先利其器&#xff0c;今天继续分享五款实用的办公软件。 1.屏幕调节——f.lux ​ f.lux是一款可以根据时间和地点自动调节屏幕亮度和色温的软件&#xff0c;…

除静电感测型离子风棒在无尘车间中的应用

除静电感测型离子风棒是一种能够检测静电并及时释放离子的离子风棒&#xff0c;在无尘车间中应用非常广泛。以下是除静电感测型离子风棒在无尘车间中的应用&#xff1a; 防止静电干扰&#xff1a;在无尘车间中&#xff0c;静电干扰会影响电子元器件和仪器设备的正常工作&#x…

Airpods的电池健不健康不直观,但例行检查很重要!如何检查Airpods的电池健康状况

有几种不同的方法可以检查Airpods的电池健康状况。第一种方法是转到iPhone上的“设置”应用程序&#xff0c;然后选择“电池”在这里&#xff0c;你将看到当前通过蓝牙连接到iPhone的所有设备的列表。 如何在Airpods上检查电池健康状况 从这个列表中选择你的Airpods&#xff0…

Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]

Elasticsearch Relevance Engine—为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解] 今天要介绍的 Elasticsearch Relevance Engine™ (ESRE™)&#xff0c;提供了多项用于创建高度相关的 AI 搜索应用程序的新功能。ESRE 站在 Elastic 这个搜索领域的巨人…