summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHind Montassif <hind.montassif@gmail.com>2021-05-05 13:58:30 +0200
committerHind Montassif <hind.montassif@gmail.com>2021-05-05 13:58:30 +0200
commit2b694f9beae0e5fa78ae5b8923e7f2905c58777f (patch)
tree7b3c874390fde4c93abce181f199290edae6e73f
parentd68ddc94bd82c48a4433ae0b3b1b3f10c167ed0b (diff)
Add __init__ files at every level in modules
Remove last modules level and add sample type argument Rename num_points to n_samples
-rw-r--r--src/python/CMakeLists.txt7
-rw-r--r--src/python/example/alpha_complex_from_generated_points_on_sphere_example.py7
-rw-r--r--src/python/gudhi/datasets/__init__.py (renamed from src/python/gudhi/datasets/generators/points/__init__.py)0
-rw-r--r--src/python/gudhi/datasets/generators/__init__.py0
-rw-r--r--src/python/gudhi/datasets/generators/points.cc (renamed from src/python/gudhi/datasets/generators/points/sphere.cc)29
5 files changed, 24 insertions, 19 deletions
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
index ef9dc3ab..8dd4ea5d 100644
--- a/src/python/CMakeLists.txt
+++ b/src/python/CMakeLists.txt
@@ -46,7 +46,7 @@ if(PYTHONINTERP_FOUND)
set(GUDHI_PYTHON_MODULES "${GUDHI_PYTHON_MODULES}'bottleneck', ")
set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'hera', ")
set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'clustering', ")
- set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'datasets/generators/points', ")
+ set(GUDHI_PYTHON_MODULES_EXTRA "${GUDHI_PYTHON_MODULES_EXTRA}'datasets', ")
endif()
if(CYTHON_FOUND)
set(GUDHI_PYTHON_MODULES "${GUDHI_PYTHON_MODULES}'off_reader', ")
@@ -152,7 +152,7 @@ if(PYTHONINTERP_FOUND)
set(GUDHI_PYBIND11_MODULES "${GUDHI_PYBIND11_MODULES}'hera/wasserstein', ")
set(GUDHI_PYBIND11_MODULES "${GUDHI_PYBIND11_MODULES}'hera/bottleneck', ")
if (NOT CGAL_VERSION VERSION_LESS 4.11.0)
- set(GUDHI_PYBIND11_MODULES "${GUDHI_PYBIND11_MODULES}'datasets/generators/points/sphere', ")
+ set(GUDHI_PYBIND11_MODULES "${GUDHI_PYBIND11_MODULES}'datasets/generators/points', ")
set(GUDHI_PYBIND11_MODULES "${GUDHI_PYBIND11_MODULES}'bottleneck', ")
set(GUDHI_CYTHON_MODULES "${GUDHI_CYTHON_MODULES}'nerve_gic', ")
endif ()
@@ -264,8 +264,7 @@ if(PYTHONINTERP_FOUND)
file(COPY "gudhi/weighted_rips_complex.py" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi")
file(COPY "gudhi/dtm_rips_complex.py" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi")
file(COPY "gudhi/hera/__init__.py" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi/hera")
- file(COPY "gudhi/datasets/generators/points/__init__.py" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi/datasets/generators/points")
-
+ file(COPY "gudhi/datasets" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/gudhi" FILES_MATCHING PATTERN "*.py")
# Some files for pip package
file(COPY "introduction.rst" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/")
diff --git a/src/python/example/alpha_complex_from_generated_points_on_sphere_example.py b/src/python/example/alpha_complex_from_generated_points_on_sphere_example.py
index 2b023bbe..e73584d3 100644
--- a/src/python/example/alpha_complex_from_generated_points_on_sphere_example.py
+++ b/src/python/example/alpha_complex_from_generated_points_on_sphere_example.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-from gudhi.datasets.generators.points import sphere
+from gudhi.datasets.generators import points
from gudhi import AlphaComplex
@@ -22,11 +22,10 @@ print("#####################################################################")
print("AlphaComplex creation from generated points on sphere")
-# Generate a circle: 50 points; dim 2; radius 1
-points = sphere.generate_random_points(50, 2, 1)
+gen_points = points.sphere(n_samples = 50, dim = 2, radius = 1, sample = "random")
# Create an alpha complex
-alpha_complex = AlphaComplex(points=points)
+alpha_complex = AlphaComplex(points = gen_points)
simplex_tree = alpha_complex.create_simplex_tree()
result_str = 'Alpha complex is of dimension ' + repr(simplex_tree.dimension()) + ' - ' + \
diff --git a/src/python/gudhi/datasets/generators/points/__init__.py b/src/python/gudhi/datasets/__init__.py
index e69de29b..e69de29b 100644
--- a/src/python/gudhi/datasets/generators/points/__init__.py
+++ b/src/python/gudhi/datasets/__init__.py
diff --git a/src/python/gudhi/datasets/generators/__init__.py b/src/python/gudhi/datasets/generators/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/python/gudhi/datasets/generators/__init__.py
diff --git a/src/python/gudhi/datasets/generators/points/sphere.cc b/src/python/gudhi/datasets/generators/points.cc
index 79392ef0..f02c7d73 100644
--- a/src/python/gudhi/datasets/generators/points/sphere.cc
+++ b/src/python/gudhi/datasets/generators/points.cc
@@ -21,40 +21,47 @@ namespace py = pybind11;
typedef CGAL::Epick_d< CGAL::Dynamic_dimension_tag > Kern;
-py::array_t<double> generate_points_on_sphere(size_t num_points, int dim, double radius) {
+py::array_t<double> generate_points_on_sphere(size_t n_samples, int dim, double radius, std::string sample) {
+
+ if (sample != "random") {
+ throw pybind11::value_error("sample type is not supported");
+ }
- py::array_t<double> points({num_points, (size_t)dim});
+ py::array_t<double> points({n_samples, (size_t)dim});
py::buffer_info buf = points.request();
double *ptr = static_cast<double *>(buf.ptr);
- GUDHI_CHECK(num_points == buf.shape[0], "Py array first dimension not matching num_points on sphere");
+ GUDHI_CHECK(n_samples == buf.shape[0], "Py array first dimension not matching n_samples on sphere");
GUDHI_CHECK(dim == buf.shape[1], "Py array second dimension not matching the ambient space dimension");
py::gil_scoped_release release;
- auto points_generated = Gudhi::generate_points_on_sphere_d<Kern>(num_points, dim, radius);
+ auto points_generated = Gudhi::generate_points_on_sphere_d<Kern>(n_samples, dim, radius);
- for (size_t i = 0; i < num_points; i++)
+ for (size_t i = 0; i < n_samples; i++)
for (int j = 0; j < dim; j++)
ptr[i*dim+j] = points_generated[i][j];
return points;
}
-PYBIND11_MODULE(sphere, m) {
+PYBIND11_MODULE(points, m) {
m.attr("__license__") = "LGPL v3";
- m.def("generate_random_points", &generate_points_on_sphere,
- py::arg("num_points"), py::arg("dim"), py::arg("radius") = 1,
+ m.def("sphere", &generate_points_on_sphere,
+ py::arg("n_samples"), py::arg("dim"),
+ py::arg("radius") = 1, py::arg("sample") = "random",
R"pbdoc(
Generate random i.i.d. points uniformly on a (d-1)-sphere in R^d
- :param num_points: The number of points to be generated.
- :type num_points: unsigned integer
- :param dim: The dimension.
+ :param n_samples: The number of points to be generated.
+ :type n_samples: integer
+ :param dim: The ambient dimension d.
:type dim: integer
:param radius: The radius.
:type radius: float
+ :param sample: The sample type.
+ :type sample: string
:rtype: numpy array of float
:returns: the generated points on a sphere.
)pbdoc");