【免费下载链接】malecns
Access to the latest 'Janelia FlyEM' datasets
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:
- 浏览器登录 neuprint.janelia.org,点击右上角头像进入 Account 页面复制 token
- 用
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,见下方说明 |
node | DVID 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
相关推荐
如何在5分钟内搭建你的AI第二大脑:Quivr完整指南
如何在5分钟内搭建你的AI第二大脑:Quivr完整指南 还在为海量文档管理而烦恼吗?想让你的电脑像人类一样理解文件内容并快速回答你的问题吗?今天我要向你介绍一个
后端人工智能RAG搜索引擎神经网络可视化新选择:NN-SVG在线绘图工具完全指南
神经网络可视化新选择:NN SVG在线绘图工具完全指南 还在为学术论文中的神经网络图表而头疼吗?你是否曾经花费数小时在复杂的设计软件中挣扎,只为绘制一个清晰的网
开发工具神经网络绘图革新:NN-SVG高效可视化完全攻略
神经网络绘图革新:NN SVG高效可视化完全攻略 在深度学习研究和教学过程中,神经网络架构的可视化一直是个技术难题。传统方法要么依赖复杂的手工绘制,要么使用功能
开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考