示例#1
0
def test_load_neuron():
    nrn = utils.load_neuron(FILENAMES[0])
    nt.assert_true(isinstance(NRN, Neuron))
    nt.assert_equal(NRN.name, 'Neuron')
    _check_neurites_have_no_parent(nrn)

    # python2 only test, for unicode strings
    if sys.version_info < (3, 0):
        nrn = utils.load_neuron(unicode(FILENAMES[0]))
        nt.assert_true(isinstance(NRN, Neuron))
        nt.assert_equal(NRN.name, 'Neuron')
        _check_neurites_have_no_parent(nrn)
示例#2
0
def test_load_neuromorpho_3pt_soma():
    with warnings.catch_warnings(record=True):
        nrn = utils.load_neuron(Path(SWC_PATH, 'soma', 'three_pt_soma.swc'))
    assert len(nrn.neurites) == 4
    assert len(nrn.soma.points) == 3
    assert nrn.soma.radius == 2
    _check_neurites_have_no_parent(nrn)
示例#3
0
def test_load_neuromorpho_3pt_soma():
    nrn = utils.load_neuron(os.path.join(SWC_PATH, 'soma',
                                         'three_pt_soma.swc'))
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.soma.points), 3)
    nt.eq_(nrn.soma.radius, 2)
    _check_neurites_have_no_parent(nrn)
示例#4
0
def test_load_neuromorpho_3pt_soma():
    with warnings.catch_warnings(record=True):
        nrn = utils.load_neuron(Path(SWC_PATH, 'soma', 'three_pt_soma.swc'))
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.soma.points), 3)
    nt.eq_(nrn.soma.radius, 2)
    _check_neurites_have_no_parent(nrn)
示例#5
0
def test_load_neuron():
    nrn = utils.load_neuron(FILENAMES[0])
    nt.assert_true(isinstance(NRN, Neuron))
    nt.assert_equal(NRN.name, 'Neuron')
    _check_neurites_have_no_parent(nrn)

    neuron_str = u""" 1 1  0  0 0 1. -1
                      2 3  0  0 0 1.  1
                      3 3  0  5 0 1.  2
                      4 3 -5  5 0 0.  3
                      5 3  6  5 0 0.  3
                      6 2  0  0 0 1.  1
                      7 2  0 -4 0 1.  6
                      8 2  6 -4 0 0.  7
                      9 2 -5 -4 0 0.  7
                     """
    utils.load_neuron(StringIO(neuron_str), reader='swc')
示例#6
0
文件: test_utils.py 项目: MFSY/NeuroM
def test_load_neuron_mixed_tree_swc():
    nrn_mix = utils.load_neuron(os.path.join(SWC_ORD_PATH, 'sample_mixed_tree_sections.swc'))
    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix), [5, 3])

    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix),
                       get('number_of_sections_per_neurite', SWC_ORD_REF))

    assert_items_equal(get('number_of_segments', nrn_mix),
                       get('number_of_segments', SWC_ORD_REF))

    assert_items_equal(get('total_length', nrn_mix),
                       get('total_length', SWC_ORD_REF))
示例#7
0
def test_load_neuron_mixed_tree_swc():
    nrn_mix =  utils.load_neuron(os.path.join(SWC_ORD_PATH, 'sample_mixed_tree_sections.swc'))
    nt.assert_items_equal(get('number_of_sections_per_neurite', nrn_mix), [5, 3])

    nt.assert_items_equal(get('number_of_sections_per_neurite', nrn_mix),
                          get('number_of_sections_per_neurite', SWC_ORD_REF))

    nt.assert_items_equal(get('number_of_segments', nrn_mix),
                          get('number_of_segments', SWC_ORD_REF))

    nt.assert_items_equal(get('total_length', nrn_mix),
                          get('total_length', SWC_ORD_REF))
