コード例 #1
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_bounding_box():

    soma = neuron.make_soma([[0, 0, 0, 1, 1, 1, -1]])
    nrn = neuron.Neuron(soma, [TREE])
    ref1 = ((-1, -1, -1), (4.0, 6.0, 3.0))

    for a, b in izip(nrn.bounding_box(), ref1):
        nt.assert_true(np.allclose(a, b))

    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, [TREE])
    ref2 = ((-33, -22, -11), (55, 66, 77))

    for a, b in izip(nrn.bounding_box(), ref2):
        nt.assert_true(np.allclose(a, b))
コード例 #2
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_bounding_box():

    soma = neuron.make_soma([[0, 0, 0, 1, 1, 1, -1]])
    nrn = neuron.Neuron(soma, [TREE])
    ref1 = ((-1, -1, -1), (4.0, 6.0, 3.0))

    for a, b in izip(nrn.bounding_box(), ref1):
        nt.assert_true(np.allclose(a, b))

    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, [TREE])
    ref2 = ((-33, -22, -11), (55, 66, 77))

    for a, b in izip(nrn.bounding_box(), ref2):
        nt.assert_true(np.allclose(a, b))
コード例 #3
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_neuron():
    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, ['foo', 'bar'])
    nt.assert_equal(nrn.soma.center, (11, 22, 33))
    nt.assert_equal(nrn.neurites, ['foo', 'bar'])
    nt.assert_equal(nrn.name, 'Neuron')
    nrn = neuron.Neuron(soma, ['foo', 'bar'], 'test')
    nt.assert_equal(nrn.name, 'test')
コード例 #4
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_neuron():
    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, ['foo', 'bar'])
    nt.assert_items_equal(nrn.soma.center, (11, 22, 33))
    nt.assert_equal(nrn.neurites, ['foo', 'bar'])
    nt.assert_equal(nrn.name, 'Neuron')
    nrn = neuron.Neuron(soma, ['foo', 'bar'], 'test')
    nt.assert_equal(nrn.name, 'test')
コード例 #5
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_i_neurites_filter():
    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, ['foo', 'bar', 'baz'])
    ref = 'barbaz'
    for i, j in izip(ref,
                     nrn.i_neurites(iter,
                                    tree_filter=lambda s: s.startswith('b'))):
        nt.assert_equal(i, j)
コード例 #6
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_i_neurites_filter():
    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, ['foo', 'bar', 'baz'])
    ref = 'barbaz'
    for i, j in izip(ref,
                     nrn.i_neurites(iter,
                                    tree_filter=lambda s: s.startswith('b'))):
        nt.assert_equal(i, j)
コード例 #7
0
ファイル: test_morphtree.py プロジェクト: wvangeit/NeuroM
def test_trunk_elevation():
    t = Tree((1, 0, 0, 2))
    s = make_soma([[0, 0, 0, 4]])
    nt.assert_equal(trunk_elevation(t, s), 0.0)
    t = Tree((0, 1, 0, 2))
    nt.assert_equal(trunk_elevation(t, s),  np.pi/2)
    t = Tree((0, -1, 0, 2))
    nt.assert_equal(trunk_elevation(t, s),  -np.pi/2)
    t = Tree((0, 0, 0, 2))
    try:
        trunk_elevation(t, s)
        nt.ok_(False)
    except ValueError:
        nt.ok_(True)
コード例 #8
0
ファイル: utils.py プロジェクト: guozanhua/NeuroM
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 RawDataWrapper 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.get_row(s_id) for s_id in get_soma_ids(raw_data)])
    _trees = [make_tree(raw_data, iseg, tree_action) for iseg in get_initial_neurite_segment_ids(raw_data)]

    return Neuron(_soma, _trees)
