news 2026/10/27 1:43:00

神经元3D可视化入门:malecns read_mcns_meshes读取网格与绘图完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
神经元3D可视化入门:malecns read_mcns_meshes读取网格与绘图完全指南

【免费下载链接】malecns

Access to the latest 'Janelia FlyEM' datasets

项目地址:https://gitcode.com/gh_mirrors/mal/malecns
点击查看免费下载

malecns 是一个 R 语言包,为 natverse 生态提供访问 Janelia FlyEM「雄性果蝇中枢神经系统」(male-cns)完整数据集的便捷接口。它的核心能力之一,是通过read_mcns_meshes()函数从分割数据中提取神经元的三维网格(mesh),再用plot3d()等命令完成神经元 3D 可视化。本文将带你从零开始,走完「安装 → 认证 → 读取网格 → 绘制神经元」的完整流程。

malecns 是什么?🧠

malecns 对接的是 Janelia 与剑桥大学合作产出的雄性果蝇全脑连接组数据集,覆盖从脑到腹神经索(VNC)的完整神经结构。相比直接用 neuprintr 访问,malecns 提供了额外便利:

  • 可直接获取元数据列,如flywireType(FlyWire-FAFB 类型)、mancType(雄性 VNC 类型)、itoLeeHl(半谱系身份)等
  • 内置脑表面模型数据(malecns.surf、malecns_shell.surf等,定义见 R/data.R)
  • 一批以mcns_开头的分析函数,如mcns_ids、mcns_soma_side、mcns_scene

下图展示了数据集中不同类型神经元的 3D 渲染,可直观感受 malecns 数据集的规模与形态多样性:

安装 malecns:两步快速上手

推荐通过 natverse 官方管理器 natmanager 安装,一条命令即可完成依赖解析:

install.packages("natmanager") natmanager::install(pkgs = "natverse/malecns")

配置 Neuprint 认证

read_mcns_meshes()底层依赖 neuprint 服务访问分割数据,需要设置一个 token:

  1. 浏览器登录 neuprint.janelia.org,点击右上角头像进入 Account 页面复制 token
  2. 用usethis::edit_r_environ()打开环境变量文件,粘贴:
neuprint_token="eyJhbGci..."

配置可用后可运行dr_malecns()做一次环境自检,它会显示当前数据集、node 状态等信息。

核心函数:read_mcns_meshes() 参数详解

read_mcns_meshes()定义于 R/mesh.R,文档见 man/read_mcns_meshes.Rd。它的签名是:

read_mcns_meshes(ids, units = "nm", type = "auto", node = "neutu", df = NULL, ...)
参数作用说明
ids神经元标识接受 body id 数字、符号名(如'VM6_adPN')或正则(如"/type:(DA1\|DL3)_lPN"),也可传入 data.frame
units返回单位nm(默认)、microns、raw(体素),内部按/1000、/8换算
type网格来源auto(默认)→dvid→small,见下方说明
nodeDVID node默认neutu当前活动节点
df附加数据data.frame 会作为 neuronlist 的元数据挂接

函数返回 nat 包的neuronlist对象,每个元素是一个mesh3d三维网格,天然兼容plot3d()。

type 参数怎么选?🤔

源码(R/mesh.R#L59-L75)揭示了三种策略的差异:

  • dvid:使用 DVID 上预计算的网格,速度快;但神经元被编辑后会自动删除重建,存在同步延迟
  • small:调用 support 服务的small-mesh接口按需生成(decimation=0.5),实时性好但较慢
  • auto(默认):先试dvid,失败自动降级到small,行为与 flyem clio fork 一致

💡 新手建议:直接用默认的auto即可,无需纠结。

实战:从读取网格到绘制神经元

下面是一段官方示例(源自 README.md)的最短路径:

library(malecns) # 按正则匹配读取 DA1、DL3 前突触神经元的网格 ml <- read_mcns_meshes("/type:(DA1|DL3)_lPN") # 挂载元数据(包含 type 等列) ml[, ] <- mcns_neuprint_meta(names(ml)) # 按类型着色绘制 3D 图 plot3d(ml, col = type)

只有单个网格时,还可以用 rgl 的命令做更精细的渲染,例如线框模式:

ml <- read_mcns_meshes(1796013202) wire3d(ml[[1]])

下面这张图正是用上述流程绘制的:红色为 DA1 型、青色为 DL3 型触角叶投射神经元(PN),可以清楚看到它们在触角叶、脑和腹神经索之间的投射轨迹:

进阶技巧:叠加脑表面模型

malecns 自带脑表面模型malecns.surf(神经胶质区域)和malecns_shell.surf(皮层),单位为 nm。把神经元网格画在脑表面内,是论文配图的常用手法:

# 半透明脑表面 + 神经元网格 plot3d(malecns.surf, alpha = 0.1) plot3d(ml, col = type, add = TRUE) # 需要不同单位时手动换算(nm / 1000 = microns) plot3d(malecns.surf / 1e3, alpha = 0.2, col = "grey")

plot3d()的add = TRUE参数是叠加绘制的关键,alpha控制透明度,type = "wire"可切换线框风格(详见 R/data.R 的示例注释)。

常见问题排查 ✅

问题解决办法
报认证错误确认neuprint_token已写入环境变量,文件末尾要有换行
某个 id 取网格失败auto模式会自动降级到small;若仍失败,检查 id 是否属于当前数据集
想切换数据集用choose_mcns_dataset("male-cns:v1.0")切换会话内数据集
网格太大渲染慢传入的ids尽量精简,或用type = "dvid"取预计算版本

相关资源与延伸阅读

  • 函数实现源码:R/mesh.R
  • 内置表面模型数据说明:R/data.R、数据文件目录 data/
  • 函数参考文档:man/read_mcns_meshes.Rd、man/read_mcns_neurons.Rd
  • 元数据查询:man/mcns_neuprint_meta.Rd
  • 分析示例(DA1 下游连接):samples/da1ds.Rmd
  • 完整使用说明:README.md

总结

malecns 让「Janelia 全脑数据集 → R 语言 3D 图」的距离缩短到三行代码:read_mcns_meshes()读取网格、mcns_neuprint_meta()挂载类型元数据、plot3d()着色绘制。配合内置的脑表面模型,你即可快速产出 publication 级别的神经元 3D 可视化成果。下一步可以尝试read_mcns_neurons()获取完整神经突触结构,或用mcns_scene()在 Neuroglancer 中打开对应神经元场景继续深入分析。

【免费下载链接】malecns

Access to the latest 'Janelia FlyEM' datasets

项目地址:https://gitcode.com/gh_mirrors/mal/malecns
点击查看免费下载

相关推荐

上一篇:思源宋体 TTF 免费商用:7 个字重一次配齐,简体子集开箱即用
下一篇:gdown 仓库 AGENTS.md 全解:面向 AI Agent 的变更管理与协作工作流指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 1:34:45

VMware Workstation Pro 完整卸载详细图文教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 1:29:16

【芳心科技】F. 养老院电疗仪设计

实物效果图&#xff1a;实现功能&#xff1a;1. 采用 STM32 单片机作为控制核心。 2. 采用 MOSFET 开关管控制电极片的频率。 3. 通过电开关改变电极片的振幅。 4. 通过三极管改变电极片的电流。 5. 采用 LCD 显示屏进行显示。 6. 按键设置频率、振幅和电流数值。原理图&#x…

作者头像 李华
网站建设 2026/10/27 1:27:39

基于Springboot面向智慧教育的实习实践系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/27 1:26:50

基于Springboot高校科研信息管理系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华