示例#8
0
def test_load_neuron_section_order_break_swc():
    nrn_mix = utils.load_neuron(Path(SWC_ORD_PATH, 'sample_disordered.swc'))

    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix), [5, 3])

    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix),
                       get('number_of_sections_per_neurite', SWC_ORD_REF))

    assert_items_equal(get('number_of_segments', nrn_mix),
                       get('number_of_segments', SWC_ORD_REF))

    assert_items_equal(get('total_length', nrn_mix),
                       get('total_length', SWC_ORD_REF))
示例#9
0
def test_load_neuron_section_order_break_swc():
    nrn_mix =  utils.load_neuron(os.path.join(SWC_ORD_PATH, 'sample_disordered.swc'))

    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix), [5, 3])

    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix),
                       get('number_of_sections_per_neurite', SWC_ORD_REF))

    assert_items_equal(get('number_of_segments', nrn_mix),
                       get('number_of_segments', SWC_ORD_REF))

    assert_items_equal(get('total_length', nrn_mix),
                       get('total_length', SWC_ORD_REF))
示例#10
0
def test_load_h5_trunk_points_regression():
    # regression test for issue encoutnered wile
    # implementing PR #479, related to H5 unpacking
    # of files with non-standard soma structure.
    # See #480.
    nrn = utils.load_neuron(os.path.join(DATA_PATH, 'h5', 'v1', 'Neuron.h5'))
    nt.ok_(np.allclose(nrn.neurites[0].root_node.points[1],
                       [0., 0. , 0.1, 0.31646374, 4., 4., 3.]))

    nt.ok_(np.allclose(nrn.neurites[1].root_node.points[1],
                       [0., 0., 0.1, 1.84130445e-01, 3.0, 235., 234.]))

    nt.ok_(np.allclose(nrn.neurites[2].root_node.points[1],
                       [0., 0., 0.1, 5.62225521e-01, 3., 466, 465]))

    nt.ok_(np.allclose(nrn.neurites[3].root_node.points[1],
                       [0., 0., 0.1, 7.28555262e-01, 2., 697, 696]))
示例#11
0
def test_load_trees_good_neuron():
    '''Check trees in good neuron are the same as trees from loaded neuron'''
    filepath = os.path.join(SWC_PATH, 'Neuron.swc')
    nrn = utils.load_neuron(filepath)
    trees = utils.load_trees(filepath)
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.neurites), len(trees))

    nrn2 = MockNeuron(trees)

    @pts.point_function(as_tree=False)
    def elem(point):
        return point

    # Check data are the same in tree collection and neuron's neurites
    for a, b in izip(iter_neurites(nrn, elem), iter_neurites(nrn2, elem)):
        nt.ok_(np.all(a == b))
示例#12
0
文件: test_utils.py 项目: MFSY/NeuroM
def test_load_h5_trunk_points_regression():
    # regression test for issue encountered while
    # implementing PR #479, related to H5 unpacking
    # of files with non-standard soma structure.
    # See #480.
    nrn = utils.load_neuron(os.path.join(DATA_PATH, 'h5', 'v1', 'Neuron.h5'))
    nt.ok_(np.allclose(nrn.neurites[0].root_node.points[1],
                       [0., 0., 0.1, 0.31646374, 4., 4., 3.]))

    nt.ok_(np.allclose(nrn.neurites[1].root_node.points[1],
                       [0., 0., 0.1, 1.84130445e-01, 3.0, 235., 234.]))

    nt.ok_(np.allclose(nrn.neurites[2].root_node.points[1],
                       [0., 0., 0.1, 5.62225521e-01, 3., 466, 465]))

    nt.ok_(np.allclose(nrn.neurites[3].root_node.points[1],
                       [0., 0., 0.1, 7.28555262e-01, 2., 697, 696]))
