Source code for bmtk.tests.builder.bionet.test_swc_reader

import pytest
import tempfile
import numpy as np

nrn = pytest.importorskip('neuron')  # skip tests if neuron isn't installed on env.

from bmtk.builder.bionet.swc_reader import SWCReader


nr5a1_morphology = """##n,type,x,y,z,radius,parent
1 1 -0.0000 0.0000 -0.0000 6.4406 -1
2 3 -3.5283 -4.3649 0.3294 0.3686 1
3 3 -3.8706 -5.0094 2.0525 0.5339 2
4 3 -4.1573 -6.0541 2.5315 0.661 3
5 3 -4.9345 -6.9190 2.2990 0.6991 4
918 4 -0.5971 5.3276 0.4139 0.1907 1
919 4 -0.8745 6.4601 0.5746 0.2669 918
920 4 -1.3117 7.5517 0.9188 0.3178 919
921 4 -1.7148 8.6488 1.1361 0.3432 920
1493 2 -2.2165 -4.7239 0.8437 0.1907 1
1494 2 -2.7098 -5.7699 0.7002 0.2669 1493
1495 2 -3.1899 -6.8480 0.1199 0.3305 1494
1496 2 -3.5848 -7.9629 -0.5080 0.3813 1495
1497 2 -3.9590 -9.0850 -1.1323 0.4068 1496
"""


[docs] @pytest.mark.skip def test_swc_reader(): tmpfile = tempfile.NamedTemporaryFile(suffix='.h5') with open(tmpfile.name, 'w') as f: f.write(nr5a1_morphology) swc_reader = SWCReader(tmpfile.name) sec_ids, sec_xs = swc_reader.choose_sections(['soma'], [0, 10.0]) # randomly choose sec_ids assert(np.all(sec_ids == [0])) assert(np.all(sec_xs == [0.5])) assert(np.allclose(swc_reader.get_dist(sec_ids), [6.4406], 0.001)) assert(np.allclose(swc_reader.get_coord(sec_ids, sec_xs, soma_center=(0.0, 0.0, 0.0)), [0.0, 0.0, 0.0])) assert(np.all(swc_reader.get_type(sec_ids) == [1])) sec_ids, sec_xs = swc_reader.choose_sections(['dend'], [0, 100.0]) # randomly choose sec_ids # print(sec_ids, sec_xs) assert(np.all(sec_ids == [1])) assert(np.all(sec_xs == [0.5])) assert(np.allclose(swc_reader.get_dist(sec_ids), [8.5613], 0.001)) assert(np.allclose(swc_reader.get_coord(sec_ids, sec_xs, soma_center=(0.0, 0.0, 0.0)), [-3.87059999, -5.00939989, -3.87059999])) assert(swc_reader.get_type(sec_ids) == [3])
if __name__ == '__main__': test_swc_reader()