一组与形态处理相关的CLIs和Python函数
项目描述
MorphTool
形态编辑的工具箱。旨在提供执行简单任务的辅助程序。
当前MorphTool提供
形态差异工具(通过CLI或Python)
文件转换器:将形态文件从以下格式转换为/到:SWC,ASC,H5
神经元(NEURON)计算的总面积计算器(需要NEURON Python模块)
MorphIO v2和NeuroM v1
如果需要与旧NeuroM v1和MorphIO v2一起工作,请使用形态工具2.4.7版本。
文档
形态工具文档构建和托管在readthedocs。
安装
建议在新的虚拟环境中安装。
基本安装
pip install morph-tool
如果计划使用dendrogram模块
pip install morph-tool[plot]
如果计划使用nrnhines模块
pip install morph-tool[nrn]
如果计划转换形态学的文件夹
pip install morph-tool[parallel]
如果计划使用所有可用功能
pip install morph-tool[all]
用法
在shell中,执行以下命令
morph-tool --help
当前有三个子命令
morph-tool convert file input_file output_file
morph-tool diff morph1 morph2
morph-tool soma-surface input_file
形态学差异比较
可以使用CLI比较两个形态学
morph-tool diff morph1 morph2
如果形态学相同,则错误代码为0,否则为1。
可以比较不同格式的形态学。
如果以下属性之一或多个不同,则认为形态学不同
根节段数量
节段类型
节段点数组
节段直径数组
节段周长数组
节段子节点数量
soma 不被考虑
相同的功能也通过Python API提供
from morph_tool import diff
# The result can be used as a boolean:
if diff(filename1, filename2):
print('morphologies differ')
# And also contains information about how morphologies differ
result = diff(filename1, filename2)
print(result.info)
转换器
支持什么?
转换器可以用于将形态学写入不同的格式。目前,支持的格式是ASC、SWC和H5。
由于每种格式都有自己的特性,特定于特定格式的数据将被丢弃。这意味着以下内容在转换过程中将丢失
棘(存在于ASC格式中)
所有H5元数据
H5格式的周长和线粒体数据
soma 的复杂性
使用多种格式来表示 soma(主要)取决于文件格式。有关文件格式的更多信息,请参阅neuromorpho.org规范或MorphIO规范
由于不同的 soma 格式在不同的平面上表示 soma,soma 格式转换不是双射变换。例如,不可能将 H5 文件中 XY 平面的 soma 边界精确地转换为沿 Y 表示为圆柱体的 SWC soma。
因此,选择将 soma 表面视为不变量。这意味着输入和输出形态学的 soma 表面,由 NEURON 计算得出,应该得到保留。
以下是 soma 转换的可能情况
SWC 输入文件
SWC 输出文件 -> 无转换
H5 或 ASC 输出文件
取决于原始的 soma 类型
Soma 圆柱体堆栈:soma 被转换为 XY 平面的轮廓。新轮廓的点是在 XY 平面上投影的 soma 堆栈的轮廓。
Soma 三点圆柱体:soma 成为具有相同表面积的球体。XY 平面上最大节段的圆由 20 个点采样并写入磁盘。
Soma 球体(soma 由表示球体中心和半径的单一点表示):XY 平面上最大节段的圆由 20 个点采样并写入磁盘。
其他:不在 SWC 规范中 -> 不支持
H5 或 ASC 输入文件
H5 输出文件 -> 无需转换
ASC 输出文件。
取决于 soma 类型
Soma 单点球体(soma 由表示球体中心和半径的单一点表示):XY 平面上最大节段的圆由 20 个点采样并写入磁盘。
Soma 轮廓:无需转换
其他:不在 H5/ASC 规范中 -> 不支持
SWC
取决于 soma 格式
Soma 单点球体:无需转换
Soma 轮廓:生成圆柱体堆栈。堆栈中的每个圆柱体都沿着轮廓的主方向具有中心和轴线。选择堆栈的半径,以使圆柱体和轮廓之间的距离最小化。
其他:不在 H5/ASC 规范中 -> 不支持
示例
from morph_tool import convert
convert(inputfile, outputfile)
# Additionally the morphology can be recentered or written according to the NEURON neurite order during the conversion
convert(inputfile, outputfile, recenter=True, nrn_order=True)
对于 bash 也是一样
morph-tool convert file ./inputfile ./outputfile
# with additional options
morph-tool convert file --recenter --nrn-order ./inputfile ./outputfile
# or an entire folder
morph-tool convert folder -ext SWC ./h5_input_folder ./swc_output_folder
# for more info use
morph-tool convert folder --help
NRN 模拟器单元坐标
NRN模拟器将每个部分分割成等长的块(仅在同一部分内等长)。这些隔间在物理世界中并不真实存在,但我们可以将它们重新映射到该部分的路径上。每个隔间都可以与一个路径(一组三维点)相关联,使得路径和隔间的路径长度相同。
以下函数可以用来访问神经元的部分ID与该部分路径列表的映射
morph_tool.nrnhines.NeuroM_section_to_NRN_compartment_paths
以下是一个二维部分的示例
(1, 2) ------ (2, 2)
|
|
|
|
|
|
|
|
|
(0, 0) ------- (1, 0)
将此部分分割成3个隔间将产生以下路径
[[0. , 0. ],
[1. , 0. ],
[1. , 0.33333333]]
[[1. , 0.33333333],
[1. , 1.66666667]]
[[1. , 1.66666667],
[1. , 2. ],
[2. , 2. ]]
绘制包含突触的形态学
此功能仅在安装了带有 plot 扩展的包时可用
pip install morph-tool[plot]
树状图
绘制带有突触的NeuroM树状图。突触必须表示为一个DataFrame。请参阅树状图。
形态学
绘制带有突触的NeuroM形态学。突触必须表示为一个DataFrame。请参阅形态学。
简化
MorphTool还可以用于“简化”形态学。请参阅形态学。
贡献
如果您想改进此项目或发现任何问题,每个贡献都受欢迎。请查阅贡献指南以获取更多信息。
致谢
本软件的开发得到了洛桑联邦理工学院(EPFL)的研究中心——蓝脑项目的资助,该资助由瑞士联邦理工学院董事会提供。
此研究得到了EBRAINS研究基础设施的支持,该基础设施由欧盟的Horizon 2020研究和创新框架计划资助,具体协议号945539(人类脑项目SGA3)。
许可
morph-tool采用GNU Lesser General Public License版本3的条款。有关详细信息,请参阅COPYING.LESSER和COPYING。
版权(c)2018-2024蓝脑项目/EPFL