示例#13
0
def test_load_h5_trunk_points_regression():
    # regression test for issue encountered while
    # implementing PR #479, related to H5 unpacking
    # of files with non-standard soma structure.
    # See #480.
    nrn = utils.load_neuron(Path(DATA_PATH, 'h5', 'v1', 'Neuron.h5'))
    assert np.allclose(nrn.neurites[0].root_node.points[1, COLS.XYZR],
                       [0., 0., 0.1, 0.31646374])

    assert np.allclose(nrn.neurites[1].root_node.points[1, COLS.XYZR],
                       [0., 0., 0.1, 1.84130445e-01])

    assert np.allclose(nrn.neurites[2].root_node.points[1, COLS.XYZR],
                       [0., 0., 0.1, 5.62225521e-01])

    assert np.allclose(nrn.neurites[3].root_node.points[1, COLS.XYZR],
                       [0., 0., 0.1, 7.28555262e-01])
示例#14
0
def test_neuron_name():
    for fn, nn in zip(FILENAMES, NRN_NAMES):
        nrn = utils.load_neuron(fn)
        nt.eq_(nrn.name, nn)
示例#15
0
def test_load_neuron():
    nrn = utils.load_neuron(FILES[0])
    nt.ok_(nrn.name == FILES[0].strip('.swc').split('/')[-1])
示例#16
0
FILES = [
    Path(SWC_PATH, f) for f in [
        'Neuron.swc', 'Single_apical_no_soma.swc', 'Single_apical.swc',
        'Single_basal.swc', 'Single_axon.swc',
        'sequential_trunk_off_0_16pt.swc', 'sequential_trunk_off_1_16pt.swc',
        'sequential_trunk_off_42_16pt.swc',
        'Neuron_no_missing_ids_no_zero_segs.swc'
    ]
]

FILENAMES = [
    Path(VALID_DATA_PATH, f) for f in ['Neuron.swc', 'Neuron_h5v1.h5']
]

NRN = utils.load_neuron(Path(VALID_DATA_PATH, 'Neuron.swc'))

NO_SOMA_FILE = Path(SWC_PATH, 'Single_apical_no_soma.swc')

DISCONNECTED_POINTS_FILE = Path(SWC_PATH, 'Neuron_disconnected_components.swc')

MISSING_PARENTS_FILE = Path(SWC_PATH, 'Neuron_missing_parents.swc')

INVALID_ID_SEQUENCE_FILE = Path(SWC_PATH,
                                'non_increasing_trunk_off_1_16pt.swc')


def _mock_load_neuron(filename):
    class MockNeuron:
        def __init__(self, name):
            self.soma = 42
示例#17
0
def test_load_neuron_no_consecutive_ids_loads():
    utils.load_neuron(NON_CONSECUTIVE_ID_FILE);
示例#18
0
def test_load_neuron_deep_neuron():
    '''make sure that neurons with deep (ie: larger than the python
       recursion limit can be loaded)
    '''
    deep_neuron = os.path.join(DATA_PATH, 'h5/v1/deep_neuron.h5')
    nrn = utils.load_neuron(deep_neuron)
示例#19
0
def test_load_neuron_disconnected_points_raises():
    utils.load_neuron(DISCONNECTED_POINTS_FILE)
示例#20
0
def _load_neuron(name):
    if name.endswith('.swc'):
        path = os.path.join(SWC_PATH, name)
    elif name.endswith('.h5'):
        path = os.path.join(H5V1_PATH, name)
    return name, load_neuron(path)
示例#21
0
def test_load_contour_split_1st_soma_neuron():
    nrn = utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'contour_split_1st_soma_neuron.swc'))
    nt.eq_(len(nrn.neurites), 3)
    nt.eq_(len(nrn.soma.points), 6)
    nt.eq_(nrn.soma.radius, 2.0)
    _check_neurites_have_no_parent(nrn)
示例#22
0
def test_load_neuromorpho_3pt_soma():
    nrn = utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'three_pt_soma.swc'))
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.soma.points), 3)
    nt.eq_(nrn.soma.radius, 2)
    _check_neurites_have_no_parent(nrn)
示例#23
0
def test_neuron_name():

    for fn, nn in zip(FILENAMES, NRN_NAMES):
        nrn = utils.load_neuron(fn)
        nt.eq_(nrn.name, nn)
