morphio 3.3.10__tar.gz → 3.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {morphio-3.3.10 → morphio-3.4.0}/.github/workflows/coverage_test.yaml +7 -2
- {morphio-3.3.10 → morphio-3.4.0}/.github/workflows/run-tests.yml +2 -1
- {morphio-3.3.10 → morphio-3.4.0}/CHANGELOG.md +30 -0
- {morphio-3.3.10/morphio.egg-info → morphio-3.4.0}/PKG-INFO +1 -1
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_enums.cpp +4 -1
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_misc.cpp +0 -1
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_warnings_exceptions.cpp +1 -1
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/generated/docstrings.h +21 -5
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/enums.h +3 -1
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/warning_handling.h +19 -2
- {morphio-3.3.10 → morphio-3.4.0/morphio.egg-info}/PKG-INFO +1 -1
- {morphio-3.3.10 → morphio-3.4.0}/morphio.egg-info/SOURCES.txt +2 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/CMakeLists.txt +1 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/enums.cpp +1 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/error_message_generation.cpp +19 -3
- {morphio-3.3.10 → morphio-3.4.0}/src/error_message_generation.h +15 -3
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/morphology.cpp +1 -8
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/writer_asc.cpp +4 -2
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/writer_hdf5.cpp +4 -3
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/writer_swc.cpp +4 -3
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/writer_utils.cpp +9 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/writer_utils.h +1 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/properties.cpp +8 -14
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/morphologyASC.cpp +8 -11
- morphio-3.4.0/src/readers/morphologySWC.cpp +545 -0
- morphio-3.4.0/src/readers/utils.cpp +81 -0
- morphio-3.4.0/src/readers/utils.h +26 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/shared_utils.cpp +3 -1
- {morphio-3.3.10 → morphio-3.4.0}/src/vasc/properties.cpp +3 -6
- {morphio-3.3.10 → morphio-3.4.0}/src/warning_handling.cpp +4 -2
- morphio-3.3.10/src/readers/morphologySWC.cpp +0 -455
- {morphio-3.3.10 → morphio-3.4.0}/.clang-format +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.github/workflows/check-sdist.yml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.github/workflows/clang_format_check.yaml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.github/workflows/docstring_check.yaml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.github/workflows/publish-sdist-wheels.yml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.gitignore +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.gitmodules +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/.readthedocs.yaml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/cmake/gsl-lite-config-version.cmake.in +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/cmake/gsl-lite-config.cmake.in +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/gsl-lite.natvis +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl/gsl +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl/gsl-lite-vc6.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl/gsl-lite.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl/gsl-lite.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl-lite/gsl-lite.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/GSL_LITE/include/gsl.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/CMake/HighFiveConfig.cmake.in +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/CMake/HighFiveTargetDeps.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/CMake/HighFiveTargetExport.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/CMake/HighFiveWarnings.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/CMake/config/TestHelpers.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/Doxyfile +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/DoxygenLayout.xml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/developer_guide.md +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/doxygen-awesome-css/doxygen-awesome.css +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/doxygen-awesome-css/update_doxygen_awesome.sh +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/environment.yaml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/installation.md +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/migration_guide.md +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example1_hdf5.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example1_highfive.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example3.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example6.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example_boost.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example_boost_ublas.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example_easy_h5py.py +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example_easy_highfive.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/example_props.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/examples.js +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/godbolt.org.ico +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/doc/poster/index.html +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Attribute.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5DataSet.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5DataSpace.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5DataType.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Easy.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Exception.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5File.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5FileDriver.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Group.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Object.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5PropertyList.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Reference.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Selection.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Utility.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Version.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/H5Version.hpp.in +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Annotate_traits.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Annotate_traits_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Attribute_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Converter_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5DataSet_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5DataType_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Dataspace_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Exception_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5FileDriver_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5File_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Friends.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Inspector_decl.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Inspector_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Iterables_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Node_traits.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Node_traits_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Object_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Path_traits.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Path_traits_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5PropertyList_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5ReadWrite_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Reference_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Selection_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Slice_traits.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Slice_traits_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5Utils.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/H5_definitions.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5a_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5d_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5e_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5f_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5g_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5i_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5l_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5o_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5p_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5r_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5s_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/h5t_wrapper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/bits/string_padding.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/boost.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/eigen.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_Eigen.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_misc.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_opencv.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_public.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_scalar.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_vector.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/h5easy_bits/H5Easy_xtensor.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/half_float.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/HighFive/include/highfive/highfive.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/LICENSE +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/cmake/GhcHelper.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/cmake/config.cmake.in +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/include/ghc/filesystem.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/include/ghc/fs_fwd.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/include/ghc/fs_impl.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/include/ghc/fs_std.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/include/ghc/fs_std_fwd.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/ghc_filesystem/include/ghc/fs_std_impl.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/char_traits.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/debug.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/dot.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/enums.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/generate_cpp.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/generator.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/internals.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/iterator.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/licence_1_0.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/lookup.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/match_results.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/memory_file.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/narrow.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/observer_ptr.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/parser.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/blocks.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/fold2.inc +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/fold4.inc +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/re_token.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/re_tokeniser.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/re_tokeniser_helper.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/re_tokeniser_state.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/scripts.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/table.inc +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tokeniser/unicode.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tree/end_node.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tree/iteration_node.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tree/leaf_node.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tree/node.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tree/selection_node.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/parser/tree/sequence_node.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/partition/charset.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/partition/equivset.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/rules.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/runtime_error.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/serialise.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/sm_to_csm.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/sm_traits.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/state_machine.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/stream_shared_iterator.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/string_token.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/3rdparty/lexertl14/include/lexertl/utf_iterators.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/AUTHORS.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/CMake/CodeCoverage.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/CMake/CompilerFlags.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/CMake/MorphIOConfig.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/CONTRIBUTING.md +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/LICENSE.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/MANIFEST.in +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/README.rst +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_enums.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_immutable.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_immutable.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_misc.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_mutable.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_mutable.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_vasculature.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_vasculature.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bind_warnings_exceptions.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bindings_utils.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/bindings_utils.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/generated/.clang-format +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/morphio.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/CMakeLists.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/LICENSE +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/attr.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/buffer_info.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/cast.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/chrono.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/common.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/complex.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/class.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/common.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/descr.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/init.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/internals.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/type_caster_base.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/detail/typeid.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/eigen/common.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/eigen/matrix.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/eigen/tensor.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/eigen.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/embed.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/eval.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/functional.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/gil.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/gil_safe_call_once.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/iostream.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/numpy.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/operators.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/options.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/pybind11.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/pytypes.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/stl/filesystem.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/stl.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/stl_bind.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/type_caster_pyobject_ptr.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/include/pybind11/typing.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/FindCatch.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/FindEigen3.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/FindPythonLibsNew.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/JoinPaths.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/pybind11Common.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/pybind11NewTools.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/binds/python/pybind11/tools/pybind11Tools.cmake +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/collection.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/dendritic_spine.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/endoplasmic_reticulum.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/errorMessages.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/exceptions.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/glial_cell.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mito_section.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mitochondria.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/morphology.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/dendritic_spine.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/endoplasmic_reticulum.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/glial_cell.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/mito_section.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/mitochondria.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/modifiers.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/morphology.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/section.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/soma.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/mut/writers.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/properties.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/section.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/section_base.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/section_iterators.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/soma.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/types.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/vasc/iterators.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/vasc/properties.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/vasc/section.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/vasc/vasculature.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/vector_types.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/include/morphio/version.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio/__init__.py +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio/mut/__init__.py +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio/vasculature/__init__.py +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio.egg-info/dependency_links.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio.egg-info/not-zip-safe +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio.egg-info/requires.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/morphio.egg-info/top_level.txt +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/pyproject.toml +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/setup.cfg +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/setup.py +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/collection.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/dendritic_spine.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/endoplasmic_reticulum.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/errorMessages.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/glial_cell.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mito_section.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mitochondria.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/morphology.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/dendritic_spine.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/endoplasmic_reticulum.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/glial_cell.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/mito_section.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/mitochondria.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/modifiers.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/section.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/mut/soma.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/point_utils.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/point_utils.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/NeurolucidaLexer.inc +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/morphologyASC.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/morphologyHDF5.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/morphologyHDF5.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/morphologySWC.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/vasculatureHDF5.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/readers/vasculatureHDF5.h +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/section.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/shared_utils.hpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/soma.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/vasc/section.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/vasc/vasculature.cpp +0 -0
- {morphio-3.3.10 → morphio-3.4.0}/src/version.cpp.in +0 -0
|
@@ -19,14 +19,19 @@ jobs:
|
|
|
19
19
|
uses: actions/checkout@v4
|
|
20
20
|
- name: Fetch repository
|
|
21
21
|
run: git fetch --prune --unshallow
|
|
22
|
+
|
|
22
23
|
- name: Get submodules
|
|
23
24
|
run: git submodule update --init --force --recursive
|
|
25
|
+
|
|
24
26
|
- name: Install packages
|
|
25
27
|
run: |
|
|
26
28
|
sudo apt-get ${{env.apt_options}} update -y
|
|
27
|
-
sudo apt-get ${{env.apt_options}} install -y build-essential libhdf5-dev lcov
|
|
29
|
+
sudo apt-get ${{env.apt_options}} install -y build-essential libhdf5-dev lcov language-pack-de
|
|
28
30
|
- name: Build and run unittests
|
|
29
|
-
run:
|
|
31
|
+
run: |
|
|
32
|
+
locale -a
|
|
33
|
+
ci/coverage_test.sh
|
|
34
|
+
|
|
30
35
|
- name: Upload Coverage to Coveralls
|
|
31
36
|
uses: coverallsapp/github-action@master
|
|
32
37
|
with:
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
if: runner.os == 'Linux'
|
|
38
38
|
run: |
|
|
39
39
|
sudo apt-get ${{env.apt_options}} update -y
|
|
40
|
-
sudo apt-get ${{env.apt_options}} install -y build-essential libhdf5-dev
|
|
40
|
+
sudo apt-get ${{env.apt_options}} install -y build-essential libhdf5-dev language-pack-de
|
|
41
41
|
|
|
42
42
|
- name: Install packages on MacOS
|
|
43
43
|
if: runner.os == 'macOS'
|
|
@@ -55,6 +55,7 @@ jobs:
|
|
|
55
55
|
CC: ${{ matrix.compiler.CC }}
|
|
56
56
|
CXX: ${{ matrix.compiler.CXX }}
|
|
57
57
|
run: |
|
|
58
|
+
locale -a
|
|
58
59
|
./ci/python_test.sh
|
|
59
60
|
./ci/cpp_test.sh
|
|
60
61
|
./ci/cpp_test.sh "-DMORPHIO_USE_DOUBLE=ON"
|
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
v3.4.0
|
|
2
|
+
======
|
|
3
|
+
Improvements:
|
|
4
|
+
* New SWC parser:
|
|
5
|
+
* handles `locale` correctly, so decimal numbers using comma are allowed
|
|
6
|
+
* ~800 line SWC parse time goes from 0.976 to 0.699
|
|
7
|
+
* Doesn't create changes to bifurcations at the root nodes of SWC files
|
|
8
|
+
* More strict Neuromorpho 3 point soma checks
|
|
9
|
+
* disallow repeated Sample IDs
|
|
10
|
+
* Follow https://swc-specification.readthedocs.io/en/latest/swc.html more closely
|
|
11
|
+
* Allow only positive integer Sample IDs
|
|
12
|
+
* Allow for the type of neurite to change at bifurcation points
|
|
13
|
+
* Allow Window style `End of Lines`
|
|
14
|
+
* allow trailing spaces on sample lines
|
|
15
|
+
|
|
16
|
+
* Since this is a large change to the SWC parser, the minor release was increased
|
|
17
|
+
|
|
18
|
+
v3.3.10
|
|
19
|
+
=======
|
|
20
|
+
* This is primarily so that 3.13 wheels exist before the new SWC parser is put into production.
|
|
21
|
+
* try to work around removal of older MSVC tools
|
|
22
|
+
* Remove Errorlevel::Info; it's not an error if it's only informative
|
|
23
|
+
* Update upload/download actions to v4.
|
|
24
|
+
* update HDF5 url
|
|
25
|
+
* Update HighFive to 2.10.0
|
|
26
|
+
|
|
27
|
+
v3.3.9
|
|
28
|
+
======
|
|
29
|
+
* remove embarrassing debug print; Hat-tip SarahM
|
|
30
|
+
|
|
1
31
|
v3.3.8
|
|
2
32
|
======
|
|
3
33
|
* Make ThreePointSoma use relative tolerance (494)
|
|
@@ -70,6 +70,8 @@ void bind_enums(py::module& m) {
|
|
|
70
70
|
.value("soma_sphere", morphio::enums::Option::SOMA_SPHERE)
|
|
71
71
|
.value("no_duplicates", morphio::enums::Option::NO_DUPLICATES)
|
|
72
72
|
.value("nrn_order", morphio::enums::Option::NRN_ORDER)
|
|
73
|
+
.value("allow_unifurcated_section_change",
|
|
74
|
+
morphio::enums::Option::ALLOW_UNIFURCATED_SECTION_CHANGE)
|
|
73
75
|
.export_values();
|
|
74
76
|
|
|
75
77
|
|
|
@@ -95,7 +97,8 @@ void bind_enums(py::module& m) {
|
|
|
95
97
|
.value("write_empty_morphology", morphio::enums::WRITE_EMPTY_MORPHOLOGY)
|
|
96
98
|
.value("zero_diameter", morphio::enums::Warning::ZERO_DIAMETER)
|
|
97
99
|
.value("soma_non_contour", morphio::enums::Warning::SOMA_NON_CONTOUR)
|
|
98
|
-
.value("soma_non_cylinder_or_point", morphio::enums::Warning::SOMA_NON_CYLINDER_OR_POINT)
|
|
100
|
+
.value("soma_non_cylinder_or_point", morphio::enums::Warning::SOMA_NON_CYLINDER_OR_POINT)
|
|
101
|
+
.value("type_changed_within_section", morphio::enums::Warning::SECTION_TYPE_CHANGED);
|
|
99
102
|
|
|
100
103
|
py::enum_<morphio::enums::SomaType>(m, "SomaType", py::arithmetic())
|
|
101
104
|
.value("SOMA_UNDEFINED", morphio::enums::SomaType::SOMA_UNDEFINED)
|
|
@@ -104,7 +104,7 @@ void bind_warnings_exceptions(py::module& m) {
|
|
|
104
104
|
(void) C(WriteUndefinedSoma);
|
|
105
105
|
(void) C(MitochondriaWriteNotSupported);
|
|
106
106
|
(void) C(SomaNonContour);
|
|
107
|
-
(void) C(
|
|
107
|
+
(void) C(SomaNonCylinderOrPoint);
|
|
108
108
|
#undef QUOTE
|
|
109
109
|
#undef C
|
|
110
110
|
}
|
|
@@ -770,6 +770,18 @@ static const char *mkd_doc_morphio_SectionBuilderError = R"doc()doc";
|
|
|
770
770
|
|
|
771
771
|
static const char *mkd_doc_morphio_SectionBuilderError_SectionBuilderError = R"doc()doc";
|
|
772
772
|
|
|
773
|
+
static const char *mkd_doc_morphio_SectionTypeChanged = R"doc()doc";
|
|
774
|
+
|
|
775
|
+
static const char *mkd_doc_morphio_SectionTypeChanged_SectionTypeChanged = R"doc()doc";
|
|
776
|
+
|
|
777
|
+
static const char *mkd_doc_morphio_SectionTypeChanged_errorLevel = R"doc()doc";
|
|
778
|
+
|
|
779
|
+
static const char *mkd_doc_morphio_SectionTypeChanged_lineNumber = R"doc()doc";
|
|
780
|
+
|
|
781
|
+
static const char *mkd_doc_morphio_SectionTypeChanged_msg = R"doc()doc";
|
|
782
|
+
|
|
783
|
+
static const char *mkd_doc_morphio_SectionTypeChanged_warning = R"doc()doc";
|
|
784
|
+
|
|
773
785
|
static const char *mkd_doc_morphio_Section_Section = R"doc()doc";
|
|
774
786
|
|
|
775
787
|
static const char *mkd_doc_morphio_Section_breadth_begin = R"doc(Breadth first iterator)doc";
|
|
@@ -862,15 +874,15 @@ static const char *mkd_doc_morphio_SomaNonContour_msg = R"doc()doc";
|
|
|
862
874
|
|
|
863
875
|
static const char *mkd_doc_morphio_SomaNonContour_warning = R"doc()doc";
|
|
864
876
|
|
|
865
|
-
static const char *
|
|
877
|
+
static const char *mkd_doc_morphio_SomaNonCylinderOrPoint = R"doc()doc";
|
|
866
878
|
|
|
867
|
-
static const char *
|
|
879
|
+
static const char *mkd_doc_morphio_SomaNonCylinderOrPoint_SomaNonCylinderOrPoint = R"doc()doc";
|
|
868
880
|
|
|
869
|
-
static const char *
|
|
881
|
+
static const char *mkd_doc_morphio_SomaNonCylinderOrPoint_errorLevel = R"doc()doc";
|
|
870
882
|
|
|
871
|
-
static const char *
|
|
883
|
+
static const char *mkd_doc_morphio_SomaNonCylinderOrPoint_msg = R"doc()doc";
|
|
872
884
|
|
|
873
|
-
static const char *
|
|
885
|
+
static const char *mkd_doc_morphio_SomaNonCylinderOrPoint_warning = R"doc()doc";
|
|
874
886
|
|
|
875
887
|
static const char *mkd_doc_morphio_Soma_Soma = R"doc()doc";
|
|
876
888
|
|
|
@@ -1094,6 +1106,8 @@ static const char *mkd_doc_morphio_enums_Option =
|
|
|
1094
1106
|
R"doc(The list of modifier flags that can be passed when loading a
|
|
1095
1107
|
morphology See morphio::mut::modifiers for more information)doc";
|
|
1096
1108
|
|
|
1109
|
+
static const char *mkd_doc_morphio_enums_Option_ALLOW_UNIFURCATED_SECTION_CHANGE = R"doc(Allow section type to change without bifurcation)doc";
|
|
1110
|
+
|
|
1097
1111
|
static const char *mkd_doc_morphio_enums_Option_NO_DUPLICATES = R"doc(Skip duplicating points)doc";
|
|
1098
1112
|
|
|
1099
1113
|
static const char *mkd_doc_morphio_enums_Option_NO_MODIFIER = R"doc(Read morphology as is without any modification)doc";
|
|
@@ -1211,6 +1225,8 @@ static const char *mkd_doc_morphio_enums_Warning_NO_SOMA_FOUND = R"doc(No soma f
|
|
|
1211
1225
|
|
|
1212
1226
|
static const char *mkd_doc_morphio_enums_Warning_ONLY_CHILD = R"doc(Single child sections are not allowed in SWC format)doc";
|
|
1213
1227
|
|
|
1228
|
+
static const char *mkd_doc_morphio_enums_Warning_SECTION_TYPE_CHANGED = R"doc(In SWC, the type changed within a section, not post bifurcation)doc";
|
|
1229
|
+
|
|
1214
1230
|
static const char *mkd_doc_morphio_enums_Warning_SOMA_NON_CONFORM = R"doc(Soma does not conform the three point soma spec from NeuroMorpho.org)doc";
|
|
1215
1231
|
|
|
1216
1232
|
static const char *mkd_doc_morphio_enums_Warning_SOMA_NON_CONTOUR = R"doc(Soma must be a contour for ASC and H5)doc";
|
|
@@ -19,7 +19,8 @@ enum Option {
|
|
|
19
19
|
TWO_POINTS_SECTIONS = 0x01, //!< Read sections only with 2 or more points
|
|
20
20
|
SOMA_SPHERE = 0x02, //!< Interpret morphology soma as a sphere
|
|
21
21
|
NO_DUPLICATES = 0x04, //!< Skip duplicating points
|
|
22
|
-
NRN_ORDER = 0x08
|
|
22
|
+
NRN_ORDER = 0x08, //!< Order of neurites will be the same as in NEURON simulator
|
|
23
|
+
ALLOW_UNIFURCATED_SECTION_CHANGE = 0x10 //!< Allow section type to change without bifurcation
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
/**
|
|
@@ -42,6 +43,7 @@ enum Warning {
|
|
|
42
43
|
ZERO_DIAMETER, //!< Zero section diameter
|
|
43
44
|
SOMA_NON_CONTOUR, //!< Soma must be a contour for ASC and H5
|
|
44
45
|
SOMA_NON_CYLINDER_OR_POINT, //!< Soma must be stacked cylinders or a point
|
|
46
|
+
SECTION_TYPE_CHANGED, //!< In SWC, the type changed within a section, not post bifurcation
|
|
45
47
|
};
|
|
46
48
|
|
|
47
49
|
enum AnnotationType {
|
|
@@ -54,6 +54,23 @@ struct ZeroDiameter: public WarningMessage {
|
|
|
54
54
|
uint64_t lineNumber;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
+
struct SectionTypeChanged: public WarningMessage {
|
|
58
|
+
SectionTypeChanged(std::string uri_, uint64_t lineNumber_)
|
|
59
|
+
: WarningMessage(std::move(uri_))
|
|
60
|
+
, lineNumber(lineNumber_) {}
|
|
61
|
+
morphio::enums::Warning warning() const final {
|
|
62
|
+
return Warning::SECTION_TYPE_CHANGED;
|
|
63
|
+
}
|
|
64
|
+
morphio::readers::ErrorLevel errorLevel = morphio::readers::ErrorLevel::WARNING;
|
|
65
|
+
std::string msg() const final {
|
|
66
|
+
static const char* description =
|
|
67
|
+
"Warning: Type changed within section, without bifurcation";
|
|
68
|
+
return "\n" + details::errorLink(uri, lineNumber, errorLevel) + description;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
uint64_t lineNumber;
|
|
72
|
+
};
|
|
73
|
+
|
|
57
74
|
struct DisconnectedNeurite: public WarningMessage {
|
|
58
75
|
DisconnectedNeurite(std::string uri_, uint64_t lineNumber_)
|
|
59
76
|
: WarningMessage(std::move(uri_))
|
|
@@ -243,8 +260,8 @@ struct SomaNonContour: public WarningMessage {
|
|
|
243
260
|
}
|
|
244
261
|
};
|
|
245
262
|
|
|
246
|
-
struct
|
|
247
|
-
|
|
263
|
+
struct SomaNonCylinderOrPoint: public WarningMessage {
|
|
264
|
+
SomaNonCylinderOrPoint()
|
|
248
265
|
: WarningMessage(std::string()) {}
|
|
249
266
|
Warning warning() const final {
|
|
250
267
|
return Warning::SOMA_NON_CYLINDER_OR_POINT;
|
|
@@ -324,6 +324,8 @@ src/readers/morphologyHDF5.cpp
|
|
|
324
324
|
src/readers/morphologyHDF5.h
|
|
325
325
|
src/readers/morphologySWC.cpp
|
|
326
326
|
src/readers/morphologySWC.h
|
|
327
|
+
src/readers/utils.cpp
|
|
328
|
+
src/readers/utils.h
|
|
327
329
|
src/readers/vasculatureHDF5.cpp
|
|
328
330
|
src/readers/vasculatureHDF5.h
|
|
329
331
|
src/vasc/properties.cpp
|
|
@@ -13,7 +13,7 @@ std::string errorMsg(const std::string& uri,
|
|
|
13
13
|
const std::string& msg) {
|
|
14
14
|
return "\n" + (uri.empty() ? "" : errorLink(uri, lineNumber, errorLevel) + "\n") + msg;
|
|
15
15
|
}
|
|
16
|
-
}
|
|
16
|
+
} // namespace
|
|
17
17
|
|
|
18
18
|
// LCOV_EXCL_START { all the error messages are excluded from coverage
|
|
19
19
|
|
|
@@ -82,8 +82,14 @@ std::string ErrorMessages::ERROR_REPEATED_ID(const unsigned int originalId,
|
|
|
82
82
|
newLineNumber,
|
|
83
83
|
ErrorLevel::WARNING,
|
|
84
84
|
"Repeated ID: " + std::to_string(originalId)) +
|
|
85
|
-
"\nID already appears here: \n" +
|
|
86
|
-
|
|
85
|
+
"\nID already appears here: \n" + errorLink(_uri, originalLineNumber, ErrorLevel::WARNING);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
std::string ErrorMessages::EARLY_END_OF_FILE(long unsigned int lineNumber) const {
|
|
89
|
+
return errorMsg(_uri,
|
|
90
|
+
lineNumber,
|
|
91
|
+
ErrorLevel::ERROR,
|
|
92
|
+
"The end of the file was reached before parsing finshed");
|
|
87
93
|
}
|
|
88
94
|
|
|
89
95
|
std::string ErrorMessages::ERROR_SELF_PARENT(const unsigned int lineNumber) const {
|
|
@@ -100,6 +106,13 @@ std::string ErrorMessages::ERROR_MISSING_MITO_PARENT(int mitoParentId) const {
|
|
|
100
106
|
std::to_string(mitoParentId) + " does not exist.";
|
|
101
107
|
}
|
|
102
108
|
|
|
109
|
+
std::string ErrorMessages::ERROR_NEGATIVE_ID(long unsigned int lineNumber) const {
|
|
110
|
+
return errorMsg(_uri,
|
|
111
|
+
lineNumber,
|
|
112
|
+
ErrorLevel::WARNING,
|
|
113
|
+
"The ID assigned to this line is negative");
|
|
114
|
+
}
|
|
115
|
+
|
|
103
116
|
////////////////////////////////////////////////////////////////////////////////
|
|
104
117
|
// NEUROLUCIDA
|
|
105
118
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -157,6 +170,9 @@ std::string ErrorMessages::ERROR_UNCOMPATIBLE_FLAGS(morphio::Option flag1,
|
|
|
157
170
|
////////////////////////////////////////////////////////////////////////////////
|
|
158
171
|
// WRITERS
|
|
159
172
|
////////////////////////////////////////////////////////////////////////////////
|
|
173
|
+
std::string ErrorMessages::ERROR_EMPTY_MORPHOLOGY() const {
|
|
174
|
+
return errorMsg(_uri, 0, ErrorLevel::ERROR, "Morphology is empty.");
|
|
175
|
+
}
|
|
160
176
|
|
|
161
177
|
std::string ErrorMessages::ERROR_UNSUPPORTED_SECTION_TYPE(const SectionType& type) const {
|
|
162
178
|
return ("Attempted to write unsupported section type: " + std::to_string(type) +
|
|
@@ -52,9 +52,7 @@ class ErrorMessages
|
|
|
52
52
|
std::string ERROR_MULTIPLE_SOMATA(const std::vector<unsigned int>& lineNumbers) const;
|
|
53
53
|
|
|
54
54
|
/** Missing section parent error message */
|
|
55
|
-
std::string ERROR_MISSING_PARENT(unsigned int id,
|
|
56
|
-
int parentId,
|
|
57
|
-
unsigned int lineNumber) const;
|
|
55
|
+
std::string ERROR_MISSING_PARENT(unsigned int id, int parentId, unsigned int lineNumber) const;
|
|
58
56
|
|
|
59
57
|
/** Bifurcating soma error message */
|
|
60
58
|
std::string ERROR_SOMA_BIFURCATION(unsigned int sampleLineNumber,
|
|
@@ -71,12 +69,21 @@ class ErrorMessages
|
|
|
71
69
|
/** Section self parent error message */
|
|
72
70
|
std::string ERROR_SELF_PARENT(unsigned int lineNumber) const;
|
|
73
71
|
|
|
72
|
+
/** The end of the file was reached before parsing finshed */
|
|
73
|
+
std::string EARLY_END_OF_FILE(long unsigned int lineNumber) const;
|
|
74
|
+
|
|
74
75
|
/** Undefined soma error message */
|
|
75
76
|
std::string ERROR_NOT_IMPLEMENTED_UNDEFINED_SOMA(const std::string&) const;
|
|
76
77
|
|
|
77
78
|
/** Missing mitochondria parent section error message */
|
|
78
79
|
std::string ERROR_MISSING_MITO_PARENT(int mitoParentId) const;
|
|
79
80
|
|
|
81
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
82
|
+
// SWC
|
|
83
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
84
|
+
/** A negative ID is used in SWC */
|
|
85
|
+
std::string ERROR_NEGATIVE_ID(long unsigned int lineNumber) const;
|
|
86
|
+
|
|
80
87
|
////////////////////////////////////////////////////////////////////////////////
|
|
81
88
|
// NEUROLUCIDA
|
|
82
89
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -111,6 +118,9 @@ class ErrorMessages
|
|
|
111
118
|
// WRITERS
|
|
112
119
|
////////////////////////////////////////////////////////////////////////////////
|
|
113
120
|
|
|
121
|
+
/** Morphology is empty */
|
|
122
|
+
std::string ERROR_EMPTY_MORPHOLOGY() const;
|
|
123
|
+
|
|
114
124
|
/** Unsupported morphology section type error message */
|
|
115
125
|
std::string ERROR_UNSUPPORTED_SECTION_TYPE(const enums::SectionType& type) const;
|
|
116
126
|
|
|
@@ -125,6 +135,7 @@ class ErrorMessages
|
|
|
125
135
|
|
|
126
136
|
/** Can't write perimeter data to SWC, ASC error message */
|
|
127
137
|
std::string ERROR_PERIMETER_DATA_NOT_WRITABLE();
|
|
138
|
+
|
|
128
139
|
/** Single section child SWC error message */
|
|
129
140
|
std::string ERROR_ONLY_CHILD_SWC_WRITER(unsigned int parentId) const;
|
|
130
141
|
|
|
@@ -136,6 +147,7 @@ class ErrorMessages
|
|
|
136
147
|
|
|
137
148
|
/** Contour soma must have at least 3 points. */
|
|
138
149
|
std::string ERROR_SOMA_INVALID_CONTOUR() const;
|
|
150
|
+
|
|
139
151
|
private:
|
|
140
152
|
std::string _uri;
|
|
141
153
|
};
|
|
@@ -345,8 +345,7 @@ breadth_iterator Morphology::breadth_end() const {
|
|
|
345
345
|
void Morphology::applyModifiers(unsigned int modifierFlags) {
|
|
346
346
|
if (modifierFlags & NO_DUPLICATES & TWO_POINTS_SECTIONS) {
|
|
347
347
|
const auto err = details::ErrorMessages(_uri);
|
|
348
|
-
throw SectionBuilderError(
|
|
349
|
-
err.ERROR_UNCOMPATIBLE_FLAGS(NO_DUPLICATES, TWO_POINTS_SECTIONS));
|
|
348
|
+
throw SectionBuilderError(err.ERROR_UNCOMPATIBLE_FLAGS(NO_DUPLICATES, TWO_POINTS_SECTIONS));
|
|
350
349
|
}
|
|
351
350
|
|
|
352
351
|
if (modifierFlags & SOMA_SPHERE) {
|
|
@@ -389,12 +388,6 @@ std::unordered_map<int, std::vector<unsigned int>> Morphology::connectivity() {
|
|
|
389
388
|
}
|
|
390
389
|
|
|
391
390
|
void Morphology::write(const std::string& filename) const {
|
|
392
|
-
for (const auto& root : rootSections()) {
|
|
393
|
-
if (root->points().size() < 2) {
|
|
394
|
-
throw morphio::SectionBuilderError("Root sections must have at least 2 points");
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
391
|
const size_t pos = filename.find_last_of('.');
|
|
399
392
|
if (pos == std::string::npos) {
|
|
400
393
|
throw UnknownFileType("Missing file extension.");
|
|
@@ -54,13 +54,14 @@ void asc(const Morphology& morph,
|
|
|
54
54
|
const std::string& filename,
|
|
55
55
|
std::shared_ptr<morphio::WarningHandler> handler) {
|
|
56
56
|
if (details::emptyMorphology(morph, handler)) {
|
|
57
|
-
|
|
57
|
+
throw morphio::WriterError(morphio::details::ErrorMessages().ERROR_EMPTY_MORPHOLOGY());
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
details::validateContourSoma(morph, handler);
|
|
61
61
|
details::checkSomaHasSameNumberPointsDiameters(*morph.soma());
|
|
62
62
|
details::validateHasNoMitochondria(morph, handler);
|
|
63
63
|
details::validateHasNoPerimeterData(morph);
|
|
64
|
+
details::validateRootPointsHaveTwoOrMorePoints(morph);
|
|
64
65
|
|
|
65
66
|
std::ofstream myfile(filename);
|
|
66
67
|
|
|
@@ -80,7 +81,8 @@ void asc(const Morphology& morph,
|
|
|
80
81
|
} else if (type == SECTION_APICAL_DENDRITE) {
|
|
81
82
|
myfile << "( (Color Red)\n (Apical)\n";
|
|
82
83
|
} else {
|
|
83
|
-
throw WriterError(
|
|
84
|
+
throw WriterError(
|
|
85
|
+
morphio::details::ErrorMessages().ERROR_UNSUPPORTED_SECTION_TYPE(type));
|
|
84
86
|
}
|
|
85
87
|
write_asc_section(myfile, section, 2);
|
|
86
88
|
myfile << ")\n\n";
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
#include <highfive/H5File.hpp>
|
|
14
14
|
#include <highfive/H5Object.hpp>
|
|
15
15
|
|
|
16
|
-
#include "../shared_utils.hpp"
|
|
17
16
|
#include "../error_message_generation.h"
|
|
17
|
+
#include "../shared_utils.hpp"
|
|
18
|
+
#include "morphio/exceptions.h"
|
|
18
19
|
#include "writer_utils.h"
|
|
19
20
|
|
|
20
21
|
namespace {
|
|
@@ -151,11 +152,12 @@ void h5(const Morphology& morph,
|
|
|
151
152
|
const std::string& filename,
|
|
152
153
|
std::shared_ptr<morphio::WarningHandler> handler) {
|
|
153
154
|
if (details::emptyMorphology(morph, handler)) {
|
|
154
|
-
|
|
155
|
+
throw morphio::WriterError(morphio::details::ErrorMessages().ERROR_EMPTY_MORPHOLOGY());
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
details::validateContourSoma(morph, handler);
|
|
158
159
|
details::checkSomaHasSameNumberPointsDiameters(*morph.soma());
|
|
160
|
+
details::validateRootPointsHaveTwoOrMorePoints(morph);
|
|
159
161
|
|
|
160
162
|
HighFive::File h5_file(filename,
|
|
161
163
|
HighFive::File::ReadWrite | HighFive::File::Create |
|
|
@@ -169,7 +171,6 @@ void h5(const Morphology& morph,
|
|
|
169
171
|
|
|
170
172
|
const std::vector<Point>& somaPoints = morph.soma()->points();
|
|
171
173
|
const auto& somaDiameters = morph.soma()->diameters();
|
|
172
|
-
|
|
173
174
|
for (unsigned int i = 0; i < somaPoints.size(); ++i) {
|
|
174
175
|
raw_points.push_back(
|
|
175
176
|
{somaPoints[i][0], somaPoints[i][1], somaPoints[i][2], somaDiameters[i]});
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
#include <highfive/H5File.hpp>
|
|
21
21
|
#include <highfive/H5Object.hpp>
|
|
22
22
|
|
|
23
|
-
#include "../shared_utils.hpp"
|
|
24
23
|
#include "../error_message_generation.h"
|
|
24
|
+
#include "../shared_utils.hpp"
|
|
25
25
|
#include "writer_utils.h"
|
|
26
26
|
|
|
27
27
|
namespace {
|
|
@@ -122,7 +122,7 @@ void validateSWCSoma(const morphio::mut::Morphology& morph,
|
|
|
122
122
|
} else if (!(soma->type() == SomaType::SOMA_NEUROMORPHO_THREE_POINT_CYLINDERS ||
|
|
123
123
|
soma->type() == SomaType::SOMA_CYLINDERS ||
|
|
124
124
|
soma->type() == SomaType::SOMA_SINGLE_POINT)) {
|
|
125
|
-
handler->emit(std::make_shared<morphio::
|
|
125
|
+
handler->emit(std::make_shared<morphio::SomaNonCylinderOrPoint>());
|
|
126
126
|
} else if (soma->type() == SomaType::SOMA_SINGLE_POINT && soma_points.size() != 1) {
|
|
127
127
|
throw WriterError(ErrorMessages().ERROR_SOMA_INVALID_SINGLE_POINT());
|
|
128
128
|
} else if (soma->type() == SomaType::SOMA_NEUROMORPHO_THREE_POINT_CYLINDERS &&
|
|
@@ -142,7 +142,8 @@ void swc(const Morphology& morph,
|
|
|
142
142
|
const std::string& filename,
|
|
143
143
|
std::shared_ptr<morphio::WarningHandler> handler) {
|
|
144
144
|
if (details::emptyMorphology(morph, handler)) {
|
|
145
|
-
|
|
145
|
+
throw morphio::WriterError(
|
|
146
|
+
morphio::details::ErrorMessages(filename).ERROR_EMPTY_MORPHOLOGY());
|
|
146
147
|
}
|
|
147
148
|
|
|
148
149
|
const std::shared_ptr<Soma>& soma = morph.soma();
|
|
@@ -71,6 +71,15 @@ void validateHasNoMitochondria(const morphio::mut::Morphology& morph,
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
void validateRootPointsHaveTwoOrMorePoints(const morphio::mut::Morphology& morph) {
|
|
75
|
+
for (const auto& root : morph.rootSections()) {
|
|
76
|
+
if (root->points().size() < 2) {
|
|
77
|
+
throw morphio::RawDataError("Root sections must have at least 2 points");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
74
83
|
} // namespace details
|
|
75
84
|
} // namespace writer
|
|
76
85
|
} // namespace mut
|
|
@@ -22,6 +22,7 @@ void validateContourSoma(const morphio::mut::Morphology&,
|
|
|
22
22
|
void validateHasNoPerimeterData(const morphio::mut::Morphology&);
|
|
23
23
|
void validateHasNoMitochondria(const morphio::mut::Morphology&,
|
|
24
24
|
std::shared_ptr<morphio::WarningHandler> handler);
|
|
25
|
+
void validateRootPointsHaveTwoOrMorePoints(const morphio::mut::Morphology& morph);
|
|
25
26
|
|
|
26
27
|
} // namespace details
|
|
27
28
|
} // namespace writer
|
|
@@ -74,10 +74,9 @@ PointLevel& PointLevel::operator=(const PointLevel& other) {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
bool SectionLevel::diff(const SectionLevel& other) const {
|
|
77
|
-
return !(this == &other ||
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
morphio::property::compare(_children, other._children)));
|
|
77
|
+
return !(this == &other || (compare_section_structure(_sections, other._sections) &&
|
|
78
|
+
morphio::property::compare(_sectionTypes, other._sectionTypes) &&
|
|
79
|
+
morphio::property::compare(_children, other._children)));
|
|
81
80
|
}
|
|
82
81
|
|
|
83
82
|
bool SectionLevel::operator==(const SectionLevel& other) const {
|
|
@@ -136,9 +135,8 @@ MitochondriaPointLevel::MitochondriaPointLevel(
|
|
|
136
135
|
}
|
|
137
136
|
|
|
138
137
|
bool MitochondriaSectionLevel::diff(const MitochondriaSectionLevel& other) const {
|
|
139
|
-
return !(this == &other ||
|
|
140
|
-
|
|
141
|
-
morphio::property::compare(this->_children, other._children)));
|
|
138
|
+
return !(this == &other || (compare_section_structure(this->_sections, other._sections) &&
|
|
139
|
+
morphio::property::compare(this->_children, other._children)));
|
|
142
140
|
}
|
|
143
141
|
|
|
144
142
|
bool MitochondriaSectionLevel::operator==(const MitochondriaSectionLevel& other) const {
|
|
@@ -151,13 +149,9 @@ bool MitochondriaSectionLevel::operator!=(const MitochondriaSectionLevel& other)
|
|
|
151
149
|
|
|
152
150
|
bool MitochondriaPointLevel::diff(const MitochondriaPointLevel& other) const {
|
|
153
151
|
return !(this == &other ||
|
|
154
|
-
(morphio::property::compare(
|
|
155
|
-
|
|
156
|
-
morphio::property::compare(this->
|
|
157
|
-
other._relativePathLengths)
|
|
158
|
-
&&
|
|
159
|
-
morphio::property::compare(
|
|
160
|
-
this->_diameters, other._diameters)));
|
|
152
|
+
(morphio::property::compare(this->_sectionIds, other._sectionIds) &&
|
|
153
|
+
morphio::property::compare(this->_relativePathLengths, other._relativePathLengths) &&
|
|
154
|
+
morphio::property::compare(this->_diameters, other._diameters)));
|
|
161
155
|
}
|
|
162
156
|
|
|
163
157
|
bool MitochondriaPointLevel::operator==(const MitochondriaPointLevel& other) const {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
#include "morphologyASC.h"
|
|
7
|
+
#include "utils.h"
|
|
7
8
|
|
|
8
9
|
#include <morphio/mut/morphology.h>
|
|
9
10
|
#include <morphio/mut/section.h>
|
|
@@ -22,12 +23,9 @@ namespace {
|
|
|
22
23
|
Contain header info about the root S-exps
|
|
23
24
|
**/
|
|
24
25
|
struct Header {
|
|
25
|
-
|
|
26
|
-
: token(static_cast<Token>(+Token::STRING))
|
|
27
|
-
, parent_id(-1) {}
|
|
28
|
-
Token token;
|
|
26
|
+
Token token = static_cast<Token>(+Token::STRING);
|
|
29
27
|
std::string label;
|
|
30
|
-
int32_t parent_id;
|
|
28
|
+
int32_t parent_id = -1;
|
|
31
29
|
};
|
|
32
30
|
|
|
33
31
|
bool is_eof(Token type) {
|
|
@@ -84,15 +82,14 @@ class NeurolucidaParser
|
|
|
84
82
|
std::tuple<Point, floatType> parse_point(NeurolucidaLexer& lex, bool is_marker) {
|
|
85
83
|
lex.expect(Token::LPAREN, "Point should start in LPAREN");
|
|
86
84
|
std::array<morphio::floatType, 4> point{}; // X,Y,Z,D
|
|
85
|
+
const auto& stn = morphio::getStringToNumber();
|
|
86
|
+
|
|
87
87
|
for (unsigned int i = 0; i < 4; i++) {
|
|
88
|
+
const std::string s = lex.consume()->str();
|
|
88
89
|
try {
|
|
89
|
-
|
|
90
|
-
point[i] = std::stod(lex.consume()->str());
|
|
91
|
-
#else
|
|
92
|
-
point[i] = std::stof(lex.consume()->str());
|
|
93
|
-
#endif
|
|
90
|
+
point[i] = std::get<0>(stn.toFloat(s, 0));
|
|
94
91
|
} catch (const std::invalid_argument&) {
|
|
95
|
-
throw RawDataError(err_.ERROR_PARSING_POINT(lex.line_num(),
|
|
92
|
+
throw RawDataError(err_.ERROR_PARSING_POINT(lex.line_num(), s));
|
|
96
93
|
}
|
|
97
94
|
|
|
98
95
|
// Markers can have an s-exp (X Y Z) without diameter
|