コード例 #9
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_copy():

    soma = neuron.make_soma([[0, 0, 0, 1, 1, 1, -1]])   
    nrn1 = neuron.Neuron(soma, [TREE], name="Rabbit of Caerbannog")
    nrn2 = nrn1.copy()

    # check if two neurons are identical

    # somata
    nt.assert_true(isinstance(nrn2.soma, type(nrn1.soma)))
    nt.assert_true(nrn1.soma.radius == nrn2.soma.radius)

    for v1, v2 in izip(nrn1.soma.iter(), nrn2.soma.iter()):

        nt.assert_true(np.allclose(v1, v2))

    # neurites
    for neu1, neu2 in izip(nrn1.neurites, nrn2.neurites):

        nt.assert_true(isinstance(neu2, type(neu1)))

        for v1, v2 in izip(val_iter(ipreorder(neu1)), val_iter(ipreorder(neu2))):

            nt.assert_true(np.allclose(v1, v2))

    # check if the ids are different

    # somata
    nt.assert_true( nrn1.soma is not nrn2.soma)

    # neurites
    for neu1, neu2 in izip(nrn1.neurites, nrn2.neurites):

        nt.assert_true(neu1 is not neu2)

    # check if changes are propagated between neurons

    nrn2.soma.radius = 10.

    nt.assert_false(nrn1.soma.radius == nrn2.soma.radius)
    # neurites
    for neu1, neu2 in izip(nrn1.neurites, nrn2.neurites):

        for v1, v2 in izip(val_iter(ipreorder(neu1)), val_iter(ipreorder(neu2))):

            v2 = np.array([-1000., -1000., -1000., 1000., -100., -100., -100.])
            nt.assert_false(any(v1 == v2))
コード例 #10
0
ファイル: utils.py プロジェクト: wvangeit/NeuroM
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 RawDataWrapper 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.
    '''
    _soma = make_soma(
        [raw_data.get_row(s_id) for s_id in get_soma_ids(raw_data)])
    _trees = [
        make_tree(raw_data, iseg, tree_action)
        for iseg in get_initial_segment_ids(raw_data)
    ]

    return Neuron(_soma, _trees)
コード例 #11
0
ファイル: test_morphtree.py プロジェクト: wvangeit/NeuroM
def test_trunk_azimuth():
    t = Tree((0, 0, 0, 2))
    s = make_soma([[0, 0, 1, 4]])
    nt.assert_equal(trunk_azimuth(t, s), -np.pi/2)
    s = make_soma([[0, 0, -1, 4]])
    nt.assert_equal(trunk_azimuth(t, s), np.pi/2)
    s = make_soma([[0, 0, 0, 4]])
    nt.assert_equal(trunk_azimuth(t, s), 0.0)
    s = make_soma([[-1, 0, -1, 4]])
    nt.assert_equal(trunk_azimuth(t, s), np.pi/4)
    s = make_soma([[-1, 0, 0, 4]])
    nt.assert_equal(trunk_azimuth(t, s), 0.0)
    s = make_soma([[1, 0, 0, 4]])
    nt.assert_equal(trunk_azimuth(t, s), np.pi)
コード例 #12
0
ファイル: log_neuron.py プロジェクト: Tsolmongerel/NeuroM
        iterator: tree iterator for a tree holding raw data rows.
    '''
    return imap(as_point, tree.val_iter(iterator))


if __name__ == '__main__':

    filename = 'test_data/swc/Neuron.swc'

    rd = load_data(filename)

    init_seg_ids = get_initial_segment_ids(rd)

    trees = [make_tree(rd, sg) for sg in init_seg_ids]

    soma = neuron.make_soma([rd.get_row(si) for si in get_soma_ids(rd)])

    for tr in trees:
        for p in point_iter(tree.ipreorder(tr)):
            LOG.debug(p)

    LOG.info('Initial segment IDs: %s', init_seg_ids)

    nrn = neuron.Neuron(soma, trees)

    LOG.info('Neuron soma raw data % s', [r for r in nrn.soma.iter()])
    LOG.info('Neuron soma points %s', [as_point(p)
                                       for p in nrn.soma.iter()])

    LOG.info('Neuron tree init points, types')
    for tt in nrn.neurites:
コード例 #13
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_i_neurites_chains():
    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, ['foo', 'bar', 'baz'])
    s = 'foobarbaz'
    for i, j in izip(s, nrn.i_neurites(iter)):
        nt.assert_equal(i, j)
