From 527755e6d05980b13997020f68a7eb2105b587c6 Mon Sep 17 00:00:00 2001 From: Umberto Lupo <46537483+ulupo@users.noreply.github.com> Date: Tue, 21 Jan 2020 09:23:59 +0100 Subject: [PATCH] Rename library to giotto-tda (#198) * Bump library to 0.1.4, globally rename giotto module to gtda * Populated RELEASE.rst with past release info and new release * Globally rename glearn -> gtda * Add tracking for gudhi-devel and ripser --- .coveragerc | 12 +- .gitignore | 4 +- .gitmodules | 10 +- CMakeLists.txt | 6 +- CODE_AUTHORS | 4 +- CODE_OWNERS | 2 +- CONTRIBUTING.rst | 34 ++-- GOVERNANCE.rst | 10 +- ISSUE_TEMPLATE.md | 10 +- PULL_REQUEST_TEMPLATE.md | 2 +- README.rst | 42 ++--- RELEASE.rst | 171 +++++++++++++++++- _config.yml | 1 - azure-ci/docker_scripts.sh | 4 +- azure-pipelines.yml | 70 +++---- doc/conf.py | 4 +- doc/index.rst | 122 ++++++------- environment.yml | 2 +- examples/README.rst | 16 +- examples/classifying_shapes.ipynb | 20 +- examples/lorenz_attractor.ipynb | 18 +- examples/mapper_quickstart.ipynb | 26 +-- examples/plotting.py | 2 +- examples/voids_on_the_plane.ipynb | 2 +- {giotto => gtda}/__init__.py | 0 {giotto => gtda}/_version.py | 4 +- {giotto => gtda}/base.py | 2 +- {giotto => gtda}/diagrams/__init__.py | 2 +- {giotto => gtda}/diagrams/_metrics.py | 0 {giotto => gtda}/diagrams/_utils.py | 0 {giotto => gtda}/diagrams/distance.py | 4 +- {giotto => gtda}/diagrams/features.py | 8 +- {giotto => gtda}/diagrams/preprocessing.py | 6 +- {giotto => gtda}/diagrams/tests/__init__.py | 0 .../diagrams/tests/test_distance.py | 2 +- .../diagrams/tests/test_features.py | 2 +- .../diagrams/tests/test_preprocessing.py | 2 +- {giotto => gtda}/externals/__init__.py | 0 .../externals/bindings/.clang-format | 0 .../bindings/bottleneck_bindings.cpp | 0 .../bindings/cech_complex_bindings.cpp | 0 .../bindings/cubical_complex_bindings.cpp | 0 .../periodic_cubical_complex_bindings.cpp | 0 .../persistent_cohomology_bindings.cpp | 0 .../bindings/rips_complex_bindings.cpp | 0 .../externals/bindings/ripser_bindings.cpp | 0 .../bindings/simplex_tree_bindings.cpp | 0 .../strong_witness_complex_bindings.cpp | 0 .../bindings/wasserstein_bindings.cpp | 0 .../bindings/witness_complex_bindings.cpp | 0 {giotto => gtda}/externals/gudhi-devel | 0 .../externals/hera/bottleneck/README | 0 .../externals/hera/bottleneck/basic_defs_bt.h | 0 .../externals/hera/bottleneck/bottleneck.h | 0 .../hera/bottleneck/bottleneck_detail.h | 0 .../hera/bottleneck/bottleneck_detail.hpp | 0 .../externals/hera/bottleneck/bound_match.h | 0 .../externals/hera/bottleneck/bound_match.hpp | 0 .../externals/hera/bottleneck/def_debug_bt.h | 0 .../hera/bottleneck/diagram_reader.h | 0 .../hera/bottleneck/diagram_traits.h | 0 .../bottleneck/dnn/geometry/euclidean-fixed.h | 0 .../hera/bottleneck/dnn/local/kd-tree.h | 0 .../hera/bottleneck/dnn/local/kd-tree.hpp | 0 .../bottleneck/dnn/local/search-functors.h | 0 .../hera/bottleneck/dnn/parallel/tbb.h | 0 .../hera/bottleneck/dnn/parallel/utils.h | 0 .../externals/hera/bottleneck/dnn/utils.h | 0 .../externals/hera/bottleneck/license.txt | 0 .../externals/hera/bottleneck/neighb_oracle.h | 0 .../hera/wasserstein/auction_oracle.h | 0 .../hera/wasserstein/auction_oracle_base.h | 0 .../hera/wasserstein/auction_oracle_base.hpp | 0 .../auction_oracle_kdtree_pure_geom.h | 0 .../auction_oracle_kdtree_pure_geom.hpp | 0 .../auction_oracle_kdtree_restricted.h | 0 .../auction_oracle_kdtree_restricted.hpp | 0 .../auction_oracle_kdtree_single_diag.h | 0 .../auction_oracle_kdtree_single_diag.hpp | 0 .../wasserstein/auction_oracle_lazy_heap.h | 0 .../wasserstein/auction_oracle_lazy_heap.hpp | 0 .../auction_oracle_stupid_sparse_restricted.h | 0 ...uction_oracle_stupid_sparse_restricted.hpp | 0 .../hera/wasserstein/auction_runner_fr.h | 0 .../hera/wasserstein/auction_runner_fr.hpp | 0 .../hera/wasserstein/auction_runner_gs.h | 0 .../hera/wasserstein/auction_runner_gs.hpp | 0 .../auction_runner_gs_single_diag.h | 0 .../auction_runner_gs_single_diag.hpp | 0 .../hera/wasserstein/auction_runner_jac.h | 0 .../hera/wasserstein/auction_runner_jac.hpp | 0 .../hera/wasserstein/basic_defs_ws.h | 0 .../hera/wasserstein/basic_defs_ws.hpp | 0 .../hera/wasserstein/catch/catch.hpp | 0 .../externals/hera/wasserstein/def_debug_ws.h | 0 .../hera/wasserstein/diagonal_heap.h | 0 .../hera/wasserstein/diagram_reader.h | 0 .../dnn/geometry/euclidean-dynamic.h | 0 .../dnn/geometry/euclidean-fixed.h | 0 .../hera/wasserstein/dnn/local/kd-tree.h | 0 .../hera/wasserstein/dnn/local/kd-tree.hpp | 0 .../wasserstein/dnn/local/search-functors.h | 0 .../hera/wasserstein/dnn/parallel/tbb.h | 0 .../hera/wasserstein/dnn/parallel/utils.h | 0 .../externals/hera/wasserstein/dnn/utils.h | 0 .../wasserstein/example/wasserstein_dist.cpp | 0 .../example/wasserstein_dist_point_cloud.cpp | 0 .../externals/hera/wasserstein/license.txt | 0 .../hera/wasserstein/spdlog/async_logger.h | 0 .../hera/wasserstein/spdlog/common.h | 0 .../spdlog/details/async_log_helper.h | 0 .../spdlog/details/async_logger_impl.h | 0 .../wasserstein/spdlog/details/file_helper.h | 0 .../hera/wasserstein/spdlog/details/log_msg.h | 0 .../wasserstein/spdlog/details/logger_impl.h | 0 .../spdlog/details/mpmc_bounded_q.h | 0 .../wasserstein/spdlog/details/null_mutex.h | 0 .../hera/wasserstein/spdlog/details/os.h | 0 .../spdlog/details/pattern_formatter_impl.h | 0 .../wasserstein/spdlog/details/registry.h | 0 .../wasserstein/spdlog/details/spdlog_impl.h | 0 .../wasserstein/spdlog/fmt/bundled/format.cc | 0 .../wasserstein/spdlog/fmt/bundled/format.h | 0 .../wasserstein/spdlog/fmt/bundled/ostream.cc | 0 .../wasserstein/spdlog/fmt/bundled/ostream.h | 0 .../wasserstein/spdlog/fmt/bundled/posix.cc | 0 .../wasserstein/spdlog/fmt/bundled/posix.h | 0 .../wasserstein/spdlog/fmt/bundled/time.h | 0 .../hera/wasserstein/spdlog/fmt/fmt.h | 0 .../hera/wasserstein/spdlog/fmt/ostr.h | 0 .../hera/wasserstein/spdlog/formatter.h | 0 .../hera/wasserstein/spdlog/logger.h | 0 .../wasserstein/spdlog/sinks/android_sink.h | 0 .../wasserstein/spdlog/sinks/ansicolor_sink.h | 0 .../hera/wasserstein/spdlog/sinks/base_sink.h | 0 .../hera/wasserstein/spdlog/sinks/dist_sink.h | 0 .../wasserstein/spdlog/sinks/file_sinks.h | 0 .../hera/wasserstein/spdlog/sinks/msvc_sink.h | 0 .../hera/wasserstein/spdlog/sinks/null_sink.h | 0 .../wasserstein/spdlog/sinks/ostream_sink.h | 0 .../hera/wasserstein/spdlog/sinks/sink.h | 0 .../wasserstein/spdlog/sinks/stdout_sinks.h | 0 .../wasserstein/spdlog/sinks/syslog_sink.h | 0 .../wasserstein/spdlog/sinks/wincolor_sink.h | 0 .../hera/wasserstein/spdlog/spdlog.h | 0 .../hera/wasserstein/spdlog/tweakme.h | 0 .../externals/hera/wasserstein/wasserstein.h | 0 .../wasserstein/wasserstein_pure_geom.hpp | 0 {giotto => gtda}/externals/python/__init__.py | 0 .../python/cech_complex_interface.py | 0 .../python/cubical_complex_interface.py | 0 .../periodic_cubical_complex_interface.py | 0 .../python/rips_complex_interface.py | 0 .../externals/python/ripser_interface.py | 0 .../python/simplex_tree_interface.py | 0 .../strong_witness_complex_interface.py | 0 .../externals/python/tests/__init__.py | 0 .../python/tests/test_cech_complex.py | 0 .../tests/test_periodic_cubical_complex.py | 0 .../python/tests/test_rips_complex.py | 0 .../externals/python/tests/test_witness.py | 0 .../python/witness_complex_interface.py | 0 {giotto => gtda}/externals/ripser | 0 {giotto => gtda}/graphs/__init__.py | 2 +- {giotto => gtda}/graphs/geodesic_distance.py | 4 +- {giotto => gtda}/graphs/kneighbors.py | 2 +- {giotto => gtda}/graphs/tests/__init__.py | 0 .../graphs/tests/test_geodesic_distance.py | 2 +- .../graphs/tests/test_kneighbors.py | 2 +- .../graphs/tests/test_transition.py | 2 +- {giotto => gtda}/graphs/transition.py | 4 +- {giotto => gtda}/homology/__init__.py | 2 +- {giotto => gtda}/homology/_utils.py | 0 {giotto => gtda}/homology/consistent.py | 2 +- {giotto => gtda}/homology/point_clouds.py | 0 {giotto => gtda}/homology/tests/__init__.py | 0 .../homology/tests/test_consistent.py | 2 +- .../homology/tests/test_point_clouds.py | 2 +- {giotto => gtda}/mapper/__init__.py | 2 +- {giotto => gtda}/mapper/cluster.py | 0 {giotto => gtda}/mapper/cover.py | 0 {giotto => gtda}/mapper/filter.py | 0 {giotto => gtda}/mapper/nerve.py | 8 +- {giotto => gtda}/mapper/pipeline.py | 24 +-- {giotto => gtda}/mapper/tests/test_cover.py | 2 +- {giotto => gtda}/mapper/tests/test_filter.py | 4 +- {giotto => gtda}/mapper/tests/test_nerve.py | 2 +- {giotto => gtda}/mapper/utils/__init__.py | 0 {giotto => gtda}/mapper/utils/_cluster.py | 0 {giotto => gtda}/mapper/utils/_cover.py | 0 .../mapper/utils/_list_feature_union.py | 0 {giotto => gtda}/mapper/utils/_logging.py | 0 {giotto => gtda}/mapper/utils/decorators.py | 2 +- {giotto => gtda}/mapper/utils/pipeline.py | 2 +- .../mapper/utils/visualization.py | 0 {giotto => gtda}/mapper/visualization.py | 0 .../meta_transformers/__init__.py | 4 +- .../meta_transformers/features.py | 10 +- .../meta_transformers/tests/__init__.py | 0 .../meta_transformers/tests/test_features.py | 4 +- {giotto => gtda}/pipeline.py | 18 +- {giotto => gtda}/tests/__init__.py | 0 {giotto => gtda}/tests/test_pipeline.py | 24 ++- {giotto => gtda}/time_series/__init__.py | 2 +- {giotto => gtda}/time_series/embedding.py | 6 +- {giotto => gtda}/time_series/features.py | 2 +- {giotto => gtda}/time_series/multivariate.py | 2 +- {giotto => gtda}/time_series/preprocessing.py | 4 +- {giotto => gtda}/time_series/target.py | 2 +- .../time_series/tests/__init__.py | 0 .../time_series/tests/test_embedding.py | 4 +- .../time_series/tests/test_multivariate.py | 2 +- .../time_series/tests/test_preprocessing.py | 2 +- {giotto => gtda}/utils/__init__.py | 2 +- {giotto => gtda}/utils/_docs.py | 22 +-- {giotto => gtda}/utils/testing.py | 0 {giotto => gtda}/utils/tests/__init__.py | 0 .../utils/tests/test_validation.py | 0 {giotto => gtda}/utils/validation.py | 0 setup.cfg | 26 +-- setup.py | 12 +- 221 files changed, 483 insertions(+), 363 deletions(-) delete mode 100644 _config.yml rename {giotto => gtda}/__init__.py (100%) rename {giotto => gtda}/_version.py (84%) rename {giotto => gtda}/base.py (97%) rename {giotto => gtda}/diagrams/__init__.py (85%) rename {giotto => gtda}/diagrams/_metrics.py (100%) rename {giotto => gtda}/diagrams/_utils.py (100%) rename {giotto => gtda}/diagrams/distance.py (99%) rename {giotto => gtda}/diagrams/features.py (98%) rename {giotto => gtda}/diagrams/preprocessing.py (99%) rename {giotto => gtda}/diagrams/tests/__init__.py (100%) rename {giotto => gtda}/diagrams/tests/test_distance.py (99%) rename {giotto => gtda}/diagrams/tests/test_features.py (91%) rename {giotto => gtda}/diagrams/tests/test_preprocessing.py (99%) rename {giotto => gtda}/externals/__init__.py (100%) rename {giotto => gtda}/externals/bindings/.clang-format (100%) rename {giotto => gtda}/externals/bindings/bottleneck_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/cech_complex_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/cubical_complex_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/periodic_cubical_complex_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/persistent_cohomology_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/rips_complex_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/ripser_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/simplex_tree_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/strong_witness_complex_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/wasserstein_bindings.cpp (100%) rename {giotto => gtda}/externals/bindings/witness_complex_bindings.cpp (100%) rename {giotto => gtda}/externals/gudhi-devel (100%) rename {giotto => gtda}/externals/hera/bottleneck/README (100%) rename {giotto => gtda}/externals/hera/bottleneck/basic_defs_bt.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/bottleneck.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/bottleneck_detail.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/bottleneck_detail.hpp (100%) rename {giotto => gtda}/externals/hera/bottleneck/bound_match.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/bound_match.hpp (100%) rename {giotto => gtda}/externals/hera/bottleneck/def_debug_bt.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/diagram_reader.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/diagram_traits.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/geometry/euclidean-fixed.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/local/kd-tree.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/local/kd-tree.hpp (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/local/search-functors.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/parallel/tbb.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/parallel/utils.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/dnn/utils.h (100%) rename {giotto => gtda}/externals/hera/bottleneck/license.txt (100%) rename {giotto => gtda}/externals/hera/bottleneck/neighb_oracle.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_base.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_base.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_kdtree_restricted.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_kdtree_restricted.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_lazy_heap.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_lazy_heap.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_fr.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_fr.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_gs.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_gs.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_gs_single_diag.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_gs_single_diag.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_jac.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/auction_runner_jac.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/basic_defs_ws.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/basic_defs_ws.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/catch/catch.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/def_debug_ws.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/diagonal_heap.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/diagram_reader.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/geometry/euclidean-dynamic.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/geometry/euclidean-fixed.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/local/kd-tree.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/local/kd-tree.hpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/local/search-functors.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/parallel/tbb.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/parallel/utils.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/dnn/utils.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/example/wasserstein_dist.cpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/example/wasserstein_dist_point_cloud.cpp (100%) rename {giotto => gtda}/externals/hera/wasserstein/license.txt (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/async_logger.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/common.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/async_log_helper.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/async_logger_impl.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/file_helper.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/log_msg.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/logger_impl.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/mpmc_bounded_q.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/null_mutex.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/os.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/pattern_formatter_impl.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/registry.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/details/spdlog_impl.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/format.cc (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/format.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.cc (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/posix.cc (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/posix.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/bundled/time.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/fmt.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/fmt/ostr.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/formatter.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/logger.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/android_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/ansicolor_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/base_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/dist_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/file_sinks.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/msvc_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/null_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/ostream_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/stdout_sinks.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/syslog_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/sinks/wincolor_sink.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/spdlog.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/spdlog/tweakme.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/wasserstein.h (100%) rename {giotto => gtda}/externals/hera/wasserstein/wasserstein_pure_geom.hpp (100%) rename {giotto => gtda}/externals/python/__init__.py (100%) rename {giotto => gtda}/externals/python/cech_complex_interface.py (100%) rename {giotto => gtda}/externals/python/cubical_complex_interface.py (100%) rename {giotto => gtda}/externals/python/periodic_cubical_complex_interface.py (100%) rename {giotto => gtda}/externals/python/rips_complex_interface.py (100%) rename {giotto => gtda}/externals/python/ripser_interface.py (100%) rename {giotto => gtda}/externals/python/simplex_tree_interface.py (100%) rename {giotto => gtda}/externals/python/strong_witness_complex_interface.py (100%) rename {giotto => gtda}/externals/python/tests/__init__.py (100%) rename {giotto => gtda}/externals/python/tests/test_cech_complex.py (100%) rename {giotto => gtda}/externals/python/tests/test_periodic_cubical_complex.py (100%) rename {giotto => gtda}/externals/python/tests/test_rips_complex.py (100%) rename {giotto => gtda}/externals/python/tests/test_witness.py (100%) rename {giotto => gtda}/externals/python/witness_complex_interface.py (100%) rename {giotto => gtda}/externals/ripser (100%) rename {giotto => gtda}/graphs/__init__.py (76%) rename {giotto => gtda}/graphs/geodesic_distance.py (96%) rename {giotto => gtda}/graphs/kneighbors.py (99%) rename {giotto => gtda}/graphs/tests/__init__.py (100%) rename {giotto => gtda}/graphs/tests/test_geodesic_distance.py (96%) rename {giotto => gtda}/graphs/tests/test_kneighbors.py (97%) rename {giotto => gtda}/graphs/tests/test_transition.py (96%) rename {giotto => gtda}/graphs/transition.py (98%) rename {giotto => gtda}/homology/__init__.py (80%) rename {giotto => gtda}/homology/_utils.py (100%) rename {giotto => gtda}/homology/consistent.py (99%) rename {giotto => gtda}/homology/point_clouds.py (100%) rename {giotto => gtda}/homology/tests/__init__.py (100%) rename {giotto => gtda}/homology/tests/test_consistent.py (93%) rename {giotto => gtda}/homology/tests/test_point_clouds.py (95%) rename {giotto => gtda}/mapper/__init__.py (91%) rename {giotto => gtda}/mapper/cluster.py (100%) rename {giotto => gtda}/mapper/cover.py (100%) rename {giotto => gtda}/mapper/filter.py (100%) rename {giotto => gtda}/mapper/nerve.py (94%) rename {giotto => gtda}/mapper/pipeline.py (95%) rename {giotto => gtda}/mapper/tests/test_cover.py (99%) rename {giotto => gtda}/mapper/tests/test_filter.py (96%) rename {giotto => gtda}/mapper/tests/test_nerve.py (96%) rename {giotto => gtda}/mapper/utils/__init__.py (100%) rename {giotto => gtda}/mapper/utils/_cluster.py (100%) rename {giotto => gtda}/mapper/utils/_cover.py (100%) rename {giotto => gtda}/mapper/utils/_list_feature_union.py (100%) rename {giotto => gtda}/mapper/utils/_logging.py (100%) rename {giotto => gtda}/mapper/utils/decorators.py (97%) rename {giotto => gtda}/mapper/utils/pipeline.py (96%) rename {giotto => gtda}/mapper/utils/visualization.py (100%) rename {giotto => gtda}/mapper/visualization.py (100%) rename {giotto => gtda}/meta_transformers/__init__.py (55%) rename {giotto => gtda}/meta_transformers/features.py (98%) rename {giotto => gtda}/meta_transformers/tests/__init__.py (100%) rename {giotto => gtda}/meta_transformers/tests/test_features.py (97%) rename {giotto => gtda}/pipeline.py (97%) rename {giotto => gtda}/tests/__init__.py (100%) rename {giotto => gtda}/tests/test_pipeline.py (87%) rename {giotto => gtda}/time_series/__init__.py (87%) rename {giotto => gtda}/time_series/embedding.py (99%) rename {giotto => gtda}/time_series/features.py (98%) rename {giotto => gtda}/time_series/multivariate.py (98%) rename {giotto => gtda}/time_series/preprocessing.py (98%) rename {giotto => gtda}/time_series/target.py (99%) rename {giotto => gtda}/time_series/tests/__init__.py (100%) rename {giotto => gtda}/time_series/tests/test_embedding.py (97%) rename {giotto => gtda}/time_series/tests/test_multivariate.py (89%) rename {giotto => gtda}/time_series/tests/test_preprocessing.py (97%) rename {giotto => gtda}/utils/__init__.py (78%) rename {giotto => gtda}/utils/_docs.py (82%) rename {giotto => gtda}/utils/testing.py (100%) rename {giotto => gtda}/utils/tests/__init__.py (100%) rename {giotto => gtda}/utils/tests/test_validation.py (100%) rename {giotto => gtda}/utils/validation.py (100%) diff --git a/.coveragerc b/.coveragerc index 04921e82c..e3bd56f66 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,13 +1,13 @@ [run] omit = - */giotto/externals/* + */gtda/externals/* **/setup.py - */giotto/compose/* - */giotto/datasets/* - */giotto/images/* - */giotto/neural_network/* - */giotto/model_selection/* + */gtda/compose/* + */gtda/datasets/* + */gtda/images/* + */gtda/neural_network/* + */gtda/model_selection/* **/base.py **/pipeline.py diff --git a/.gitignore b/.gitignore index 27fc49a65..55357f58b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ doc/build doc/generated # Pybind11 -giotto/externals/pybind11 +gtda/externals/pybind11 # Output files *.out @@ -40,4 +40,4 @@ giotto/externals/pybind11 .hypothesis/ # development -giotto/mapper/scratch/* +gtda/mapper/scratch/* diff --git a/.gitmodules b/.gitmodules index 2e6ca000a..be5736135 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ -[submodule "giotto/externals/ripser"] - path = giotto/externals/ripser +[submodule "gtda/externals/ripser"] + path = gtda/externals/ripser url = https://github.com/scikit-tda/ripser.py.git -[submodule "giotto/externals/gudhi-devel"] - path = giotto/externals/gudhi-devel - url = https://github.com/giotto-learn/gudhi-devel +[submodule "gtda/externals/gudhi-devel"] + path = gtda/externals/gudhi-devel + url = https://github.com/giotto-ai/gudhi-devel branch = giotto diff --git a/CMakeLists.txt b/CMakeLists.txt index 85910ad3c..18bb36057 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.9) project(giotto_bindings LANGUAGES CXX) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/giotto/externals/pybind11) -set(BINDINGS_DIR "giotto/externals/bindings") +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/gtda/externals/pybind11) +set(BINDINGS_DIR "gtda/externals/bindings") find_package(Boost 1.56 REQUIRED) include_directories(${Boost_INCLUDE_DIR}) @@ -46,7 +46,7 @@ target_compile_options(giotto_bottleneck PUBLIC -Wall -O3) target_compile_options(giotto_bottleneck PUBLIC $<$:-O2 -ggdb -D_GLIBCXX_DEBUG>) target_compile_definitions(giotto_bottleneck PRIVATE BOOST_RESULT_OF_USE_DECLTYPE=1 BOOST_ALL_NO_LIB=1 BOOST_SYSTEM_NO_DEPRECATED=1) -set(GUDHI_SRC_DIR "giotto/externals/gudhi-devel/src") +set(GUDHI_SRC_DIR "gtda/externals/gudhi-devel/src") ####################################################################### # Cubical Complex # diff --git a/CODE_AUTHORS b/CODE_AUTHORS index 5f8792c18..a76359da2 100644 --- a/CODE_AUTHORS +++ b/CODE_AUTHORS @@ -1,5 +1,5 @@ -# The following is the list of the code authors of the giotto-learn python -# package. Where component authors are known, add them here. +# The following is the list of the code authors of the giotto-tda python +# package. Where component authors are known, add them here. Guillaume Tauzin, guillaume.tauzin@epfl.ch Umberto Lupo, u.lupo@l2f.ch diff --git a/CODE_OWNERS b/CODE_OWNERS index 837c9d9f7..8cce5d770 100644 --- a/CODE_OWNERS +++ b/CODE_OWNERS @@ -1,5 +1,5 @@ -# The following is the list of the code owners of the giotto-learn python +# The following is the list of the code owners of the giotto-tda python # package. L2F SA diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 9e15d28f9..f38de2383 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -5,9 +5,9 @@ Pull Request Checklist ---------------------- Before sending your pull requests, make sure you followed this list. - - Read the `contributing guidelines `_. - - Read the `code of conduct `_. - - Ensure you have signed the `contributor license agreement (CLA) `_. + - Read the `contributing guidelines `_. + - Read the `code of conduct `_. + - Ensure you have signed the `contributor license agreement (CLA) `_. - Check if the changes are consistent with the guidelines. - Changes are consistent with the Coding Style. - Run Unit Tests. @@ -18,21 +18,21 @@ How to become a contributor and submit your own code Contributor License Agreements ------------------------------ -In order to become a contributor of Giotto, the first step is to sign the -`contributor license agreement (CLA) `_. +In order to become a contributor of giotto-tda, the first step is to sign the +`contributor license agreement (CLA) `_. **NOTE**: Only original source code from you and other people that have signed the CLA can be accepted into the main repository. Contributing code ----------------- -If you have improvements to Giotto, do not hesitate to send us pull requests! +If you have improvements to giotto-tda, do not hesitate to send us pull requests! Please follow the Github how to (https://help.github.com/articles/using-pull-requests/). -The Giotto Team will review your pull requests. Once the pull requests are approved and pass continuous integration checks, the -Giotto team will work on getting your pull request submitted to our GitHub +The giotto-tda team will review your pull requests. Once the pull requests are approved and pass continuous integration checks, the +giotto-tda team will work on getting your pull request submitted to our GitHub repository. Eventually, your pull request will be merged automatically on GitHub. -If you want to contribute, start working through the Giotto codebase, -navigate to the `GitHub issue tab `_ +If you want to contribute, start working through the giotto-tda codebase, +navigate to the `GitHub issue tab `_ and start looking through interesting issues. These are issues that we believe are particularly well suited for outside contributions, often because we probably won't get to them right now. If you decide to start on an issue, leave @@ -53,17 +53,17 @@ General guidelines and philosophy for contribution b) guard against future breaking changes to lower the maintenance cost. * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. -* Keep API compatibility in mind when you change code in core Giotto. +* Keep API compatibility in mind when you change code in core giotto-tda. * Clearly define your exceptions using the utils functions and test the exceptions. -* When you contribute a new feature to Giotto, the maintenance burden is    - (by default) transferred to the Giotto team. This means that the benefit    +* When you contribute a new feature to giotto-tda, the maintenance burden is    + (by default) transferred to the giotto-tda team. This means that the benefit    of the contribution must be compared against the cost of maintaining the    feature. C++ coding style ---------------- -Changes to Giotto C/C++ code should conform to `Google C++ Style Guide `_. +Changes to giotto-tda's C/C++ code should conform to `Google C++ Style Guide `_. Use `clang-tidy` to check your C/C++ changes. To install `clang-tidy` on ubuntu:16.04, do: @@ -81,7 +81,7 @@ You can check a C/C++ file by doing: Python coding style ------------------- -Changes to Giotto Python code should conform to PEP8 directives. +Changes to giotto-tda's Python code should conform to PEP8 directives. Use `flake8` to check your Python changes. To install `flake8` just do .. code-block:: python @@ -106,7 +106,7 @@ We provide a pre-commit git hook to prevent accidental commits to the master bra Running unit tests ------------------ -There are two ways to run Giotto unit tests. +There are two ways to run unit tests for giotto-tda. 1. Using tools and libraries installed directly on your system. The election tool is `pytest`. To install `pytest` just do @@ -120,4 +120,4 @@ You can use `pytest` on your python code via the following instructions: pytest name_of_your_script.py -2. Using Azure (azure-pipelines.yml) and Giotto's CI scripts. +2. Using Azure (azure-pipelines.yml) and giotto-tda's CI scripts. diff --git a/GOVERNANCE.rst b/GOVERNANCE.rst index 73ac0ed29..e36194a25 100644 --- a/GOVERNANCE.rst +++ b/GOVERNANCE.rst @@ -1,4 +1,4 @@ -This file describe the governance of the Giotto project. +This file describe the governance of the giotto-tda project. Project owner: -------------- @@ -8,10 +8,10 @@ Project owner: Authors: -------- -- Please refer to the `authors `_ file +- Please refer to the `authors `_ file -Giotto Project Team: --------------------- +Giotto-tda Project Team: +------------------------ - Umberto Lupo u.lupo@l2f.ch (Maintainer) - Lewis Tunstall l.tunstall@l2f.ch (Maintainer) @@ -20,4 +20,4 @@ Giotto Project Team: Former Project Team Members: ---------------------------- -- Philippe Nguyen p.nguyen@l2f.ch (Developer) \ No newline at end of file +- Philippe Nguyen p.nguyen@l2f.ch (Developer) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index e58849f55..9c9b16a68 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,7 +1,7 @@ - + #### Description - #### Steps/Code to Reproduce @@ -23,9 +23,9 @@ import platform; print(platform.platform()) import sys; print("Python", sys.version) import numpy; print("NumPy", numpy.__version__) import scipy; print("SciPy", scipy.__version__) -import joblib; print("joblib", joblib.__version__) -import sklearn; print("Scikit-Learn", sklearn.__version__) -import giotto; print("giotto-Learn", giotto.__version__) +import joblib; print("Joblib", joblib.__version__) +import sklearn; print("Scikit-learn", sklearn.__version__) +import gtda; print("Giotto-tda", gtda.__version__) --> diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index c1a3b6962..80ca95ab1 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,6 @@ #### Reference Issues/PRs diff --git a/README.rst b/README.rst index 1c5f31d3e..ce1f1c83a 100644 --- a/README.rst +++ b/README.rst @@ -3,7 +3,7 @@ |Azure|_ |Azure-cov|_ |Azure-test|_ |binder|_ -.. |Azure| image:: https://dev.azure.com/maintainers/Giotto/_apis/build/status/giotto-ai.giotto-learn?branchName=master +.. |Azure| image:: https://dev.azure.com/maintainers/Giotto/_apis/build/status/giotto-ai.giotto-tda?branchName=master .. _Azure: https://dev.azure.com/maintainers/Giotto/_build/latest?definitionId=2&branchName=master .. |Azure-cov| image:: https://img.shields.io/badge/Coverage-93%25-passed @@ -13,14 +13,14 @@ .. _Azure-test: https://dev.azure.com/maintainers/Giotto/_build/results?buildId=6&view=ms.vss-test-web.build-test-results-tab .. |binder| image:: https://mybinder.org/badge_logo.svg -.. _binder: https://mybinder.org/v2/gh/giotto-ai/giotto-learn/master?filepath=examples +.. _binder: https://mybinder.org/v2/gh/giotto-ai/giotto-tda/master?filepath=examples -giotto-learn -============ +giotto-tda +========== -giotto-learn is a high performance topological machine learning toolbox in Python built on top of +giotto-tda is a high performance topological machine learning toolbox in Python built on top of scikit-learn and is distributed under the GNU AGPLv3 license. It is part of the `Giotto `_ family of open-source projects. Website: https://giotto.ai @@ -29,7 +29,7 @@ Website: https://giotto.ai Project genesis --------------- -giotto-learn is the result of a collaborative effort between `L2F SA +giotto-tda is the result of a collaborative effort between `L2F SA `_, the `Laboratory for Topology and Neuroscience `_ at EPFL, and the `Institute of Reconfigurable & Embedded Digital Systems (REDS) `_ of HEIG-VD. @@ -40,7 +40,7 @@ Installation Dependencies ~~~~~~~~~~~~ -The latest stable version of giotto-learn requires: +The latest stable version of giotto-tda requires: - Python (>= 3.5) - NumPy (>= 1.17.0) @@ -61,9 +61,9 @@ To run the examples, jupyter is required. User installation ~~~~~~~~~~~~~~~~~ -The simplest way to install giotto-learn is using ``pip`` :: +The simplest way to install giotto-tda is using ``pip`` :: - pip install -U giotto-learn + pip install -U giotto-tda Note: the above may fail on old versions of ``pip``. We recommend upgrading ``pip`` to a recent version. @@ -71,9 +71,9 @@ to a recent version. Pre-release, experimental builds containing recently added features and/or bug fixes can be installed by running :: - pip install -U giotto-learn-nightly + pip install -U giotto-tda-nightly -The main difference between ``giotto-learn-nightly`` and the developer +The main difference between ``giotto-tda-nightly`` and the developer installation (see below) is that the former is shipped with pre-compiled wheels (similarly to the stable release) and hence does not require any C++ dependencies. @@ -87,13 +87,13 @@ Contributing We welcome new contributors of all experience levels. The Giotto community goals are to be helpful, welcoming, and effective. To learn more about -making a contribution to giotto-learn, please see the `CONTRIBUTING.rst -`_ file. +making a contribution to giotto-tda, please see the `CONTRIBUTING.rst +`_ file. Developer installation ~~~~~~~~~~~~~~~~~~~~~~~ -Installing both the PyPI release and source of giotto-learn in the same environment is not recommended since it is +Installing both the PyPI release and source of giotto-tda in the same environment is not recommended since it is known to cause conflicts with the C++ bindings. C++ dependencies: @@ -136,7 +136,7 @@ Source code You can check the latest sources with the command:: - git clone https://github.com/giotto-ai/giotto-learn.git + git clone https://github.com/giotto-ai/giotto-tda.git To install: @@ -144,7 +144,7 @@ To install: .. code-block:: bash - cd giotto-learn + cd giotto-tda pip install -e ".[tests, doc]" This way, you can pull the library's latest changes and make them immediately available on your machine. @@ -162,15 +162,15 @@ source directory:: Changelog --------- -See the `RELEASE.rst `__ file -for a history of notable changes to giotto-learn. +See the `RELEASE.rst `__ file +for a history of notable changes to giotto-tda. Important links ~~~~~~~~~~~~~~~ -- Official source code repo: https://github.com/giotto-ai/giotto-learn -- Download releases: https://pypi.org/project/giotto-learn/ -- Issue tracker: https://github.com/giotto-ai/giotto-learn/issues +- Official source code repo: https://github.com/giotto-ai/giotto-tda +- Download releases: https://pypi.org/project/giotto-tda/ +- Issue tracker: https://github.com/giotto-ai/giotto-tda/issues Community --------- diff --git a/RELEASE.rst b/RELEASE.rst index 10def1ff6..c9fe3641f 100644 --- a/RELEASE.rst +++ b/RELEASE.rst @@ -1,3 +1,156 @@ +Release 0.1.4 +============= + +Library name change +------------------- +The library and GitHub repository have been renamed to ``giotto-tda``! While the +new name is meant to better convey the library's focus on Topology-powered +machine learning and Data Analysis, the commitment to seamless integration with +``scikit-learn`` will remain just as strong and a defining feature of the project. +Concurrently, the main module has been renamed from ``giotto`` to ``gtda`` in this +version. ``giotto-learn`` will remain on PyPI as a legacy package (stuck at v0.1.3) +until we have ensured that users and developers have fully migrated. The new PyPI +package ``giotto-tda`` will start at v0.1.4 for project continuity. + +Short summary: install via :: + + pip install -U giotto-tda + +and ``import gtda`` in your scripts or notebooks! + +Change of license +----------------- + +The license changes from Apache 2.0 to GNU AGPLv3 from this release on. + +Major Features and Improvements +------------------------------- +- Added a ``mapper`` submodule implementing the Mapper algorithm of Singh, Mémoli and Carlsson. The main tools are the + functions ``make_mapper_pipeline``, ``plot_static_mapper_graph`` and ``plot_interactive_mapper_graph``. The first + creates an object of class ``MapperPipeline`` which can be fit-transformed to data to create a Mapper graph in the + form of an ``igraph.Graph`` object (see below). The ``MapperPipeline`` class itself is a simple subclass + of scikit-learn's ``Pipeline`` which is adapted to the precise structure of the Mapper algorithm, so that a + ``MapperPipeline`` object can be used as part of even larger scikit-learn pipelines, inside a meta-estimator, in a + grid search, etc. One also has access to other important features of scikit-learn's ``Pipeline``, such as memory + caching to avoid unnecessary recomputation of early steps when parameters involved in later steps are changed. + The clustering step can be parallelised over the pullback cover sets via ``joblib`` -- though this can actually + *lower* performance in small- and medium-size datasets. A range of pre-defined filter functions are also included, + as well as covers in one and several dimensions, agglomerative clustering algorithms based on stopping rules to + create flat cuts, and utilities for making transformers out of callables or out of other classes which have no + ``transform`` method. ``plot_static_mapper_graph`` allows the user to visualise (in 2D or 3D) the Mapper graph + arising from fit-transforming a ``MapperPipeline`` to data, and offers a range of colouring options to correlate the + graph's structure with exogenous or endogenous information. It relies on ``plotly`` for plotting and displaying + metadata. ``plot_interactive_mapper_graph`` adds interactivity to this, via ``ipywidgets``: specifically, the user + can fine-tune some parameters involved in the definition of the Mapper pipeline, and observe in real time how the + structure of the graph changes as a result. In this release, all hyperparameters involved in the covering and + clustering steps are supported. The ability to fine-tune other hyperparameters will be considered for future versions. +- Added support for Python 3.8. + +Bug Fixes +--------- +- Fixed consistently incorrect documentation for the ``fit_transform`` methods. This has been achieved by introducing a + class decorator ``adapt_fit_transform_docs`` which is defined in the newly introduced ``gtda.utils._docs.py``. + +Backwards-Incompatible Changes +------------------------------ +- The library name change and the change in the name of the main module ``giotto`` + are important major changes. +- There are now additional dependencies in the ``python-igraph``, ``matplotlib``, ``plotly``, and ``ipywidgets`` libraries. + +Thanks to our Contributors +-------------------------- + +This release contains contributions from many people: + +Umberto Lupo, Lewis Tunstall, Guillaume Tauzin, Philipp Weiler, Julian Burella Pérez. + +We are also grateful to all who filed issues or helped resolve them, asked and +answered questions, and were part of inspiring discussions. + + +Release 0.1.3 +============= + +Major Features and Improvements +------------------------------- +None + +Bug Fixes +--------- +- Fixed a bug in ``diagrams.Amplitude`` causing the transformed array to be wrongly filled and added adequate test. + +Backwards-Incompatible Changes +------------------------------ +None. + +Thanks to our Contributors +-------------------------- + +This release contains contributions from many people: + +Umberto Lupo. + +We are also grateful to all who filed issues or helped resolve them, asked and +answered questions, and were part of inspiring discussions. + + +Release 0.1.2 +============= + +Major Features and Improvements +------------------------------- +- Added support for Python 3.5. + +Bug Fixes +--------- +None. + +Backwards-Incompatible Changes +------------------------------ +None. + +Thanks to our Contributors +-------------------------- + +This release contains contributions from many people: + +Matteo Caorsi, Henry Tom (@henrytomsf), Guillaume Tauzin. + +We are also grateful to all who filed issues or helped resolve them, asked and +answered questions, and were part of inspiring discussions. + + +Release 0.1.1 +============= + +Major Features and Improvements +------------------------------- +- Improved documentation. +- Improved features of class ``Labeller``. +- Improved features of class ``PearsonDissimilarities``. +- Improved GitHub files. +- Improved CI. + +Bug Fixes +--------- +Fixed minor bugs from the first release. + +Backwards-Incompatible Changes +------------------------------ +The following class were renamed: +- class ``PearsonCorrelation`` was renamed to class ``PearsonDissimilarities`` + +Thanks to our Contributors +-------------------------- + +This release contains contributions from many people: + +Umberto Lupo, Guillaume Tauzin, Matteo Caorsi, Olivier Morel. + +We are also grateful to all who filed issues or helped resolve them, asked and +answered questions, and were part of inspiring discussions. + + Release 0.1.0 ============= @@ -6,14 +159,14 @@ Major Features and Improvements The following submodules where added: -- `giotto.homology` implements transformers to modify metric spaces or generate persistence diagrams. -- `giotto.diagrams` implements transformers to preprocess persistence diagrams or extract features from them. -- `giotto.time_series` implements transformers to preprocess time series or embed them in a higher dimensional space for persistent homology. -- `giotto.graphs` implements transformers to create graphs or extract metric spaces from graphs. -- `giotto.meta_transformers` implements convenience `giotto.Pipeline` transformers for direct topological feature generation. -- `giotto.utils` implements hyperparameters and input validation functions. -- `giotto.base` implements a TransformerResamplerMixin for transformers that have a resample method. -- `giotto.pipeline` extends scikit-learn's module by defining Pipelines that include TransformerResamplers. +- ``giotto.homology`` implements transformers to modify metric spaces or generate persistence diagrams. +- ``giotto.diagrams`` implements transformers to preprocess persistence diagrams or extract features from them. +- ``giotto.time_series`` implements transformers to preprocess time series or embed them in a higher dimensional space for persistent homology. +- ``giotto.graphs`` implements transformers to create graphs or extract metric spaces from graphs. +- ``giotto.meta_transformers`` implements convenience ``giotto.Pipeline`` transformers for direct topological feature generation. +- ``giotto.utils`` implements hyperparameters and input validation functions. +- ``giotto.base`` implements a ``TransformerResamplerMixin`` for transformers that have a resample method. +- ``giotto.pipeline`` extends scikit-learn's module by defining Pipelines that include ``TransformerResamplers``. Bug Fixes @@ -39,4 +192,4 @@ answered questions, and were part of inspiring discussions. Release 0.1a.0 ============== -Initial release of giotto-learn. +Initial release of the library, original named ``giotto-learn``. diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c4192631f..000000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/azure-ci/docker_scripts.sh b/azure-ci/docker_scripts.sh index 44c45d394..d32ec88c6 100644 --- a/azure-ci/docker_scripts.sh +++ b/azure-ci/docker_scripts.sh @@ -28,10 +28,10 @@ cd .. export BOOST_ROOT=/boost export Boost_INCLUDE_DIR=/boost/include -# installing and uninstalling giotto-learn +# installing and uninstalling giotto-tda cd /io pip install -e ".[doc, tests]" -pip uninstall -y giotto-learn +pip uninstall -y giotto-tda # testing, linting pytest --cov . --cov-report xml diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a317b3966..46a7fe929 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -32,7 +32,7 @@ jobs: - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pytest --cov giotto --cov-report xml + pytest --cov gtda --cov-report xml flake8 displayName: 'Test with pytest, nbconvert and flake8' @@ -74,7 +74,7 @@ jobs: - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pytest --cov giotto --cov-report xml + pytest --cov gtda --cov-report xml flake8 displayName: 'Test with pytest, nbconvert and flake8' @@ -108,18 +108,13 @@ jobs: pip install wheel twine displayName: 'Install tools' -# - script: | -# pip install https://storage.googleapis.com/l2f-open-models/giotto-learn/windows-binaries/pycairo/pycairo-1.18.2-cp$(python_ver)-cp$(python_ver)m-win_amd64.whl -# pip install https://storage.googleapis.com/l2f-open-models/giotto-learn/windows-binaries/python-igraph/python_igraph-0.7.1.post6-cp$(python_ver)-cp$(python_ver)m-win_amd64.whl -# displayName: 'Install pycairo and python-igraph' - - script: pip install -e ".[tests, doc]" displayName: 'Install dev environment' - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pytest --cov giotto --cov-report xml + pytest --cov gtda --cov-report xml flake8 displayName: 'Test with pytest, nbconvert and flake8' @@ -158,11 +153,11 @@ jobs: versionSpec: '$(python.version)' - bash: | - sed -i "s/'giotto-learn'/'giotto-learn-nightly'/1" setup.py - sed -i "s/__version__.*/__version__ = '$(Build.BuildNumber)'/1" giotto/_version.py - cat giotto/_version.py + sed -i "s/'giotto-tda'/'giotto-tda-nightly'/1" setup.py + sed -i "s/__version__.*/__version__ = '$(Build.BuildNumber)'/1" gtda/_version.py + cat gtda/_version.py condition: eq(variables['nightly_check'], 'true') - displayName: 'change name to giotto-learn-nightly' + displayName: 'change name to giotto-tda-nightly' - task: Bash@3 inputs: @@ -180,7 +175,7 @@ jobs: - script: | pip install dist/*.whl cd /tmp/ - pytest --cov --pyargs giotto --cov-report xml --ignore-glob='*externals*' + pytest --cov --pyargs gtda --cov-report xml --ignore-glob='*externals*' displayName: 'Install and test the wheels' - task: CopyFiles@2 @@ -198,7 +193,7 @@ jobs: - bash: | pip install twine for f in dist/*linux* ; do sudo mv "$f" "${f/linux/manylinux2010}"; done - twine upload -u giotto-learn -p $(pypi_psw) --skip-existing dist/* + twine upload -u giotto-tda -p $(pypi_psw) --skip-existing dist/* condition: eq(variables['nightly_check'], 'true') displayName: 'Upload wheels to PyPI' @@ -224,13 +219,13 @@ jobs: versionSpec: '$(python.version)' - bash: | - sed -i.bak "s/'giotto-learn'/'giotto-learn-nightly'/1" setup.py + sed -i.bak "s/'giotto-tda'/'giotto-tda-nightly'/1" setup.py rm setup.py.bak - sed -i.bak "s/__version__.*/__version__ = '$(Build.BuildNumber)'/1" giotto/_version.py - cat giotto/_version.py - rm giotto/_version.py.bak + sed -i.bak "s/__version__.*/__version__ = '$(Build.BuildNumber)'/1" gtda/_version.py + cat gtda/_version.py + rm gtda/_version.py.bak condition: eq(variables['nightly_check'], 'true') - displayName: 'change name to giotto-learn-nightly' + displayName: 'change name to giotto-tda-nightly' - script: | brew update @@ -249,8 +244,8 @@ jobs: - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pip uninstall -y giotto-learn - pytest --cov giotto --cov-report xml + pip uninstall -y giotto-tda + pytest --cov gtda --cov-report xml flake8 condition: eq(variables['nightly_check'], 'false') displayName: 'Test with pytest, nbconvert and flake8' @@ -258,8 +253,8 @@ jobs: - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pip uninstall -y giotto-learn-nightly - pytest --cov giotto --cov-report xml + pip uninstall -y giotto-tda-nightly + pytest --cov gtda --cov-report xml flake8 condition: eq(variables['nightly_check'], 'true') displayName: 'Test with pytest, nbconvert and flake8' @@ -270,7 +265,7 @@ jobs: - script: | pip install dist/*.whl cd /tmp/ - pytest --cov --pyargs giotto --cov-report xml --ignore-glob='*externals*' + pytest --cov --pyargs gtda --cov-report xml --ignore-glob='*externals*' displayName: 'install and test the wheels' - script: | @@ -301,7 +296,7 @@ jobs: pathToPublish: '$(Build.ArtifactStagingDirectory)' artifactName: 'wheel_and_doc' - - bash: twine upload -u giotto-learn -p $(pypi_psw) --skip-existing dist/* + - bash: twine upload -u giotto-tda -p $(pypi_psw) --skip-existing dist/* condition: eq(variables['nightly_check'], 'true') displayName: 'Upload wheels to PyPI' @@ -331,20 +326,15 @@ jobs: versionSpec: '$(python.version)' - bash: | - sed -i "s/'giotto-learn'/'giotto-learn-nightly'/1" setup.py - sed -i "s/__version__.*/__version__ = '$(Build.BuildNumber)'/1" giotto/_version.py - cat giotto/_version.py + sed -i "s/'giotto-tda'/'giotto-tda'/1" setup.py + sed -i "s/__version__.*/__version__ = '$(Build.BuildNumber)'/1" gtda/_version.py + cat gtda/_version.py condition: eq(variables['nightly_check'], 'true') - displayName: 'change name to giotto-learn-nightly' + displayName: 'change name to giotto-tda-nightly' - script: python -m pip install --upgrade pip setuptools displayName: 'Install tools' -# - script: | -# pip install https://storage.googleapis.com/l2f-open-models/giotto-learn/windows-binaries/pycairo/pycairo-1.18.2-cp$(python_ver)-cp$(python_ver)m-win_amd64.whl -# pip install https://storage.googleapis.com/l2f-open-models/giotto-learn/windows-binaries/python-igraph/python_igraph-0.7.1.post6-cp$(python_ver)-cp$(python_ver)m-win_amd64.whl -# displayName: 'Install pycairo and python-igraph' - - script: | pip install -e ".[tests, doc]" pip install wheel twine @@ -353,8 +343,8 @@ jobs: - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pip uninstall -y giotto-learn - pytest --cov giotto --cov-report xml + pip uninstall -y giotto-tda + pytest --cov gtda --cov-report xml flake8 condition: eq(variables['nightly_check'], 'false') displayName: 'Test with pytest, nbconvert and flake8' @@ -362,8 +352,8 @@ jobs: - script: | pip install openml jupyter nbconvert --to notebook --execute examples/*.ipynb - pip uninstall -y giotto-learn-nightly - pytest --cov giotto --cov-report xml + pip uninstall -y giotto-tda-nightly + pytest --cov gtda --cov-report xml flake8 condition: eq(variables['nightly_check'], 'true') displayName: 'Test with pytest, nbconvert and flake8' @@ -376,7 +366,7 @@ jobs: - bash: | pip install dist/*.whl cd /tmp/ - pytest --cov --pyargs giotto --cov-report xml --ignore-glob='*externals*' + pytest --cov --pyargs gtda --cov-report xml --ignore-glob='*externals*' displayName: 'install and test the wheels' - task: CopyFiles@2 @@ -391,6 +381,6 @@ jobs: pathToPublish: '$(Build.ArtifactStagingDirectory)' artifactName: 'wheel_and_doc' - - bash: twine upload -u giotto-learn -p $(pypi_psw) --skip-existing dist/* + - bash: twine upload -u giotto-tda -p $(pypi_psw) --skip-existing dist/* condition: eq(variables['nightly_check'], 'true') displayName: 'Upload wheels to PyPI' diff --git a/doc/conf.py b/doc/conf.py index 86eeb704f..ec3e8e55e 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -13,13 +13,13 @@ import os import sys -from giotto import __version__ +from gtda import __version__ sys.path.insert(0, os.path.abspath('../')) # -- Project information ----------------------------------------------------- -project = 'giotto-learn' +project = 'giotto-tda' copyright = '2019, L2F' author = 'Guillaume Tauzin, Umberto Lupo, Matteo Caorsi, Anibal Medina, ' \ 'Lewis Tunstall' diff --git a/doc/index.rst b/doc/index.rst index d4f1e6ef8..86579de33 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,22 +1,22 @@ -.. giotto-learn documentation master file, created by +.. giotto-tda documentation master file, created by sphinx-quickstart on Mon Jun 3 11:56:46 2019. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to giotto's API reference! -================================== +Welcome to giotto-tda's API reference! +====================================== -:mod:`giotto.mapper`: Mapper -============================ +:mod:`gtda.mapper`: Mapper +========================== -.. automodule:: giotto.mapper +.. automodule:: gtda.mapper :no-members: :no-inherited-members: Filters ------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -28,7 +28,7 @@ Filters Covers ------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -39,7 +39,7 @@ Covers Clustering ---------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -50,7 +50,7 @@ Clustering Pipeline -------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -67,7 +67,7 @@ Pipeline Visualization ------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -78,7 +78,7 @@ Visualization Utilities --------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -88,14 +88,14 @@ Utilities mapper.utils.pipeline.transformer_from_callable_on_rows -:mod:`giotto.homology`: Persistent homology -=========================================== +:mod:`gtda.homology`: Persistent homology +========================================= -.. automodule:: giotto.homology +.. automodule:: gtda.homology :no-members: :no-inherited-members: -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -105,16 +105,16 @@ Utilities homology.ConsistentRescaling -:mod:`giotto.diagrams`: Persistence diagrams -============================================ +:mod:`gtda.diagrams`: Persistence diagrams +========================================== -.. automodule:: giotto.diagrams +.. automodule:: gtda.diagrams :no-members: :no-inherited-members: Preprocessing ------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -126,7 +126,7 @@ Preprocessing Distances --------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -136,7 +136,7 @@ Distances Diagram features ---------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -149,16 +149,16 @@ Diagram features diagrams.HeatKernel -:mod:`giotto.time_series`: Time series -====================================== +:mod:`gtda.time_series`: Time series +==================================== -.. automodule:: giotto.time_series +.. automodule:: gtda.time_series :no-members: :no-inherited-members: Preprocessing ------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -170,7 +170,7 @@ Preprocessing Time-delay embedding -------------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -180,7 +180,7 @@ Time-delay embedding Target preparation ------------------ -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -190,7 +190,7 @@ Target preparation Dynamical systems ----------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -200,7 +200,7 @@ Dynamical systems Multivariate ------------ -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -209,16 +209,16 @@ Multivariate time_series.PearsonDissimilarity -:mod:`giotto.graphs`: Graphs -============================ +:mod:`gtda.graphs`: Graphs +========================== -.. automodule:: giotto.graphs +.. automodule:: gtda.graphs :no-members: :no-inherited-members: Graph creation -------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -229,23 +229,23 @@ Graph creation Graph processing ---------------- -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ :template: class.rst graphs.GraphGeodesicDistance - -:mod:`giotto.base`: Base -======================== -.. automodule:: giotto.base +:mod:`gtda.base`: Base +====================== + +.. automodule:: gtda.base :no-members: :no-inherited-members: -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -254,14 +254,14 @@ Graph processing base.TransformerResamplerMixin -:mod:`giotto.pipeline`: Pipeline -================================ +:mod:`gtda.pipeline`: Pipeline +============================== -.. automodule:: giotto.pipeline +.. automodule:: gtda.pipeline :no-members: :no-inherited-members: -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -276,14 +276,14 @@ Graph processing pipeline.make_pipeline -:mod:`giotto.meta_transformers`: Convenience pipelines -====================================================== +:mod:`gtda.meta_transformers`: Convenience pipelines +==================================================== -.. automodule:: giotto.meta_transformers +.. automodule:: gtda.meta_transformers :no-members: :no-inherited-members: -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -294,14 +294,14 @@ Graph processing meta_transformers.LandscapeGenerator -:mod:`giotto.utils`: Validation -=============================== +:mod:`gtda.utils`: Validation +============================= -.. automodule:: giotto.utils +.. automodule:: gtda.utils :no-members: :no-inherited-members: -.. currentmodule:: giotto +.. currentmodule:: gtda .. autosummary:: :toctree: generated/ @@ -312,16 +312,16 @@ Graph processing utils.validate_metric_params .. - :mod:`giotto.images`: Images - ============================ + :mod:`gtda.images`: Images + ========================== .. - automodule:: giotto.images + automodule:: gtda.images :no-members: :no-inherited-members: .. - currentmodule:: giotto + currentmodule:: gtda .. autosummary:: @@ -338,16 +338,16 @@ Graph processing .. - :mod:`giotto.manifold`: Manifold learning - ========================================= + :mod:`gtda.manifold`: Manifold learning + ======================================= .. - automodule:: giotto.manifold + automodule:: gtda.manifold :no-members: :no-inherited-members: .. - currentmodule:: giotto + currentmodule:: gtda .. autosummary:: @@ -356,4 +356,4 @@ Graph processing manifold.StatefulMDS - manifold.Kinematics \ No newline at end of file + manifold.Kinematics diff --git a/environment.yml b/environment.yml index eb2ea5f52..9a14fc728 100644 --- a/environment.yml +++ b/environment.yml @@ -6,5 +6,5 @@ dependencies: - pip: - plotly - matplotlib - - giotto-learn + - giotto-tda - openml diff --git a/examples/README.rst b/examples/README.rst index f434d5fe1..1e605e84d 100644 --- a/examples/README.rst +++ b/examples/README.rst @@ -4,27 +4,27 @@ Examples and Tutorials ====================== -In this folder you can find basic tutorials and examples: you can read through them to understand how giotto-learn works. +In this folder you can find basic tutorials and examples: you can read through them to understand how giotto-tda works. Classifying Shapes ------------------ -This tutorial is about generating classical surfaces, such as tori and 2-spheres, and study their cohomological properites. -Non-orientable surfaces, such as the Klein bottle, are approximated by a grid and the reciprocal distances between the grid +This tutorial is about generating classical surfaces, such as tori and 2-spheres, and study their cohomological properites. +Non-orientable surfaces, such as the Klein bottle, are approximated by a grid and the reciprocal distances between the grid vertices forms the input of the Vietoris-Rips algorithm. Lorenz attractor ---------------- This tutorial is about detecting chaotic regimes in a simulation of the `Lorenz attractor. `_ -The main tools of giotto-learn useful for time-series analysis (such as the *Takens Embedding*) are used and explained in the tutorial. -Other feature creation methods, such as the *persistence Landscape* or the *persistence Entropy* are described in the final part of the +The main tools of giotto-tda useful for time-series analysis (such as the *Takens Embedding*) are used and explained in the tutorial. +Other feature creation methods, such as the *persistence Landscape* or the *persistence Entropy* are described in the final part of the tutorial. Can there be non trivial H_2 in 2-dimensions? -------------------------------------------- -This is a simple riddle that shows how the Vietoris-Rips algorithm may find counterintuitive patters in point-clouds. -The second homology group, H_2, describes and counts voids: for example, the 2-sphere has a non-trivial H_2. Therefore, -we would not expect to find voids in 2-dimensional flat space! On the other hand, it is enough to carefully position 6 points +This is a simple riddle that shows how the Vietoris-Rips algorithm may find counterintuitive patters in point-clouds. +The second homology group, H_2, describes and counts voids: for example, the 2-sphere has a non-trivial H_2. Therefore, +we would not expect to find voids in 2-dimensional flat space! On the other hand, it is enough to carefully position 6 points on the plane to get a nontrivial H_2: check the example out for an empirical proof! diff --git a/examples/classifying_shapes.ipynb b/examples/classifying_shapes.ipynb index 3e51c4793..f229487b1 100644 --- a/examples/classifying_shapes.ipynb +++ b/examples/classifying_shapes.ipynb @@ -9,9 +9,9 @@ "##### License: AGPLv3\n", "\n", "\n", - "The following notebook explains how to use *giotto* to be able to classify topologically different high-dimensional spaces.\n", + "The following notebook explains how to use giotto-tda to be able to classify topologically different high-dimensional spaces.\n", "\n", - "The first step consists in importing the *giotto* library." + "The first step consists in importing the *gtda* module." ] }, { @@ -21,11 +21,11 @@ "outputs": [], "source": [ "# Importing libraries\n", - "import giotto as go\n", - "import giotto.time_series as ts\n", - "import giotto.diagrams as diag\n", - "import giotto.homology as hl\n", - "from giotto.diagrams import PersistenceEntropy, BettiCurve, PersistenceLandscape, HeatKernel\n", + "import gtda as go\n", + "import gtda.time_series as ts\n", + "import gtda.diagrams as diag\n", + "import gtda.homology as hl\n", + "from gtda.diagrams import PersistenceEntropy, BettiCurve, PersistenceLandscape, HeatKernel\n", "import numpy as np\n", "import sklearn as sk\n", "from sklearn.pipeline import Pipeline\n", @@ -42,7 +42,7 @@ "source": [ "# Plotting functions\n", "\n", - "The *plotting.py* file is required to use the following plotting functions. It can be found in the *examples* folder on out github ." + "The *plotting.py* file is required to use the following plotting functions. It can be found in the *examples* folder on out github ." ] }, { @@ -120,7 +120,7 @@ "source": [ "# Computing persistent homology\n", "\n", - "In the next section we are using *giotto* to compute the persistent homology groups of the topological spaces we just constructed.\n", + "In the next section we will use giotto-tda to compute the persistent homology groups of the topological spaces we just constructed.\n", "We will use the Vietoris-Rips technique to generate a filtration out of a point cloud:\n", "\n", "![SegmentLocal](https://miro.medium.com/max/1200/1*w3BiQI1OX93KXcezctRQTQ.gif \"segment\")" @@ -418,7 +418,7 @@ "source": [ "# Computing persistent homology\n", "\n", - "In the next section we are using *giotto* to compute the persistent homology groups of the topological spaces we just constructed" + "In the next section we will use giotto-tda to compute the persistent homology groups of the topological spaces we just constructed" ] }, { diff --git a/examples/lorenz_attractor.ipynb b/examples/lorenz_attractor.ipynb index ed94bb3bb..00f78297d 100644 --- a/examples/lorenz_attractor.ipynb +++ b/examples/lorenz_attractor.ipynb @@ -10,7 +10,7 @@ "\n", "This notebook contains a full TDA pipeline to analyse the transitions of the Lorenz system to a chaotic regime from the stable one and viceversa.\n", "\n", - "The first step consists in importing the *giotto* library." + "The first step consists in importing the *gtda* module." ] }, { @@ -19,15 +19,15 @@ "metadata": {}, "outputs": [], "source": [ - "# Import the giotto library\n", - "import giotto as go\n", - "import giotto.time_series as ts\n", - "import giotto.graphs as gr\n", - "import giotto.diagrams as diag\n", - "import giotto.homology as hl\n", + "# Import the *gtda* module\n", + "import gtda as go\n", + "import gtda.time_series as ts\n", + "import gtda.graphs as gr\n", + "import gtda.diagrams as diag\n", + "import gtda.homology as hl\n", "import numpy as np\n", "import sklearn as sk\n", - "from giotto.pipeline import Pipeline\n", + "from gtda.pipeline import Pipeline\n", "from sklearn.ensemble import RandomForestRegressor\n", "import matplotlib.pyplot as plt\n", "\n", @@ -279,7 +279,7 @@ "metadata": {}, "source": [ "# Scikit-learn *Pipeline*\n", - "One of the advantages of our giotto library is the compatibility with scikit-learn. It is possible to set up a full pipeline such as the one above in a few lines. We will show how in the next section.\n", + "One of the advantages of giotto-tda is the compatibility with scikit-learn. It is possible to set up a full pipeline such as the one above in a few lines. We will show how in the next section.\n", "\n" ] }, diff --git a/examples/mapper_quickstart.ipynb b/examples/mapper_quickstart.ipynb index 0817a7073..e8182c34d 100644 --- a/examples/mapper_quickstart.ipynb +++ b/examples/mapper_quickstart.ipynb @@ -6,7 +6,7 @@ "source": [ "# Getting Started with Mapper\n", "\n", - "In this notebook we explore a few of the core features included in giotto-learn's implementation of the [Mapper algorithm](https://research.math.osu.edu/tgda/mapperPBG.pdf). \n", + "In this notebook we explore a few of the core features included in giotto-tda's implementation of the [Mapper algorithm](https://research.math.osu.edu/tgda/mapperPBG.pdf). \n", "\n", "## Useful references\n", "\n", @@ -47,16 +47,16 @@ "import plotly.graph_objects as go\n", "\n", "# tda magic\n", - "from giotto.mapper import (\n", + "from gtda.mapper import (\n", " CubicalCover,\n", " make_mapper_pipeline,\n", " Projection,\n", " plot_static_mapper_graph,\n", " plot_interactive_mapper_graph\n", ")\n", - "from giotto.mapper.utils.visualization import set_node_sizeref\n", + "from gtda.mapper.utils.visualization import set_node_sizeref\n", "\n", - "# from giotto.mapper.utils.visualization import set_node_sizeref\n", + "# from gtda.mapper.utils.visualization import set_node_sizeref\n", "\n", "# ml tools\n", "from sklearn import datasets\n", @@ -97,28 +97,28 @@ "## Configure the Mapper pipeline\n", "Given a dataset ${\\cal D}$ of points $x \\in \\mathbb{R}^n$, the basic steps behind Mapper are as follows:\n", "\n", - "1. Map ${\\cal D}$ to a lower-dimensional space using a _**filter function**_ $ f: \\mathbb{R}^n \\to \\mathbb{R}^m $. Common choices for the filter function include projection onto one or more axes via PCA or density-based methods. In giotto-learn, you can import a variety of filter functions as follows:\n", + "1. Map ${\\cal D}$ to a lower-dimensional space using a _**filter function**_ $ f: \\mathbb{R}^n \\to \\mathbb{R}^m $. Common choices for the filter function include projection onto one or more axes via PCA or density-based methods. In giotto-tda, you can import a variety of filter functions as follows:\n", "\n", "```python\n", - "from giotto.mapper.filter import FilterFunctionName\n", + "from gtda.mapper.filter import FilterFunctionName\n", "```\n", "\n", "2. Construct a cover of the filter values ${\\cal U} = (U_i)_{i\\in I}$, typically in the form of a set of overlapping intervals which have constant length. As with the filter, a choice of cover can be imported as follows:\n", "\n", "```python\n", - "from giotto.mapper.cover import CoverName\n", + "from gtda.mapper.cover import CoverName\n", "```\n", "\n", - "3. For each interval $U_i \\in {\\cal U}$ cluster the points in the preimage $f^{-1}(U_i)$ into sets $C_{i,1}, \\ldots , C_{i,k_i}$. The choice of clustering algorithm can be any of scikit-learn's [clustering methods](https://scikit-learn.org/stable/modules/clustering.html) or an implementation of agglomerative clustering in giotto-learn:\n", + "3. For each interval $U_i \\in {\\cal U}$ cluster the points in the preimage $f^{-1}(U_i)$ into sets $C_{i,1}, \\ldots , C_{i,k_i}$. The choice of clustering algorithm can be any of scikit-learn's [clustering methods](https://scikit-learn.org/stable/modules/clustering.html) or an implementation of agglomerative clustering in giotto-tda:\n", "\n", "```python\n", "# scikit-learn method\n", "from sklearn.cluster import ClusteringAlgorithm\n", - "# giotto-learn method\n", - "from giotto.mapper.cluster import FirstSimpleGap\n", + "# giotto-tda method\n", + "from gtda.mapper.cluster import FirstSimpleGap\n", "```\n", "\n", - "4. Construct the topological graph whose vertices are the cluster sets $(C_{i,j})_{i\\in I, j \\in \\{1,\\ldots,k_i\\}}$ and an edge exists between two nodes if they share points in common: $C_{i,j} \\cap C_{k,l} \\neq \\emptyset$. This step is handled automatically by giotto-learn.\n", + "4. Construct the topological graph whose vertices are the cluster sets $(C_{i,j})_{i\\in I, j \\in \\{1,\\ldots,k_i\\}}$ and an edge exists between two nodes if they share points in common: $C_{i,j} \\cap C_{k,l} \\neq \\emptyset$. This step is handled automatically by giotto-tda.\n", "\n", "These four steps are implemented in the `MapperPipeline()` object that mimics the `Pipeline()` class from scikit-learn. We provide a convenience function `make_mapper_pipeline()` that allows you to pass the choice of filter function, cover, and clustering algorithm as arguments. For example, to project our data onto the $x$- and $y$-axes, we could setup the pipeline as follows:" ] @@ -160,7 +160,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With the Mapper pipeline at hand, it is now a simple matter to visualise it. To warm up, let's examine the graph in two-dimensions using the default arguments of giotto-learn's plotting function:" + "With the Mapper pipeline at hand, it is now a simple matter to visualise it. To warm up, let's examine the graph in two-dimensions using the default arguments of giotto-tda's plotting function:" ] }, { @@ -493,7 +493,7 @@ "metadata": {}, "source": [ "## Visualise the 2D Mapper graph interactively\n", - "In general, buidling useful Mapper graphs requires some iteration through the various parameters in the cover and clustering algorithm. To simplify that process, giotto-learn provides an interactive figure that can be configured in real-time. If invalid parameters are selected, the _Show logs_ checkbox can be used to see what went wrong." + "In general, buidling useful Mapper graphs requires some iteration through the various parameters in the cover and clustering algorithm. To simplify that process, giotto-tda provides an interactive figure that can be configured in real-time. If invalid parameters are selected, the _Show logs_ checkbox can be used to see what went wrong." ] }, { diff --git a/examples/plotting.py b/examples/plotting.py index d735daca7..78f933dfc 100644 --- a/examples/plotting.py +++ b/examples/plotting.py @@ -3,7 +3,7 @@ import numpy as np import plotly.graph_objs as gobj -from giotto.diagrams._utils import _subdiagrams +from gtda.diagrams._utils import _subdiagrams import matplotlib.pyplot as plt diff --git a/examples/voids_on_the_plane.ipynb b/examples/voids_on_the_plane.ipynb index 82de39c66..756a83518 100644 --- a/examples/voids_on_the_plane.ipynb +++ b/examples/voids_on_the_plane.ipynb @@ -25,7 +25,7 @@ "outputs": [], "source": [ "import numpy as np\n", - "from giotto.homology import VietorisRipsPersistence as VR\n", + "from gtda.homology import VietorisRipsPersistence as VR\n", "import itertools\n", "\n", "import matplotlib.pyplot as plt\n" diff --git a/giotto/__init__.py b/gtda/__init__.py similarity index 100% rename from giotto/__init__.py rename to gtda/__init__.py diff --git a/giotto/_version.py b/gtda/_version.py similarity index 84% rename from giotto/_version.py rename to gtda/_version.py index 6b78a6403..c0fcfd3f0 100644 --- a/giotto/_version.py +++ b/gtda/_version.py @@ -1,4 +1,4 @@ -"""``giotto-learn`` is a Python library implementing algorithms from +"""``giotto-tda`` is a Python library implementing algorithms from Topological Data Analysis in a machine learning framework.""" # License: GNU AGPLv3 @@ -19,4 +19,4 @@ # 'X.Y.dev0' is the canonical version of 'X.Y.dev' # -__version__ = '0.1.3' +__version__ = '0.1.4' diff --git a/giotto/base.py b/gtda/base.py similarity index 97% rename from giotto/base.py rename to gtda/base.py index a8b5104ba..1d51aa6b0 100644 --- a/giotto/base.py +++ b/gtda/base.py @@ -4,7 +4,7 @@ class TransformerResamplerMixin: - """Mixin class for all transformers-resamplers in giotto-learn.""" + """Mixin class for all transformers-resamplers in giotto-tda.""" _estimator_type = 'transformer_resampler' diff --git a/giotto/diagrams/__init__.py b/gtda/diagrams/__init__.py similarity index 85% rename from giotto/diagrams/__init__.py rename to gtda/diagrams/__init__.py index 7ccebb348..b8a02b6e9 100644 --- a/giotto/diagrams/__init__.py +++ b/gtda/diagrams/__init__.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.diagrams` implements transformers to preprocess +"""The module :mod:`gtda.diagrams` implements transformers to preprocess persistence diagrams or extract features from them.""" from .preprocessing import ForgetDimension, Scaler, Filtering diff --git a/giotto/diagrams/_metrics.py b/gtda/diagrams/_metrics.py similarity index 100% rename from giotto/diagrams/_metrics.py rename to gtda/diagrams/_metrics.py diff --git a/giotto/diagrams/_utils.py b/gtda/diagrams/_utils.py similarity index 100% rename from giotto/diagrams/_utils.py rename to gtda/diagrams/_utils.py diff --git a/giotto/diagrams/distance.py b/gtda/diagrams/distance.py similarity index 99% rename from giotto/diagrams/distance.py rename to gtda/diagrams/distance.py index e353792b2..7b8c617cb 100644 --- a/giotto/diagrams/distance.py +++ b/gtda/diagrams/distance.py @@ -89,7 +89,7 @@ class PairwiseDistance(BaseEstimator, TransformerMixin): See also -------- Amplitude, BettiCurve, PersistenceLandscape, HeatKernel, \ - giotto.homology.VietorisRipsPersistence + gtda.homology.VietorisRipsPersistence Notes ----- @@ -279,7 +279,7 @@ class Amplitude(BaseEstimator, TransformerMixin): -------- PairwiseDistance, Scaler, Filtering, \ BettiCurve, PersistenceLandscape, \ - HeatKernel, giotto.homology.VietorisRipsPersistence + HeatKernel, gtda.homology.VietorisRipsPersistence Notes ----- diff --git a/giotto/diagrams/features.py b/gtda/diagrams/features.py similarity index 98% rename from giotto/diagrams/features.py rename to gtda/diagrams/features.py index fa29b4ea0..b18395fec 100644 --- a/giotto/diagrams/features.py +++ b/gtda/diagrams/features.py @@ -41,7 +41,7 @@ class PersistenceEntropy(BaseEstimator, TransformerMixin): See also -------- BettiCurve, PersistenceLandscape, HeatKernel, Amplitude, \ - PairwiseDistance, giotto.homology.VietorisRipsPersistence + PairwiseDistance, gtda.homology.VietorisRipsPersistence """ @@ -154,7 +154,7 @@ class BettiCurve(BaseEstimator, TransformerMixin): See also -------- PersistenceLandscape, PersistenceEntropy, HeatKernel, Amplitude, \ - PairwiseDistance, giotto.homology.VietorisRipsPersistence + PairwiseDistance, gtda.homology.VietorisRipsPersistence Notes ----- @@ -284,7 +284,7 @@ class PersistenceLandscape(BaseEstimator, TransformerMixin): See also -------- BettiCurve, PersistenceEntropy, HeatKernel, Amplitude, \ - PairwiseDistance, giotto.homology.VietorisRipsPersistence + PairwiseDistance, gtda.homology.VietorisRipsPersistence Notes ----- @@ -423,7 +423,7 @@ class HeatKernel(BaseEstimator, TransformerMixin): See also -------- BettiCurve, PersistenceLandscape, PersistenceEntropy, Amplitude, \ - PairwiseDistance, giotto.homology.VietorisRipsPersistence + PairwiseDistance, gtda.homology.VietorisRipsPersistence Notes ----- diff --git a/giotto/diagrams/preprocessing.py b/gtda/diagrams/preprocessing.py similarity index 99% rename from giotto/diagrams/preprocessing.py rename to gtda/diagrams/preprocessing.py index fa17efca0..eec9a3caa 100644 --- a/giotto/diagrams/preprocessing.py +++ b/gtda/diagrams/preprocessing.py @@ -25,7 +25,7 @@ class ForgetDimension(BaseEstimator, TransformerMixin): See also -------- - giotto.homology.VietorisRipsPersistence + gtda.homology.VietorisRipsPersistence """ @@ -160,7 +160,7 @@ class Scaler(BaseEstimator, TransformerMixin): See also -------- Filtering, Amplitude, PairwiseDistance, \ - giotto.homology.VietorisRipsPersistence + gtda.homology.VietorisRipsPersistence Notes ----- @@ -303,7 +303,7 @@ class Filtering(BaseEstimator, TransformerMixin): See also -------- Scaling, Amplitude, PairwiseDistance, \ - giotto.homology.VietorisRipsPersistence + gtda.homology.VietorisRipsPersistence """ diff --git a/giotto/diagrams/tests/__init__.py b/gtda/diagrams/tests/__init__.py similarity index 100% rename from giotto/diagrams/tests/__init__.py rename to gtda/diagrams/tests/__init__.py diff --git a/giotto/diagrams/tests/test_distance.py b/gtda/diagrams/tests/test_distance.py similarity index 99% rename from giotto/diagrams/tests/test_distance.py rename to gtda/diagrams/tests/test_distance.py index 8d85140a6..c5e6b1810 100644 --- a/giotto/diagrams/tests/test_distance.py +++ b/gtda/diagrams/tests/test_distance.py @@ -6,7 +6,7 @@ from numpy.testing import assert_almost_equal -from giotto.diagrams import PairwiseDistance, Amplitude +from gtda.diagrams import PairwiseDistance, Amplitude X_1 = np.array([ [[0., 0.36905774, 0], diff --git a/giotto/diagrams/tests/test_features.py b/gtda/diagrams/tests/test_features.py similarity index 91% rename from giotto/diagrams/tests/test_features.py rename to gtda/diagrams/tests/test_features.py index b4198ba7a..21dfb6872 100644 --- a/giotto/diagrams/tests/test_features.py +++ b/gtda/diagrams/tests/test_features.py @@ -5,7 +5,7 @@ from numpy.testing import assert_almost_equal from sklearn.exceptions import NotFittedError -from giotto.diagrams import PersistenceEntropy +from gtda.diagrams import PersistenceEntropy X_pe = np.array([[[0, 1, 0], [2, 3, 0], [4, 6, 1], [2, 6, 1]]]) diff --git a/giotto/diagrams/tests/test_preprocessing.py b/gtda/diagrams/tests/test_preprocessing.py similarity index 99% rename from giotto/diagrams/tests/test_preprocessing.py rename to gtda/diagrams/tests/test_preprocessing.py index e49a6f1fd..d6ebb5686 100644 --- a/giotto/diagrams/tests/test_preprocessing.py +++ b/gtda/diagrams/tests/test_preprocessing.py @@ -5,7 +5,7 @@ import pytest from sklearn.exceptions import NotFittedError -from giotto.diagrams import ForgetDimension, Scaler +from gtda.diagrams import ForgetDimension, Scaler X_1 = np.array([[[0., 0.36905774, 0], [0., 0.37293977, 0], diff --git a/giotto/externals/__init__.py b/gtda/externals/__init__.py similarity index 100% rename from giotto/externals/__init__.py rename to gtda/externals/__init__.py diff --git a/giotto/externals/bindings/.clang-format b/gtda/externals/bindings/.clang-format similarity index 100% rename from giotto/externals/bindings/.clang-format rename to gtda/externals/bindings/.clang-format diff --git a/giotto/externals/bindings/bottleneck_bindings.cpp b/gtda/externals/bindings/bottleneck_bindings.cpp similarity index 100% rename from giotto/externals/bindings/bottleneck_bindings.cpp rename to gtda/externals/bindings/bottleneck_bindings.cpp diff --git a/giotto/externals/bindings/cech_complex_bindings.cpp b/gtda/externals/bindings/cech_complex_bindings.cpp similarity index 100% rename from giotto/externals/bindings/cech_complex_bindings.cpp rename to gtda/externals/bindings/cech_complex_bindings.cpp diff --git a/giotto/externals/bindings/cubical_complex_bindings.cpp b/gtda/externals/bindings/cubical_complex_bindings.cpp similarity index 100% rename from giotto/externals/bindings/cubical_complex_bindings.cpp rename to gtda/externals/bindings/cubical_complex_bindings.cpp diff --git a/giotto/externals/bindings/periodic_cubical_complex_bindings.cpp b/gtda/externals/bindings/periodic_cubical_complex_bindings.cpp similarity index 100% rename from giotto/externals/bindings/periodic_cubical_complex_bindings.cpp rename to gtda/externals/bindings/periodic_cubical_complex_bindings.cpp diff --git a/giotto/externals/bindings/persistent_cohomology_bindings.cpp b/gtda/externals/bindings/persistent_cohomology_bindings.cpp similarity index 100% rename from giotto/externals/bindings/persistent_cohomology_bindings.cpp rename to gtda/externals/bindings/persistent_cohomology_bindings.cpp diff --git a/giotto/externals/bindings/rips_complex_bindings.cpp b/gtda/externals/bindings/rips_complex_bindings.cpp similarity index 100% rename from giotto/externals/bindings/rips_complex_bindings.cpp rename to gtda/externals/bindings/rips_complex_bindings.cpp diff --git a/giotto/externals/bindings/ripser_bindings.cpp b/gtda/externals/bindings/ripser_bindings.cpp similarity index 100% rename from giotto/externals/bindings/ripser_bindings.cpp rename to gtda/externals/bindings/ripser_bindings.cpp diff --git a/giotto/externals/bindings/simplex_tree_bindings.cpp b/gtda/externals/bindings/simplex_tree_bindings.cpp similarity index 100% rename from giotto/externals/bindings/simplex_tree_bindings.cpp rename to gtda/externals/bindings/simplex_tree_bindings.cpp diff --git a/giotto/externals/bindings/strong_witness_complex_bindings.cpp b/gtda/externals/bindings/strong_witness_complex_bindings.cpp similarity index 100% rename from giotto/externals/bindings/strong_witness_complex_bindings.cpp rename to gtda/externals/bindings/strong_witness_complex_bindings.cpp diff --git a/giotto/externals/bindings/wasserstein_bindings.cpp b/gtda/externals/bindings/wasserstein_bindings.cpp similarity index 100% rename from giotto/externals/bindings/wasserstein_bindings.cpp rename to gtda/externals/bindings/wasserstein_bindings.cpp diff --git a/giotto/externals/bindings/witness_complex_bindings.cpp b/gtda/externals/bindings/witness_complex_bindings.cpp similarity index 100% rename from giotto/externals/bindings/witness_complex_bindings.cpp rename to gtda/externals/bindings/witness_complex_bindings.cpp diff --git a/giotto/externals/gudhi-devel b/gtda/externals/gudhi-devel similarity index 100% rename from giotto/externals/gudhi-devel rename to gtda/externals/gudhi-devel diff --git a/giotto/externals/hera/bottleneck/README b/gtda/externals/hera/bottleneck/README similarity index 100% rename from giotto/externals/hera/bottleneck/README rename to gtda/externals/hera/bottleneck/README diff --git a/giotto/externals/hera/bottleneck/basic_defs_bt.h b/gtda/externals/hera/bottleneck/basic_defs_bt.h similarity index 100% rename from giotto/externals/hera/bottleneck/basic_defs_bt.h rename to gtda/externals/hera/bottleneck/basic_defs_bt.h diff --git a/giotto/externals/hera/bottleneck/bottleneck.h b/gtda/externals/hera/bottleneck/bottleneck.h similarity index 100% rename from giotto/externals/hera/bottleneck/bottleneck.h rename to gtda/externals/hera/bottleneck/bottleneck.h diff --git a/giotto/externals/hera/bottleneck/bottleneck_detail.h b/gtda/externals/hera/bottleneck/bottleneck_detail.h similarity index 100% rename from giotto/externals/hera/bottleneck/bottleneck_detail.h rename to gtda/externals/hera/bottleneck/bottleneck_detail.h diff --git a/giotto/externals/hera/bottleneck/bottleneck_detail.hpp b/gtda/externals/hera/bottleneck/bottleneck_detail.hpp similarity index 100% rename from giotto/externals/hera/bottleneck/bottleneck_detail.hpp rename to gtda/externals/hera/bottleneck/bottleneck_detail.hpp diff --git a/giotto/externals/hera/bottleneck/bound_match.h b/gtda/externals/hera/bottleneck/bound_match.h similarity index 100% rename from giotto/externals/hera/bottleneck/bound_match.h rename to gtda/externals/hera/bottleneck/bound_match.h diff --git a/giotto/externals/hera/bottleneck/bound_match.hpp b/gtda/externals/hera/bottleneck/bound_match.hpp similarity index 100% rename from giotto/externals/hera/bottleneck/bound_match.hpp rename to gtda/externals/hera/bottleneck/bound_match.hpp diff --git a/giotto/externals/hera/bottleneck/def_debug_bt.h b/gtda/externals/hera/bottleneck/def_debug_bt.h similarity index 100% rename from giotto/externals/hera/bottleneck/def_debug_bt.h rename to gtda/externals/hera/bottleneck/def_debug_bt.h diff --git a/giotto/externals/hera/bottleneck/diagram_reader.h b/gtda/externals/hera/bottleneck/diagram_reader.h similarity index 100% rename from giotto/externals/hera/bottleneck/diagram_reader.h rename to gtda/externals/hera/bottleneck/diagram_reader.h diff --git a/giotto/externals/hera/bottleneck/diagram_traits.h b/gtda/externals/hera/bottleneck/diagram_traits.h similarity index 100% rename from giotto/externals/hera/bottleneck/diagram_traits.h rename to gtda/externals/hera/bottleneck/diagram_traits.h diff --git a/giotto/externals/hera/bottleneck/dnn/geometry/euclidean-fixed.h b/gtda/externals/hera/bottleneck/dnn/geometry/euclidean-fixed.h similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/geometry/euclidean-fixed.h rename to gtda/externals/hera/bottleneck/dnn/geometry/euclidean-fixed.h diff --git a/giotto/externals/hera/bottleneck/dnn/local/kd-tree.h b/gtda/externals/hera/bottleneck/dnn/local/kd-tree.h similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/local/kd-tree.h rename to gtda/externals/hera/bottleneck/dnn/local/kd-tree.h diff --git a/giotto/externals/hera/bottleneck/dnn/local/kd-tree.hpp b/gtda/externals/hera/bottleneck/dnn/local/kd-tree.hpp similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/local/kd-tree.hpp rename to gtda/externals/hera/bottleneck/dnn/local/kd-tree.hpp diff --git a/giotto/externals/hera/bottleneck/dnn/local/search-functors.h b/gtda/externals/hera/bottleneck/dnn/local/search-functors.h similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/local/search-functors.h rename to gtda/externals/hera/bottleneck/dnn/local/search-functors.h diff --git a/giotto/externals/hera/bottleneck/dnn/parallel/tbb.h b/gtda/externals/hera/bottleneck/dnn/parallel/tbb.h similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/parallel/tbb.h rename to gtda/externals/hera/bottleneck/dnn/parallel/tbb.h diff --git a/giotto/externals/hera/bottleneck/dnn/parallel/utils.h b/gtda/externals/hera/bottleneck/dnn/parallel/utils.h similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/parallel/utils.h rename to gtda/externals/hera/bottleneck/dnn/parallel/utils.h diff --git a/giotto/externals/hera/bottleneck/dnn/utils.h b/gtda/externals/hera/bottleneck/dnn/utils.h similarity index 100% rename from giotto/externals/hera/bottleneck/dnn/utils.h rename to gtda/externals/hera/bottleneck/dnn/utils.h diff --git a/giotto/externals/hera/bottleneck/license.txt b/gtda/externals/hera/bottleneck/license.txt similarity index 100% rename from giotto/externals/hera/bottleneck/license.txt rename to gtda/externals/hera/bottleneck/license.txt diff --git a/giotto/externals/hera/bottleneck/neighb_oracle.h b/gtda/externals/hera/bottleneck/neighb_oracle.h similarity index 100% rename from giotto/externals/hera/bottleneck/neighb_oracle.h rename to gtda/externals/hera/bottleneck/neighb_oracle.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle.h b/gtda/externals/hera/wasserstein/auction_oracle.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle.h rename to gtda/externals/hera/wasserstein/auction_oracle.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_base.h b/gtda/externals/hera/wasserstein/auction_oracle_base.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_base.h rename to gtda/externals/hera/wasserstein/auction_oracle_base.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_base.hpp b/gtda/externals/hera/wasserstein/auction_oracle_base.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_base.hpp rename to gtda/externals/hera/wasserstein/auction_oracle_base.hpp diff --git a/giotto/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.h b/gtda/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.h rename to gtda/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.hpp b/gtda/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.hpp rename to gtda/externals/hera/wasserstein/auction_oracle_kdtree_pure_geom.hpp diff --git a/giotto/externals/hera/wasserstein/auction_oracle_kdtree_restricted.h b/gtda/externals/hera/wasserstein/auction_oracle_kdtree_restricted.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_kdtree_restricted.h rename to gtda/externals/hera/wasserstein/auction_oracle_kdtree_restricted.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_kdtree_restricted.hpp b/gtda/externals/hera/wasserstein/auction_oracle_kdtree_restricted.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_kdtree_restricted.hpp rename to gtda/externals/hera/wasserstein/auction_oracle_kdtree_restricted.hpp diff --git a/giotto/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.h b/gtda/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.h rename to gtda/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.hpp b/gtda/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.hpp rename to gtda/externals/hera/wasserstein/auction_oracle_kdtree_single_diag.hpp diff --git a/giotto/externals/hera/wasserstein/auction_oracle_lazy_heap.h b/gtda/externals/hera/wasserstein/auction_oracle_lazy_heap.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_lazy_heap.h rename to gtda/externals/hera/wasserstein/auction_oracle_lazy_heap.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_lazy_heap.hpp b/gtda/externals/hera/wasserstein/auction_oracle_lazy_heap.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_lazy_heap.hpp rename to gtda/externals/hera/wasserstein/auction_oracle_lazy_heap.hpp diff --git a/giotto/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.h b/gtda/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.h rename to gtda/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.h diff --git a/giotto/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.hpp b/gtda/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.hpp rename to gtda/externals/hera/wasserstein/auction_oracle_stupid_sparse_restricted.hpp diff --git a/giotto/externals/hera/wasserstein/auction_runner_fr.h b/gtda/externals/hera/wasserstein/auction_runner_fr.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_fr.h rename to gtda/externals/hera/wasserstein/auction_runner_fr.h diff --git a/giotto/externals/hera/wasserstein/auction_runner_fr.hpp b/gtda/externals/hera/wasserstein/auction_runner_fr.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_fr.hpp rename to gtda/externals/hera/wasserstein/auction_runner_fr.hpp diff --git a/giotto/externals/hera/wasserstein/auction_runner_gs.h b/gtda/externals/hera/wasserstein/auction_runner_gs.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_gs.h rename to gtda/externals/hera/wasserstein/auction_runner_gs.h diff --git a/giotto/externals/hera/wasserstein/auction_runner_gs.hpp b/gtda/externals/hera/wasserstein/auction_runner_gs.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_gs.hpp rename to gtda/externals/hera/wasserstein/auction_runner_gs.hpp diff --git a/giotto/externals/hera/wasserstein/auction_runner_gs_single_diag.h b/gtda/externals/hera/wasserstein/auction_runner_gs_single_diag.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_gs_single_diag.h rename to gtda/externals/hera/wasserstein/auction_runner_gs_single_diag.h diff --git a/giotto/externals/hera/wasserstein/auction_runner_gs_single_diag.hpp b/gtda/externals/hera/wasserstein/auction_runner_gs_single_diag.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_gs_single_diag.hpp rename to gtda/externals/hera/wasserstein/auction_runner_gs_single_diag.hpp diff --git a/giotto/externals/hera/wasserstein/auction_runner_jac.h b/gtda/externals/hera/wasserstein/auction_runner_jac.h similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_jac.h rename to gtda/externals/hera/wasserstein/auction_runner_jac.h diff --git a/giotto/externals/hera/wasserstein/auction_runner_jac.hpp b/gtda/externals/hera/wasserstein/auction_runner_jac.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/auction_runner_jac.hpp rename to gtda/externals/hera/wasserstein/auction_runner_jac.hpp diff --git a/giotto/externals/hera/wasserstein/basic_defs_ws.h b/gtda/externals/hera/wasserstein/basic_defs_ws.h similarity index 100% rename from giotto/externals/hera/wasserstein/basic_defs_ws.h rename to gtda/externals/hera/wasserstein/basic_defs_ws.h diff --git a/giotto/externals/hera/wasserstein/basic_defs_ws.hpp b/gtda/externals/hera/wasserstein/basic_defs_ws.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/basic_defs_ws.hpp rename to gtda/externals/hera/wasserstein/basic_defs_ws.hpp diff --git a/giotto/externals/hera/wasserstein/catch/catch.hpp b/gtda/externals/hera/wasserstein/catch/catch.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/catch/catch.hpp rename to gtda/externals/hera/wasserstein/catch/catch.hpp diff --git a/giotto/externals/hera/wasserstein/def_debug_ws.h b/gtda/externals/hera/wasserstein/def_debug_ws.h similarity index 100% rename from giotto/externals/hera/wasserstein/def_debug_ws.h rename to gtda/externals/hera/wasserstein/def_debug_ws.h diff --git a/giotto/externals/hera/wasserstein/diagonal_heap.h b/gtda/externals/hera/wasserstein/diagonal_heap.h similarity index 100% rename from giotto/externals/hera/wasserstein/diagonal_heap.h rename to gtda/externals/hera/wasserstein/diagonal_heap.h diff --git a/giotto/externals/hera/wasserstein/diagram_reader.h b/gtda/externals/hera/wasserstein/diagram_reader.h similarity index 100% rename from giotto/externals/hera/wasserstein/diagram_reader.h rename to gtda/externals/hera/wasserstein/diagram_reader.h diff --git a/giotto/externals/hera/wasserstein/dnn/geometry/euclidean-dynamic.h b/gtda/externals/hera/wasserstein/dnn/geometry/euclidean-dynamic.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/geometry/euclidean-dynamic.h rename to gtda/externals/hera/wasserstein/dnn/geometry/euclidean-dynamic.h diff --git a/giotto/externals/hera/wasserstein/dnn/geometry/euclidean-fixed.h b/gtda/externals/hera/wasserstein/dnn/geometry/euclidean-fixed.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/geometry/euclidean-fixed.h rename to gtda/externals/hera/wasserstein/dnn/geometry/euclidean-fixed.h diff --git a/giotto/externals/hera/wasserstein/dnn/local/kd-tree.h b/gtda/externals/hera/wasserstein/dnn/local/kd-tree.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/local/kd-tree.h rename to gtda/externals/hera/wasserstein/dnn/local/kd-tree.h diff --git a/giotto/externals/hera/wasserstein/dnn/local/kd-tree.hpp b/gtda/externals/hera/wasserstein/dnn/local/kd-tree.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/local/kd-tree.hpp rename to gtda/externals/hera/wasserstein/dnn/local/kd-tree.hpp diff --git a/giotto/externals/hera/wasserstein/dnn/local/search-functors.h b/gtda/externals/hera/wasserstein/dnn/local/search-functors.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/local/search-functors.h rename to gtda/externals/hera/wasserstein/dnn/local/search-functors.h diff --git a/giotto/externals/hera/wasserstein/dnn/parallel/tbb.h b/gtda/externals/hera/wasserstein/dnn/parallel/tbb.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/parallel/tbb.h rename to gtda/externals/hera/wasserstein/dnn/parallel/tbb.h diff --git a/giotto/externals/hera/wasserstein/dnn/parallel/utils.h b/gtda/externals/hera/wasserstein/dnn/parallel/utils.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/parallel/utils.h rename to gtda/externals/hera/wasserstein/dnn/parallel/utils.h diff --git a/giotto/externals/hera/wasserstein/dnn/utils.h b/gtda/externals/hera/wasserstein/dnn/utils.h similarity index 100% rename from giotto/externals/hera/wasserstein/dnn/utils.h rename to gtda/externals/hera/wasserstein/dnn/utils.h diff --git a/giotto/externals/hera/wasserstein/example/wasserstein_dist.cpp b/gtda/externals/hera/wasserstein/example/wasserstein_dist.cpp similarity index 100% rename from giotto/externals/hera/wasserstein/example/wasserstein_dist.cpp rename to gtda/externals/hera/wasserstein/example/wasserstein_dist.cpp diff --git a/giotto/externals/hera/wasserstein/example/wasserstein_dist_point_cloud.cpp b/gtda/externals/hera/wasserstein/example/wasserstein_dist_point_cloud.cpp similarity index 100% rename from giotto/externals/hera/wasserstein/example/wasserstein_dist_point_cloud.cpp rename to gtda/externals/hera/wasserstein/example/wasserstein_dist_point_cloud.cpp diff --git a/giotto/externals/hera/wasserstein/license.txt b/gtda/externals/hera/wasserstein/license.txt similarity index 100% rename from giotto/externals/hera/wasserstein/license.txt rename to gtda/externals/hera/wasserstein/license.txt diff --git a/giotto/externals/hera/wasserstein/spdlog/async_logger.h b/gtda/externals/hera/wasserstein/spdlog/async_logger.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/async_logger.h rename to gtda/externals/hera/wasserstein/spdlog/async_logger.h diff --git a/giotto/externals/hera/wasserstein/spdlog/common.h b/gtda/externals/hera/wasserstein/spdlog/common.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/common.h rename to gtda/externals/hera/wasserstein/spdlog/common.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/async_log_helper.h b/gtda/externals/hera/wasserstein/spdlog/details/async_log_helper.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/async_log_helper.h rename to gtda/externals/hera/wasserstein/spdlog/details/async_log_helper.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/async_logger_impl.h b/gtda/externals/hera/wasserstein/spdlog/details/async_logger_impl.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/async_logger_impl.h rename to gtda/externals/hera/wasserstein/spdlog/details/async_logger_impl.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/file_helper.h b/gtda/externals/hera/wasserstein/spdlog/details/file_helper.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/file_helper.h rename to gtda/externals/hera/wasserstein/spdlog/details/file_helper.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/log_msg.h b/gtda/externals/hera/wasserstein/spdlog/details/log_msg.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/log_msg.h rename to gtda/externals/hera/wasserstein/spdlog/details/log_msg.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/logger_impl.h b/gtda/externals/hera/wasserstein/spdlog/details/logger_impl.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/logger_impl.h rename to gtda/externals/hera/wasserstein/spdlog/details/logger_impl.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/mpmc_bounded_q.h b/gtda/externals/hera/wasserstein/spdlog/details/mpmc_bounded_q.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/mpmc_bounded_q.h rename to gtda/externals/hera/wasserstein/spdlog/details/mpmc_bounded_q.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/null_mutex.h b/gtda/externals/hera/wasserstein/spdlog/details/null_mutex.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/null_mutex.h rename to gtda/externals/hera/wasserstein/spdlog/details/null_mutex.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/os.h b/gtda/externals/hera/wasserstein/spdlog/details/os.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/os.h rename to gtda/externals/hera/wasserstein/spdlog/details/os.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/pattern_formatter_impl.h b/gtda/externals/hera/wasserstein/spdlog/details/pattern_formatter_impl.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/pattern_formatter_impl.h rename to gtda/externals/hera/wasserstein/spdlog/details/pattern_formatter_impl.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/registry.h b/gtda/externals/hera/wasserstein/spdlog/details/registry.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/registry.h rename to gtda/externals/hera/wasserstein/spdlog/details/registry.h diff --git a/giotto/externals/hera/wasserstein/spdlog/details/spdlog_impl.h b/gtda/externals/hera/wasserstein/spdlog/details/spdlog_impl.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/details/spdlog_impl.h rename to gtda/externals/hera/wasserstein/spdlog/details/spdlog_impl.h diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/format.cc b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/format.cc similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/format.cc rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/format.cc diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/format.h b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/format.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/format.h rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/format.h diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.cc b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.cc similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.cc rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.cc diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.h b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.h rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/ostream.h diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/posix.cc b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/posix.cc similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/posix.cc rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/posix.cc diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/posix.h b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/posix.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/posix.h rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/posix.h diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/bundled/time.h b/gtda/externals/hera/wasserstein/spdlog/fmt/bundled/time.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/bundled/time.h rename to gtda/externals/hera/wasserstein/spdlog/fmt/bundled/time.h diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/fmt.h b/gtda/externals/hera/wasserstein/spdlog/fmt/fmt.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/fmt.h rename to gtda/externals/hera/wasserstein/spdlog/fmt/fmt.h diff --git a/giotto/externals/hera/wasserstein/spdlog/fmt/ostr.h b/gtda/externals/hera/wasserstein/spdlog/fmt/ostr.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/fmt/ostr.h rename to gtda/externals/hera/wasserstein/spdlog/fmt/ostr.h diff --git a/giotto/externals/hera/wasserstein/spdlog/formatter.h b/gtda/externals/hera/wasserstein/spdlog/formatter.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/formatter.h rename to gtda/externals/hera/wasserstein/spdlog/formatter.h diff --git a/giotto/externals/hera/wasserstein/spdlog/logger.h b/gtda/externals/hera/wasserstein/spdlog/logger.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/logger.h rename to gtda/externals/hera/wasserstein/spdlog/logger.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/android_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/android_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/android_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/android_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/ansicolor_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/ansicolor_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/ansicolor_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/ansicolor_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/base_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/base_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/base_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/base_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/dist_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/dist_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/dist_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/dist_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/file_sinks.h b/gtda/externals/hera/wasserstein/spdlog/sinks/file_sinks.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/file_sinks.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/file_sinks.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/msvc_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/msvc_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/msvc_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/msvc_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/null_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/null_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/null_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/null_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/ostream_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/ostream_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/ostream_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/ostream_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/stdout_sinks.h b/gtda/externals/hera/wasserstein/spdlog/sinks/stdout_sinks.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/stdout_sinks.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/stdout_sinks.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/syslog_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/syslog_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/syslog_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/syslog_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/sinks/wincolor_sink.h b/gtda/externals/hera/wasserstein/spdlog/sinks/wincolor_sink.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/sinks/wincolor_sink.h rename to gtda/externals/hera/wasserstein/spdlog/sinks/wincolor_sink.h diff --git a/giotto/externals/hera/wasserstein/spdlog/spdlog.h b/gtda/externals/hera/wasserstein/spdlog/spdlog.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/spdlog.h rename to gtda/externals/hera/wasserstein/spdlog/spdlog.h diff --git a/giotto/externals/hera/wasserstein/spdlog/tweakme.h b/gtda/externals/hera/wasserstein/spdlog/tweakme.h similarity index 100% rename from giotto/externals/hera/wasserstein/spdlog/tweakme.h rename to gtda/externals/hera/wasserstein/spdlog/tweakme.h diff --git a/giotto/externals/hera/wasserstein/wasserstein.h b/gtda/externals/hera/wasserstein/wasserstein.h similarity index 100% rename from giotto/externals/hera/wasserstein/wasserstein.h rename to gtda/externals/hera/wasserstein/wasserstein.h diff --git a/giotto/externals/hera/wasserstein/wasserstein_pure_geom.hpp b/gtda/externals/hera/wasserstein/wasserstein_pure_geom.hpp similarity index 100% rename from giotto/externals/hera/wasserstein/wasserstein_pure_geom.hpp rename to gtda/externals/hera/wasserstein/wasserstein_pure_geom.hpp diff --git a/giotto/externals/python/__init__.py b/gtda/externals/python/__init__.py similarity index 100% rename from giotto/externals/python/__init__.py rename to gtda/externals/python/__init__.py diff --git a/giotto/externals/python/cech_complex_interface.py b/gtda/externals/python/cech_complex_interface.py similarity index 100% rename from giotto/externals/python/cech_complex_interface.py rename to gtda/externals/python/cech_complex_interface.py diff --git a/giotto/externals/python/cubical_complex_interface.py b/gtda/externals/python/cubical_complex_interface.py similarity index 100% rename from giotto/externals/python/cubical_complex_interface.py rename to gtda/externals/python/cubical_complex_interface.py diff --git a/giotto/externals/python/periodic_cubical_complex_interface.py b/gtda/externals/python/periodic_cubical_complex_interface.py similarity index 100% rename from giotto/externals/python/periodic_cubical_complex_interface.py rename to gtda/externals/python/periodic_cubical_complex_interface.py diff --git a/giotto/externals/python/rips_complex_interface.py b/gtda/externals/python/rips_complex_interface.py similarity index 100% rename from giotto/externals/python/rips_complex_interface.py rename to gtda/externals/python/rips_complex_interface.py diff --git a/giotto/externals/python/ripser_interface.py b/gtda/externals/python/ripser_interface.py similarity index 100% rename from giotto/externals/python/ripser_interface.py rename to gtda/externals/python/ripser_interface.py diff --git a/giotto/externals/python/simplex_tree_interface.py b/gtda/externals/python/simplex_tree_interface.py similarity index 100% rename from giotto/externals/python/simplex_tree_interface.py rename to gtda/externals/python/simplex_tree_interface.py diff --git a/giotto/externals/python/strong_witness_complex_interface.py b/gtda/externals/python/strong_witness_complex_interface.py similarity index 100% rename from giotto/externals/python/strong_witness_complex_interface.py rename to gtda/externals/python/strong_witness_complex_interface.py diff --git a/giotto/externals/python/tests/__init__.py b/gtda/externals/python/tests/__init__.py similarity index 100% rename from giotto/externals/python/tests/__init__.py rename to gtda/externals/python/tests/__init__.py diff --git a/giotto/externals/python/tests/test_cech_complex.py b/gtda/externals/python/tests/test_cech_complex.py similarity index 100% rename from giotto/externals/python/tests/test_cech_complex.py rename to gtda/externals/python/tests/test_cech_complex.py diff --git a/giotto/externals/python/tests/test_periodic_cubical_complex.py b/gtda/externals/python/tests/test_periodic_cubical_complex.py similarity index 100% rename from giotto/externals/python/tests/test_periodic_cubical_complex.py rename to gtda/externals/python/tests/test_periodic_cubical_complex.py diff --git a/giotto/externals/python/tests/test_rips_complex.py b/gtda/externals/python/tests/test_rips_complex.py similarity index 100% rename from giotto/externals/python/tests/test_rips_complex.py rename to gtda/externals/python/tests/test_rips_complex.py diff --git a/giotto/externals/python/tests/test_witness.py b/gtda/externals/python/tests/test_witness.py similarity index 100% rename from giotto/externals/python/tests/test_witness.py rename to gtda/externals/python/tests/test_witness.py diff --git a/giotto/externals/python/witness_complex_interface.py b/gtda/externals/python/witness_complex_interface.py similarity index 100% rename from giotto/externals/python/witness_complex_interface.py rename to gtda/externals/python/witness_complex_interface.py diff --git a/giotto/externals/ripser b/gtda/externals/ripser similarity index 100% rename from giotto/externals/ripser rename to gtda/externals/ripser diff --git a/giotto/graphs/__init__.py b/gtda/graphs/__init__.py similarity index 76% rename from giotto/graphs/__init__.py rename to gtda/graphs/__init__.py index e6766dfab..a8431ef91 100644 --- a/giotto/graphs/__init__.py +++ b/gtda/graphs/__init__.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.graphs` implements transformers to create graphs or +"""The module :mod:`gtda.graphs` implements transformers to create graphs or extract metric spaces from graphs.""" from .geodesic_distance import GraphGeodesicDistance diff --git a/giotto/graphs/geodesic_distance.py b/gtda/graphs/geodesic_distance.py similarity index 96% rename from giotto/graphs/geodesic_distance.py rename to gtda/graphs/geodesic_distance.py index b42b92863..660f7ea60 100644 --- a/giotto/graphs/geodesic_distance.py +++ b/gtda/graphs/geodesic_distance.py @@ -33,7 +33,7 @@ class GraphGeodesicDistance(BaseEstimator, TransformerMixin): Examples -------- >>> import numpy as np - >>> from giotto.graphs import TransitionGraph, GraphGeodesicDistance + >>> from gtda.graphs import TransitionGraph, GraphGeodesicDistance >>> X = np.arange(4).reshape(1, -1, 1) >>> tg = TransitionGraph(func=None).fit_transform(X) >>> print(tg[0].toarray()) @@ -50,7 +50,7 @@ class GraphGeodesicDistance(BaseEstimator, TransformerMixin): See also -------- - TransitionGraph, KNeighborsGraph, giotto.homology.VietorisRipsPersistence + TransitionGraph, KNeighborsGraph, gtda.homology.VietorisRipsPersistence """ diff --git a/giotto/graphs/kneighbors.py b/gtda/graphs/kneighbors.py similarity index 99% rename from giotto/graphs/kneighbors.py rename to gtda/graphs/kneighbors.py index 69e2c0338..cb8d05ef3 100644 --- a/giotto/graphs/kneighbors.py +++ b/gtda/graphs/kneighbors.py @@ -75,7 +75,7 @@ class KNeighborsGraph(BaseEstimator, TransformerMixin): Examples -------- >>> import numpy as np - >>> from giotto.graphs import KNeighborsGraph + >>> from gtda.graphs import KNeighborsGraph >>> X = np.array([[[0, 1, 3, 0, 0], ... [1, 0, 5, 0, 0], ... [3, 5, 0, 4, 0], diff --git a/giotto/graphs/tests/__init__.py b/gtda/graphs/tests/__init__.py similarity index 100% rename from giotto/graphs/tests/__init__.py rename to gtda/graphs/tests/__init__.py diff --git a/giotto/graphs/tests/test_geodesic_distance.py b/gtda/graphs/tests/test_geodesic_distance.py similarity index 96% rename from giotto/graphs/tests/test_geodesic_distance.py rename to gtda/graphs/tests/test_geodesic_distance.py index 89cbb9477..20b210237 100644 --- a/giotto/graphs/tests/test_geodesic_distance.py +++ b/gtda/graphs/tests/test_geodesic_distance.py @@ -5,7 +5,7 @@ from numpy.testing import assert_almost_equal from sklearn.exceptions import NotFittedError -from giotto.graphs import GraphGeodesicDistance +from gtda.graphs import GraphGeodesicDistance X_ggd = np.array([ np.array( diff --git a/giotto/graphs/tests/test_kneighbors.py b/gtda/graphs/tests/test_kneighbors.py similarity index 97% rename from giotto/graphs/tests/test_kneighbors.py rename to gtda/graphs/tests/test_kneighbors.py index 50c4f6c41..d97eaf35e 100644 --- a/giotto/graphs/tests/test_kneighbors.py +++ b/gtda/graphs/tests/test_kneighbors.py @@ -5,7 +5,7 @@ from scipy.sparse import csr_matrix from sklearn.exceptions import NotFittedError -from giotto.graphs import KNeighborsGraph +from gtda.graphs import KNeighborsGraph X_kng = np.array([[[0, 0], [1, 2], [4, 3], [6, 2]]]) diff --git a/giotto/graphs/tests/test_transition.py b/gtda/graphs/tests/test_transition.py similarity index 96% rename from giotto/graphs/tests/test_transition.py rename to gtda/graphs/tests/test_transition.py index 0a07922d5..66d426461 100644 --- a/giotto/graphs/tests/test_transition.py +++ b/gtda/graphs/tests/test_transition.py @@ -5,7 +5,7 @@ from scipy.sparse import csr_matrix from sklearn.exceptions import NotFittedError -from giotto.graphs import TransitionGraph +from gtda.graphs import TransitionGraph X_tg = np.array([[[1, 0], [2, 3], [5, 4]], [[0, 1], [3, 2], [4, 5]]]) diff --git a/giotto/graphs/transition.py b/gtda/graphs/transition.py similarity index 98% rename from giotto/graphs/transition.py rename to gtda/graphs/transition.py index a40b66428..111f2de2a 100644 --- a/giotto/graphs/transition.py +++ b/gtda/graphs/transition.py @@ -69,7 +69,7 @@ class TransitionGraph(BaseEstimator, TransformerMixin): Examples -------- >>> import numpy as np - >>> from giotto.graphs import TransitionGraph + >>> from gtda.graphs import TransitionGraph >>> X = np.array([[[1, 0], [2, 3], [5, 4]], ... [[5, 4], [5, 4], [5, 4]]) >>> tg = TransitionGraph() @@ -83,7 +83,7 @@ class TransitionGraph(BaseEstimator, TransformerMixin): See also -------- - GraphGeodesicDistance, giotto.time_series.TakensEmbedding + GraphGeodesicDistance, gtda.time_series.TakensEmbedding Notes ----- diff --git a/giotto/homology/__init__.py b/gtda/homology/__init__.py similarity index 80% rename from giotto/homology/__init__.py rename to gtda/homology/__init__.py index 940e248a9..546c0612f 100644 --- a/giotto/homology/__init__.py +++ b/gtda/homology/__init__.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.homology` implements transformers +"""The module :mod:`gtda.homology` implements transformers to modify metric spaces or generate persistence diagrams. """ # License: GNU AGPLv3 diff --git a/giotto/homology/_utils.py b/gtda/homology/_utils.py similarity index 100% rename from giotto/homology/_utils.py rename to gtda/homology/_utils.py diff --git a/giotto/homology/consistent.py b/gtda/homology/consistent.py similarity index 99% rename from giotto/homology/consistent.py rename to gtda/homology/consistent.py index 06e472717..217f986c6 100644 --- a/giotto/homology/consistent.py +++ b/gtda/homology/consistent.py @@ -60,7 +60,7 @@ class ConsistentRescaling(BaseEstimator, TransformerMixin): Examples -------- >>> import numpy as np - >>> from giotto.homology import ConsistentRescaling + >>> from gtda.homology import ConsistentRescaling >>> X = np.array([[[0, 0], [1, 2], [5, 6]]]) >>> cr = ConsistentRescaling() >>> X_rescaled = cr.fit_transform(X) diff --git a/giotto/homology/point_clouds.py b/gtda/homology/point_clouds.py similarity index 100% rename from giotto/homology/point_clouds.py rename to gtda/homology/point_clouds.py diff --git a/giotto/homology/tests/__init__.py b/gtda/homology/tests/__init__.py similarity index 100% rename from giotto/homology/tests/__init__.py rename to gtda/homology/tests/__init__.py diff --git a/giotto/homology/tests/test_consistent.py b/gtda/homology/tests/test_consistent.py similarity index 93% rename from giotto/homology/tests/test_consistent.py rename to gtda/homology/tests/test_consistent.py index 556ec5c14..d4d358016 100644 --- a/giotto/homology/tests/test_consistent.py +++ b/gtda/homology/tests/test_consistent.py @@ -6,7 +6,7 @@ from numpy.testing import assert_almost_equal from sklearn.exceptions import NotFittedError -from giotto.homology import ConsistentRescaling +from gtda.homology import ConsistentRescaling X_cr = np.array([[[0, 0], [1, 2], [5, 6]]]) diff --git a/giotto/homology/tests/test_point_clouds.py b/gtda/homology/tests/test_point_clouds.py similarity index 95% rename from giotto/homology/tests/test_point_clouds.py rename to gtda/homology/tests/test_point_clouds.py index 21d1edfef..7f3e8f21a 100644 --- a/giotto/homology/tests/test_point_clouds.py +++ b/gtda/homology/tests/test_point_clouds.py @@ -6,7 +6,7 @@ from numpy.testing import assert_almost_equal from sklearn.exceptions import NotFittedError -from giotto.homology import VietorisRipsPersistence +from gtda.homology import VietorisRipsPersistence X = np.array([[[2., 2.47942554], [2.47942554, 2.84147098], diff --git a/giotto/mapper/__init__.py b/gtda/mapper/__init__.py similarity index 91% rename from giotto/mapper/__init__.py rename to gtda/mapper/__init__.py index 78c884679..f0fba54b7 100644 --- a/giotto/mapper/__init__.py +++ b/gtda/mapper/__init__.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.mapper` implements the Mapper algorithm for +"""The module :mod:`gtda.mapper` implements the Mapper algorithm for topological clustering and visualisation.""" from .cluster import FirstHistogramGap, FirstSimpleGap diff --git a/giotto/mapper/cluster.py b/gtda/mapper/cluster.py similarity index 100% rename from giotto/mapper/cluster.py rename to gtda/mapper/cluster.py diff --git a/giotto/mapper/cover.py b/gtda/mapper/cover.py similarity index 100% rename from giotto/mapper/cover.py rename to gtda/mapper/cover.py diff --git a/giotto/mapper/filter.py b/gtda/mapper/filter.py similarity index 100% rename from giotto/mapper/filter.py rename to gtda/mapper/filter.py diff --git a/giotto/mapper/nerve.py b/gtda/mapper/nerve.py similarity index 94% rename from giotto/mapper/nerve.py rename to gtda/mapper/nerve.py index e18fbf971..1e112e4a9 100644 --- a/giotto/mapper/nerve.py +++ b/gtda/mapper/nerve.py @@ -15,8 +15,8 @@ class Nerve(BaseEstimator, TransformerMixin): Mapper graph. This transformer is the final step in the - :class:`giotto.mapper.pipeline.MapperPipeline` objects created - by :func:`giotto.mapper.make_mapper_pipeline`. It is not intended for + :class:`gtda.mapper.pipeline.MapperPipeline` objects created + by :func:`gtda.mapper.make_mapper_pipeline`. It is not intended for direct use. Parameters @@ -62,7 +62,7 @@ def fit(self, X, y=None): cover set identified by ``pullback_set_label``, and ``indices`` is the array of indices of points belonging to cluster ``( \ pullback_set_label, partial_cluster_label)``. In the context of a - :class:`giotto.mapper.MapperPipeline`, this is the output of the + :class:`gtda.mapper.MapperPipeline`, this is the output of the clustering step. y : None @@ -93,7 +93,7 @@ def fit_transform(self, X, y=None, **fit_params): cover set identified by ``pullback_set_label``, and ``indices`` is the array of indices of points belonging to cluster ``( \ pullback_set_label, partial_cluster_label)``. In the context of a - :class:`giotto.mapper.MapperPipeline`, this is the output of the + :class:`gtda.mapper.MapperPipeline`, this is the output of the clustering step. y : None diff --git a/giotto/mapper/pipeline.py b/gtda/mapper/pipeline.py similarity index 95% rename from giotto/mapper/pipeline.py rename to gtda/mapper/pipeline.py index b366f8528..011fcf53f 100644 --- a/giotto/mapper/pipeline.py +++ b/gtda/mapper/pipeline.py @@ -22,13 +22,13 @@ class MapperPipeline(Pipeline): """Subclass of :class:`sklearn.pipeline.Pipeline` to deal with - pipelines generated by :func:`giotto.mapper.pipeline.make_mapper_pipeline`. + pipelines generated by :func:`gtda.mapper.pipeline.make_mapper_pipeline`. The :meth:`set_params` method is modified from the corresponding method in :class:`sklearn.pipeline.Pipeline` to allow for simple access to the parameters involved in the definition of the Mapper algorithm, without the need to interface with the nested structure of the Pipeline objects - generated by :func:`giotto.mapper.pipeline.make_mapper_pipeline`. The + generated by :func:`gtda.mapper.pipeline.make_mapper_pipeline`. The convenience method :meth:`get_mapper_params` shows which parameters can be set. See the Examples below. @@ -36,7 +36,7 @@ class MapperPipeline(Pipeline): -------- >>> from sklearn.cluster import DBSCAN >>> from sklearn.decomposition import PCA - >>> from giotto.mapper import make_mapper_pipeline, CubicalCover + >>> from gtda.mapper import make_mapper_pipeline, CubicalCover >>> filter_func = PCA(n_components=2) >>> cover = CubicalCover() >>> clusterer = DBSCAN() @@ -174,7 +174,7 @@ def make_mapper_pipeline(scaler=None, cover : object or None, optional, default: ``None`` Covering transformer.``None`` means using a cubical cover - (:meth:`giotto.mapper.CubicalCover`) with its default parameters. + (:meth:`gtda.mapper.CubicalCover`) with its default parameters. clustering_preprocessing : object or None, optional, default: ``None`` If not ``None``, it is a transformer which is applied to the @@ -226,21 +226,21 @@ def make_mapper_pipeline(scaler=None, Returns ------- - mapper_pipeline : :class:`giotto.mapper.pipeline.MapperPipeline` object + mapper_pipeline : :class:`gtda.mapper.pipeline.MapperPipeline` object Output Mapper pipeline. Examples -------- >>> # Example of basic usage with default parameters - >>> from giotto.mapper import make_mapper_pipeline + >>> from gtda.mapper import make_mapper_pipeline >>> mapper = make_mapper_pipeline() >>> print(mapper.__class__) - + >>> mapper_params = mapper.get_mapper_params() >>> print(mapper_params['filter_func'].__class__) >>> print(mapper_params['cover'].__class__) - + >>> print(mapper_params['clusterer'].__class__) >>> X = np.random.random((10000, 4)) # 10000 points in 4-dimensional space @@ -249,9 +249,9 @@ def make_mapper_pipeline(scaler=None, igraph.Graph >>> ####################################################################### >>> # Example using a scaler from scikit-learn, a filter function from - >>> # giotto.mapper.filter, and a clusterer from giotto.mapper.cluster + >>> # gtda.mapper.filter, and a clusterer from gtda.mapper.cluster >>> from sklearn.preprocessing import MinMaxScaler - >>> from giotto.mapper import Projection, FirstHistogramGap + >>> from gtda.mapper import Projection, FirstHistogramGap >>> scaler = MinMaxScaler() >>> filter_func = Projection(columns=[0, 1]) >>> clusterer = FirstHistogramGap() @@ -261,7 +261,7 @@ def make_mapper_pipeline(scaler=None, >>> ####################################################################### >>> # Example using a callable acting on each row of X separately >>> import numpy as np - >>> from giotto.mapper import OneDimensionalCover + >>> from gtda.mapper import OneDimensionalCover >>> cover = OneDimensionalCover() >>> mapper.set_params(scaler=None, filter_func=np.sum, cover=cover) >>> ####################################################################### @@ -306,7 +306,7 @@ def make_mapper_pipeline(scaler=None, See also -------- - MapperPipeline, giotto.mapper.utils.decorators.method_to_transform + MapperPipeline, gtda.mapper.utils.decorators.method_to_transform References ---------- diff --git a/giotto/mapper/tests/test_cover.py b/gtda/mapper/tests/test_cover.py similarity index 99% rename from giotto/mapper/tests/test_cover.py rename to gtda/mapper/tests/test_cover.py index 9d374e5d1..2380c4060 100644 --- a/giotto/mapper/tests/test_cover.py +++ b/gtda/mapper/tests/test_cover.py @@ -4,7 +4,7 @@ from hypothesis.strategies import floats, integers from numpy.testing import assert_almost_equal -from giotto.mapper.cover import OneDimensionalCover +from gtda.mapper.cover import OneDimensionalCover @given( diff --git a/giotto/mapper/tests/test_filter.py b/gtda/mapper/tests/test_filter.py similarity index 96% rename from giotto/mapper/tests/test_filter.py rename to gtda/mapper/tests/test_filter.py index e0fcc70d3..ef11f6365 100644 --- a/giotto/mapper/tests/test_filter.py +++ b/gtda/mapper/tests/test_filter.py @@ -5,8 +5,8 @@ from numpy.testing import assert_almost_equal from scipy.spatial.distance import pdist, squareform -from giotto.mapper import Eccentricity, Entropy, Projection -from giotto.mapper.utils.decorators import method_to_transform +from gtda.mapper import Eccentricity, Entropy, Projection +from gtda.mapper.utils.decorators import method_to_transform from sklearn.neighbors import KernelDensity diff --git a/giotto/mapper/tests/test_nerve.py b/gtda/mapper/tests/test_nerve.py similarity index 96% rename from giotto/mapper/tests/test_nerve.py rename to gtda/mapper/tests/test_nerve.py index c76c0079a..912ed09fa 100644 --- a/giotto/mapper/tests/test_nerve.py +++ b/gtda/mapper/tests/test_nerve.py @@ -2,7 +2,7 @@ from hypothesis import given from hypothesis.extra.numpy import arrays, array_shapes from hypothesis.strategies import floats -from giotto.mapper.pipeline import make_mapper_pipeline +from gtda.mapper.pipeline import make_mapper_pipeline @given(X=arrays(dtype=np.float, unique=True, diff --git a/giotto/mapper/utils/__init__.py b/gtda/mapper/utils/__init__.py similarity index 100% rename from giotto/mapper/utils/__init__.py rename to gtda/mapper/utils/__init__.py diff --git a/giotto/mapper/utils/_cluster.py b/gtda/mapper/utils/_cluster.py similarity index 100% rename from giotto/mapper/utils/_cluster.py rename to gtda/mapper/utils/_cluster.py diff --git a/giotto/mapper/utils/_cover.py b/gtda/mapper/utils/_cover.py similarity index 100% rename from giotto/mapper/utils/_cover.py rename to gtda/mapper/utils/_cover.py diff --git a/giotto/mapper/utils/_list_feature_union.py b/gtda/mapper/utils/_list_feature_union.py similarity index 100% rename from giotto/mapper/utils/_list_feature_union.py rename to gtda/mapper/utils/_list_feature_union.py diff --git a/giotto/mapper/utils/_logging.py b/gtda/mapper/utils/_logging.py similarity index 100% rename from giotto/mapper/utils/_logging.py rename to gtda/mapper/utils/_logging.py diff --git a/giotto/mapper/utils/decorators.py b/gtda/mapper/utils/decorators.py similarity index 97% rename from giotto/mapper/utils/decorators.py rename to gtda/mapper/utils/decorators.py index 6ddc51e19..6f1963888 100644 --- a/giotto/mapper/utils/decorators.py +++ b/gtda/mapper/utils/decorators.py @@ -35,7 +35,7 @@ def method_to_transform(cls, method_name): >>> import numpy as np >>> from numpy.testing import assert_almost_equal >>> from sklearn.neighbors import KernelDensity - >>> from giotto.mapper import method_to_transform + >>> from gtda.mapper import method_to_transform >>> X = np.random.random((100, 2)) >>> kde = KernelDensity() >>> kde_extended = method_to_transform( diff --git a/giotto/mapper/utils/pipeline.py b/gtda/mapper/utils/pipeline.py similarity index 96% rename from giotto/mapper/utils/pipeline.py rename to gtda/mapper/utils/pipeline.py index 03434c8f2..d33b4e0b8 100644 --- a/giotto/mapper/utils/pipeline.py +++ b/gtda/mapper/utils/pipeline.py @@ -43,7 +43,7 @@ def transformer_from_callable_on_rows(func, validate=True): Examples -------- >>> import numpy as np - >>> from giotto.mapper import transformer_from_callable_on_rows + >>> from gtda.mapper import transformer_from_callable_on_rows >>> function_transformer = transformer_from_callable_on_rows(np.sum) >>> X = np.array([[0, 1], [2, 3]]) >>> print(function_transformer.fit_transform(X)) diff --git a/giotto/mapper/utils/visualization.py b/gtda/mapper/utils/visualization.py similarity index 100% rename from giotto/mapper/utils/visualization.py rename to gtda/mapper/utils/visualization.py diff --git a/giotto/mapper/visualization.py b/gtda/mapper/visualization.py similarity index 100% rename from giotto/mapper/visualization.py rename to gtda/mapper/visualization.py diff --git a/giotto/meta_transformers/__init__.py b/gtda/meta_transformers/__init__.py similarity index 55% rename from giotto/meta_transformers/__init__.py rename to gtda/meta_transformers/__init__.py index 9ee774e69..978ceeb8a 100644 --- a/giotto/meta_transformers/__init__.py +++ b/gtda/meta_transformers/__init__.py @@ -1,5 +1,5 @@ -"""The module :mod:`giotto.meta_transformers` implements convenience -:class:`giotto.pipeline.Pipeline` transformers for direct topological feature +"""The module :mod:`gtda.meta_transformers` implements convenience +:class:`gtda.pipeline.Pipeline` transformers for direct topological feature generation.""" from .features import EntropyGenerator, BettiCurveGenerator, LandscapeGenerator diff --git a/giotto/meta_transformers/features.py b/gtda/meta_transformers/features.py similarity index 98% rename from giotto/meta_transformers/features.py rename to gtda/meta_transformers/features.py index 13f7d7ca4..191596104 100644 --- a/giotto/meta_transformers/features.py +++ b/gtda/meta_transformers/features.py @@ -88,7 +88,7 @@ class EntropyGenerator(BaseEstimator, TransformerMixin): Examples -------- - >>> from giotto.meta_transformers import EntropyGenerator as eg + >>> from gtda.meta_transformers import EntropyGenerator as eg >>> import numpy as np >>> ent = eg() >>> X = np.asarray([[[1, 2], [2, 1], [1, 1]]]) @@ -274,8 +274,8 @@ def __init__(self, metric='euclidean', max_edge_length=np.inf, self.n_jobs = n_jobs def fit(self, X, y=None): - """Create a giotto :class:`Pipeline` object and fit it. Then, return - the estimator. + """Create a :class:`gtda.pipeline.Pipeline` object and fit it. Then, + return the estimator. This method is here to implement the usual scikit-learn API and hence work in pipelines. @@ -442,8 +442,8 @@ def __init__(self, metric='euclidean', max_edge_length=np.inf, self.n_jobs = n_jobs def fit(self, X, y=None): - """Create a giotto :class:`Pipeline` object and fit it. Then, return - the estimator. + """Create a :class:`gtda.pipeline.Pipeline` object and fit it. Then, + return the estimator. This method is here to implement the usual scikit-learn API and hence work in pipelines. diff --git a/giotto/meta_transformers/tests/__init__.py b/gtda/meta_transformers/tests/__init__.py similarity index 100% rename from giotto/meta_transformers/tests/__init__.py rename to gtda/meta_transformers/tests/__init__.py diff --git a/giotto/meta_transformers/tests/test_features.py b/gtda/meta_transformers/tests/test_features.py similarity index 97% rename from giotto/meta_transformers/tests/test_features.py rename to gtda/meta_transformers/tests/test_features.py index b672890a2..8550ce135 100644 --- a/giotto/meta_transformers/tests/test_features.py +++ b/gtda/meta_transformers/tests/test_features.py @@ -3,8 +3,8 @@ import numpy as np from numpy.testing import assert_almost_equal -from giotto.meta_transformers import EntropyGenerator, BettiCurveGenerator -from giotto.meta_transformers import LandscapeGenerator +from gtda.meta_transformers import EntropyGenerator, BettiCurveGenerator +from gtda.meta_transformers import LandscapeGenerator def test_EntropyGenerator_transform(): diff --git a/giotto/pipeline.py b/gtda/pipeline.py similarity index 97% rename from giotto/pipeline.py rename to gtda/pipeline.py index c2374e853..7d15cfa07 100644 --- a/giotto/pipeline.py +++ b/gtda/pipeline.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.pipeline` extends scikit-learn's module by defining +"""The module :mod:`gtda.pipeline` extends scikit-learn's module by defining Pipelines that include TransformerResamplers.""" # License: GNU AGPLv3 @@ -9,7 +9,7 @@ from sklearn.utils.metaestimators import if_delegate_has_method from sklearn.utils.validation import check_memory -__all__ = ['Pipeline', 'make_pipeline', 'SlidingWindowFeatureUnion'] +__all__ = ['Pipeline', 'make_pipeline'] class Pipeline(pipeline.Pipeline): @@ -62,10 +62,10 @@ class Pipeline(pipeline.Pipeline): Examples -------- >>> import numpy as np - >>> import giotto.time_series as ts - >>> import giotto.homology as hl - >>> import giotto.diagrams as diag - >>> from giotto.pipeline import Pipeline + >>> import gtda.time_series as ts + >>> import gtda.homology as hl + >>> import gtda.diagrams as diag + >>> from gtda.pipeline import Pipeline >>> import sklearn.preprocessing as skprep >>> >>> X = np.random.rand(600, 1) @@ -319,7 +319,7 @@ def resample(self): def _resample(self, X, y=None): Xt, yr = X, y for _, _, transform in self._iter(): - yr = transform.resample(yr) + yr = transform.resample(yr) return yr @@ -386,7 +386,7 @@ def transform(self): def _transform(self, X, y=None): Xt, yr = X, y for _, _, transform in self._iter(): - Xt = transform.transform(Xt) + Xt = transform.transform(Xt) return Xt @property @@ -473,7 +473,7 @@ def _fit_transform_resample_one(transformer_resampler, weight, X, y, **fit_params) else: X_res, y_res = transformer_resampler.fit( - X, y,**fit_params).transform_resample( + X, y, **fit_params).transform_resample( X, y) if weight is None: return X_res, y_res, transformer_resampler diff --git a/giotto/tests/__init__.py b/gtda/tests/__init__.py similarity index 100% rename from giotto/tests/__init__.py rename to gtda/tests/__init__.py diff --git a/giotto/tests/test_pipeline.py b/gtda/tests/test_pipeline.py similarity index 87% rename from giotto/tests/test_pipeline.py rename to gtda/tests/test_pipeline.py index ff1d2243c..2697c27e6 100644 --- a/giotto/tests/test_pipeline.py +++ b/gtda/tests/test_pipeline.py @@ -1,14 +1,12 @@ # License: GNU AGPLv3 -import giotto as gt -import giotto.time_series as ts -import giotto.homology as hl -import giotto.diagrams as diag -from giotto.pipeline import Pipeline +import gtda.time_series as ts +import gtda.homology as hl +import gtda.diagrams as diag +from gtda.pipeline import Pipeline import numpy as np from numpy.testing import assert_almost_equal -import sklearn.utils as skutils from sklearn.model_selection import TimeSeriesSplit import sklearn.preprocessing as skprep from sklearn.ensemble import RandomForestClassifier @@ -32,6 +30,7 @@ def split_train_test(data): return X_train, y_train, X_test, y_test + def get_steps(): steps = [ ('embedding', ts.TakensEmbedding()), @@ -40,14 +39,14 @@ def get_steps(): ('rescaler', diag.Scaler()), ('filter', diag.Filtering(epsilon=0.1)), ('entropy', diag.PersistenceEntropy()), - ('scaling', skprep.MinMaxScaler(copy=True)), - ] + ('scaling', skprep.MinMaxScaler(copy=True)) + ] return steps + def get_param_grid(): embedding_param = {} window_param = {} - distance_param = {} diagram_param = {} classification_param = {} @@ -57,8 +56,6 @@ def get_param_grid(): embedding_param_grid = {'embedding__' + k: v for k, v in embedding_param.items()} - window_param_grid = {'window__' + k: v - for k, v in window_param.items()} diagram_param_grid = {'diagram__' + k: v for k, v in diagram_param.items()} classification_param_grid = {'classification__' + k: v @@ -113,5 +110,6 @@ def test_grid_search_time_series(): pipeline = Pipeline(steps) param_grid = get_param_grid() cv = TimeSeriesSplit(n_splits=2) - grid = GridSearchCV(estimator=pipeline, param_grid=param_grid, cv=cv, verbose=0) - grid_result = grid.fit(X_train, y_train) + grid = GridSearchCV( + estimator=pipeline, param_grid=param_grid, cv=cv, verbose=0) + grid.fit(X_train, y_train) diff --git a/giotto/time_series/__init__.py b/gtda/time_series/__init__.py similarity index 87% rename from giotto/time_series/__init__.py rename to gtda/time_series/__init__.py index e6708fbea..d12613f8f 100644 --- a/giotto/time_series/__init__.py +++ b/gtda/time_series/__init__.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.time_series` implements transformers to +"""The module :mod:`gtda.time_series` implements transformers to preprocess time series or embed them in a higher dimensional space for persistent homology. """ diff --git a/giotto/time_series/embedding.py b/gtda/time_series/embedding.py similarity index 99% rename from giotto/time_series/embedding.py rename to gtda/time_series/embedding.py index 39082b435..906fdc2cd 100644 --- a/giotto/time_series/embedding.py +++ b/gtda/time_series/embedding.py @@ -34,7 +34,7 @@ class SlidingWindow(BaseEstimator, TransformerResamplerMixin): Examples -------- >>> import numpy as np - >>> from giotto.time_series import SlidingWindow + >>> from gtda.time_series import SlidingWindow >>> # Create a time series of two-dimensional vectors, and a corresponding >>> # time series of scalars >>> X = np.arange(20).reshape(-1, 2) @@ -241,7 +241,7 @@ class TakensEmbedding(BaseEstimator, TransformerResamplerMixin): Examples -------- >>> import numpy as np - >>> from giotto.time_series import TakensEmbedding + >>> from gtda.time_series import TakensEmbedding >>> # Create a noisy signal >>> n_samples = 10000 >>> signal_noise = np.asarray([np.sin(x / 50) + 0.5 * np.random.random() @@ -262,7 +262,7 @@ class TakensEmbedding(BaseEstimator, TransformerResamplerMixin): See also -------- - SlidingWindow, giotto.homology.VietorisRipsPersistence + SlidingWindow, gtda.homology.VietorisRipsPersistence Notes ----- diff --git a/giotto/time_series/features.py b/gtda/time_series/features.py similarity index 98% rename from giotto/time_series/features.py rename to gtda/time_series/features.py index 033b0d1b2..5938c0875 100644 --- a/giotto/time_series/features.py +++ b/gtda/time_series/features.py @@ -28,7 +28,7 @@ class PermutationEntropy(BaseEstimator, TransformerMixin): See also -------- - TakensEmbedding, giotto.diagrams.PersistenceEntropy + TakensEmbedding, gtda.diagrams.PersistenceEntropy References ---------- diff --git a/giotto/time_series/multivariate.py b/gtda/time_series/multivariate.py similarity index 98% rename from giotto/time_series/multivariate.py rename to gtda/time_series/multivariate.py index 7afa06a49..c73ff0066 100644 --- a/giotto/time_series/multivariate.py +++ b/gtda/time_series/multivariate.py @@ -41,7 +41,7 @@ class PearsonDissimilarity(BaseEstimator, TransformerMixin): See also -------- - SlidingWindow, giotto.homology.VietorisRipsPersistence + SlidingWindow, gtda.homology.VietorisRipsPersistence """ diff --git a/giotto/time_series/preprocessing.py b/gtda/time_series/preprocessing.py similarity index 98% rename from giotto/time_series/preprocessing.py rename to gtda/time_series/preprocessing.py index 596191bbb..9179b2de1 100644 --- a/giotto/time_series/preprocessing.py +++ b/gtda/time_series/preprocessing.py @@ -23,7 +23,7 @@ class Resampler(BaseEstimator, TransformerResamplerMixin): Examples -------- >>> import numpy as np - >>> from giotto.time_series import Resampler + >>> from gtda.time_series import Resampler >>> # Create a noisy signal >>> signal = np.asarray([np.sin(x /40) + np.random.random() ... for x in range(0, 300)]) @@ -145,7 +145,7 @@ class Stationarizer(BaseEstimator, TransformerResamplerMixin): Examples -------- >>> import numpy as np - >>> from giotto.time_series import Stationarizer + >>> from gtda.time_series import Stationarizer >>> # Create a noisy signal >>> signal = np.asarray([np.sin(x /40) + 5 + np.random.random() >>> for x in range(0, 300)]).reshape(-1, 1) diff --git a/giotto/time_series/target.py b/gtda/time_series/target.py similarity index 99% rename from giotto/time_series/target.py rename to gtda/time_series/target.py index e661800f8..ca21bc923 100644 --- a/giotto/time_series/target.py +++ b/gtda/time_series/target.py @@ -52,7 +52,7 @@ class Labeller(BaseEstimator, TransformerResamplerMixin): Examples -------- >>> import numpy as np - >>> from giotto.time_series import Labeller + >>> from gtda.time_series import Labeller >>> # Create a time series >>> X = np.arange(10).reshape(-1, 1) >>> labeller = Labeller(width=2) diff --git a/giotto/time_series/tests/__init__.py b/gtda/time_series/tests/__init__.py similarity index 100% rename from giotto/time_series/tests/__init__.py rename to gtda/time_series/tests/__init__.py diff --git a/giotto/time_series/tests/test_embedding.py b/gtda/time_series/tests/test_embedding.py similarity index 97% rename from giotto/time_series/tests/test_embedding.py rename to gtda/time_series/tests/test_embedding.py index 75063eb76..d98fe136d 100644 --- a/giotto/time_series/tests/test_embedding.py +++ b/gtda/time_series/tests/test_embedding.py @@ -6,8 +6,8 @@ from numpy.testing import assert_almost_equal from sklearn.exceptions import NotFittedError -from giotto.time_series import TakensEmbedding -from giotto.time_series import SlidingWindow +from gtda.time_series import TakensEmbedding +from gtda.time_series import SlidingWindow signal = np.asarray([np.sin(x / 2) + 2 for x in range(0, 20)]) diff --git a/giotto/time_series/tests/test_multivariate.py b/gtda/time_series/tests/test_multivariate.py similarity index 89% rename from giotto/time_series/tests/test_multivariate.py rename to gtda/time_series/tests/test_multivariate.py index df038e283..c362410b3 100644 --- a/giotto/time_series/tests/test_multivariate.py +++ b/gtda/time_series/tests/test_multivariate.py @@ -4,7 +4,7 @@ import numpy as np from numpy.testing import assert_almost_equal -from giotto.time_series import PearsonDissimilarity +from gtda.time_series import PearsonDissimilarity def test_multivariate_transform(): diff --git a/giotto/time_series/tests/test_preprocessing.py b/gtda/time_series/tests/test_preprocessing.py similarity index 97% rename from giotto/time_series/tests/test_preprocessing.py rename to gtda/time_series/tests/test_preprocessing.py index edb24ff2f..186edf1e5 100644 --- a/giotto/time_series/tests/test_preprocessing.py +++ b/gtda/time_series/tests/test_preprocessing.py @@ -6,7 +6,7 @@ from numpy.testing import assert_almost_equal from sklearn.exceptions import NotFittedError -from giotto.time_series import Resampler, Stationarizer +from gtda.time_series import Resampler, Stationarizer signal_array = np.asarray([np.sin(x / 2) + 2 for x in range(0, 20)]) diff --git a/giotto/utils/__init__.py b/gtda/utils/__init__.py similarity index 78% rename from giotto/utils/__init__.py rename to gtda/utils/__init__.py index 21a3757cc..00a2571e5 100644 --- a/giotto/utils/__init__.py +++ b/gtda/utils/__init__.py @@ -1,4 +1,4 @@ -"""The module :mod:`giotto.utils` implements hyperparameter and input +"""The module :mod:`gtda.utils` implements hyperparameter and input validation functions.""" from .validation import check_diagram, check_graph diff --git a/giotto/utils/_docs.py b/gtda/utils/_docs.py similarity index 82% rename from giotto/utils/_docs.py rename to gtda/utils/_docs.py index 9a1f1b870..c50a41cfa 100644 --- a/giotto/utils/_docs.py +++ b/gtda/utils/_docs.py @@ -75,7 +75,7 @@ def adapt_fit_transform_docs(transformermixin_cls): Fetches the :meth:`fit` and :meth:`transform` docstrings of a class implementing :meth:`fit_transform`, creates adapted docstring using - :func:`giotto.utils._docs.make_fit_transform_docs`, and + :func:`gtda.utils._docs.make_fit_transform_docs`, and wraps the original :meth:`fit_transform` implementation with one with the new docstring. @@ -112,23 +112,3 @@ def fit_transform_wrapper(*args, **kwargs): getattr(transformermixin_cls, 'fit_transform')) setattr(transformermixin_cls, 'fit_transform', new_fit_transform) return transformermixin_cls - - -# # Alternative to the class decorator above, to be used as a decorator to the -# fit_transform method instead of the class. Example of usage inside a class -# definition: -# # @adapt_fit_transform_docs(locals()) -# # def fit_transform(self, X, y=None): -# # return super().fit_transform(X, y) -# -# def adapt_fit_transform_docs(local_symbol_table): -# fit_docs = getdoc(local_symbol_table['fit']) -# transform_docs = getdoc(local_symbol_table['transform']) -# -# def decorator(original_fit_transform): -# @wraps(original_fit_transform) -# def wrapper(*args, **kwargs): -# return original_fit_transform(*args, **kwargs) -# wrapper.__doc__ = make_fit_transform_docs(fit_docs, transform_docs) -# return wrapper -# return decorator diff --git a/giotto/utils/testing.py b/gtda/utils/testing.py similarity index 100% rename from giotto/utils/testing.py rename to gtda/utils/testing.py diff --git a/giotto/utils/tests/__init__.py b/gtda/utils/tests/__init__.py similarity index 100% rename from giotto/utils/tests/__init__.py rename to gtda/utils/tests/__init__.py diff --git a/giotto/utils/tests/test_validation.py b/gtda/utils/tests/test_validation.py similarity index 100% rename from giotto/utils/tests/test_validation.py rename to gtda/utils/tests/test_validation.py diff --git a/giotto/utils/validation.py b/gtda/utils/validation.py similarity index 100% rename from giotto/utils/validation.py rename to gtda/utils/validation.py diff --git a/setup.cfg b/setup.cfg index bb1ece564..2516d0d3a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,24 +8,24 @@ addopts = --ignore scripts --ignore pybind11 - --ignore giotto/externals/bindings/ - --ignore giotto/externals/gudhi-devel/ - --ignore giotto/externals/hera/ - --ignore giotto/externals/pybind11/ - --ignore giotto/externals/ripser/ - --ignore giotto/tests/test_common.py + --ignore gtda/externals/bindings/ + --ignore gtda/externals/gudhi-devel/ + --ignore gtda/externals/hera/ + --ignore gtda/externals/pybind11/ + --ignore gtda/externals/ripser/ + --ignore gtda/tests/test_common.py -ra [flake8] exclude = - giotto/externals, - giotto/images, - giotto/neural_network, - giotto/model_selection, - giotto/datasets, - giotto/pipeline.py, - giotto/tests/test_pipeline.py, + gtda/externals, + gtda/images, + gtda/neural_network, + gtda/model_selection, + gtda/datasets, + gtda/pipeline.py, + gtda/tests/test_pipeline.py, scripts, examples, pybind11, diff --git a/setup.py b/setup.py index ecaabb233..9e706dbfd 100755 --- a/setup.py +++ b/setup.py @@ -13,23 +13,23 @@ from setuptools.command.build_ext import build_ext -version_file = os.path.join('giotto', '_version.py') +version_file = os.path.join('gtda', '_version.py') with open(version_file) as f: exec(f.read()) with open('requirements.txt') as f: requirements = f.read().splitlines() -DISTNAME = 'giotto-learn' +DISTNAME = 'giotto-tda' DESCRIPTION = 'Toolbox for Machine Learning using Topological Data Analysis.' with codecs.open('README.rst', encoding='utf-8-sig') as f: LONG_DESCRIPTION = f.read() LONG_DESCRIPTION_TYPE = 'text/x-rst' MAINTAINER = 'Umberto Lupo, Lewis Tunstall' MAINTAINER_EMAIL = 'maintainers@giotto.ai' -URL = 'https://github.com/giotto-ai/giotto-learn' +URL = 'https://github.com/giotto-ai/giotto-tda' LICENSE = 'GNU AGPLv3' -DOWNLOAD_URL = 'https://github.com/giotto-ai/giotto-learn/tarball/v0.1.3' +DOWNLOAD_URL = 'https://github.com/giotto-ai/giotto-tda/tarball/v0.1.3' VERSION = __version__ # noqa CLASSIFIERS = ['Intended Audience :: Science/Research', 'Intended Audience :: Developers', @@ -120,7 +120,7 @@ def run(self): def install_dependencies(self): dir_start = os.getcwd() dir_pybind11 = os.path.join(dir_start, - 'giotto', 'externals', 'pybind11') + 'gtda', 'externals', 'pybind11') if os.path.exists(dir_pybind11): return 0 os.mkdir(dir_pybind11) @@ -196,5 +196,5 @@ def build_extension(self, ext): keywords=KEYWORDS, install_requires=INSTALL_REQUIRES, extras_require=EXTRAS_REQUIRE, - ext_modules=[CMakeExtension('giotto')], + ext_modules=[CMakeExtension('gtda')], cmdclass=dict(build_ext=CMakeBuild))