当前位置: 首页 > news >正文

帝国cms手机网站网站 空间 备案

帝国cms手机网站,网站 空间 备案,网页设计与制作初学者教程,店铺装修一平方大概多少钱之前一直使用ggseg呈现结果#xff0c;最近想试一试其他绘图工具。ENIGMA-toolbox有所了解#xff0c;绘图功能看起来门槛不高#xff0c;所以就试着用它呈现一些结果。Matlab版本的ENIGMA-toolbox直接使用就是SurfStat的功能绘图#xff0c;Python版本的绘图功能应该是根据… 之前一直使用ggseg呈现结果最近想试一试其他绘图工具。ENIGMA-toolbox有所了解绘图功能看起来门槛不高所以就试着用它呈现一些结果。Matlab版本的ENIGMA-toolbox直接使用就是SurfStat的功能绘图Python版本的绘图功能应该是根据SurfStat的绘图思路进行改写的。 下载和安装 参照官网不再赘述。需要注意的是该工具包依赖的numpy和pandas版本较老若不想降级numpy和pandas的话可以到工具包安装位置使用VScode将工具包中以下内容进行修改。 numpy已经没有.float和.int的属性了因此np.float 应该改成float np.int改成intpandas新版本不再使用error_bad_lines作为输入因此需要将error_bad_linesFalse改为on_bad_linesskip 当然另外一种办法就是conda建立虚拟环境按要求安装依赖也是可行的。 2. 准备Desikan结果--载入python--根据标签匹配顺序--绘图 绘制统计结果只需要将其按照工具包所需的格式准备即可具体而言就是脑区的顺序需要和ENIGMA-Toolbox保持一致。这个工具并不像ggseg一样是根据脑区的标签进行数据匹配的因此使用该工具时需要确保标签和数据的顺序与工具包默认的顺序一致 x 3 Desikan 68个区域(第一列结束后紧接第二列) 皮层下区域(第一列结束后紧接第二列) 快速找到这些区域顺序的方式就是载入ENIGMA-Toolbox自带的一个结果文件 from enigmatoolbox.datasets import load_summary_stats sum_stats load_summary_stats(22q) CT_vector sum_stats[CortThick_case_vs_controls][Structure] SV_vector sum_stats[SubVol_case_vs_controls][Structure] 把它做成一个dataFrame用于匹配顺序 CT_order_df pd.DataFrame(CT_vector.tolist(), columns[Dependent Variable]) SV_order_df pd.DataFrame(SV_vector.tolist(), columns[Dependent Variable]) 使用Merge的方式将载入的数据集根据标签的顺序进行匹配。当然这不是必须的如果将结果载入之前已经确保顺序没问题就可以直接用数据作图。 CT_df_reordered pd.merge(CT_order_df, CT_df, onDependent Variable, howleft) SV_df_reordered  pd.merge(SV_order_df, SV_df, onDependent Variable, howleft) 获取需要呈现的统计值(这里是Cohens d)然后使用parcel_to_surface函数将各个区域的数据映射到surface的vertex上面就可以绘图了。 from enigmatoolbox.utils.parcellation import parcel_to_surface from enigmatoolbox.plotting import plot_cortical, plot_subcortical CT_d CT_df_reordered[Cohen\s d] CT_d_fsa5 parcel_to_surface(CT_d, aparc_fsa5) # Project the results on the surface brain plot_cortical(array_nameCT_d_fsa5,surface_namefsa5,size(1200, 600),cmapRdBu_r,color_barFalse,color_range(-1.8, 1.8),screenshotTrue,filenameos.path.join(plot_path,CT_d_all.png),background(1, 1, 1),transparent_bgFalse,scale (3,3)) 对于皮层下区域由于区域比较少不需要单独做parcel_to_surface直接绘图即可。 SV_d SV_df_reordered[Cohen\s d] plot_subcortical(array_nameSV_d, size(1200, 600),cmapRdBu_r, color_barFalse, color_range(-1, 1),screenshotTrue,filenameos.path.join(plot_path,SV_d_all.png),background(1, 1, 1),transparent_bgFalse,scale (1,1)) parcellated-vertexwise的转换比想象中的简单surface_to_parcel或者parcel_to_surface函数使用了一个vertex到ROI的映射表进行相互转换。 这是该工具包提供的映射表有desikan, glasser360, schaefer100, 200,300,400, economo_koskinas都是可以用该方式绘制和保存的没有的模板也可以自己制作映射表绘制。 另外可以试用matlab的这个函数查看annot文件相关信息判断映射表中区域的信息是否准确。 read_annotation(fsa5_lh_aparc.annot) 3. 保存 无论是plot_cortical还是plot_subcortical都默认使用了VTK生成图形它们可以缩放和旋转要保存图片需要将画图函数中的screenshot设置为True并设置filename为保存文件的位置和名称。此外由于后续有拼图的需要建议将colorbar关闭拼图完成后手动添加一个colorbar。 4. 拼图 Python拼图的工具好像不多(?!)此外plot_cortical和plot_subcortical函数都是基于VTK作图保存是截图的方式并不返回plt内容大部分的拼图工具可能也不好使。所以建立一个简单工作流完成拼图 读取图片subplot展示图片裁剪(删除全白色的行和列裁剪时如果想留白某一位置可以将该位置加入非白元素。保存 将上述步骤封装为函数方便多次调用。 def merge_images(images_dict, output_file, trim_edgesFalse):Merges a list of images into a single figure and saves it, based on provided image information.Parameters:- images_dict: List of dictionaries, each containing file_path and title for each image.- output_file: Path where the merged image should be saved.- trim_edges: Whether to trim white edges from the merged image before saving.# Example usage:images_dict [{file_path: os.path.join(plot_path, CT_d_all.png), title: Cortical},{file_path: os.path.join(plot_path, SV_d_all.png), title: Subcortical}]output_file os.path.join(plot_path, CT_SV_d_all.png)merge_images(images_dict, output_file, trim_edgesTrue)n_images len(images_dict)fig, axs plt.subplots(n_images, 1, figsize(12, 7 * n_images))for i, img_info in enumerate(images_dict):img mpimg.imread(img_info[file_path])axs[i].imshow(img)axs[i].axis(off)title_text img_info.get(title, )axs[i].set_title(title_text, y0.7, fontdict{family: sans-serif, fontsize: 18},)# Adding a subtle marker (barely visible)axs[i].text(0.5, 0.65, |, fontsize12, color(0.995, 0.995, 0.995), hacenter, transformaxs[i].transAxes)axs[i].text(0.5, 0.75, |, fontsize22, color(0.995, 0.995, 0.995), hacenter, transformaxs[i].transAxes)plt.tight_layout()plt.savefig(output_file, bbox_inchestight,dpi300)if trim_edges:# Load the saved image, trim edges, and save againmerged_img mpimg.imread(output_file)trimmed_img trim_white_edges(merged_img)plt.imsave(output_file, np.ascontiguousarray(trimmed_img),dpi300)def trim_white_edges(img_array):Trim white edges from an image with pixel values normalized to the 0 to 1 range.Parameters:- img_array: Image array with pixel values in the range [0, 1].Returns:- Cropped image array with white edges removed.# Detect pixels that are not completely white (assuming white is [1, 1, 1])mask np.any(img_array 1, axis-1)# Find the rows and columns that contain non-white pixelsrows np.any(mask, axis1)cols np.any(mask, axis0)# Crop the image to these rows and columnscropped_img img_array[rows][:, cols]return cropped_img 调用函数即可拼图 images_dict [{file_path: os.path.join(plot_path, CT_d_all.png), title: Cortical},{file_path: os.path.join(plot_path, SV_d_all.png), title: Subcortical} ] output_file os.path.join(plot_path, CT_SV_d_all.png) merge_images(images_dict, output_file, trim_edgesTrue) 图中在subplot标题下加入了非白元素(肉眼难以识别)从而增加title和图片的距离另外可以看到由于subplot标题的存在左右半球之间的空白区域并未被移除正好使得布局看起来更美观。美中不足的是皮层下区域看起来略大所以在手动加colorbar的时候可以调一下大小。 该函数可以一次拼接多个png图片比如以下病例-对照结果 images_dict [{file_path: os.path.join(plot_path, CT_d_{}.png.format(condition_name)), title: condition_name} for condition_name, _ in conditions] output_file os.path.join(plot_path, all_CT_d_maps.png) merge_images(images_dict, output_file, trim_edgesTrue) 往期推荐 ENIGMA-Toolbox R|ggsegExtra绘制Desterieux统计结果 R| ggseg 绘制统计结果
http://www.zqtcl.cn/news/906/

