Loading...
Searching...
No Matches
Nerve.cpp
/* 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): Mathieu Carrière
*
* Copyright (C) 2017 Inria
*
* Modification(s):
* - YYYY/MM Author: Description of the modification
*/
#include <gudhi/GIC.h>
#include <string>
#include <vector>
void usage(int nbArgs, char *const progName) {
std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
std::cerr << "Usage: " << progName << " filename.off coordinate resolution gain [-v] \n";
std::cerr << " i.e.: " << progName << " ../../data/points/human.off 2 10 0.3 -v \n";
exit(-1); // ----- >>
}
int main(int argc, char **argv) {
if ((argc != 5) && (argc != 6)) usage(argc, argv[0]);
using Point = std::vector<float>;
std::string off_file_name(argv[1]);
int coord = atoi(argv[2]);
int resolution = atoi(argv[3]);
double gain = atof(argv[4]);
bool verb = 0;
if (argc == 6) verb = 1;
// --------------------------------
// Init of a Nerve from an OFF file
// --------------------------------
Gudhi::cover_complex::Cover_complex<Point> SC;
SC.set_verbose(verb);
bool check = SC.read_point_cloud(off_file_name);
if (!check) {
std::clog << "Incorrect OFF file." << std::endl;
} else {
SC.set_type("Nerve");
SC.set_color_from_coordinate(coord);
SC.set_function_from_coordinate(coord);
SC.set_graph_from_OFF();
SC.set_resolution_with_interval_number(resolution);
SC.set_gain(gain);
SC.set_cover_from_function();
SC.find_simplices();
SC.write_info();
Gudhi::Simplex_tree<> stree;
SC.create_complex(stree);
SC.compute_PD();
// ----------------------------------------------------------------------------
// Display information about the graph induced complex
// ----------------------------------------------------------------------------
if (verb) {
std::clog << "Nerve is of dimension " << stree.dimension() << " - " << stree.num_simplices() << " simplices - "
<< stree.num_vertices() << " vertices." << std::endl;
std::clog << "Iterator on Nerve simplices" << std::endl;
for (auto f_simplex : stree.filtration_simplex_range()) {
for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
std::clog << vertex << " ";
}
std::clog << std::endl;
}
}
}
return 0;
}
Gudhi::Simplex_tree
Simplex Tree data structure for representing simplicial complexes.
Definition Simplex_tree.h:98
Gudhi::Simplex_tree::simplex_vertex_range
Simplex_vertex_range simplex_vertex_range(Simplex_handle sh) const
Returns a range over the vertices of a simplex.
Definition Simplex_tree.h:369
Gudhi::Simplex_tree::filtration_simplex_range
Filtration_simplex_range const & filtration_simplex_range(Indexing_tag=Indexing_tag()) const
Returns a range over the simplices of the simplicial complex, in the order of the filtration.
Definition Simplex_tree.h:358
Gudhi::Simplex_tree::num_vertices
size_t num_vertices() const
Returns the number of vertices in the complex.
Definition Simplex_tree.h:778
Gudhi::Simplex_tree::num_simplices
size_t num_simplices() const
Returns the number of simplices in the simplex_tree.
Definition Simplex_tree.h:791
Gudhi::cover_complex::Cover_complex
Cover complex data structure.
Definition GIC.h:99
Gudhi::cover_complex::Cover_complex::set_resolution_with_interval_number
void set_resolution_with_interval_number(int reso)
Sets a number of intervals from a value stored in memory.
Definition GIC.h:589
Gudhi::cover_complex::Cover_complex::compute_PD
Persistence_diagram compute_PD()
Computes the extended persistence diagram of the complex.
Definition GIC.h:1165
Gudhi::cover_complex::Cover_complex::create_complex
void create_complex(SimplicialComplex &complex)
Creates the simplicial complex.
Definition GIC.h:1325
Gudhi::cover_complex::Cover_complex::set_type
void set_type(const std::string &t)
Specifies whether the type of the output simplicial complex.
Definition GIC.h:188
Gudhi::cover_complex::Cover_complex::find_simplices
void find_simplices()
Computes the simplices of the simplicial complex.
Definition GIC.h:1339
Gudhi::cover_complex::Cover_complex::set_cover_from_function
void set_cover_from_function()
Creates a cover C from the preimages of the function f.
Definition GIC.h:601
Gudhi::cover_complex::Cover_complex::write_info
void write_info()
Creates a .txt file called SC.txt describing the 1-skeleton, which can then be plotted with e....
Definition GIC.h:1078
Gudhi::cover_complex::Cover_complex::set_gain
void set_gain(double g=0.3)
Sets a gain from a value stored in memory (default value 0.3).
Definition GIC.h:595
Gudhi::cover_complex::Cover_complex::set_function_from_coordinate
void set_function_from_coordinate(int k)
Creates the function f from the k-th coordinate of the point cloud P.
Definition GIC.h:504
Gudhi::cover_complex::Cover_complex::set_color_from_coordinate
void set_color_from_coordinate(int k=0)
Computes the function used to color the nodes of the simplicial complex from the k-th coordinate.
Definition GIC.h:1005
Gudhi::cover_complex::Cover_complex::set_graph_from_OFF
void set_graph_from_OFF()
Creates a graph G from the triangulation given by the input .OFF file.
Definition GIC.h:344
Gudhi::cover_complex::Cover_complex::read_point_cloud
bool read_point_cloud(const std::string &off_file_name)
Reads and stores the input point cloud from .(n)OFF file.
Definition GIC.h:244
Gudhi::cover_complex::Cover_complex::set_verbose
void set_verbose(bool verb=false)
Specifies whether the program should display information or not.
Definition GIC.h:196