예제 #1
0
def has_valid_soma(data_wrapper):
    """Check if a data block has a valid soma"""
    try:
        make_soma(data_wrapper.soma_points())
        return CheckResult(True)
    except SomaError:
        return CheckResult(False)
예제 #2
0
def has_valid_soma(data_wrapper):
    """Check if a data block has a valid soma.

    Returns:
        CheckResult with result
    """
    try:
        make_soma(data_wrapper.soma_points())
        return CheckResult(True)
    except SomaError:
        return CheckResult(False)
예제 #3
0
def has_valid_soma(data_wrapper):
    '''Check if a data block has a valid soma

    Returns:
        CheckResult with result
    '''
    try:
        make_soma(data_wrapper.soma_points())
        return CheckResult(True)
    except SomaError:
        return CheckResult(False)
예제 #4
0
def test_trunk_origin_elevations():
    class Mock(object):
        pass

    n0 = Mock()
    n1 = Mock()

    s = make_soma([[0, 0, 0, 4]])
    t0 = Section(((1, 0, 0, 2), (2, 1, 1, 2)))
    t0.type = NeuriteType.basal_dendrite
    t1 = Section(((0, 1, 0, 2), (1, 2, 1, 2)))
    t1.type = NeuriteType.basal_dendrite
    n0.neurites = [Neurite(t0), Neurite(t1)]
    n0.soma = s

    t2 = Section(((0, -1, 0, 2), (-1, -2, -1, 2)))
    t2.type = NeuriteType.basal_dendrite
    n1.neurites = [Neurite(t2)]
    n1.soma = s

    pop = Population([n0, n1])
    nt.eq_(list(_nf.trunk_origin_elevations(pop)),
           [0.0, np.pi/2., -np.pi/2.])

    nt.eq_(
        list(_nf.trunk_origin_elevations(pop, neurite_type=NeuriteType.basal_dendrite)),
        [0.0, np.pi/2., -np.pi/2.])

    nt.eq_(len(_nf.trunk_origin_elevations(pop, neurite_type=NeuriteType.axon)),
           0)

    nt.eq_(len(_nf.trunk_origin_elevations(pop, neurite_type=NeuriteType.apical_dendrite)),
           0)
예제 #5
0
def test_trunk_origin_elevations():
    class Mock(object):
        pass

    n0 = Mock()
    n1 = Mock()

    s = make_soma([[0, 0, 0, 4]])
    t0 = Section(((1, 0, 0, 2), (2, 1, 1, 2)))
    t0.type = NeuriteType.basal_dendrite
    t1 = Section(((0, 1, 0, 2), (1, 2, 1, 2)))
    t1.type = NeuriteType.basal_dendrite
    n0.neurites = [Neurite(t0), Neurite(t1)]
    n0.soma = s

    t2 = Section(((0, -1, 0, 2), (-1, -2, -1, 2)))
    t2.type = NeuriteType.basal_dendrite
    n1.neurites = [Neurite(t2)]
    n1.soma = s

    pop = Population([n0, n1])
    nt.eq_(list(_nf.trunk_origin_elevations(pop)), [0.0, np.pi / 2.0, -np.pi / 2.0])

    nt.eq_(
        list(_nf.trunk_origin_elevations(pop, neurite_type=NeuriteType.basal_dendrite)),
        [0.0, np.pi / 2.0, -np.pi / 2.0],
    )

    nt.eq_(len(_nf.trunk_origin_elevations(pop, neurite_type=NeuriteType.axon)), 0)

    nt.eq_(len(_nf.trunk_origin_elevations(pop, neurite_type=NeuriteType.apical_dendrite)), 0)
예제 #6
0
파일: _core.py 프로젝트: jdcourcol/NeuroM
 def __init__(self, data_wrapper, name="Neuron"):
     self._data = data_wrapper
     neurites, sections = make_neurites(self._data)
     soma = make_soma(self._data.soma_points(), _SOMA_ACTION[self._data.fmt])
     super(FstNeuron, self).__init__(soma, neurites, sections)
     self.name = name
     self._points = None
예제 #7
0
파일: _core.py 프로젝트: boazmohar/NeuroM
 def __init__(self, data_wrapper, name='Neuron'):
     self._data = data_wrapper
     neurites, sections = make_neurites(self._data)
     soma = make_soma(self._data.soma_points(),
                      _SOMA_ACTION[self._data.fmt])
     super(FstNeuron, self).__init__(soma, neurites, sections)
     self.name = name
     self._points = None
예제 #8
0
def test_trunk_origin_azimuths():
    n0 = MockNeuron()
    n1 = MockNeuron()
    n2 = MockNeuron()
    n3 = MockNeuron()
    n4 = MockNeuron()
    n5 = MockNeuron()

    t = PointTree((0, 0, 0, 2))
    t.type = NeuriteType.basal_dendrite
    n0.neurites = [t]
    n1.neurites = [t]
    n2.neurites = [t]
    n3.neurites = [t]
    n4.neurites = [t]
    n5.neurites = [t]
    pop = [n0, n1, n2, n3, n4, n5]
    s0 = make_soma([[0, 0, 1, 4]])
    s1 = make_soma([[0, 0, -1, 4]])
    s2 = make_soma([[0, 0, 0, 4]])
    s3 = make_soma([[-1, 0, -1, 4]])
    s4 = make_soma([[-1, 0, 0, 4]])
    s5 = make_soma([[1, 0, 0, 4]])

    pop[0].soma = s0
    pop[1].soma = s1
    pop[2].soma = s2
    pop[3].soma = s3
    pop[4].soma = s4
    pop[5].soma = s5
    nt.assert_true(np.all(get_feat('trunk_origin_azimuths', pop) ==
                          [-np.pi/2., np.pi/2., 0.0, np.pi/4., 0.0, np.pi]))
    nt.eq_(len(get_feat('trunk_origin_azimuths', pop, neurite_type=NeuriteType.axon)), 0)
