neurom.check.neuron_checks

NeuroM neuron checking functions.

Contains functions for checking validity of neuron neurites and somata.

Functions

has_all_nonzero_neurite_radii

Check presence of neurite points with radius not above threshold.

has_all_nonzero_section_lengths

Check presence of neuron sections with length not above threshold.

has_all_nonzero_segment_lengths

Check presence of neuron segments with length not above threshold.

has_apical_dendrite

Check if a neuron has apical dendrites.

has_axon

Check if a neuron has an axon.

has_basal_dendrite

Check if a neuron has basal dendrites.

has_multifurcation

Check if a section has more than 3 children.

has_no_dangling_branch

Check if the neuron has dangling neurites.

has_no_fat_ends

Check if leaf points are too large.

has_no_flat_neurites

Check that a neuron has no flat neurites.

has_no_jumps

Check if there are jumps (large movements in the axis).

has_no_narrow_neurite_section

Check if the neuron has dendrites with narrow sections.

has_no_narrow_start

Check if neurites have a narrow start.

has_no_root_node_jumps

Check that the neurites have no root node jumps.

has_no_single_children

Check if the neuron has sections with only one child section.

has_nonzero_soma_radius

Check if soma radius not above threshold.

class neurom.check.neuron_checks.COLS[source]

Bases: object

Column labels for internal data representation.

class neurom.check.neuron_checks.CheckResult(status, info=None, title=None)[source]

Bases: object

Class representing a check result.

Initialize a CheckResult object.

class neurom.check.neuron_checks.NeuriteType(value)[source]

Bases: enum.IntEnum

Type of neurite.

exception neurom.check.neuron_checks.NeuroMError[source]

Bases: Exception

Base class for NeuroM errors.

class neurom.check.neuron_checks.Section(morphio_section)[source]

Bases: object

Simple recursive tree class.

The section constructor.

append_section(section)[source]

Appends a section to the current section object.

Parameters

section (morphio.Section|morphio.mut.Section|Section|morphio.PointLevel) – a section

ibifurcation_point(iter_mode=<function Section.ipreorder>)[source]

Iterator to bifurcation points.

Parameters

iter_mode – iteration mode. Default: ipreorder.

iforking_point(iter_mode=<function Section.ipreorder>)[source]

Iterator to forking points.

Parameters

iter_mode – iteration mode. Default: ipreorder.

ileaf()[source]

Iterator to all leaves of a tree.

ipostorder()[source]

Depth-first post-order iteration of tree nodes.

ipreorder()[source]

Depth-first pre-order iteration of tree nodes.

is_bifurcation_point()[source]

Is tree a bifurcation point?

is_forking_point()[source]

Is this section a forking point?

is_leaf()[source]

Is tree a leaf?

is_root()[source]

Is tree the root node?

iupstream()[source]

Iterate from a tree node to the root nodes.

neurom.check.neuron_checks.get_flat_neurites(neuron, tol=0.1, method='ratio')[source]

Check if a neuron has neurites that are flat within a tolerance.

Parameters
  • neurite (Neurite) – neurite to operate on

  • tol (float) – the tolerance or the ratio

  • method (string) – ‘tolerance’ or ‘ratio’ described in is_flat()

Returns

Bool list corresponding to the flatness check for each neurite in neuron neurites with respect to the given criteria

neurom.check.neuron_checks.has_all_nonzero_neurite_radii(neuron, threshold=0.0)[source]

Check presence of neurite points with radius not above threshold.

Parameters
  • neuron (Neuron) – The neuron object to test

  • threshold – value above which a radius is considered to be non-zero

Returns

CheckResult with result including list of (section ID, point ID) pairs of zero-radius points

neurom.check.neuron_checks.has_all_nonzero_section_lengths(neuron, threshold=0.0)[source]

Check presence of neuron sections with length not above threshold.

Parameters
  • neuron (Neuron) – The neuron object to test

  • threshold (float) – value above which a section length is considered

  • be non-zero (to) –

Returns

CheckResult with result including list of ids of bad sections