示例#24
0
def test_load_neuron():

    nrn = utils.load_neuron(FILENAMES[0])
    nt.assert_true(isinstance(NRN, Neuron))
    nt.assert_equal(NRN.name, 'Neuron')
    _check_neurites_have_no_parent(nrn)
示例#25
0

def test_load_neuromorpho_3pt_soma():
    nrn = utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'three_pt_soma.swc'))
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.soma.points), 3)
    nt.eq_(nrn.soma.radius, 2)
    _check_neurites_have_no_parent(nrn)


@nt.raises(SomaError)
def test_load_bifurcating_soma_points_raises_SomaError():
    utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'bifurcating_soma.swc'))


NRN = utils.load_neuron(FILENAMES[0])


def test_neuron_section_ids():

    # check section IDs
    for i, sec in enumerate(NRN.sections):
        nt.eq_(i, sec.id)

def test_neurites_have_no_parent():

    _check_neurites_have_no_parent(NRN)


def test_neuron_sections():
    all_nodes = set(NRN.sections)
示例#26
0
def test_load_neuron_deep_neuron():
    '''make sure that neurons with deep (ie: larger than the python
       recursion limit can be loaded)
    '''
    deep_neuron = os.path.join(DATA_PATH, 'h5/v1/deep_neuron.h5')
    utils.load_neuron(deep_neuron)
示例#27
0
def test_load_neuron_no_soma_raises_SomaError():
    utils.load_neuron(NO_SOMA_FILE)
示例#28
0
def test_load_bifurcating_soma_points_raises_SomaError():
    utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'bifurcating_soma.swc'))
示例#29
0
def test_h5v2_raises():
    with pytest.raises(RawDataError):
        utils.load_neuron(DATA_PATH / 'h5/v2/Neuron.h5')
示例#30
0
def test_load_neuron_missing_parents_raises():
    utils.load_neuron(MISSING_PARENTS_FILE)
示例#31
0
def test_load_neuron_soma_only():

    nrn = utils.load_neuron(os.path.join(DATA_PATH, 'swc', 'Soma_origin.swc'))
    nt.eq_(len(nrn.neurites), 0)
    nt.assert_equal(nrn.name, 'Soma_origin')
示例#32
0
def test_load_neuron_invalid_id_sequence_raises():
    utils.load_neuron(INVALID_ID_SEQUENCE_FILE);
示例#33
0
def test_load_neuron_soma_only():

    nrn = utils.load_neuron(Path(DATA_PATH, 'swc', 'Soma_origin.swc'))
    assert len(nrn.neurites) == 0
    assert nrn.name == 'Soma_origin.swc'
示例#34
0
def test_load_neuron_no_consecutive_ids_raises_NonConsecutiveIDsError():
    utils.load_neuron(NON_CONSECUTIVE_ID_FILE);
示例#35
0
def test_load_neuron_no_soma_raises_SomaError():
    utils.load_neuron(NO_SOMA_FILE)
示例#36
0
文件: test_utils.py 项目: MFSY/NeuroM
@nt.raises(SomaError)
def test_load_bifurcating_soma_points_raises_SomaError():
    utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'bifurcating_soma.swc'))


def test_load_neuromorpho_3pt_soma():
    with warnings.catch_warnings(record=True):
        nrn = utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'three_pt_soma.swc'))
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.soma.points), 3)
    nt.eq_(nrn.soma.radius, 2)
    _check_neurites_have_no_parent(nrn)


NRN = utils.load_neuron(FILENAMES[0])


def test_neuron_section_ids():

    # check section IDs
    for i, sec in enumerate(NRN.sections):
        nt.eq_(i, sec.id)


def test_neurites_have_no_parent():

    _check_neurites_have_no_parent(NRN)


def test_neuron_sections():
示例#37
0
def test_load_neuron_missing_parents_raises():
    utils.load_neuron(MISSING_PARENTS_FILE)
示例#38
0
def test_neuron_name():
    for fn, nn in zip(FILENAMES, NRN_NAMES):
        nrn = utils.load_neuron(fn)
        assert nrn.name == nn