예제 #9
0
def test_trunk_origin_elevation():
    t = PointTree((1, 0, 0, 2))
    s = make_soma([[0, 0, 0, 4]])
    nt.assert_equal(mtr.trunk_origin_elevation(t, s), 0.0)
    t = PointTree((0, 1, 0, 2))
    nt.assert_equal(mtr.trunk_origin_elevation(t, s),  np.pi/2)
    t = PointTree((0, -1, 0, 2))
    nt.assert_equal(mtr.trunk_origin_elevation(t, s),  -np.pi/2)
    t = PointTree((0, 0, 0, 2))
    try:
        mtr.trunk_origin_elevation(t, s)
        nt.ok_(False)
    except ValueError:
        nt.ok_(True)
예제 #10
0
def make_neuron(raw_data, tree_action=None):
    '''Build a neuron from a raw data block

    The tree contains rows of raw data.
    Parameters:
        raw_data: a DataWrapper object.
        tree_action: optional function to run on the built trees.
    Raises:
        SomaError if no soma points in raw_data or points incompatible with soma.
        IDSequenceError if filename contains invalid ID sequence
    '''
    _soma = make_soma(raw_data.soma_points())
    _trees = [make_point_tree(raw_data, iseg, tree_action)
              for iseg in get_initial_neurite_segment_ids(raw_data)]

    nrn = PointNeuron(_soma, _trees)
    nrn.data_block = raw_data
    return nrn
예제 #11
0
def test_trunk_origin_azimuth():
    t = PointTree((0, 0, 0, 2))
    s = make_soma([[0, 0, 1, 4]])
    nt.assert_equal(mtr.trunk_origin_azimuth(t, s), -np.pi/2)
    s = make_soma([[0, 0, -1, 4]])
    nt.assert_equal(mtr.trunk_origin_azimuth(t, s), np.pi/2)
    s = make_soma([[0, 0, 0, 4]])
    nt.assert_equal(mtr.trunk_origin_azimuth(t, s), 0.0)
    s = make_soma([[-1, 0, -1, 4]])
    nt.assert_equal(mtr.trunk_origin_azimuth(t, s), np.pi/4)
    s = make_soma([[-1, 0, 0, 4]])
    nt.assert_equal(mtr.trunk_origin_azimuth(t, s), 0.0)
    s = make_soma([[1, 0, 0, 4]])
    nt.assert_equal(mtr.trunk_origin_azimuth(t, s), np.pi)
예제 #12
0
def test_trunk_origin_elevations():
    n0 = MockNeuron()
    n1 = MockNeuron()

    s = make_soma([[0, 0, 0, 4]])
    t0 = PointTree((1, 0, 0, 2))
    t0.type = NeuriteType.basal_dendrite
    t1 = PointTree((0, 1, 0, 2))
    t1.type = NeuriteType.basal_dendrite
    n0.neurites = [t0, t1]
    n0.soma = s

    t2 = PointTree((0, -1, 0, 2))
    t2.type = NeuriteType.basal_dendrite
    n1.neurites = [t2]
    n1.soma = s

    pop = [n0, n1]
    nt.assert_true(np.all(get_feat('trunk_origin_elevations', pop) ==
                          [0.0, np.pi/2., -np.pi/2.]))
    nt.eq_(len(get_feat('trunk_origin_elevations', pop, neurite_type=NeuriteType.axon)), 0)
예제 #13
0
from neurom.point_neurite.core import Neuron
from neurom.core import make_soma
from neurom.core import NeuriteType
from neurom.point_neurite.treefunc import set_tree_type
import neurom.point_neurite.dendrogram as dm


TREE = PointTree(np.array([0., 0., 0., 10., 4., 0., 0.]))
TREE.add_child(PointTree(np.array([3., 3., 3., 9., 4., 0., 0.])))

TREE.children[0].add_child(PointTree(np.array([10., 10., 10., 5., 4., 0., 0.])))
TREE.children[0].add_child(PointTree(np.array([-10., -10., -10., 7., 4., 0., 0.])))

set_tree_type(TREE)

SOMA = make_soma(np.array([[0., 0., 0., 1., 1., 1., -1.]]))
NEURON = Neuron(SOMA, [TREE, TREE, TREE])

OLD_OFFS = [1.2, -1.2]
NEW_OFFS = [2.3, -2.3]
SPACING = (40., 0.)

def test_n_rectangles_tree():

    nt.assert_equal(dm._n_rectangles(TREE), 5)


def test_n_rectangles_neuron():

    nt.assert_equal(dm._n_rectangles(NEURON), 16)
예제 #14
0
def test_deep_copy():

    soma = make_soma([[0, 0, 0, 1, 1, 1, -1]])
    nrn1 = Neuron(soma, [TREE])
    nrn2 = deepcopy(nrn1)
    check_cloned_neuron(nrn1, nrn2)
예제 #15
0
def test_trunk_origin_direction():
    t = PointTree((1, 0, 0, 2))
    s = make_soma([[0, 0, 0, 4]])
    nt.ok_(np.allclose(mtr.trunk_origin_direction(t, s), np.array([1, 0, 0])))