neurom.check.neuron_checks.has_all_nonzero_segment_lengths(neuron, threshold=0.0)[source]

Check presence of neuron segments with length not above threshold.

Parameters
  • neuron (Neuron) – The neuron object to test

  • threshold (float) – value above which a segment length is considered to

  • non-zero (be) –

Returns

CheckResult with result including list of (section_id, segment_id) of zero length segments

neurom.check.neuron_checks.has_apical_dendrite(neuron, min_number=1, treefun=<function _read_neurite_type>)[source]

Check if a neuron has apical dendrites.

Parameters
  • neuron (Neuron) – The neuron object to test

  • min_number – minimum number of apical dendrites required

  • treefun – Optional function to calculate the tree type of neuron’s neurites

Returns

CheckResult with result

neurom.check.neuron_checks.has_axon(neuron, treefun=<function _read_neurite_type>)[source]

Check if a neuron has an axon.

Parameters
  • neuron (Neuron) – The neuron object to test

  • treefun – Optional function to calculate the tree type of

  • neurites (neuron's) –

Returns

CheckResult with result

neurom.check.neuron_checks.has_basal_dendrite(neuron, min_number=1, treefun=<function _read_neurite_type>)[source]

Check if a neuron has basal dendrites.

Parameters
  • neuron (Neuron) – The neuron object to test

  • min_number – minimum number of basal dendrites required

  • treefun – Optional function to calculate the tree type of neuron’s

  • neurites

Returns

CheckResult with result

neurom.check.neuron_checks.has_multifurcation(neuron)[source]

Check if a section has more than 3 children.

neurom.check.neuron_checks.has_no_dangling_branch(neuron)[source]

Check if the neuron has dangling neurites.

Are considered dangling

  • dendrites whose first point is too far from the soma center

  • axons whose first point is too far from the soma center AND from any point belonging to a dendrite

Parameters

neuron (Neuron) – The neuron object to test

Returns

CheckResult with a list of all first segments of dangling neurites

neurom.check.neuron_checks.has_no_fat_ends(neuron, multiple_of_mean=2.0, final_point_count=5)[source]

Check if leaf points are too large.

Parameters
  • neuron (Neuron) – The neuron object to test

  • multiple_of_mean (float) – how many times larger the final radius

  • to be compared to the mean of the final points (has) –

  • final_point_count (int) – how many points to include in the mean

Returns

CheckResult with result list of ids of bad sections

Note

A fat end is defined as a leaf segment whose last point is larger by a factor of multiple_of_mean than the mean of the points in final_point_count

neurom.check.neuron_checks.has_no_flat_neurites(neuron, tol=0.1, method='ratio')[source]

Check that a neuron has no flat neurites.

Parameters
Returns

CheckResult with result

neurom.check.neuron_checks.has_no_jumps(neuron, max_distance=30.0, axis='z')[source]

Check if there are jumps (large movements in the axis).

Parameters
  • neuron (Neuron) – The neuron object to test

  • max_distance (float) – value above which consecutive z-values are

  • a jump (considered) –

  • axis (str) – one of x/y/z, which axis to check for jumps

Returns

CheckResult with result list of ids of bad sections

neurom.check.neuron_checks.has_no_narrow_neurite_section(neuron, neurite_filter, radius_threshold=0.05, considered_section_min_length=50)[source]

Check if the neuron has dendrites with narrow sections.

Parameters
  • neuron (Neuron) – The neuron object to test

  • neurite_filter (callable) – filter the neurites by this callable

  • radius_threshold (float) – radii below this are considered narro

  • considered_section_min_length (float) – sections with length below

  • are not taken into account (this) –

Returns

CheckResult with result. result.info contains the narrow section ids and their first point

neurom.check.neuron_checks.has_no_narrow_start(neuron, frac=0.9)[source]

Check if neurites have a narrow start.

Parameters
  • neuron (Neuron) – The neuron object to test

  • frac (float) – Ratio that the second point must be smaller than the first

Returns

CheckResult with a list of all first segments of neurites with a narrow start

neurom.check.neuron_checks.has_no_root_node_jumps(neuron, radius_multiplier=2)[source]

Check that the neurites have no root node jumps.

Their first point not should not be further than radius_multiplier * soma radius from the soma center

neurom.check.neuron_checks.has_no_single_children(neuron)[source]

Check if the neuron has sections with only one child section.

neurom.check.neuron_checks.has_nonzero_soma_radius(neuron, threshold=0.0)[source]

Check if soma radius not above threshold.

Parameters
  • neuron (Neuron) – The neuron object to test

  • threshold – value above which the soma radius is considered to be non-zero

Returns

CheckResult with result

neurom.check.neuron_checks.iter_neurites(obj, mapfun=None, filt=None, neurite_order=<NeuriteIter.FileOrder: 1>)[source]

Iterator to a neurite, neuron or neuron population.

Applies optional neurite filter and mapping functions.

Parameters
  • obj – a neurite, neuron or neuron population.

  • mapfun – optional neurite mapping function.

  • filt – optional neurite filter function.

  • neurite_order (NeuriteIter) – order upon which neurites should be iterated - NeuriteIter.FileOrder: order of appearance in the file - NeuriteIter.NRN: NRN simulator order: soma -> axon -> basal -> apical

Examples

Get the number of points in each neurite in a neuron population

>>> from neurom.core.neuron import iter_neurites
>>> n_points = [n for n in iter_neurites(pop, lambda x : len(x.points))]

Get the number of points in each axon in a neuron population

>>> import neurom as nm
>>> from neurom.core.neuron import iter_neurites
>>> filter = lambda n : n.type == nm.AXON
>>> mapping = lambda n : len(n.points)
>>> n_points = [n for n in iter_neurites(pop, mapping, filter)]
neurom.check.neuron_checks.iter_sections(neurites, iterator_type=<function Section.ipreorder>, neurite_filter=None, neurite_order=<NeuriteIter.FileOrder: 1>)[source]

Iterator to the sections in a neurite, neuron or neuron population.

Parameters
  • neurites – neuron, population, neurite, or iterable containing neurite objects

  • iterator_type – section iteration order within a given neurite. Must be one of: Section.ipreorder: Depth-first pre-order iteration of tree nodes Section.ipostorder: Depth-first post-order iteration of tree nodes Section.iupstream: Iterate from a tree node to the root nodes Section.ibifurcation_point: Iterator to bifurcation points Section.ileaf: Iterator to all leaves of a tree

  • neurite_filter – optional top level filter on properties of neurite neurite objects.

  • neurite_order (NeuriteIter) – order upon which neurites should be iterated - NeuriteIter.FileOrder: order of appearance in the file - NeuriteIter.NRN: NRN simulator order: soma -> axon -> basal -> apical

Examples

Get the number of points in each section of all the axons in a neuron population

>>> import neurom as nm
>>> from neurom.core.neuron import iter_sections
>>> filter = lambda n : n.type == nm.AXON
>>> n_points = [len(s.points) for s in iter_sections(pop,  neurite_filter=filter)]
neurom.check.neuron_checks.iter_segments(obj, neurite_filter=None, neurite_order=<NeuriteIter.FileOrder: 1>)[source]

Return an iterator to the segments in a collection of neurites.

Parameters
  • obj – neuron, population, neurite, section, or iterable containing neurite objects

  • neurite_filter – optional top level filter on properties of neurite neurite objects

  • neurite_order – order upon which neurite should be iterated. Values: - NeuriteIter.FileOrder: order of appearance in the file - NeuriteIter.NRN: NRN simulator order: soma -> axon -> basal -> apical

Note

This is a convenience function provided for generic access to neuron segments. It may have a performance overhead WRT custom-made segment analysis functions that leverage numpy and section-wise iteration.

neurom.check.neuron_checks.section_length(points)

Compute the path distance from given set of points.

neurom.check.neuron_checks.segment_length(seg)[source]

Return the length of a segment.

Returns: Euclidian distance between centres of points in seg