相关文章:

  • 带数据库的网站做郑州高新区做网站开发的公司
  • 全屏 网站 代码188自助建站系统
  • 怎样做理财投资网站免费网站模板的制作方法
  • 音乐网站网页设计成都做网站建设
  • 北京网站开发培训本地最新招聘信息
  • 政务公开网站建设重点怎么注册自己的微网站
  • 游戏开发网站开发软件公司 网站建设费分录
  • 太原开发网站公司线上外贸平台有哪些
  • 阿里云二级域名网站怎么建设美食网站建设的意义
  • 丽水做网站企业电子商务网站建设重要性
  • 简要描述网站开发过程虚拟资源交易商城wordpress
  • 邵阳做网站的公司优质服务的网站设计制作
  • 桂林建站黑马程序员怎么样
  • 定制网站与模板网站的主要区别龙湖什么网站做宣传
  • 网站域名已经被绑定wordpress虚拟阅读量
  • 个人做百度云下载网站吗wordpress主题祥情在那改
  • 江苏省建设厅的官方网站太原做网站费用
  • 服装品牌网站开发php自己做的网页怎么连接到网站
  • 企业为什么要网站建设点餐小程序开发
  • 无锡seo网站管理重庆建设安全员信息网站
  • 佛山乐从网站建设金华市网站建设
  • 自己的简历怎么制作网站免费公司网址怎么注册
  • 余姚网站建设62752762上海拍牌网址
  • 搬家公司电话灰色seo关键词排名
  • 开封府景点网站建设的目的餐饮企业网站建设方案书
  • 网站系统解决方案网页设计与制作用什么软件
  • 凤岗镇网站建设公司昆明网站建设公司哪家口碑好
  • 建立商务网站步骤烟台网站推广
  • 网站生成小视频广告
  • 律师网站维护个人承包工程需要什么资质