morphology.h
1 #pragma once
2 
3 #include <highfive/H5Group.hpp>
4 #include <morphio/properties.h>
5 #include <morphio/section_iterators.hpp>
6 #include <morphio/types.h>
7 
8 namespace morphio {
9 
11 using breadth_iterator = breadth_iterator_t<Section, Morphology>;
13 using depth_iterator = depth_iterator_t<Section, Morphology>;
14 
21 {
22  public:
23  virtual ~Morphology() = default;
24 
25  Morphology(Morphology&) noexcept = default;
26  Morphology& operator=(const Morphology&) noexcept = default;
27  Morphology(Morphology&&) noexcept = default;
28  Morphology& operator=(Morphology&&) noexcept = default;
29 
41  explicit Morphology(const std::string& path, unsigned int options = NO_MODIFIER);
42 
44  explicit Morphology(const HighFive::Group& group, unsigned int options = NO_MODIFIER);
45 
47  explicit Morphology(const mut::Morphology&);
48 
50  explicit Morphology(const std::string& contents,
51  const std::string& extension,
52  unsigned int options = NO_MODIFIER);
53 
55  Soma soma() const;
56 
58  Mitochondria mitochondria() const;
59 
62 
64  const std::vector<Property::Annotation>& annotations() const;
65 
67  const std::vector<Property::Marker>& markers() const;
68 
73  std::vector<Section> rootSections() const;
74 
76  std::vector<Section> sections() const;
77 
83  Section section(uint32_t id) const;
84 
89  const Points& points() const noexcept;
90 
101  std::vector<uint32_t> sectionOffsets() const;
102 
107  const std::vector<morphio::floatType>& diameters() const;
108 
110  const std::vector<morphio::floatType>& perimeters() const;
111 
113  const std::vector<SectionType>& sectionTypes() const;
114 
120  const std::map<int, std::vector<unsigned int>>& connectivity() const;
121 
127  depth_iterator depth_begin() const;
129  depth_iterator depth_end() const;
130 
140 
142  const SomaType& somaType() const;
143 
145  const CellFamily& cellFamily() const;
146 
148  const MorphologyVersion& version() const;
149 
150  protected:
151  friend class mut::Morphology;
152  Morphology(const Property::Properties& properties, unsigned int options);
153 
154  std::shared_ptr<Property::Properties> properties_;
155 
156  template <typename Property>
157  const std::vector<typename Property::Type>& get() const;
158 };
159 } // namespace morphio
morphio::Property::Properties
Definition: properties.h:210
morphio::enums::SomaType
SomaType
Definition: enums.h:52
morphio::Morphology::cellFamily
const CellFamily & cellFamily() const
morphio::depth_iterator_t
Definition: section_iterators.hpp:82
morphio::Section
Definition: section.h:36
morphio::Morphology::sectionOffsets
std::vector< uint32_t > sectionOffsets() const
morphio::enums::NO_MODIFIER
@ NO_MODIFIER
Read morphology as is without any modification.
Definition: enums.h:14
morphio::Morphology::points
const Points & points() const noexcept
morphio::Morphology::breadth_begin
breadth_iterator breadth_begin() const
morphio::Morphology::soma
Soma soma() const
morphio::Morphology::markers
const std::vector< Property::Marker > & markers() const
morphio::Morphology::diameters
const std::vector< morphio::floatType > & diameters() const
morphio::Morphology
Definition: morphology.h:20
morphio::Morphology::depth_end
depth_iterator depth_end() const
morphio::Morphology::connectivity
const std::map< int, std::vector< unsigned int > > & connectivity() const
morphio::Morphology::perimeters
const std::vector< morphio::floatType > & perimeters() const
morphio::Morphology::depth_begin
depth_iterator depth_begin() const
morphio::Morphology::version
const MorphologyVersion & version() const
morphio::Morphology::mitochondria
Mitochondria mitochondria() const
morphio::Morphology::sections
std::vector< Section > sections() const
morphio::Morphology::somaType
const SomaType & somaType() const
morphio::enums::CellFamily
CellFamily
Definition: enums.h:45
morphio::Morphology::rootSections
std::vector< Section > rootSections() const
morphio::Morphology::sectionTypes
const std::vector< SectionType > & sectionTypes() const
morphio::Morphology::annotations
const std::vector< Property::Annotation > & annotations() const
morphio::Mitochondria
Definition: mitochondria.h:18
morphio::breadth_iterator_t
Definition: section_iterators.hpp:53
morphio::Soma
Definition: soma.h:28
morphio::mut::Morphology
Definition: morphology.h:25
morphio::EndoplasmicReticulum
Definition: endoplasmic_reticulum.h:18
morphio::Morphology::endoplasmicReticulum
EndoplasmicReticulum endoplasmicReticulum() const
morphio::Morphology::breadth_end
breadth_iterator breadth_end() const
morphio::Morphology::section
Section section(uint32_t id) const