Added extra functionality to Point class( an iterator ) and PersistenceDiagram( dimension property and __len__ func ).
persistence-diagram.h:
Added a new read-only dimension member and member function to access it.
With a new constructor that that takes in an int type to initialize dimension.
persistence-diagram.cpp:
Added new bp::init constructor. Takes in an integer type to initialize the dimension. Exposed the dimension property. Exposed the size property via a __len__ method.
__init__.py:
Added an iterator for Point objects. This iterates over the coords and then the data( if present ).
template<class Distances_>
ExplicitDistances<Distances_>::
ExplicitDistances(const Distances& distances):
size_(distances.size()), distances_((distances.size() * (distances.size() + 1))/2)
{
IndexType i = 0;
for (typename Distances::IndexType a = distances.begin(); a != distances.end(); ++a)
for (typename Distances::IndexType b = a; b != distances.end(); ++b)
{
distances_[i++] = distances(a,b);
}
}
template<class Distances_>
typename ExplicitDistances<Distances_>::DistanceType
ExplicitDistances<Distances_>::
operator()(IndexType a, IndexType b) const
{
if (a > b) std::swap(a,b);
return distances_[a*size_ - ((a*(a-1))/2) + (b-a)];
}
template<class Distances_>
typename ExplicitDistances<Distances_>::DistanceType&
ExplicitDistances<Distances_>::
operator()(IndexType a, IndexType b)
{
if (a > b) std::swap(a,b);
return distances_[a*size_ - ((a*(a-1))/2) + (b-a)];
}