diff options
Diffstat (limited to 'src/Persistence_representations/concept')
5 files changed, 177 insertions, 0 deletions
diff --git a/src/Persistence_representations/concept/Real_valued_topological_data.h b/src/Persistence_representations/concept/Real_valued_topological_data.h new file mode 100644 index 00000000..12aceab4 --- /dev/null +++ b/src/Persistence_representations/concept/Real_valued_topological_data.h @@ -0,0 +1,39 @@ +/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. + * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. + * Author(s): Pawel Dlotko + * + * Copyright (C) 2016 Inria + * + * Modification(s): + * - YYYY/MM Author: Description of the modification + */ + +#ifndef CONCEPT_REAL_VALUED_TOPOLOGICAL_DATA_H_ +#define CONCEPT_REAL_VALUED_TOPOLOGICAL_DATA_H_ + +namespace Gudhi { + +namespace Persistence_representations { + +/** \brief The concept Real_valued_topological_data describes the requirements + * for a type to implement a container that allows computations of its projections to R. + */ +class Real_valued_topological_data { + public: + /** +* Typically there are various ways data can be projected to R. This function gives us the number of functions for +* vectorization provided by a given class. + **/ + size_t number_of_projections_to_R(); + /** +* This is a function to compute the projection from this container to reals. The parameter of a function have to +* be between 0 and the value returned by number_of_projections_to_R(). +**/ + double project_to_R(size_t number_of_projection); +}; + +} // namespace Persistence_representations + +} // namespace Gudhi + +#endif // CONCEPT_REAL_VALUED_TOPOLOGICAL_DATA_H_ diff --git a/src/Persistence_representations/concept/Topological_data_with_averages.h b/src/Persistence_representations/concept/Topological_data_with_averages.h new file mode 100644 index 00000000..d8fe98b7 --- /dev/null +++ b/src/Persistence_representations/concept/Topological_data_with_averages.h @@ -0,0 +1,32 @@ + +/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. + * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. + * Author(s): Pawel Dlotko + * + * Copyright (C) 2016 Inria + * + * Modification(s): + * - YYYY/MM Author: Description of the modification + */ + +#ifndef CONCEPT_TOPOLOGICAL_DATA_WITH_AVERAGES_H_ +#define CONCEPT_TOPOLOGICAL_DATA_WITH_AVERAGES_H_ + +namespace Gudhi { + +namespace Persistence_representations { + +/** \brief The concept Topological_data_with_averages describes the requirements + * for a type to implement a container that allows computations of averages. + * Note that the average object after being computed is stored in *this. + */ +class Topological_data_with_averages { + public: + void compute_average(const std::vector<Topological_data_with_averages*>& to_average); +}; + +} // namespace Persistence_representations + +} // namespace Gudhi + +#endif // CONCEPT_TOPOLOGICAL_DATA_WITH_AVERAGES_H_ diff --git a/src/Persistence_representations/concept/Topological_data_with_distances.h b/src/Persistence_representations/concept/Topological_data_with_distances.h new file mode 100644 index 00000000..8efebf7c --- /dev/null +++ b/src/Persistence_representations/concept/Topological_data_with_distances.h @@ -0,0 +1,37 @@ +/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. + * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. + * Author(s): Pawel Dlotko + * + * Copyright (C) 2016 Inria + * + * Modification(s): + * - YYYY/MM Author: Description of the modification + */ + +#ifndef CONCEPT_TOPOLOGICAL_DATA_WITH_DISTANCES_H_ +#define CONCEPT_TOPOLOGICAL_DATA_WITH_DISTANCES_H_ + +namespace Gudhi { + +namespace Persistence_representations { + +/** \brief The concept Topological_data_with_distances describes the requirements + * for a type to implement a container that allows computations of distance to another contained of that type. + * \details + * The second parameter of the distance function allow to declare power of a distance. The exact meaning of that + * number will be different for different distances. A few examples are given below: + * In case of p-Wasserstein distance, the power is equal to p. power = std::limit<double>::max() for bottleneck + * distance. + * + * In case of L^p landscape distance, the power is equal to p. s + */ +class Topological_data_with_distances { + public: + double distance(const Topological_data_with_distances& second, double power = 1); +}; + +} // namespace Persistence_representations + +} // namespace Gudhi + +#endif // CONCEPT_TOPOLOGICAL_DATA_WITH_DISTANCES_H_ diff --git a/src/Persistence_representations/concept/Topological_data_with_scalar_product.h b/src/Persistence_representations/concept/Topological_data_with_scalar_product.h new file mode 100644 index 00000000..0b43b4f7 --- /dev/null +++ b/src/Persistence_representations/concept/Topological_data_with_scalar_product.h @@ -0,0 +1,30 @@ +/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. + * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. + * Author(s): Pawel Dlotko + * + * Copyright (C) 2016 Inria + * + * Modification(s): + * - YYYY/MM Author: Description of the modification + */ + +#ifndef CONCEPT_TOPOLOGICAL_DATA_WITH_SCALAR_PRODUCT_H_ +#define CONCEPT_TOPOLOGICAL_DATA_WITH_SCALAR_PRODUCT_H_ + +namespace Gudhi { + +namespace Persistence_representations { + +/** \brief The concept Topological_data_with_scalar_product describes the requirements + * for a type to implement a container that allows computations of scalar products. + */ +class Topological_data_with_scalar_product { + public: + double compute_scalar_product(const Topological_data_with_scalar_product& second); +}; + +} // namespace Persistence_representations + +} // namespace Gudhi + +#endif // CONCEPT_TOPOLOGICAL_DATA_WITH_SCALAR_PRODUCT_H_ diff --git a/src/Persistence_representations/concept/Vectorized_topological_data.h b/src/Persistence_representations/concept/Vectorized_topological_data.h new file mode 100644 index 00000000..b8a16102 --- /dev/null +++ b/src/Persistence_representations/concept/Vectorized_topological_data.h @@ -0,0 +1,39 @@ +/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. + * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. + * Author(s): Pawel Dlotko + * + * Copyright (C) 2016 Inria + * + * Modification(s): + * - YYYY/MM Author: Description of the modification + */ + +#ifndef CONCEPT_VECTORIZED_TOPOLOGICAL_DATA_H_ +#define CONCEPT_VECTORIZED_TOPOLOGICAL_DATA_H_ + +namespace Gudhi { + +namespace Persistence_representations { + +/** \brief The concept Vectorized_topological_data describes the requirements + * for a type to implement a container that allows vectorization. + */ +class Vectorized_topological_data { + public: + /** + * There are various ways data can be vectorized. This function give us the number of functions for vectorization + *provided by a given class. + **/ + size_t number_of_vectorize_functions(); + /** + * This is a function to vectorize given container. The parameter of a function have to be between 0 and the value + *returned by number_of_vectorize_functions(). + **/ + std::vector<double> vectorize(int number_of_function); +}; + +} // namespace Persistence_representations + +} // namespace Gudhi + +#endif // CONCEPT_VECTORIZED_TOPOLOGICAL_DATA_H_ |