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 
14 
21 {
22  public:
23  virtual ~Morphology();
24 
25  Morphology& operator=(const Morphology&);
26  Morphology(Morphology&&) noexcept;
27  Morphology& operator=(Morphology&&) noexcept;
28 
40  explicit Morphology(const std::string& source, unsigned int options = NO_MODIFIER);
41 
43  explicit Morphology(const HighFive::Group& group, unsigned int options = NO_MODIFIER);
45  explicit Morphology(mut::Morphology);
46 
48  Soma soma() const;
49 
51  Mitochondria mitochondria() const;
52 
55 
57  const std::vector<Property::Annotation>& annotations() const;
58 
60  const std::vector<Property::Marker>& markers() const;
61 
66  std::vector<Section> rootSections() const;
67 
69  std::vector<Section> sections() const;
70 
76  Section section(uint32_t id) const;
77 
82  const Points& points() const noexcept;
83 
94  std::vector<uint32_t> sectionOffsets() const;
95 
100  const std::vector<morphio::floatType>& diameters() const;
101 
103  const std::vector<morphio::floatType>& perimeters() const;
104 
106  const std::vector<SectionType>& sectionTypes() const;
107 
113  const std::map<int, std::vector<unsigned int>>& connectivity() const;
114 
120  depth_iterator depth_begin() const;
122  depth_iterator depth_end() const;
123 
133 
135  const SomaType& somaType() const;
136 
138  const CellFamily& cellFamily() const;
139 
141  const MorphologyVersion& version() const;
142 
143  protected:
144  friend class mut::Morphology;
145  Morphology(const Property::Properties& properties, unsigned int options);
146 
147  std::shared_ptr<Property::Properties> _properties;
148 
149  template <typename Property>
150  const std::vector<typename Property::Type>& get() const;
151 };
152 } // namespace morphio
const EndoplasmicReticulum endoplasmicReticulum() const
depth_iterator depth_begin() const
const std::vector< morphio::floatType > & diameters() const
const Points & points() const noexcept
depth_iterator depth_end() const
Definition: section_iterators.hpp:53
Soma soma() const
const std::vector< Property::Marker > & markers() const
std::vector< Section > sections() const
std::vector< uint32_t > sectionOffsets() const
breadth_iterator breadth_end() const
Section section(uint32_t id) const
const std::vector< SectionType > & sectionTypes() const
Definition: soma.h:28
Read morphology as is without any modification.
Definition: enums.h:13
Mitochondria mitochondria() const
Definition: dendritic_spine.h:9
const SomaType & somaType() const
Definition: morphology.h:27
Definition: section_iterators.hpp:81
Definition: endoplasmic_reticulum.h:11
Definition: properties.h:203
Definition: morphology.h:20
breadth_iterator breadth_begin() const
const CellFamily & cellFamily() const
const std::vector< morphio::floatType > & perimeters() const
CellFamily
Definition: enums.h:44
const std::map< int, std::vector< unsigned int > > & connectivity() const
std::vector< Point > Points
Definition: vector_types.h:26
SomaType
Definition: enums.h:51
Definition: mitochondria.h:14
const std::vector< Property::Annotation > & annotations() const
std::vector< Section > rootSections() const
const MorphologyVersion & version() const
Definition: section.h:36