navis icon indicating copy to clipboard operation
navis copied to clipboard

improve strahler_index

Open schlegelp opened this issue 2 years ago • 4 comments

Give more of a summary (perhaps split out into separate function) with e.g. cable per index, distributions, etc.

schlegelp avatar Apr 05 '22 10:04 schlegelp

Yeah, sounds like an extra function strahler_summary, which can use a neuron already populated strahler values or populates them if necessary.

clbarnes avatar Apr 08 '22 08:04 clbarnes

I ended up writing a segment_analysis function which returns Strahler index plus a bunch of other metrics for each linear segment (see d0590cc8d7bfdf77c09435d7a47a201e7e0670ea).

>>> import navis
>>> n = navis.example_neurons(1, kind='skeleton')
>>> n.reroot(n.soma, inplace=True)
>>> sa = navis.segment_analysis(n)
>>> sa.head()
        length  tortuosity     root_dist  strahler_index
0  1073.535053    1.151022    229.448586               1
1   112.682839    1.092659  10279.037511               1
2   214.124934    1.013030   9557.521377               1
3   159.585328    1.074575   9747.866968               1
4   229.448586    1.000000      0.000000               6

I have another commit in the works that would add radius_min, radius_max, radius_mean and volume to that table. Let me know if you have ideas for more stuff to add.

schlegelp avatar Apr 08 '22 14:04 schlegelp

Maybe the node IDs at the root and leaf of each segment?

clbarnes avatar Apr 08 '22 14:04 clbarnes

Yeah can add that too! The order is the same as n.small_segments so you could get them like this:

>>> sa['first_node'] = [seg[0] for seg in n.small_segments]
>>> sa['last_node'] = [seg[-1] for seg in n.small_segments]

Minimally, I can add that to the docstring.

schlegelp avatar Apr 08 '22 14:04 schlegelp