实现和算法
SNT算法的高级描述可以在GitHub上找到。
在其他项目中使用SNT
目前,改进代码库的最简单方法是遵循 source-code repository 的指导。您可能需要对 IDE 和 maven 有一定的_基本_熟悉。
要在您自己的项目中使用 SNT 作为软件库,只需在项目的 pom 中添加 SNT 作为 Maven 依赖项,例如:
<!-- https://mvnrepository.com/artifact/org.morphonets/SNT -->
<dependency>
<groupId>org.morphonets</groupId>
<artifactId>SNT</artifactId>
<version>4.2.0</version> <!-- only required if pom-scijava is not being used as parent pom -->
</dependency>
有关SNT使用软件库的具体示例,请参见例如this forum thread。
管状测地线
管状测地线插件是几年前为Simple Neurite Tracer开发的,但在现代SNT中安装仍然有效。它们可以作为SNT附加组件手动安装。之后,它们允许追踪图像的过滤版本,其中使用ITK分割显着增强了神经元过程(或其他管状结构)。更多详细信息请查看以下页面:
- Tubular Geodesics homepage
- Tracing on Filtered Images
- Secondary Image Screencast
- Generating Filtered Images
管状测地线参考: doi:10.1109/cvpr.2012.6247722
痕迹文件格式
SNT保存的.traces文件是gzip压缩的XML。SNT填写并保存未压缩的XML文件,但压缩格式为默认格式。
XML DTD 包含在每个文件的 DOCTYPE 中。根元素始终为 <tracings>,它可以包含以下元素:imagesize、samplespacing、path 和 fill。
imagesize
必须恰好有一个 <imagesize> 元素,其属性描述体素中的图像尺寸:
<imagesize width="520" height="434" depth="117"/>
|属性|描述|
|————|————-|
| width|沿X轴的体素数量 |
| height | 沿 Y 轴的体素数量 |
| depth | 沿 Z 轴的体素数量 |
samplespacing
必须恰好有一个 <samplespacing> 元素,其属性描述世界坐标中的体素分布:
<samplespacing x="0.28838738962693633" y="0.28838738962693633" z="1.2" units="micrometers"/>
|属性|描述|
|————|————-|
| x|沿X的体素分布(以世界坐标单位表示)|
| y | 沿 Y 的体素分布(以世界坐标单位表示)|
| z | 沿Z轴的体素分布(以世界坐标单位表示)
| units|测量单位(例如,"micrometers")|
path
每个<path>元素代表一条跟踪路径,并且可以具有以下属性:
| 属性 | 描述 | ||
|---|---|---|---|
id |
非负整数ID,在文件中的所有路径中唯一 | ||
name |
给出该路径名称的字符串 | ||
reallength |
通过对连续点之间的欧几里德距离求并计算下面的路径长度,单位为samplespacing |
||
swctype |
根据SWC specification定义路径类型的整数标志。如果不存在则默认为 0 | ||
如果,则还必须指定已废弃用的 startsindex 或推荐的 startsx/startsy/startsz |
startson |
该路径起点分支的路径 ID。 | |
startsx、startsy、startsz |
startson给出的路径上分支点的世界坐标。如果指定了任何一项,则所有三项都必须是 |
||
endson |
该路径结束的路径的ID。如果,则还必须指定已弃用的endsindex或推荐的endsx/endsy/endsz |
§§§14§§§ | 该路径结束的路径的ID。 |
| §§§19§§§、§§§20§§§、§§§21§§§ | §§§22§§§给出的路径上该路径终止点的世界坐标。如果指定了任何一项,则所有三项都必须是 | ||
| §§§23§§§ | 另一条路径的ID,该路径是该路径的一个版本(具有调整后的中心线和半径)。与§§§24§§§互斥 | ||
| §§§25§§§ | 派生此路径的未移植源路径的ID。与§§§26§§§互斥 | ||
| §§§27§§§ | 当 §§§28§§§ 或 §§§29§§§ 时为必填项。值为 §§§30§§§ 或 §§§31§§§。对于具有传输版本的未连接路径,§§§32§§§ 表示应显示连接版本。对于连接路径,应始终为 §§§33§§§。 *注意:该属性的语义令人困惑,将在未来版本中被替换。 | ||
| 已弃用。 §§§35§§§ | 给出的路径中分支点的从0开始的索引 | ||
| 已弃用。 §§§37§§§ | 给出的路径中连接点的从0开始的索引 |
point
每个<path>可以包含零个或多个代表沿着路径的坐标的<point>元素:
| 属性 | 描述 |
|---|---|
xd、yd、zd |
该点在世界坐标中的位置。这些是用于长度计算的值 |
r |
此时神经元的半径(可选) |
tx、ty、tz |
此时神经沿元的切连接(可选) |
xyz |
放弃使用。 图像已坐标中的位置(基于 0 的体素索引) |
fill
每个<fill>元素代表路径周围的填充。它包含从路径节点开始搜索期间找到的所有点;实际填充由低于指定阈值的那些点组成。(存储完整的集合,以便在重新加载填充时恢复可以搜索。)
| 属性 | 描述 | |
|---|---|---|
id |
一个非负整数ID,在文件中的所有填充中唯一 | |
frompaths |
此填充开始的路径的分隔分隔(任选空格分隔)ID。例如,frompaths="2, 0" 表示此处填充 |
路径 2 和 0 上的节点 中的距离为0 |
metric |
填充期间使用的成本函数。(该属性名称是一个旧用词,保留是为了坚固兼容。) | |
threshold |
距离阈值。距离低于该值的点被视为填充的一部分 |
node
每个<fill>可以包含代表各个搜索节点的<node>元素:
| 属性 | 描述 | ||
|---|---|---|---|
id |
一个非负整数 ID,在封闭的填充中 | 内是唯一的 | |
x、y、z |
图像坐标中的位置(基于0的体素索引) | ||
previousid |
从原始路径到该点的最短路径上的前一个节点的ID。原始路径上缺失点(distance = 0) |
||
distance |
找到从原始路径到该节点的任何路线的最小距离。完整的路线可以通过以下previousid链接重建 |
distance |
找到从原始路径到该节点的任何路线的最小距离。 |
status |
"open" 或 "closed",其在 A* 搜索中的常规激励 |
策展文件格式
Curation Assistant使用默认文件(.curation文件扩展名)使用简单的键=值格式。每个检查参数都有一个值键和一个.enabled键。示例:
# Calibrated from NeuroMorpho.org pyramidal cells ids XX-XX (20 cells, P5/P95)
branchAngle.min=15.2
branchAngle.max=95.5
branchAngle.enabled=true
directionContinuity.minAlignment=12.3
directionContinuity.enabled=true
radiusContinuity.maxRatio=1.8
radiusContinuity.enabled=true
terminalBranchLength.minLength=3.5
terminalBranchLength.enabled=true
somaDistance.maxDist=200.0
somaDistance.enabled=true
tortuosityConsistency.maxDiff=0.2
tortuosityConsistency.enabled=true
constantRadii.enabled=true
pathOverlap.proximity=4.0
pathOverlap.enabled=true
radiusJumps.maxRatio=2.5
radiusJumps.enabled=true
radiusMonotonicity.minRun=8
radiusMonotonicity.enabled=true