示例#39
0
def test_load_neuron():

    nrn = utils.load_neuron(FILENAMES[0])
    nt.assert_true(isinstance(NRN, Neuron))
    nt.assert_equal(NRN.name, 'Neuron')
    _check_neurites_have_no_parent(nrn)
示例#40
0
def test_load_contour_split_1st_soma_neuron():
    nrn = utils.load_neuron(os.path.join(SWC_PATH, 'soma', 'contour_split_1st_soma_neuron.swc'))
    nt.eq_(len(nrn.neurites), 3)
    nt.eq_(len(nrn.soma.points), 6)
    nt.eq_(nrn.soma.radius, 2.0)
    _check_neurites_have_no_parent(nrn)
示例#41
0
def test_load_neuron():
    nrn = utils.load_neuron(FILES[0])
    nt.ok_(nrn.name == FILES[0].strip('.swc').split('/')[-1])
示例#42
0
def test_load_bifurcating_soma_points_raises_SomaError():
    utils.load_neuron(Path(SWC_PATH, 'soma', 'bifurcating_soma.swc'))
示例#43
0
def test_load_neuron_missing_parents_raises():
    with pytest.raises(MissingParentError):
        utils.load_neuron(MISSING_PARENTS_FILE)
示例#44
0
def test_load_neuron_soma_only():

    nrn = utils.load_neuron(Path(DATA_PATH, 'swc', 'Soma_origin.swc'))
    nt.eq_(len(nrn.neurites), 0)
    nt.assert_equal(nrn.name, 'Soma_origin')
示例#45
0
def test_load_neuron_mixed_tree_h5():
    nrn_mix =  utils.load_neuron(os.path.join(H5_PATH, 'sample_mixed_tree_sections.h5'))
    nt.assert_items_equal(get('number_of_sections_per_neurite', nrn_mix), [5, 3])
    nt.assert_items_equal(get('number_of_sections_per_neurite', nrn_mix),
                          get('number_of_sections_per_neurite', H5_ORD_REF))
示例#46
0
def test_load_neuron_disconnected_points_raises():
    utils.load_neuron(DISCONNECTED_POINTS_FILE)
示例#47
0
def _load_neuron(name):
    if name.endswith('.swc'):
        path = os.path.join(SWC_PATH, name)
    elif name.endswith('.h5'):
        path = os.path.join(H5V1_PATH, name)
    return name, load_neuron(path)
示例#48
0
def test_load_neuron_invalid_id_sequence_raises():
    utils.load_neuron(INVALID_ID_SEQUENCE_FILE)
示例#49
0
@nt.raises(SomaError)
def test_load_bifurcating_soma_points_raises_SomaError():
    utils.load_neuron(Path(SWC_PATH, 'soma', 'bifurcating_soma.swc'))


def test_load_neuromorpho_3pt_soma():
    with warnings.catch_warnings(record=True):
        nrn = utils.load_neuron(Path(SWC_PATH, 'soma', 'three_pt_soma.swc'))
    nt.eq_(len(nrn.neurites), 4)
    nt.eq_(len(nrn.soma.points), 3)
    nt.eq_(nrn.soma.radius, 2)
    _check_neurites_have_no_parent(nrn)


NRN = utils.load_neuron(FILENAMES[0])


def test_neuron_section_ids():

    # check section IDs
    for i, sec in enumerate(NRN.sections):
        nt.eq_(i, sec.id)


def test_neurites_have_no_parent():

    _check_neurites_have_no_parent(NRN)


def test_neuron_sections():
示例#50
0
def test_load_neuron_mixed_tree_h5():
    nrn_mix = utils.load_neuron(Path(H5_PATH, 'sample_mixed_tree_sections.h5'))
    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix), [5, 3])
    assert_items_equal(get('number_of_sections_per_neurite', nrn_mix),
                       get('number_of_sections_per_neurite', H5_ORD_REF))
示例#51
0
def test_neuron3d_no_neurites():
    filename = os.path.join(SWC_PATH, 'point_soma.swc')
    f, a = view.neuron3d(load_neuron(filename))