コード例 #14
0
ファイル: make_neuron.py プロジェクト: wvangeit/NeuroM
        iterator: tree iterator for a tree holding raw data rows.
    '''
    return imap(as_point, tree.val_iter(iterator))


if __name__ == '__main__':

    filename = 'test_data/swc/Neuron.swc'

    rd = load_data(filename)

    init_seg_ids = get_initial_segment_ids(rd)

    trees = [make_tree(rd, sg) for sg in init_seg_ids]

    soma = neuron.make_soma([rd.get_row(si) for si in get_soma_ids(rd)])

    for tr in trees:
        for p in point_iter(tree.ipreorder(tr)):
            print p

    print 'Initial segment IDs:', init_seg_ids

    nrn = neuron.Neuron(soma, trees)

    print 'Neuron soma raw data', [r for r in nrn.soma.iter()]
    print 'Neuron soma points', [as_point(p) for p in nrn.soma.iter()]

    print 'Neuron tree init points, types'
    for tt in nrn.neurites:
        print tt.value[COLS.ID], tt.value[COLS.TYPE]
コード例 #15
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_invalid_soma_points_2_raises_SomaError():
    neuron.make_soma(INVALID_PTS_2)
コード例 #16
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def check_SomaC(points):
    soma = neuron.make_soma(points)
    nt.ok_('SomaC' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaC))
    nt.assert_items_equal(soma.center, (11, 22, 33))
    nt.ok_(soma.radius == 0.0)
コード例 #17
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_invalid_soma_points_2_raises_SomaError():
    neuron.make_soma(INVALID_PTS_2)
コード例 #18
0
ファイル: test_morphtree.py プロジェクト: wvangeit/NeuroM
def test_trunk_direction():
    t = Tree((1, 0, 0, 2))
    s = make_soma([[0, 0, 0, 4]])
    nt.ok_(np.allclose(trunk_direction(t, s), np.array([1, 0, 0])))
コード例 #19
0
ファイル: test_transform.py プロジェクト: Tsolmongerel/NeuroM
import numpy as np
from copy import copy

TREE = Tree([0.0, 0.0, 0.0, 1.0, 1, 1, 2])
T1 = TREE.add_child(Tree([0.0, 1.0, 0.0, 1.0, 1, 1, 2]))
T2 = T1.add_child(Tree([0.0, 2.0, 0.0, 1.0, 1, 1, 2]))
T3 = T2.add_child(Tree([0.0, 4.0, 0.0, 2.0, 1, 1, 2]))
T4 = T3.add_child(Tree([0.0, 5.0, 0.0, 2.0, 1, 1, 2]))
T5 = T4.add_child(Tree([2.0, 5.0, 0.0, 1.0, 1, 1, 2]))
T6 = T4.add_child(Tree(np.array([0.0, 5.0, 2.0, 1.0, 1, 1, 2])))
T7 = T5.add_child(Tree(np.array([3.0, 5.0, 0.0, 0.75, 1, 1, 2])))
T8 = T7.add_child(Tree(np.array([4.0, 5.0, 0.0, 0.75, 1, 1, 2])))
T9 = T6.add_child(Tree(np.array([0.0, 5.0, 3.0, 0.75, 1, 1, 2])))
T10 = T9.add_child(Tree(np.array([0.0, 6.0, 3.0, 0.75, 1, 1, 2])))

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


TEST_UVEC =  np.array([ 0.01856633,  0.37132666,  0.92831665])

TEST_ANGLE = np.pi / 3.

def _Rx(angle):
    sn = np.sin(angle)
    cs = np.cos(angle)
    return np.array([[1., 0., 0.],
                     [0., cs, -sn],
                     [0., sn, cs]])
コード例 #20
0
ファイル: test_neuron.py プロジェクト: guozanhua/NeuroM
def test_make_Soma_SinglePoint():
    soma = neuron.make_soma(SOMA_SINGLE_PTS)
    nt.ok_('SomaSinglePoint' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaSinglePoint))
    nt.assert_items_equal(soma.center, (11, 22, 33))
    nt.ok_(soma.radius == 44)
コード例 #21
0
            pass
        stylize(ax, cell.name, feature)
    return fig


if __name__ == "__main__":
    import numpy as np
    import os

    args = parse_args()
    nrns = []

    for j, neuronFile in enumerate(get_morph_files(args.datapath)):
        _name = os.path.splitext(os.path.split(neuronFile)[-1])[0]
        nrn = None

        try:
            soma = make_soma([np.array([11, 22, 33, 44, 1, 1, -1])])
            trees = load_trees(neuronFile)
            cn = coreNeuron(soma, trees, name=_name)
            nrn = ezyNeuron(cn)
        except IDSequenceError:
            pass

        for i, _feature in enumerate(args.features):

            f = plot_feature(_feature, nrn)
            figname = "{0}_{1}_{2}.eps".format(i, j, _name)
            f.savefig(os.path.join(args.odir, figname))
            pl.close(f)
コード例 #22
0
ファイル: test_neuron.py プロジェクト: Tsolmongerel/NeuroM
def test_make_SomaB():
    soma = neuron.make_soma(SOMA_B_PTS)
    nt.ok_('SomaB' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaB))
    nt.assert_items_equal(soma.center, (11, 22, 33))
    nt.ok_(soma.radius == 0.0)
コード例 #23
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_make_SomaB():
    soma = neuron.make_soma(SOMA_B_PTS)
    nt.ok_('SomaB' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaB))
    nt.assert_equal(soma.center, (11, 22, 33))
    nt.ok_(soma.radius == 0.0)
コード例 #24
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_make_SomaA():
    soma = neuron.make_soma(SOMA_A_PTS)
    nt.ok_('SomaA' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaA))
    nt.assert_equal(soma.center, (11, 22, 33))
    nt.ok_(soma.radius == 44)
コード例 #25
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def check_SomaC(points):
    soma = neuron.make_soma(points)
    nt.ok_('SomaC' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaC))
    nt.assert_equal(soma.center, (11, 22, 33))
    nt.ok_(soma.radius == 0.0)
コード例 #26
0
ファイル: test_neuron.py プロジェクト: guozanhua/NeuroM
def test_make_Soma_ThreePoint():
    soma = neuron.make_soma(SOMA_THREEPOINTS_PTS)
    nt.ok_('SomaThreePoint' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaThreePoint))
    nt.assert_items_equal(soma.center, (11, 22, 33))
    nt.eq_(soma.radius, 0.0)
コード例 #27
0
ファイル: test_neuron.py プロジェクト: wvangeit/NeuroM
def test_i_neurites_chains():
    soma = neuron.make_soma(SOMA_A_PTS)
    nrn = neuron.Neuron(soma, ['foo', 'bar', 'baz'])
    s = 'foobarbaz'
    for i, j in izip(s, nrn.i_neurites(iter)):
        nt.assert_equal(i, j)
コード例 #28
0
ファイル: test_neuron.py プロジェクト: guozanhua/NeuroM
def check_SomaC(points):
    soma = neuron.make_soma(points)
    nt.ok_('SomaSimpleContour' in str(soma))
    nt.ok_(isinstance(soma, neuron.SomaSimpleContour))
    np.testing.assert_allclose(soma.center, (0., 0., 0.), atol=1e-16)
    nt.eq_(soma.radius, 1.0)
コード例 #29
0
ファイル: refactoring.py プロジェクト: Tsolmongerel/NeuroM
        return i_neurites(self.neurites,
                          lambda n: n.sections(),
                          neu_filter=tree_type_checker(neurite_type))

if __name__ == '__main__':
    from neurom.core.tree import Tree
    from neurom.core.neuron import make_soma

    TREE = Tree([0.0, 0.0, 0.0, 1.0, 1, 1, 2])
    T1 = TREE.add_child(Tree([0.0, 1.0, 0.0, 1.0, 1, 1, 2]))
    T2 = T1.add_child(Tree([0.0, 2.0, 0.0, 1.0, 1, 1, 2]))
    T3 = T2.add_child(Tree([0.0, 4.0, 0.0, 2.0, 1, 1, 2]))
    T4 = T3.add_child(Tree([0.0, 5.0, 0.0, 2.0, 1, 1, 2]))
    T5 = T4.add_child(Tree([2.0, 5.0, 0.0, 1.0, 1, 1, 2]))
    T6 = T4.add_child(Tree([0.0, 5.0, 2.0, 1.0, 1, 1, 2]))
    T7 = T5.add_child(Tree([3.0, 5.0, 0.0, 0.75, 1, 1, 2]))
    T8 = T7.add_child(Tree([4.0, 5.0, 0.0, 0.75, 1, 1, 2]))
    T9 = T6.add_child(Tree([0.0, 5.0, 3.0, 0.75, 1, 1, 2]))
    T10 = T9.add_child(Tree([0.0, 6.0, 3.0, 0.75, 1, 1, 2]))

    sm = make_soma([[0, 0, 0, 1, 1, 1, -1]])
    nrts = [Neurite(tr) for tr in [TREE, TREE, TREE]]
    nrn = Neuron(sm, nrts)
    pop = Population([nrn, nrn, nrn, nrn])

    print list(pop.segments())
    print
    print list(pop.neurons[0].segments())
    print
    print list(pop.neurons[0].neurites[0].segments())