美文网首页
使用Workbench对基于BNA246模板的统计结果进行sur

使用Workbench对基于BNA246模板的统计结果进行sur

作者: Lairai | 来源:发表于2022-10-10 15:20 被阅读0次

1. 背景

之前都是用matlab的BrainNet Viewer做可视化的,无奈BNV的bug实在太多了,并且volume画出来脑区上还动不动出现黑边...需要一款替代软件

HWJ师兄推荐并教会了我了一款替代BNV的跨平台软件:HCP的Workbench (注意还是无须matlab的
谢谢师兄~ 这里简单做个笔记

*需要Python以及numpy和nibabel包
*Workbench安装网站 https://www.humanconnectome.org/software/get-connectome-workbench

2. 效果

这几个脑还可以流畅旋转的哦

3. 核心步骤

  1. 在官网下载如下几个需要的文件


    BN那个是师兄帮我生成的= =
  2. 把的统计结果保存在一个数组里面,例如叫data

  3. 运行如下python代码就能生成用于可视化的.dscalr.nii文件[注意后缀一定是.dscalr.nii]

import nibabel as nib
import numpy as np
import os

filename = '***'      # 生成的XXX.dscalar.nii文件的路径 
atlas_file='***'      # fsaverage.BN_Atlas.32k_fs_LR.dlabel.nii这个文件的路径
atlas=nib.load(atlas_file)
atlas_data=atlas.get_fdata()
new_data=np.zeros(atlas_data.shape)
new_data[new_data==0]=np.nan
for i in range(1,211,2):
  new_data[atlas_data==i]=data[i-1]
for i in range(212,421,2):
  new_data[atlas_data==i]=data[i-211]

scalar_axis=nib.cifti2.cifti2_axes.ScalarAxis(['val'])
brain_model_axis=atlas.header.get_axis(1)
val_head=nib.cifti2.Cifti2Header.from_axes((scalar_axis,brain_model_axis))
cifti=nib.cifti2.cifti2.Cifti2Image(new_data,val_head,atlas.nifti_header,atlas.extra,atlas.file_map)
nib.save(cifti,filename)
  1. 在workbench里面导入文件(open file)软件会自动实时出图

首先同时导入

image.png

然后导入刚才python代码生成的XXX.dscalar.nii文件

你应该就可以看到最开始的效果,接下来就是一些官方文档告诉你的修图保存步骤了

还可以在软件里进行colorbar等常规设置,非常方便流畅,不同平台上软件界面会不同

点击每个layer里的🔧进行设置

一些进阶代码

1. 批量把保存在txt中的结果转换成dscalar文件
为了方便直接从命令行批量生成某一个目录下的txt,例如 % python3 txt_to_dscalar.py draw_txt/txt draw_txt/dscalr

from genericpath import exists
import nibabel as nib
import numpy as np
import os
import sys

path_txt = sys.argv[1] + "/"
path_save = sys.argv[2] + "/"

if not (os.path.exists(path_save)):
    os.makedirs(path_save)
    
atas_bna = nib.load('Workbench/fsaverage.BN_Atlas.32k_fs_LR.dlabel.nii')

def read_single_file(filepath):
    with open(filepath) as file:
        lines = file.readlines()
        lines = [line.rstrip() for line in lines]   
    data = list(map(float, lines))    
    return(data)

def save_array_as_dscalar_bna_246(data, filename, atlas = atas_bna):
    atlas_data=atlas.get_fdata()
    new_data=np.zeros(atlas_data.shape)
    new_data[new_data==0]=np.nan
    for i in range(1,211,2):
        new_data[atlas_data==i]=data[i-1]
    for i in range(212,421,2):
        new_data[atlas_data==i]=data[i-211]       
    scalar_axis=nib.cifti2.cifti2_axes.ScalarAxis(['val'])
    brain_model_axis=atlas.header.get_axis(1)
    val_head=nib.cifti2.Cifti2Header.from_axes((scalar_axis,brain_model_axis))
    cifti=nib.cifti2.cifti2.Cifti2Image(new_data,val_head,atlas.nifti_header,atlas.extra,atlas.file_map)
    nib.save(cifti,filename)

for filename in os.listdir(path_txt):
    if(filename.endswith('.txt')):
        print(filename)
        data = read_single_file(path_txt + filename)
        save_array_as_dscalar_bna_246(data, path_save + filename[:-len('.txt')] + '.dscalar.nii')

相关文章

  • 使用Workbench对基于BNA246模板的统计结果进行sur

    1. 背景 之前都是用matlab的BrainNet Viewer做可视化的,无奈BNV的bug实在太多了,并且v...

  • 基于 Java 的模板引擎Velocity快速入门

    最近使用Velocity模板引擎,写一个maven项目Coding生成工具。 对基于Java的模板引擎Veloci...

  • vue计算属性 computed

    模板中放入太多的逻辑会让模板过重且难以维护 使用计算属性可以让模板更加的简洁 计算属性是基于它们的响应式依赖进行...

  • 数据填充HTML的方法

    1. js填充 2. JS使用正则+JSON对HTML模板进行数据填充 原文地址感觉这才是原创啊:牛逼:基于HTM...

  • 用Py做文本分析3:制作词云图

    1.词频统计 在词频统计之前,需要先完成分词工作。因为词频统计是基于分词后所构建的list进行的。 1.1使用Pa...

  • Python 统计、排序

    统计Counter 统计列表中元素的个数代码如下: 运行结果如下: 接着,可以将统计完的数据使用sorted进行排...

  • MySql Workbench Read Only解决

    在统一要求下,不能使用盗版软件,对工具进行统一化,最近使用 mysql workbench时,出现一个有意思的问题...

  • 《PHP Learning》模板引擎

    《PHP Learning》模板引擎 模板处理使用正则处理模板替换规则保存模板编译结果 模板使用 自定义模板引擎 ...

  • MySQL表操作超时无响应

    使用MySQL Workbench对表进行操作时无响应,报出连接超时的错误。 Error Code: 2013 L...

  • 使用 Angular 管道

    在 Angular 框架中,我们可以使用 管道技术,对视图模板中表达式的计算结果,进行过滤和转换操作,然后对最终的...

网友评论

      本文标题:使用Workbench对基于BNA246模板的统计结果进行sur

      本文链接:https://www.haomeiwen.com/subject/crjbartx.html