├── .codedocs ├── .github └── workflows │ ├── build-pyclustering.yml │ ├── test-pypi-installer.yml │ └── test-testpypi-installer.yml ├── .gitignore ├── .travis.yml ├── CHANGES ├── LICENSE ├── MANIFEST.in ├── PKG-INFO.rst ├── README.rst ├── appveyor.yml ├── ccore ├── .cproject ├── .project ├── CMakeLists.txt ├── bvt │ ├── CMakeLists.txt │ ├── bvt-shared.vcxproj │ ├── bvt-static.vcxproj │ ├── shared-test.cpp │ └── static-test.cpp ├── ccore.mk ├── ccore.sln ├── external │ ├── CMakeLists.txt │ ├── include │ │ └── gtest │ │ │ └── gtest.h │ ├── libs │ │ ├── linux │ │ │ ├── x64 │ │ │ │ └── .linux.x64.libs │ │ │ └── x86 │ │ │ │ └── .linux.x86.libs │ │ └── windows │ │ │ ├── x64 │ │ │ └── .win.x64.libs │ │ │ └── x86 │ │ │ └── .win.x86.libs │ └── src │ │ └── gtest │ │ └── gtest-all.cpp ├── include │ └── pyclustering │ │ ├── cluster │ │ ├── agglomerative.hpp │ │ ├── bsas.hpp │ │ ├── bsas_data.hpp │ │ ├── center_initializer.hpp │ │ ├── clique.hpp │ │ ├── clique_block.hpp │ │ ├── clique_data.hpp │ │ ├── cluster_data.hpp │ │ ├── cure.hpp │ │ ├── cure_data.hpp │ │ ├── data_type.hpp │ │ ├── dbscan.hpp │ │ ├── dbscan_data.hpp │ │ ├── elbow.hpp │ │ ├── elbow_data.hpp │ │ ├── fcm.hpp │ │ ├── fcm_data.hpp │ │ ├── gmeans.hpp │ │ ├── gmeans_data.hpp │ │ ├── hsyncnet.hpp │ │ ├── kmeans.hpp │ │ ├── kmeans_data.hpp │ │ ├── kmeans_plus_plus.hpp │ │ ├── kmedians.hpp │ │ ├── kmedians_data.hpp │ │ ├── kmedoids.hpp │ │ ├── kmedoids_data.hpp │ │ ├── mbsas.hpp │ │ ├── mbsas_data.hpp │ │ ├── optics.hpp │ │ ├── optics_data.hpp │ │ ├── optics_descriptor.hpp │ │ ├── ordering_analyser.hpp │ │ ├── pam_build.hpp │ │ ├── random_center_initializer.hpp │ │ ├── rock.hpp │ │ ├── silhouette.hpp │ │ ├── silhouette_data.hpp │ │ ├── silhouette_ksearch.hpp │ │ ├── silhouette_ksearch_data.hpp │ │ ├── somsc.hpp │ │ ├── somsc_data.hpp │ │ ├── syncnet.hpp │ │ ├── ttsas.hpp │ │ ├── ttsas_data.hpp │ │ ├── xmeans.hpp │ │ └── xmeans_data.hpp │ │ ├── container │ │ ├── adjacency.hpp │ │ ├── adjacency_bit_matrix.hpp │ │ ├── adjacency_connector.hpp │ │ ├── adjacency_factory.hpp │ │ ├── adjacency_list.hpp │ │ ├── adjacency_matrix.hpp │ │ ├── adjacency_weight_list.hpp │ │ ├── dynamic_data.hpp │ │ ├── ensemble_data.hpp │ │ ├── kdnode.hpp │ │ ├── kdtree.hpp │ │ ├── kdtree_balanced.hpp │ │ └── kdtree_searcher.hpp │ │ ├── definitions.hpp │ │ ├── differential │ │ ├── differ_factor.hpp │ │ ├── differ_state.hpp │ │ ├── equation.hpp │ │ ├── runge_kutta_4.hpp │ │ ├── runge_kutta_fehlberg_45.hpp │ │ └── solve_type.hpp │ │ ├── interface │ │ ├── agglomerative_interface.h │ │ ├── bsas_interface.h │ │ ├── clique_interface.h │ │ ├── cure_interface.h │ │ ├── dbscan_interface.h │ │ ├── elbow_interface.h │ │ ├── fcm_interface.h │ │ ├── gmeans_interface.h │ │ ├── hhn_interface.h │ │ ├── hsyncnet_interface.h │ │ ├── interface_property.h │ │ ├── kmeans_interface.h │ │ ├── kmedians_interface.h │ │ ├── kmedoids_interface.h │ │ ├── legion_interface.h │ │ ├── mbsas_interface.h │ │ ├── metric_interface.h │ │ ├── optics_interface.h │ │ ├── pam_build_interface.h │ │ ├── pcnn_interface.h │ │ ├── pyclustering_interface.h │ │ ├── pyclustering_package.hpp │ │ ├── rock_interface.h │ │ ├── silhouette_interface.h │ │ ├── som_interface.h │ │ ├── sync_interface.h │ │ ├── syncnet_interface.h │ │ ├── syncpr_interface.h │ │ ├── ttsas_interface.h │ │ └── xmeans_interface.h │ │ ├── nnet │ │ ├── dynamic_analyser.hpp │ │ ├── hhn.hpp │ │ ├── legion.hpp │ │ ├── network.hpp │ │ ├── pcnn.hpp │ │ ├── som.hpp │ │ ├── sync.hpp │ │ └── syncpr.hpp │ │ ├── parallel │ │ ├── parallel.hpp │ │ ├── spinlock.hpp │ │ ├── task.hpp │ │ ├── thread_executor.hpp │ │ └── thread_pool.hpp │ │ └── utils │ │ ├── algorithm.hpp │ │ ├── linalg.hpp │ │ ├── math.hpp │ │ ├── metric.hpp │ │ ├── random.hpp │ │ ├── stats.hpp │ │ └── traits.hpp ├── makefile ├── src │ ├── CMakeLists.txt │ ├── cluster │ │ ├── agglomerative.cpp │ │ ├── bsas.cpp │ │ ├── clique.cpp │ │ ├── clique_block.cpp │ │ ├── cluster_data.cpp │ │ ├── cure.cpp │ │ ├── dbscan.cpp │ │ ├── fcm.cpp │ │ ├── gmeans.cpp │ │ ├── hsyncnet.cpp │ │ ├── kmeans.cpp │ │ ├── kmeans_data.cpp │ │ ├── kmeans_plus_plus.cpp │ │ ├── kmedians.cpp │ │ ├── kmedoids.cpp │ │ ├── mbsas.cpp │ │ ├── optics.cpp │ │ ├── optics_descriptor.cpp │ │ ├── ordering_analyser.cpp │ │ ├── pam_build.cpp │ │ ├── random_center_initializer.cpp │ │ ├── rock.cpp │ │ ├── silhouette.cpp │ │ ├── silhouette_ksearch.cpp │ │ ├── silhouette_ksearch_data.cpp │ │ ├── somsc.cpp │ │ ├── syncnet.cpp │ │ ├── ttsas.cpp │ │ └── xmeans.cpp │ ├── container │ │ ├── adjacency_bit_matrix.cpp │ │ ├── adjacency_connector.cpp │ │ ├── adjacency_factory.cpp │ │ ├── adjacency_list.cpp │ │ ├── adjacency_matrix.cpp │ │ ├── adjacency_weight_list.cpp │ │ ├── kdnode.cpp │ │ ├── kdtree.cpp │ │ ├── kdtree_balanced.cpp │ │ └── kdtree_searcher.cpp │ ├── differential │ │ └── differ_factor.cpp │ ├── interface │ │ ├── agglomerative_interface.cpp │ │ ├── bsas_interface.cpp │ │ ├── clique_interface.cpp │ │ ├── cure_interface.cpp │ │ ├── dbscan_interface.cpp │ │ ├── elbow_interface.cpp │ │ ├── fcm_interface.cpp │ │ ├── gmeans_interface.cpp │ │ ├── hhn_interface.cpp │ │ ├── hsyncnet_interface.cpp │ │ ├── interface_property.cpp │ │ ├── kmeans_interface.cpp │ │ ├── kmedians_interface.cpp │ │ ├── kmedoids_interface.cpp │ │ ├── legion_interface.cpp │ │ ├── mbsas_interface.cpp │ │ ├── metric_interface.cpp │ │ ├── optics_interface.cpp │ │ ├── pam_build_interface.cpp │ │ ├── pcnn_interface.cpp │ │ ├── pyclustering_interface.cpp │ │ ├── pyclustering_package.cpp │ │ ├── rock_interface.cpp │ │ ├── silhouette_interface.cpp │ │ ├── som_interface.cpp │ │ ├── sync_interface.cpp │ │ ├── syncnet_interface.cpp │ │ ├── syncpr_interface.cpp │ │ ├── ttsas_interface.cpp │ │ └── xmeans_interface.cpp │ ├── nnet │ │ ├── dynamic_analyser.cpp │ │ ├── hhn.cpp │ │ ├── legion.cpp │ │ ├── pcnn.cpp │ │ ├── som.cpp │ │ ├── sync.cpp │ │ └── syncpr.cpp │ ├── parallel │ │ ├── spinlock.cpp │ │ ├── task.cpp │ │ ├── thread_executor.cpp │ │ └── thread_pool.cpp │ ├── pyclustering-shared.vcxproj │ ├── pyclustering-shared.vcxproj.filters │ ├── pyclustering-static.vcxproj │ ├── pyclustering-static.vcxproj.filters │ └── utils │ │ ├── linalg.cpp │ │ ├── math.cpp │ │ ├── metric.cpp │ │ ├── random.cpp │ │ └── stats.cpp ├── tst │ ├── CMakeLists.txt │ ├── answer.hpp │ ├── answer_reader.cpp │ ├── answer_reader.hpp │ ├── gtest.vcxproj │ ├── gtest.vcxproj.filters │ ├── main.cpp │ ├── samples.cpp │ ├── samples.hpp │ ├── ut-runner.py │ ├── ut-shared.vcxproj │ ├── ut-shared.vcxproj.filters │ ├── ut-static.vcxproj │ ├── ut-static.vcxproj.filters │ ├── utenv_check.cpp │ ├── utenv_check.hpp │ ├── utenv_utils.cpp │ ├── utenv_utils.hpp │ ├── utest-adjacency.cpp │ ├── utest-adjacency.hpp │ ├── utest-adjacency_bit_matrix.cpp │ ├── utest-adjacency_connector.cpp │ ├── utest-adjacency_list.cpp │ ├── utest-adjacency_matrix.cpp │ ├── utest-adjacency_weight_list.cpp │ ├── utest-agglomerative.cpp │ ├── utest-bsas.cpp │ ├── utest-clique.cpp │ ├── utest-cure.cpp │ ├── utest-dbscan.cpp │ ├── utest-differential.cpp │ ├── utest-dynamic_analyser.cpp │ ├── utest-elbow.cpp │ ├── utest-elbow.hpp │ ├── utest-fcm.cpp │ ├── utest-gmeans.cpp │ ├── utest-hhn.cpp │ ├── utest-hsyncnet.cpp │ ├── utest-interface-agglomerative.cpp │ ├── utest-interface-bsas.cpp │ ├── utest-interface-clique.cpp │ ├── utest-interface-cure.cpp │ ├── utest-interface-dbscan.cpp │ ├── utest-interface-elbow.cpp │ ├── utest-interface-fcm.cpp │ ├── utest-interface-gmeans.cpp │ ├── utest-interface-hhn.cpp │ ├── utest-interface-hsyncnet.cpp │ ├── utest-interface-kmeans.cpp │ ├── utest-interface-kmedians.cpp │ ├── utest-interface-kmedoids.cpp │ ├── utest-interface-legion.cpp │ ├── utest-interface-mbsas.cpp │ ├── utest-interface-metric.cpp │ ├── utest-interface-optics.cpp │ ├── utest-interface-pam_build.cpp │ ├── utest-interface-pcnn.cpp │ ├── utest-interface-pyclustering.cpp │ ├── utest-interface-silhouette.cpp │ ├── utest-interface-som.cpp │ ├── utest-interface-sync.cpp │ ├── utest-interface-syncnet.cpp │ ├── utest-interface-syncpr.cpp │ ├── utest-interface-ttsas.cpp │ ├── utest-interface-xmeans.cpp │ ├── utest-kdtree.cpp │ ├── utest-kmeans.cpp │ ├── utest-kmeans_plus_plus.cpp │ ├── utest-kmedians.cpp │ ├── utest-kmedoids.cpp │ ├── utest-legion.cpp │ ├── utest-linalg.cpp │ ├── utest-mbsas.cpp │ ├── utest-optics.cpp │ ├── utest-ordering_analyser.cpp │ ├── utest-pam_build.cpp │ ├── utest-parallel_for.cpp │ ├── utest-pcnn.cpp │ ├── utest-random_center_initializer.cpp │ ├── utest-rock.cpp │ ├── utest-silhouette.cpp │ ├── utest-silhouette_ksearch.cpp │ ├── utest-som.cpp │ ├── utest-somsc.cpp │ ├── utest-spinlock.cpp │ ├── utest-stats.cpp │ ├── utest-sync.cpp │ ├── utest-syncnet.cpp │ ├── utest-syncpr.cpp │ ├── utest-thread_pool.cpp │ ├── utest-ttsas.cpp │ ├── utest-utils-algorithm.cpp │ ├── utest-utils-metric.cpp │ └── utest-xmeans.cpp └── utcore.mk ├── ci ├── appveyor-ci.ps1 ├── cloud │ ├── __init__.py │ ├── __main__.py │ ├── cloud │ │ ├── __init__.py │ │ ├── task.py │ │ ├── task_handler.py │ │ └── yandex_disk.py │ └── tests │ │ ├── __init__.py │ │ └── test_cloud.py ├── github-ci.sh └── travis-ci.sh ├── docs ├── citation.bib ├── doxygen_conf_ccore ├── doxygen_conf_pyclustering ├── img │ ├── agglomerative_lsun_clustering_single_link.png │ ├── bang_blocks_chainlink.png │ ├── bang_clustering_chainlink.png │ ├── bang_dendrogram_chainlink.png │ ├── birch_cf_encoding_lsun.png │ ├── birch_clustering_old_faithful.png │ ├── clique_clustering_target.png │ ├── clique_clustering_with_noise.png │ ├── dbscan_atom_visualizer.png │ ├── elbow_example_simple_03.png │ ├── ema_old_faithful_clustering.png │ ├── example_cluster_place.png │ ├── fcm_segmentation_stpetersburg.png │ ├── fcps_cluster_analysis.png │ ├── fsync_sync_examples.png │ ├── ga_clustering_sample_simple_04.png │ ├── gmeans_example_clustering.png │ ├── gmeans_hepta_multidim_visualizer.png │ ├── gmeans_lsun_multidim_visualizer.png │ ├── hhn_architecture.drawio │ ├── hhn_architecture.png │ ├── hhn_three_ensembles.png │ ├── kd_tree_balanced_lsun.png │ ├── kd_tree_balanced_two_diamonds.png │ ├── kd_tree_unbalanced_two_diamonds.png │ ├── kmeans_example_clustering.png │ ├── kmeans_plusplus_initializer_results.png │ ├── optics_example_clustering.png │ ├── optics_noise_tetra.png │ ├── pam_build_initial_medoids.png │ ├── pam_clustering_tetra.png │ ├── pam_clustering_two_diamonds.png │ ├── pyclustering_build_msvc.png │ ├── silhouette_ksearch_hepta.png │ ├── silhouette_score_for_various_K.png │ ├── sync_partial_synchronization.png │ ├── sync_som_image_segmentation.png │ ├── target_som_processing.png │ ├── xmeans_clustering_famous_iris.png │ ├── xmeans_clustering_famous_iris_filtered.png │ ├── xmeans_clustering_mndl_target.png │ └── xmeans_clustering_simple3.png ├── logo │ ├── pyclustering_logo_01.png │ ├── pyclustering_logo_01.xcf │ ├── pyclustering_logo_01_small.png │ ├── pyclustering_logo_02.png │ └── pyclustering_logo_02.xcf └── page │ └── cpp_pyclustering_intro.md ├── paper ├── paper.bib └── paper.md ├── pyclustering ├── __init__.py ├── cluster │ ├── __init__.py │ ├── agglomerative.py │ ├── bang.py │ ├── birch.py │ ├── bsas.py │ ├── center_initializer.py │ ├── clarans.py │ ├── clique.py │ ├── cure.py │ ├── dbscan.py │ ├── elbow.py │ ├── ema.py │ ├── encoder.py │ ├── examples │ │ ├── __init__.py │ │ ├── agglomerative_examples.py │ │ ├── bang_example.py │ │ ├── birch_examples.py │ │ ├── bsas_examples.py │ │ ├── center_initializer_examples.py │ │ ├── clarans_examples.py │ │ ├── clique_example.py │ │ ├── cure_examples.py │ │ ├── dbscan_examples.py │ │ ├── dbscan_segmentation.py │ │ ├── elbow_examples.py │ │ ├── ema_examples.py │ │ ├── fcm_examples.py │ │ ├── ga_examples.py │ │ ├── general_examples.py │ │ ├── gmeans_examples.py │ │ ├── hsyncnet_examples.py │ │ ├── kmeans_examples.py │ │ ├── kmeans_segmentation.py │ │ ├── kmedians_examples.py │ │ ├── kmedoids_examples.py │ │ ├── mbsas_examples.py │ │ ├── optics_examples.py │ │ ├── rock_examples.py │ │ ├── silhouette_examples.py │ │ ├── somsc_examples.py │ │ ├── syncnet_examples.py │ │ ├── syncsom_examples.py │ │ ├── syncsom_segmentation.py │ │ ├── ttsas_examples.py │ │ └── xmeans_examples.py │ ├── fcm.py │ ├── ga.py │ ├── ga_maths.py │ ├── generator.py │ ├── gmeans.py │ ├── hsyncnet.py │ ├── kmeans.py │ ├── kmedians.py │ ├── kmedoids.py │ ├── mbsas.py │ ├── optics.py │ ├── rock.py │ ├── silhouette.py │ ├── somsc.py │ ├── syncnet.py │ ├── syncsom.py │ ├── tests │ │ ├── __init__.py │ │ ├── agglomerative_templates.py │ │ ├── bang_templates.py │ │ ├── bsas_templates.py │ │ ├── clique_templates.py │ │ ├── cure_templates.py │ │ ├── dbscan_templates.py │ │ ├── elbow_template.py │ │ ├── fcm_templates.py │ │ ├── gmeans_templates.py │ │ ├── hsyncnet_templates.py │ │ ├── integration │ │ │ ├── __init__.py │ │ │ ├── it_agglomerative.py │ │ │ ├── it_bsas.py │ │ │ ├── it_clique.py │ │ │ ├── it_cure.py │ │ │ ├── it_dbscan.py │ │ │ ├── it_elbow.py │ │ │ ├── it_fcm.py │ │ │ ├── it_gmeans.py │ │ │ ├── it_hsyncnet.py │ │ │ ├── it_kmeans.py │ │ │ ├── it_kmedians.py │ │ │ ├── it_kmedoids.py │ │ │ ├── it_mbsas.py │ │ │ ├── it_optics.py │ │ │ ├── it_rock.py │ │ │ ├── it_silhouette.py │ │ │ ├── it_somsc.py │ │ │ ├── it_syncnet.py │ │ │ ├── it_ttsas.py │ │ │ └── it_xmeans.py │ │ ├── kmeans_templates.py │ │ ├── kmedians_templates.py │ │ ├── kmedoids_templates.py │ │ ├── mbsas_templates.py │ │ ├── optics_templates.py │ │ ├── rock_templates.py │ │ ├── silhouette_templates.py │ │ ├── somsc_templates.py │ │ ├── syncnet_templates.py │ │ ├── ttsas_template.py │ │ ├── unit │ │ │ ├── __init__.py │ │ │ ├── ut_agglomerative.py │ │ │ ├── ut_bang.py │ │ │ ├── ut_birch.py │ │ │ ├── ut_bsas.py │ │ │ ├── ut_center_initializer.py │ │ │ ├── ut_clarans.py │ │ │ ├── ut_clique.py │ │ │ ├── ut_cure.py │ │ │ ├── ut_dbscan.py │ │ │ ├── ut_elbow.py │ │ │ ├── ut_ema.py │ │ │ ├── ut_encoder.py │ │ │ ├── ut_fcm.py │ │ │ ├── ut_ga.py │ │ │ ├── ut_general.py │ │ │ ├── ut_generator.py │ │ │ ├── ut_gmeans.py │ │ │ ├── ut_hsyncnet.py │ │ │ ├── ut_kmeans.py │ │ │ ├── ut_kmedians.py │ │ │ ├── ut_kmedoids.py │ │ │ ├── ut_mbsas.py │ │ │ ├── ut_optics.py │ │ │ ├── ut_rock.py │ │ │ ├── ut_silhouette.py │ │ │ ├── ut_somsc.py │ │ │ ├── ut_syncnet.py │ │ │ ├── ut_syncsom.py │ │ │ ├── ut_ttsas.py │ │ │ ├── ut_visualizer.py │ │ │ └── ut_xmeans.py │ │ └── xmeans_templates.py │ ├── ttsas.py │ └── xmeans.py ├── container │ ├── __init__.py │ ├── cftree.py │ ├── examples │ │ ├── __init__.py │ │ └── kdtree_examples.py │ ├── kdtree.py │ └── tests │ │ ├── __init__.py │ │ └── unit │ │ ├── __init__.py │ │ ├── ut_cftree.py │ │ └── ut_kdtree.py ├── core │ ├── 32-bit │ │ ├── linux │ │ │ └── .linux.info │ │ ├── macos │ │ │ └── .macos.info │ │ └── win │ │ │ └── .win.info │ ├── 64-bit │ │ ├── linux │ │ │ └── .linux.info │ │ ├── macos │ │ │ └── .macos.info │ │ └── win │ │ │ └── .win.info │ ├── __init__.py │ ├── agglomerative_wrapper.py │ ├── bsas_wrapper.py │ ├── clique_wrapper.py │ ├── converter.py │ ├── cure_wrapper.py │ ├── dbscan_wrapper.py │ ├── definitions.py │ ├── elbow_wrapper.py │ ├── fcm_wrapper.py │ ├── gmeans_wrapper.py │ ├── hhn_wrapper.py │ ├── hsyncnet_wrapper.py │ ├── kmeans_wrapper.py │ ├── kmedians_wrapper.py │ ├── kmedoids_wrapper.py │ ├── legion_wrapper.py │ ├── mbsas_wrapper.py │ ├── metric_wrapper.py │ ├── optics_wrapper.py │ ├── pam_build_wrapper.py │ ├── pcnn_wrapper.py │ ├── pyclustering_package.py │ ├── rock_wrapper.py │ ├── silhouette_wrapper.py │ ├── som_wrapper.py │ ├── sync_wrapper.py │ ├── syncnet_wrapper.py │ ├── syncpr_wrapper.py │ ├── tests │ │ ├── __init__.py │ │ └── ut_package.py │ ├── ttsas_wrapper.py │ ├── wrapper.py │ └── xmeans_wrapper.py ├── gcolor │ ├── __init__.py │ ├── dsatur.py │ ├── examples │ │ ├── __init__.py │ │ ├── dsatur_examples.py │ │ ├── hysteresis_examples.py │ │ └── sync_examples.py │ ├── hysteresis.py │ ├── sync.py │ └── tests │ │ ├── __init__.py │ │ ├── ut_dsatur.py │ │ ├── ut_hysteresis.py │ │ └── ut_sync.py ├── nnet │ ├── __init__.py │ ├── cnn.py │ ├── dynamic_visualizer.py │ ├── examples │ │ ├── __init__.py │ │ ├── cnn_examples.py │ │ ├── fsync_examples.py │ │ ├── hhn_examples.py │ │ ├── hhn_segmentation.py │ │ ├── hysteresis_examples.py │ │ ├── legion_examples.py │ │ ├── legion_segmentation.py │ │ ├── pcnn_examples.py │ │ ├── pcnn_segmentation.py │ │ ├── som_examples.py │ │ ├── som_recognition.py │ │ ├── sync_examples.py │ │ ├── syncpr_examples.py │ │ └── syncsegm_examples.py │ ├── fsync.py │ ├── hhn.py │ ├── hysteresis.py │ ├── legion.py │ ├── pcnn.py │ ├── som.py │ ├── sync.py │ ├── syncpr.py │ ├── syncsegm.py │ └── tests │ │ ├── __init__.py │ │ ├── hhn_templates.py │ │ ├── integration │ │ ├── __init__.py │ │ ├── it_hhn.py │ │ ├── it_legion.py │ │ ├── it_pcnn.py │ │ ├── it_som.py │ │ ├── it_sync.py │ │ ├── it_syncpr.py │ │ └── it_syncsegm.py │ │ ├── legion_templates.py │ │ ├── pcnn_templates.py │ │ ├── som_templates.py │ │ ├── sync_templates.py │ │ ├── syncpr_templates.py │ │ ├── syncsegm_templates.py │ │ └── unit │ │ ├── __init__.py │ │ ├── ut_cnn.py │ │ ├── ut_dynamic_visualizer.py │ │ ├── ut_fsync.py │ │ ├── ut_hhn.py │ │ ├── ut_hysteresis.py │ │ ├── ut_legion.py │ │ ├── ut_nnet.py │ │ ├── ut_pcnn.py │ │ ├── ut_som.py │ │ ├── ut_sync.py │ │ ├── ut_syncpr.py │ │ └── ut_syncsegm.py ├── samples │ ├── __init__.py │ ├── definitions.py │ ├── graphs │ │ ├── GraphBrokenCircle1.grpr │ │ ├── GraphBrokenCircle2.grpr │ │ ├── GraphFivePointedFrameStar.grpr │ │ ├── GraphFivePointedStar.grpr │ │ ├── GraphFull1.grpr │ │ ├── GraphFull2.grpr │ │ ├── GraphOneCircle1.grpr │ │ ├── GraphOneCircle2.grpr │ │ ├── GraphOneCircle3.grpr │ │ ├── GraphOneCrossroad.grpr │ │ ├── GraphOneLine.grpr │ │ ├── GraphSimple1.grpr │ │ ├── GraphSimple2.grpr │ │ ├── GraphSimple3.grpr │ │ └── GraphTwoCrossroads.grpr │ ├── images │ │ ├── ImageBuildings.png │ │ ├── ImageFieldFlower.png │ │ ├── ImageFieldTree.png │ │ ├── ImageNile.png │ │ ├── ImageNileSmall.png │ │ ├── ImageSimple01.png │ │ ├── ImageSimple02.png │ │ ├── ImageSimple03.png │ │ ├── ImageSimple04.png │ │ ├── ImageSimple05.png │ │ ├── ImageSimple06.png │ │ ├── ImageSimple07.png │ │ ├── ImageSimple08.png │ │ ├── ImageSimple09.png │ │ ├── ImageSimple10.png │ │ ├── ImageSimple11.png │ │ ├── ImageSimple12.png │ │ ├── ImageSimple13.png │ │ ├── ImageSimple14.png │ │ ├── ImageSimple15.png │ │ ├── ImageSimple16.png │ │ ├── ImageSimple17.png │ │ ├── ImageSimple18.png │ │ ├── ImageSimpleBeach.png │ │ ├── ImageSimpleBuilding.png │ │ ├── ImageSimpleFruits.png │ │ ├── ImageSimpleFruitsSmall.png │ │ ├── ImageThinBlackLines01.png │ │ ├── ImageThinBlackLines02.png │ │ ├── ImageThinBlackLines03.png │ │ ├── ImageWhiteSea.png │ │ ├── ImageWhiteSeaSmall.png │ │ ├── digits │ │ │ ├── Digit_0_Sample01.png │ │ │ ├── Digit_0_Sample02.png │ │ │ ├── Digit_0_Sample03.png │ │ │ ├── Digit_0_Sample04.png │ │ │ ├── Digit_0_Sample05.png │ │ │ ├── Digit_0_Sample06.png │ │ │ ├── Digit_0_Sample07.png │ │ │ ├── Digit_0_Sample08.png │ │ │ ├── Digit_0_Sample09.png │ │ │ ├── Digit_0_Sample10.png │ │ │ ├── Digit_0_Sample11.png │ │ │ ├── Digit_0_Sample12.png │ │ │ ├── Digit_0_Sample13.png │ │ │ ├── Digit_0_Sample14.png │ │ │ ├── Digit_0_Sample15.png │ │ │ ├── Digit_0_Sample16.png │ │ │ ├── Digit_0_Sample17.png │ │ │ ├── Digit_0_Sample18.png │ │ │ ├── Digit_0_Sample19.png │ │ │ ├── Digit_0_Sample20.png │ │ │ ├── Digit_0_Sample21.png │ │ │ ├── Digit_0_Sample22.png │ │ │ ├── Digit_0_Sample23.png │ │ │ ├── Digit_0_Sample24.png │ │ │ ├── Digit_0_Sample25.png │ │ │ ├── Digit_1_Sample01.png │ │ │ ├── Digit_1_Sample02.png │ │ │ ├── Digit_1_Sample03.png │ │ │ ├── Digit_1_Sample04.png │ │ │ ├── Digit_1_Sample05.png │ │ │ ├── Digit_1_Sample06.png │ │ │ ├── Digit_1_Sample07.png │ │ │ ├── Digit_1_Sample08.png │ │ │ ├── Digit_1_Sample09.png │ │ │ ├── Digit_1_Sample10.png │ │ │ ├── Digit_1_Sample11.png │ │ │ ├── Digit_1_Sample12.png │ │ │ ├── Digit_1_Sample13.png │ │ │ ├── Digit_1_Sample14.png │ │ │ ├── Digit_1_Sample15.png │ │ │ ├── Digit_1_Sample16.png │ │ │ ├── Digit_1_Sample17.png │ │ │ ├── Digit_1_Sample18.png │ │ │ ├── Digit_1_Sample19.png │ │ │ ├── Digit_1_Sample20.png │ │ │ ├── Digit_1_Sample21.png │ │ │ ├── Digit_1_Sample22.png │ │ │ ├── Digit_1_Sample23.png │ │ │ ├── Digit_1_Sample24.png │ │ │ ├── Digit_1_Sample25.png │ │ │ ├── Digit_2_Sample01.png │ │ │ ├── Digit_2_Sample02.png │ │ │ ├── Digit_2_Sample03.png │ │ │ ├── Digit_2_Sample04.png │ │ │ ├── Digit_2_Sample05.png │ │ │ ├── Digit_2_Sample06.png │ │ │ ├── Digit_2_Sample07.png │ │ │ ├── Digit_2_Sample08.png │ │ │ ├── Digit_2_Sample09.png │ │ │ ├── Digit_2_Sample10.png │ │ │ ├── Digit_2_Sample11.png │ │ │ ├── Digit_2_Sample12.png │ │ │ ├── Digit_2_Sample13.png │ │ │ ├── Digit_2_Sample14.png │ │ │ ├── Digit_2_Sample15.png │ │ │ ├── Digit_2_Sample16.png │ │ │ ├── Digit_2_Sample17.png │ │ │ ├── Digit_2_Sample18.png │ │ │ ├── Digit_2_Sample19.png │ │ │ ├── Digit_2_Sample20.png │ │ │ ├── Digit_2_Sample21.png │ │ │ ├── Digit_2_Sample22.png │ │ │ ├── Digit_2_Sample23.png │ │ │ ├── Digit_2_Sample24.png │ │ │ ├── Digit_2_Sample25.png │ │ │ ├── Digit_3_Sample01.png │ │ │ ├── Digit_3_Sample02.png │ │ │ ├── Digit_3_Sample03.png │ │ │ ├── Digit_3_Sample04.png │ │ │ ├── Digit_3_Sample05.png │ │ │ ├── Digit_3_Sample06.png │ │ │ ├── Digit_3_Sample07.png │ │ │ ├── Digit_3_Sample08.png │ │ │ ├── Digit_3_Sample09.png │ │ │ ├── Digit_3_Sample10.png │ │ │ ├── Digit_3_Sample11.png │ │ │ ├── Digit_3_Sample12.png │ │ │ ├── Digit_3_Sample13.png │ │ │ ├── Digit_3_Sample14.png │ │ │ ├── Digit_3_Sample15.png │ │ │ ├── Digit_3_Sample16.png │ │ │ ├── Digit_3_Sample17.png │ │ │ ├── Digit_3_Sample18.png │ │ │ ├── Digit_3_Sample19.png │ │ │ ├── Digit_3_Sample20.png │ │ │ ├── Digit_3_Sample21.png │ │ │ ├── Digit_3_Sample22.png │ │ │ ├── Digit_3_Sample23.png │ │ │ ├── Digit_3_Sample24.png │ │ │ ├── Digit_3_Sample25.png │ │ │ ├── Digit_4_Sample01.png │ │ │ ├── Digit_4_Sample02.png │ │ │ ├── Digit_4_Sample03.png │ │ │ ├── Digit_4_Sample04.png │ │ │ ├── Digit_4_Sample05.png │ │ │ ├── Digit_4_Sample06.png │ │ │ ├── Digit_4_Sample07.png │ │ │ ├── Digit_4_Sample08.png │ │ │ ├── Digit_4_Sample09.png │ │ │ ├── Digit_4_Sample10.png │ │ │ ├── Digit_4_Sample11.png │ │ │ ├── Digit_4_Sample12.png │ │ │ ├── Digit_4_Sample13.png │ │ │ ├── Digit_4_Sample14.png │ │ │ ├── Digit_4_Sample15.png │ │ │ ├── Digit_4_Sample16.png │ │ │ ├── Digit_4_Sample17.png │ │ │ ├── Digit_4_Sample18.png │ │ │ ├── Digit_4_Sample19.png │ │ │ ├── Digit_4_Sample20.png │ │ │ ├── Digit_4_Sample21.png │ │ │ ├── Digit_4_Sample22.png │ │ │ ├── Digit_4_Sample23.png │ │ │ ├── Digit_4_Sample24.png │ │ │ ├── Digit_4_Sample25.png │ │ │ ├── Digit_5_Sample01.png │ │ │ ├── Digit_5_Sample02.png │ │ │ ├── Digit_5_Sample03.png │ │ │ ├── Digit_5_Sample04.png │ │ │ ├── Digit_5_Sample05.png │ │ │ ├── Digit_5_Sample06.png │ │ │ ├── Digit_5_Sample07.png │ │ │ ├── Digit_5_Sample08.png │ │ │ ├── Digit_5_Sample09.png │ │ │ ├── Digit_5_Sample10.png │ │ │ ├── Digit_5_Sample11.png │ │ │ ├── Digit_5_Sample12.png │ │ │ ├── Digit_5_Sample13.png │ │ │ ├── Digit_5_Sample14.png │ │ │ ├── Digit_5_Sample15.png │ │ │ ├── Digit_5_Sample16.png │ │ │ ├── Digit_5_Sample17.png │ │ │ ├── Digit_5_Sample18.png │ │ │ ├── Digit_5_Sample19.png │ │ │ ├── Digit_5_Sample20.png │ │ │ ├── Digit_5_Sample21.png │ │ │ ├── Digit_5_Sample22.png │ │ │ ├── Digit_5_Sample23.png │ │ │ ├── Digit_5_Sample24.png │ │ │ ├── Digit_5_Sample25.png │ │ │ ├── Digit_6_Sample01.png │ │ │ ├── Digit_6_Sample02.png │ │ │ ├── Digit_6_Sample03.png │ │ │ ├── Digit_6_Sample04.png │ │ │ ├── Digit_6_Sample05.png │ │ │ ├── Digit_6_Sample06.png │ │ │ ├── Digit_6_Sample07.png │ │ │ ├── Digit_6_Sample08.png │ │ │ ├── Digit_6_Sample09.png │ │ │ ├── Digit_6_Sample10.png │ │ │ ├── Digit_6_Sample11.png │ │ │ ├── Digit_6_Sample12.png │ │ │ ├── Digit_6_Sample13.png │ │ │ ├── Digit_6_Sample14.png │ │ │ ├── Digit_6_Sample15.png │ │ │ ├── Digit_6_Sample16.png │ │ │ ├── Digit_6_Sample17.png │ │ │ ├── Digit_6_Sample18.png │ │ │ ├── Digit_6_Sample19.png │ │ │ ├── Digit_6_Sample20.png │ │ │ ├── Digit_6_Sample21.png │ │ │ ├── Digit_6_Sample22.png │ │ │ ├── Digit_6_Sample23.png │ │ │ ├── Digit_6_Sample24.png │ │ │ ├── Digit_6_Sample25.png │ │ │ ├── Digit_7_Sample01.png │ │ │ ├── Digit_7_Sample02.png │ │ │ ├── Digit_7_Sample03.png │ │ │ ├── Digit_7_Sample04.png │ │ │ ├── Digit_7_Sample05.png │ │ │ ├── Digit_7_Sample06.png │ │ │ ├── Digit_7_Sample07.png │ │ │ ├── Digit_7_Sample08.png │ │ │ ├── Digit_7_Sample09.png │ │ │ ├── Digit_7_Sample10.png │ │ │ ├── Digit_7_Sample11.png │ │ │ ├── Digit_7_Sample12.png │ │ │ ├── Digit_7_Sample13.png │ │ │ ├── Digit_7_Sample14.png │ │ │ ├── Digit_7_Sample15.png │ │ │ ├── Digit_7_Sample16.png │ │ │ ├── Digit_7_Sample17.png │ │ │ ├── Digit_7_Sample18.png │ │ │ ├── Digit_7_Sample19.png │ │ │ ├── Digit_7_Sample20.png │ │ │ ├── Digit_7_Sample21.png │ │ │ ├── Digit_7_Sample22.png │ │ │ ├── Digit_7_Sample23.png │ │ │ ├── Digit_7_Sample24.png │ │ │ ├── Digit_7_Sample25.png │ │ │ ├── Digit_8_Sample01.png │ │ │ ├── Digit_8_Sample02.png │ │ │ ├── Digit_8_Sample03.png │ │ │ ├── Digit_8_Sample04.png │ │ │ ├── Digit_8_Sample05.png │ │ │ ├── Digit_8_Sample06.png │ │ │ ├── Digit_8_Sample07.png │ │ │ ├── Digit_8_Sample08.png │ │ │ ├── Digit_8_Sample09.png │ │ │ ├── Digit_8_Sample10.png │ │ │ ├── Digit_8_Sample11.png │ │ │ ├── Digit_8_Sample12.png │ │ │ ├── Digit_8_Sample13.png │ │ │ ├── Digit_8_Sample14.png │ │ │ ├── Digit_8_Sample15.png │ │ │ ├── Digit_8_Sample16.png │ │ │ ├── Digit_8_Sample17.png │ │ │ ├── Digit_8_Sample18.png │ │ │ ├── Digit_8_Sample19.png │ │ │ ├── Digit_8_Sample20.png │ │ │ ├── Digit_8_Sample21.png │ │ │ ├── Digit_8_Sample22.png │ │ │ ├── Digit_8_Sample23.png │ │ │ ├── Digit_8_Sample24.png │ │ │ ├── Digit_8_Sample25.png │ │ │ ├── Digit_9_Sample01.png │ │ │ ├── Digit_9_Sample02.png │ │ │ ├── Digit_9_Sample03.png │ │ │ ├── Digit_9_Sample04.png │ │ │ ├── Digit_9_Sample05.png │ │ │ ├── Digit_9_Sample06.png │ │ │ ├── Digit_9_Sample07.png │ │ │ ├── Digit_9_Sample08.png │ │ │ ├── Digit_9_Sample09.png │ │ │ ├── Digit_9_Sample10.png │ │ │ ├── Digit_9_Sample11.png │ │ │ ├── Digit_9_Sample12.png │ │ │ ├── Digit_9_Sample13.png │ │ │ ├── Digit_9_Sample14.png │ │ │ ├── Digit_9_Sample15.png │ │ │ ├── Digit_9_Sample16.png │ │ │ ├── Digit_9_Sample17.png │ │ │ ├── Digit_9_Sample18.png │ │ │ ├── Digit_9_Sample19.png │ │ │ ├── Digit_9_Sample20.png │ │ │ ├── Digit_9_Sample21.png │ │ │ ├── Digit_9_Sample22.png │ │ │ ├── Digit_9_Sample23.png │ │ │ ├── Digit_9_Sample24.png │ │ │ └── Digit_9_Sample25.png │ │ └── symbols │ │ │ ├── Symbol_A_Sample01.png │ │ │ ├── Symbol_B_Sample01.png │ │ │ ├── Symbol_C_Sample01.png │ │ │ ├── Symbol_D_Sample01.png │ │ │ ├── Symbol_E_Sample01.png │ │ │ ├── Symbol_F_Sample01.png │ │ │ ├── Symbol_G_Sample01.png │ │ │ ├── Symbol_H_Sample01.png │ │ │ ├── Symbol_I_Sample01.png │ │ │ ├── Symbol_J_Sample01.png │ │ │ ├── Symbol_K_Sample01.png │ │ │ ├── Symbol_L_Sample01.png │ │ │ ├── Symbol_M_Sample01.png │ │ │ ├── Symbol_N_Sample01.png │ │ │ ├── Symbol_O_Sample01.png │ │ │ ├── Symbol_P_Sample01.png │ │ │ ├── Symbol_Q_Sample01.png │ │ │ ├── Symbol_R_Sample01.png │ │ │ ├── Symbol_S_Sample01.png │ │ │ ├── Symbol_T_Sample01.png │ │ │ ├── Symbol_U_Sample01.png │ │ │ ├── Symbol_V_Sample01.png │ │ │ ├── Symbol_W_Sample01.png │ │ │ ├── Symbol_X_Sample01.png │ │ │ ├── Symbol_Y_Sample01.png │ │ │ └── Symbol_Z_Sample01.png │ └── samples │ │ ├── famous │ │ ├── Iris.answer │ │ ├── Iris.data │ │ └── OldFaithful.data │ │ ├── fcps │ │ ├── Atom.data │ │ ├── Chainlink.data │ │ ├── EngyTime.data │ │ ├── GolfBall.data │ │ ├── Hepta.data │ │ ├── Lsun.data │ │ ├── Target.data │ │ ├── Tetra.data │ │ ├── TwoDiamonds.data │ │ └── WingNut.data │ │ └── simple │ │ ├── Elongate.answer │ │ ├── Elongate.data │ │ ├── Simple01.answer │ │ ├── Simple01.data │ │ ├── Simple02.answer │ │ ├── Simple02.data │ │ ├── Simple03.answer │ │ ├── Simple03.data │ │ ├── Simple04.answer │ │ ├── Simple04.data │ │ ├── Simple05.answer │ │ ├── Simple05.data │ │ ├── Simple06.answer │ │ ├── Simple06.data │ │ ├── Simple07.answer │ │ ├── Simple07.data │ │ ├── Simple08.answer │ │ ├── Simple08.data │ │ ├── Simple09.answer │ │ ├── Simple09.data │ │ ├── Simple10.answer │ │ ├── Simple10.data │ │ ├── Simple11.answer │ │ ├── Simple11.data │ │ ├── Simple12.answer │ │ ├── Simple12.data │ │ ├── Simple13.answer │ │ ├── Simple13.data │ │ ├── Simple14.answer │ │ ├── Simple14.data │ │ ├── Simple15.answer │ │ └── Simple15.data ├── tests │ ├── __init__.py │ ├── __main__.py │ ├── assertion.py │ ├── suite_holder.py │ └── tests_runner.py └── utils │ ├── __init__.py │ ├── color.py │ ├── dimension.py │ ├── examples │ ├── __init__.py │ └── utils_examples.py │ ├── graph.py │ ├── metric.py │ ├── sampling.py │ └── tests │ ├── __init__.py │ ├── integration │ ├── __init__.py │ └── it_metric.py │ ├── sampling_templates.py │ └── unit │ ├── __init__.py │ ├── ut_dimension.py │ ├── ut_metric.py │ ├── ut_sampling.py │ └── ut_utils.py └── setup.py /.codedocs: -------------------------------------------------------------------------------- 1 | DOXYFILE = docs/doxygen_conf_pyclustering -------------------------------------------------------------------------------- /.github/workflows/build-pyclustering.yml: -------------------------------------------------------------------------------- 1 | name: Build and Test PyClustering Library 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | test-pypi: 7 | name: Build and Test PyClustering Library 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Clone repository 11 | uses: actions/checkout@v1 12 | - name: Set rights to run CI script 13 | run: chmod u+x ci/github-ci.sh 14 | - name: Run a multi-line script 15 | run: ./ci/github-ci.sh TEST_CMAKE_PYCLUSTERING_BUILD 16 | -------------------------------------------------------------------------------- /.github/workflows/test-pypi-installer.yml: -------------------------------------------------------------------------------- 1 | name: Test PyPi Installer 2 | 3 | on: [workflow_dispatch] 4 | 5 | jobs: 6 | test-pypi: 7 | name: Test PyPi Installer 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Clone repository 11 | uses: actions/checkout@v1 12 | - name: Set rights to run CI script 13 | run: chmod u+x ci/github-ci.sh 14 | - name: Run a multi-line script 15 | run: ./ci/github-ci.sh PYPI_INSTALLER 16 | -------------------------------------------------------------------------------- /.github/workflows/test-testpypi-installer.yml: -------------------------------------------------------------------------------- 1 | name: Test TestPyPi Installer 2 | 3 | on: [workflow_dispatch] 4 | 5 | jobs: 6 | test-pypi: 7 | name: Test TestPyPi Installer 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Clone repository 11 | uses: actions/checkout@v1 12 | - name: Set rights to run CI script 13 | run: chmod u+x ci/github-ci.sh 14 | - name: Run a multi-line script 15 | run: ./ci/github-ci.sh TESTPYPI_INSTALLER 16 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include MANIFEST.in 2 | graft ccore -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: '{build}' 2 | 3 | 4 | os: Visual Studio 2015 5 | 6 | 7 | platform: x64 8 | 9 | 10 | init: [] 11 | 12 | 13 | environment: 14 | CYGWIN_PATH: C:\cygwin64\bin\bash 15 | PYTHON: C:\Python36-x64\python.exe 16 | TESTING_RESULT: "Success" 17 | GITHUB_TOKEN: 18 | secure: gzN7IIwlku2+7LB0SO+41zfT04Iir7WgCypBx/lwniP5JbxFl4dtjjMN/jj7sQZ1 19 | YANDEX_DISK_TOKEN: 20 | secure: R//j8C73CXwMBOyzobmPYGMUz/uPo9QyQrYXpJyvPIR5EeaX7f054/z1uddYdYux 21 | matrix: 22 | - CI_JOB: "BUILD_WINDOWS_CCORE" 23 | - CI_JOB: "UT_WINDOWS_CCORE" 24 | - CI_JOB: "BUILD_CYGWIN_CCORE" 25 | - CI_JOB: "PYCLUSTERING_WINDOWS_X86" 26 | - CI_JOB: "PYCLUSTERING_WINDOWS_X64" 27 | 28 | 29 | build_script: 30 | - ps: ./ci/appveyor-ci.ps1 31 | -------------------------------------------------------------------------------- /ccore/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ccore 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.cdt.managedbuilder.core.genmakebuilder 10 | clean,full,incremental, 11 | 12 | 13 | 14 | 15 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 16 | full,incremental, 17 | 18 | 19 | 20 | 21 | 22 | org.eclipse.cdt.core.cnature 23 | org.eclipse.cdt.core.ccnature 24 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 26 | 27 | 28 | -------------------------------------------------------------------------------- /ccore/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # @authors Andrei Novikov (pyclustering@yandex.ru) 3 | # @date 2014-2020 4 | # @copyright BSD-3-Clause 5 | # 6 | 7 | 8 | cmake_minimum_required(VERSION 3.10) 9 | 10 | 11 | project(pyclustering VERSION 0.11.0 LANGUAGES CXX) 12 | 13 | 14 | file(MAKE_DIRECTORY build) 15 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/build) 16 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/build) 17 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/build) 18 | 19 | add_subdirectory(bvt) 20 | add_subdirectory(external) 21 | add_subdirectory(src) 22 | add_subdirectory(tst) 23 | -------------------------------------------------------------------------------- /ccore/bvt/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # @authors Andrei Novikov (pyclustering@yandex.ru) 3 | # @date 2014-2020 4 | # @copyright BSD-3-Clause 5 | # 6 | 7 | 8 | cmake_minimum_required(VERSION 3.10) 9 | 10 | # C++ standard 11 | set(CMAKE_CXX_STANDARD 14) 12 | set(CMAKE_CXX_STANDARD_REQUIRED True) 13 | 14 | # Headers 15 | include_directories(${PROJECT_SOURCE_DIR}/include) 16 | 17 | # Build target - build verify test for static library 18 | add_executable(bvt-static static-test.cpp) 19 | add_dependencies(bvt-static pyclustering-static) 20 | target_link_libraries(bvt-static PUBLIC pyclustering-static) 21 | 22 | # Build target - build verify test for shared library 23 | add_executable(bvt-shared shared-test.cpp) 24 | add_dependencies(bvt-shared pyclustering-shared) 25 | 26 | if(CMAKE_DL_LIBS) 27 | target_link_libraries(bvt-shared ${CMAKE_DL_LIBS}) 28 | endif() 29 | -------------------------------------------------------------------------------- /ccore/bvt/static-test.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | #define SUCCESS 0 14 | #define FAILURE_INCORRECT_RESULT 1 15 | 16 | 17 | int main() { 18 | pyclustering::clst::gmeans_data result; 19 | pyclustering::clst::gmeans algorithm(2); 20 | 21 | algorithm.process({ { 1.0 }, { 1.2 }, { 1.1 }, { 3.0 }, { 3.2 }, { 3.1 }, { 8.0 }, { 8.2 }, { 8.1 } }, result); 22 | 23 | if (result.clusters().empty()) { 24 | return FAILURE_INCORRECT_RESULT; 25 | } 26 | 27 | return SUCCESS; 28 | } 29 | -------------------------------------------------------------------------------- /ccore/external/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # @authors Andrei Novikov (pyclustering@yandex.ru) 3 | # @date 2014-2020 4 | # @copyright BSD-3-Clause 5 | # 6 | 7 | 8 | cmake_minimum_required(VERSION 3.10) 9 | 10 | # C++ standard 11 | set(CMAKE_CXX_STANDARD 14) 12 | set(CMAKE_CXX_STANDARD_REQUIRED True) 13 | 14 | # Source for google test framework 15 | file(GLOB_RECURSE GTEST_SOURCES src/gtest "*.cpp") 16 | 17 | # Headers 18 | include_directories(include) 19 | 20 | # Build targets 21 | add_library(gtest STATIC ${GTEST_SOURCES}) 22 | -------------------------------------------------------------------------------- /ccore/external/libs/linux/x64/.linux.x64.libs: -------------------------------------------------------------------------------- 1 | Thrird-party libraries for linux x64 are placed here -------------------------------------------------------------------------------- /ccore/external/libs/linux/x86/.linux.x86.libs: -------------------------------------------------------------------------------- 1 | Thrird-party libraries for linux x86 are placed here -------------------------------------------------------------------------------- /ccore/external/libs/windows/x64/.win.x64.libs: -------------------------------------------------------------------------------- 1 | Thrird-party libraries for windows x64 are placed here -------------------------------------------------------------------------------- /ccore/external/libs/windows/x86/.win.x86.libs: -------------------------------------------------------------------------------- 1 | Thrird-party libraries for windows x86 are placed here -------------------------------------------------------------------------------- /ccore/include/pyclustering/cluster/data_type.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | namespace pyclustering { 5 | 6 | namespace clst { 7 | 8 | /*! 9 | 10 | @brief Defines data representation (points, distance matrix) that is used for processing. 11 | 12 | */ 13 | enum class data_t { 14 | POINTS, 15 | DISTANCE_MATRIX 16 | }; 17 | 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/cluster/mbsas_data.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | 17 | 18 | namespace pyclustering { 19 | 20 | namespace clst { 21 | 22 | 23 | using mbsas_data = bsas_data; 24 | 25 | 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/cluster/silhouette_data.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace clst { 18 | 19 | 20 | /*! 21 | 22 | @brief Sequence container that contains Silhouette's score for each point. 23 | 24 | */ 25 | using silhouette_sequence = std::vector; 26 | 27 | 28 | /*! 29 | 30 | @class silhouette_data silhouette_data.hpp pyclustering/cluster/silhouette_data.hpp 31 | 32 | @brief Silhouette analysis result that contain information about Silhouette score for each point. 33 | 34 | */ 35 | class silhouette_data { 36 | private: 37 | silhouette_sequence m_scores; 38 | 39 | public: 40 | /*! 41 | 42 | @brief Returns constant reference to the container with Silhouette score for each point 43 | 44 | */ 45 | const silhouette_sequence & get_score() const { return m_scores; } 46 | 47 | /*! 48 | 49 | @brief Returns reference to the container with Silhouette score for each point 50 | 51 | */ 52 | silhouette_sequence & get_score() { return m_scores; } 53 | }; 54 | 55 | 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/cluster/somsc_data.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | #include 14 | 15 | 16 | namespace pyclustering { 17 | 18 | namespace clst { 19 | 20 | 21 | using somsc_data = cluster_data; 22 | 23 | 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/cluster/ttsas_data.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | 17 | 18 | namespace pyclustering { 19 | 20 | namespace clst { 21 | 22 | 23 | /*! 24 | 25 | @brief A storage where TTSAS clustering results are stored. 26 | 27 | */ 28 | using ttsas_data = bsas_data; 29 | 30 | 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/cluster/xmeans_data.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | #include 19 | 20 | 21 | namespace pyclustering { 22 | 23 | namespace clst { 24 | 25 | 26 | using xmeans_data = kmeans_data; 27 | 28 | 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/container/ensemble_data.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace container { 18 | 19 | 20 | template 21 | using ensemble_data = std::vector; 22 | 23 | 24 | using basic_ensemble = std::vector; 25 | using basic_ensemble_data = std::vector; 26 | 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /ccore/include/pyclustering/differential/equation.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | #include 14 | 15 | #include 16 | #include 17 | 18 | 19 | namespace pyclustering { 20 | 21 | namespace differential { 22 | 23 | 24 | template 25 | using equation = std::function &, const differ_extra &, differ_state &) >; 26 | 27 | 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/differential/solve_type.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | #include 14 | 15 | 16 | namespace pyclustering { 17 | 18 | namespace differential { 19 | 20 | 21 | enum class solve_type { 22 | FORWARD_EULER, 23 | RUNGE_KUTTA_4, 24 | RUNGE_KUTTA_FEHLBERG_45, 25 | }; 26 | 27 | 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/interface/agglomerative_interface.h: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | #include 15 | 16 | 17 | /*! 18 | 19 | @brief Clustering algorithm Agglomerative returns allocated clusters. 20 | @details Caller should destroy returned result in 'pyclustering_package'. 21 | 22 | @param[in] p_sample: input data for clustering. 23 | @param[in] p_number_clusters: amount of clusters that should be allocated. 24 | @param[in] p_link: type of links for merging clusters. 25 | 26 | @return Returns result of clustering - array of allocated clusters. The last cluster in the 27 | array is noise. 28 | 29 | */ 30 | extern "C" DECLARATION pyclustering_package * agglomerative_algorithm(const pyclustering_package * const p_sample, const std::size_t p_number_clusters, const std::size_t p_link); 31 | -------------------------------------------------------------------------------- /ccore/include/pyclustering/interface/interface_property.h: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | 15 | /** 16 | * 17 | * @brief Returns text description of the library 18 | * 19 | * @returns Returns const char pointer to text library description. 20 | * 21 | */ 22 | extern "C" DECLARATION void * get_interface_description(); 23 | 24 | 25 | /** 26 | * 27 | * @brief Returns version of the library interface 28 | * 29 | * @returns Returns const char pointer to version of the library interface. 30 | * 31 | */ 32 | extern "C" DECLARATION void * get_interface_version(); -------------------------------------------------------------------------------- /ccore/include/pyclustering/interface/pyclustering_interface.h: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | #include 14 | 15 | 16 | /** 17 | * 18 | * @brief Deallocate pyclustering package. 19 | * 20 | * @param[in]: package: pointer to clustering results. 21 | * 22 | */ 23 | extern "C" DECLARATION void free_pyclustering_package(pyclustering_package * package); 24 | 25 | -------------------------------------------------------------------------------- /ccore/include/pyclustering/interface/rock_interface.h: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | #include 15 | 16 | 17 | /** 18 | * 19 | * @brief Clustering algorithm ROCK returns allocated clusters. 20 | * @details Caller should destroy returned result in 'pyclustering_package'. 21 | * 22 | * @param[in] p_sample: input data for clustering. 23 | * @param[in] p_radius: connectivity radius (similarity threshold). 24 | * @param[in] p_number_clusters: defines number of clusters that should be allocated from the input data set. 25 | * @param[in] p_threshold: value that defines degree of normalization that influences 26 | * on choice of clusters for merging during processing. 27 | * 28 | * @return Returns result of clustering - array of allocated clusters in the pyclustering package. 29 | * 30 | */ 31 | extern "C" DECLARATION pyclustering_package * rock_algorithm(const pyclustering_package * const p_sample, const double p_radius, const size_t p_number_clusters, const double p_threshold); 32 | -------------------------------------------------------------------------------- /ccore/include/pyclustering/nnet/network.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | namespace pyclustering { 14 | 15 | namespace nnet { 16 | 17 | 18 | enum class initial_type { 19 | RANDOM_GAUSSIAN, 20 | EQUIPARTITION, 21 | }; 22 | 23 | 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/utils/linalg.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | 15 | 16 | namespace pyclustering { 17 | 18 | namespace utils { 19 | 20 | namespace linalg { 21 | 22 | using sequence = std::vector; 23 | using matrix = std::vector; 24 | 25 | 26 | sequence subtract(const sequence & a, const sequence & b); 27 | 28 | sequence subtract(const sequence & a, const double b); 29 | 30 | sequence multiply(const sequence & a, const sequence & b); 31 | 32 | sequence multiply(const sequence & a, const double b); 33 | 34 | matrix multiply(const matrix & a, const sequence & b); 35 | 36 | sequence divide(const sequence & a, const sequence & b); 37 | 38 | sequence divide(const sequence & a, const double b); 39 | 40 | double sum(const sequence & a); 41 | 42 | sequence sum(const matrix & a, std::size_t axis = 0); 43 | 44 | } 45 | 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /ccore/include/pyclustering/utils/random.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | namespace pyclustering { 14 | 15 | namespace utils { 16 | 17 | namespace random { 18 | 19 | 20 | /** 21 | * 22 | * @brief Returns random value in specified range using uniform distribution. 23 | * 24 | * @param[in] p_from: Mean. 25 | * @param[in] p_to: Standard deviation. 26 | * 27 | * @return Returns random variable. 28 | * 29 | */ 30 | double generate_uniform_random(const double p_from = 0.0, const double p_to = 1.0); 31 | 32 | 33 | } 34 | 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /ccore/src/cluster/cluster_data.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | 12 | namespace pyclustering { 13 | 14 | namespace clst { 15 | 16 | 17 | cluster_sequence & cluster_data::clusters() { return m_clusters; } 18 | 19 | 20 | const cluster_sequence & cluster_data::clusters() const { return m_clusters; } 21 | 22 | 23 | size_t cluster_data::size() const { return m_clusters.size(); } 24 | 25 | 26 | cluster & cluster_data::operator[](const size_t p_index) { return m_clusters[p_index]; } 27 | 28 | 29 | const cluster & cluster_data::operator[](const size_t p_index) const { return m_clusters[p_index]; } 30 | 31 | 32 | bool cluster_data::operator==(const cluster_data & p_other) const { 33 | return (m_clusters == p_other.m_clusters); 34 | } 35 | 36 | 37 | bool cluster_data::operator!=(const cluster_data & p_other) const { 38 | return !(*this == p_other); 39 | } 40 | 41 | 42 | } 43 | 44 | } -------------------------------------------------------------------------------- /ccore/src/cluster/kmeans_data.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | namespace pyclustering { 14 | 15 | namespace clst { 16 | 17 | 18 | kmeans_data::kmeans_data(const bool p_iteration_observe) : 19 | m_observed(p_iteration_observe) 20 | { } 21 | 22 | 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /ccore/src/cluster/optics_descriptor.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace clst { 18 | 19 | 20 | const double optics_descriptor::NONE_DISTANCE = -1.0; 21 | 22 | 23 | optics_descriptor::optics_descriptor(const std::size_t p_index, const double p_core_distance, const double p_reachability_distance) : 24 | m_index(p_index), 25 | m_core_distance(p_core_distance), 26 | m_reachability_distance(p_reachability_distance), 27 | m_processed(false) 28 | { } 29 | 30 | 31 | void optics_descriptor::clear() { 32 | m_core_distance = optics_descriptor::NONE_DISTANCE; 33 | m_reachability_distance = optics_descriptor::NONE_DISTANCE; 34 | m_processed = false; 35 | } 36 | 37 | 38 | bool optics_pointer_descriptor_less::operator()(const optics_descriptor * p_object1, const optics_descriptor * p_object2) const { 39 | return p_object1->m_reachability_distance < p_object2->m_reachability_distance; 40 | } 41 | 42 | 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /ccore/src/cluster/somsc.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | 12 | using namespace pyclustering::nnet; 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace clst { 18 | 19 | 20 | somsc::somsc(const std::size_t p_amount_clusters, const std::size_t p_epoch) : 21 | m_amount_clusters(p_amount_clusters), 22 | m_epoch(p_epoch) 23 | { } 24 | 25 | 26 | void somsc::process(const dataset & p_data, somsc_data & p_result) { 27 | som_parameters params; 28 | som som_map(1, m_amount_clusters, som_conn_type::SOM_GRID_FOUR, params); 29 | som_map.train(p_data, m_epoch, true); 30 | 31 | p_result.clusters() = som_map.get_capture_objects(); 32 | } 33 | 34 | 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /ccore/src/container/adjacency_connector.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | 12 | namespace pyclustering { 13 | 14 | namespace container { 15 | 16 | std::ostream & operator<<(std::ostream & p_stream, const connection_t & p_structure) { 17 | switch (p_structure) { 18 | case connection_t::CONNECTION_ALL_TO_ALL: 19 | p_stream << "all-to-all"; 20 | break; 21 | 22 | case connection_t::CONNECTION_GRID_EIGHT: 23 | p_stream << "grid eight"; 24 | break; 25 | 26 | case connection_t::CONNECTION_GRID_FOUR: 27 | p_stream << "grid four"; 28 | break; 29 | 30 | case connection_t::CONNECTION_LIST_BIDIRECTIONAL: 31 | p_stream << "bidirectional list"; 32 | break; 33 | 34 | case connection_t::CONNECTION_NONE: 35 | p_stream << "none structure"; 36 | break; 37 | 38 | default: 39 | p_stream << "unknown structure"; 40 | break; 41 | } 42 | 43 | return p_stream; 44 | } 45 | 46 | 47 | } 48 | 49 | } -------------------------------------------------------------------------------- /ccore/src/interface/agglomerative_interface.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | 14 | 15 | pyclustering_package * agglomerative_algorithm(const pyclustering_package * const p_sample, const std::size_t p_number_clusters, const std::size_t p_link) { 16 | pyclustering::clst::agglomerative algorithm(p_number_clusters, (pyclustering::clst::agglomerative::type_link) p_link); 17 | 18 | pyclustering::dataset data; 19 | p_sample->extract(data); 20 | 21 | pyclustering::clst::agglomerative_data result; 22 | algorithm.process(data, result); 23 | 24 | pyclustering_package * package = create_package(&result.clusters()); 25 | 26 | return package; 27 | } 28 | -------------------------------------------------------------------------------- /ccore/src/interface/interface_property.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | const char * INTERFACE_DESCRIPTION = "pyclustering library is a C/C++ part of python pyclustering library"; 14 | const char * INTERFACE_VERSION = "0.11.0"; 15 | 16 | 17 | void * get_interface_description() { 18 | return (void *) INTERFACE_DESCRIPTION; 19 | } 20 | 21 | 22 | void * get_interface_version() { 23 | return (void *) INTERFACE_VERSION; 24 | } -------------------------------------------------------------------------------- /ccore/src/interface/pyclustering_interface.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | void free_pyclustering_package(pyclustering_package * package) { 14 | delete package; 15 | } 16 | -------------------------------------------------------------------------------- /ccore/src/interface/rock_interface.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | 13 | 14 | pyclustering_package * rock_algorithm(const pyclustering_package * const p_sample, const double p_radius, const size_t p_number_clusters, const double p_threshold) { 15 | pyclustering::dataset input_dataset; 16 | p_sample->extract(input_dataset); 17 | 18 | pyclustering::clst::rock solver(p_radius, p_number_clusters, p_threshold); 19 | 20 | pyclustering::clst::rock_data output_result; 21 | solver.process(input_dataset, output_result); 22 | 23 | pyclustering_package * package = create_package(&output_result.clusters()); 24 | return package; 25 | } 26 | -------------------------------------------------------------------------------- /ccore/src/parallel/spinlock.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace parallel { 18 | 19 | 20 | bool spinlock::try_lock() { 21 | return !m_lock.test_and_set(std::memory_order_acquire); 22 | } 23 | 24 | void spinlock::lock() { 25 | for(std::size_t i = 0; !try_lock(); i++) { 26 | if (i % 100) { 27 | std::this_thread::yield(); 28 | } 29 | } 30 | } 31 | 32 | void spinlock::unlock() { 33 | m_lock.clear(std::memory_order_release); 34 | } 35 | 36 | 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /ccore/src/parallel/task.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | namespace pyclustering { 14 | 15 | namespace parallel { 16 | 17 | 18 | task::task(const proc & p_task) : 19 | m_task(p_task) 20 | { 21 | m_ready.lock(); 22 | } 23 | 24 | 25 | void task::set_ready() { 26 | m_ready.unlock(); 27 | } 28 | 29 | 30 | void task::wait_ready() const { 31 | m_ready.lock(); 32 | } 33 | 34 | 35 | void task::operator()() { 36 | m_task(); 37 | } 38 | 39 | 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /ccore/src/parallel/thread_executor.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace parallel { 18 | 19 | 20 | thread_executor::thread_executor(const task_getter & p_getter) : 21 | m_stop(false), 22 | m_getter(p_getter), 23 | m_executor(&thread_executor::run, this) 24 | { } 25 | 26 | 27 | void thread_executor::run() { 28 | while(!m_stop) { 29 | task::ptr task = nullptr; 30 | m_getter(task); 31 | 32 | if (task) { 33 | (*task)(); 34 | task->set_ready(); 35 | } 36 | else { 37 | m_stop = true; 38 | } 39 | } 40 | } 41 | 42 | 43 | void thread_executor::stop() { 44 | m_stop = true; 45 | 46 | if (m_executor.joinable()) { 47 | m_executor.join(); 48 | } 49 | } 50 | 51 | 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /ccore/src/utils/math.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | 14 | namespace pyclustering { 15 | 16 | namespace utils { 17 | 18 | namespace math { 19 | 20 | 21 | double heaviside(const double value) { 22 | if (value >= 0.0) { return 1.0; } 23 | return 0.0; 24 | } 25 | 26 | 27 | } 28 | 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /ccore/src/utils/random.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | 15 | namespace pyclustering { 16 | 17 | namespace utils { 18 | 19 | namespace random { 20 | 21 | 22 | double generate_uniform_random(const double p_from, const double p_to) { 23 | unsigned seed = (unsigned) std::chrono::system_clock::now().time_since_epoch().count(); 24 | std::default_random_engine generator(seed); 25 | 26 | std::uniform_real_distribution distribution(p_from, p_to); 27 | return distribution(generator); 28 | } 29 | 30 | 31 | } 32 | 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /ccore/src/utils/stats.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | 13 | namespace pyclustering { 14 | 15 | namespace utils { 16 | 17 | namespace stats { 18 | 19 | 20 | std::vector critical_values(const std::size_t p_data_size) { 21 | std::vector result = { 0.576, 0.656, 0.787, 0.918, 1.092 }; 22 | const double size = static_cast(p_data_size); 23 | for (auto & value : result) { 24 | value /= (1.0 + 4.0 / size - 25.0 / size / size); 25 | } 26 | 27 | return result; 28 | } 29 | 30 | 31 | } 32 | 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /ccore/tst/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # @authors Andrei Novikov (pyclustering@yandex.ru) 3 | # @date 2014-2020 4 | # @copyright BSD-3-Clause 5 | # 6 | 7 | 8 | cmake_minimum_required(VERSION 3.10) 9 | 10 | 11 | # C++ standard 12 | set(CMAKE_CXX_STANDARD 14) 13 | set(CMAKE_CXX_STANDARD_REQUIRED True) 14 | 15 | 16 | # Sources 17 | file(GLOB_RECURSE UT_SOURCES "*.cpp") 18 | 19 | 20 | # Header folders 21 | include_directories(${PROJECT_SOURCE_DIR}/include) 22 | include_directories(${PROJECT_SOURCE_DIR}/external/include) 23 | 24 | 25 | # Library folders 26 | link_directories(${PROJECT_SOURCE_DIR}/build) 27 | 28 | 29 | # Build targets 30 | add_executable(utcore ${UT_SOURCES}) 31 | 32 | # Dependecies 33 | add_dependencies(utcore pyclustering-static) 34 | add_dependencies(utcore gtest) 35 | target_link_libraries(utcore PUBLIC pyclustering-static) 36 | target_link_libraries(utcore PUBLIC gtest) 37 | -------------------------------------------------------------------------------- /ccore/tst/answer.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | #pragma once 9 | 10 | 11 | #include 12 | 13 | 14 | using cluster = std::vector; 15 | using cluster_sequence = std::vector; 16 | 17 | using length_sequence = std::vector; 18 | 19 | 20 | class answer { 21 | private: 22 | cluster_sequence m_clusters; 23 | length_sequence m_cluster_lengths; 24 | cluster m_noise; 25 | 26 | public: 27 | const cluster_sequence & clusters() const { return m_clusters; } 28 | 29 | cluster_sequence & clusters() { return m_clusters; } 30 | 31 | const length_sequence & cluster_lengths() const { return m_cluster_lengths; } 32 | 33 | length_sequence & cluster_lengths() { return m_cluster_lengths; } 34 | 35 | const cluster & noise() const { return m_noise; } 36 | 37 | cluster & noise() { return m_noise; } 38 | }; -------------------------------------------------------------------------------- /ccore/tst/answer_reader.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include "answer.hpp" 13 | 14 | #include "samples.hpp" 15 | 16 | #include 17 | 18 | 19 | class answer_reader { 20 | private: 21 | const static std::string PATH_SIMPLE_ANSWER_FOLDER; 22 | 23 | const static std::map SIMPLE_ANSWER_MAP; 24 | 25 | public: 26 | static answer read(const std::string & p_path); 27 | 28 | static answer read(const SAMPLE_SIMPLE p_sample); 29 | }; 30 | -------------------------------------------------------------------------------- /ccore/tst/gtest.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {6487e715-7646-4435-a4e5-6ee47e64def6} 6 | 7 | 8 | 9 | 10 | Source Files 11 | 12 | 13 | -------------------------------------------------------------------------------- /ccore/tst/main.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | 12 | int main(int argc, char *argv[]) { 13 | ::testing::InitGoogleTest(&argc, argv); 14 | return RUN_ALL_TESTS(); 15 | } 16 | -------------------------------------------------------------------------------- /ccore/tst/utenv_utils.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include "utenv_utils.hpp" -------------------------------------------------------------------------------- /ccore/tst/utenv_utils.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #pragma once 10 | 11 | 12 | #include 13 | 14 | 15 | template 16 | static std::shared_ptr pack(const ContainerType & container) { 17 | pyclustering_package * package = create_package(&container); 18 | 19 | std::shared_ptr shared_package(package); 20 | 21 | return shared_package; 22 | } -------------------------------------------------------------------------------- /ccore/tst/utest-elbow.hpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #pragma once 11 | 12 | 13 | #include 14 | 15 | #include 16 | 17 | #include "utenv_check.hpp" 18 | 19 | #include 20 | 21 | 22 | using namespace pyclustering::clst; 23 | 24 | 25 | template 26 | void elbow_template(const dataset_ptr p_data, 27 | const std::size_t p_amount_clusters, 28 | const std::size_t p_kmin, 29 | const std::size_t p_kmax, 30 | const std::size_t p_step = 1) 31 | { 32 | elbow instance(p_kmin, p_kmax, p_step, 1000); 33 | 34 | elbow_data result; 35 | instance.process(*p_data, result); 36 | 37 | ASSERT_GT(result.get_amount(), p_kmin); 38 | ASSERT_LT(result.get_amount(), p_kmax); 39 | ASSERT_EQ(result.get_wce().size(), (p_kmax - p_kmin) / p_step + 1); 40 | ASSERT_GT(result.get_wce().front(), result.get_wce().back()); 41 | 42 | if (p_amount_clusters != static_cast(-1)) { 43 | ASSERT_EQ(result.get_amount(), p_amount_clusters); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ccore/tst/utest-interface-agglomerative.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include "utenv_utils.hpp" 15 | 16 | #include 17 | 18 | 19 | using namespace pyclustering; 20 | 21 | 22 | TEST(utest_interface_agglomerative, agglomerative_api) { 23 | std::shared_ptr sample = pack(dataset({ { 1 }, { 2 }, { 3 }, { 10 }, { 11 }, { 12 } })); 24 | 25 | pyclustering_package * agglomerative_result = agglomerative_algorithm(sample.get(), 2, 0); 26 | ASSERT_NE(nullptr, agglomerative_result); 27 | 28 | delete agglomerative_result; 29 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-bsas.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | #include "utenv_utils.hpp" 17 | 18 | #include 19 | 20 | 21 | using namespace pyclustering; 22 | using namespace pyclustering::utils::metric; 23 | 24 | 25 | TEST(utest_interface_bsas, bsas_api) { 26 | std::shared_ptr sample = pack(dataset({ { 1 }, { 2 }, { 3 }, { 10 }, { 11 }, { 12 } })); 27 | 28 | distance_metric metric = distance_metric_factory::euclidean_square(); 29 | 30 | pyclustering_package * bsas_result = bsas_algorithm(sample.get(), 2, 1.0, &metric); 31 | ASSERT_NE(nullptr, bsas_result); 32 | 33 | delete bsas_result; 34 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-clique.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include "utenv_utils.hpp" 15 | 16 | #include 17 | 18 | 19 | using namespace pyclustering; 20 | 21 | 22 | TEST(utest_interface_clique, clique_algorithm) { 23 | std::shared_ptr sample = pack(dataset({ { 1.0, 1.0 }, { 1.1, 1.0 }, { 1.2, 1.4 }, { 10.0, 10.3 }, { 10.1, 10.2 }, { 10.2, 10.4 } })); 24 | 25 | pyclustering_package * result = clique_algorithm(sample.get(), 2, 0); 26 | ASSERT_EQ((std::size_t) CLIQUE_PACKAGE_SIZE, result->size); 27 | 28 | delete result; 29 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-dbscan.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include "utenv_utils.hpp" 15 | 16 | #include 17 | 18 | 19 | using namespace pyclustering; 20 | 21 | 22 | TEST(utest_interface_dbscan, dbscan_algorithm) { 23 | std::shared_ptr sample = pack(dataset({ { 1.0, 1.0 }, { 1.1, 1.0 }, { 1.2, 1.4 }, { 10.0, 10.3 }, { 10.1, 10.2 }, { 10.2, 10.4 } })); 24 | 25 | pyclustering_package * result = dbscan_algorithm(sample.get(), 4, 2, 0); 26 | ASSERT_EQ(3U, result->size); /* allocated clustes + noise */ 27 | 28 | delete result; 29 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-fcm.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include "samples.hpp" 16 | #include "utenv_utils.hpp" 17 | 18 | 19 | using namespace pyclustering; 20 | 21 | 22 | TEST(utest_interface_fcm, fcm_api) { 23 | dataset_ptr data = simple_sample_factory::create_sample(SAMPLE_SIMPLE::SAMPLE_SIMPLE_01); 24 | std::shared_ptr sample = pack(*data); 25 | std::shared_ptr centers = pack(dataset({ { 3.7, 5.5 },{ 6.7, 7.5 } })); 26 | 27 | pyclustering_package * fcm_result = fcm_algorithm(sample.get(), centers.get(), 2.0, 0.001, 200); 28 | ASSERT_NE(nullptr, fcm_result); 29 | ASSERT_EQ(fcm_package_indexer::FCM_PACKAGE_SIZE, fcm_result->size); 30 | 31 | delete fcm_result; 32 | fcm_result = nullptr; 33 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-kmeans.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | #include "utenv_utils.hpp" 17 | 18 | #include 19 | 20 | 21 | using namespace pyclustering; 22 | using namespace pyclustering::utils::metric; 23 | 24 | 25 | TEST(utest_interface_kmeans, kmeans_api) { 26 | std::shared_ptr sample = pack(dataset({ { 1 }, { 2 }, { 3 }, { 10 }, { 11 }, { 12 } })); 27 | std::shared_ptr centers = pack(dataset({ { 1 }, { 10 } })); 28 | 29 | distance_metric metric = distance_metric_factory::euclidean_square(); 30 | 31 | pyclustering_package * kmeans_result = kmeans_algorithm(sample.get(), centers.get(), 0.001, 200, false, &metric); 32 | ASSERT_NE(nullptr, kmeans_result); 33 | 34 | delete kmeans_result; 35 | kmeans_result = nullptr; 36 | 37 | kmeans_result = kmeans_algorithm(sample.get(), centers.get(), 0.1, 100, true, &metric); 38 | ASSERT_NE(nullptr, kmeans_result); 39 | 40 | delete kmeans_result; 41 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-mbsas.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | #include "utenv_utils.hpp" 17 | 18 | #include 19 | 20 | 21 | using namespace pyclustering; 22 | using namespace pyclustering::utils::metric; 23 | 24 | 25 | TEST(utest_interface_mbsas, mbsas_api) { 26 | std::shared_ptr sample = pack(dataset({ { 1 }, { 2 }, { 3 }, { 10 }, { 11 }, { 12 } })); 27 | 28 | distance_metric metric = distance_metric_factory::euclidean_square(); 29 | 30 | pyclustering_package * mbsas_result = mbsas_algorithm(sample.get(), 2, 1.0, &metric); 31 | ASSERT_NE(nullptr, mbsas_result); 32 | 33 | delete mbsas_result; 34 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-optics.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include "utenv_utils.hpp" 15 | 16 | #include 17 | 18 | 19 | using namespace pyclustering; 20 | 21 | 22 | TEST(utest_interface_optics, optics_algorithm) { 23 | std::shared_ptr sample = pack(dataset({ { 1.0, 1.0 }, { 1.1, 1.0 }, { 1.2, 1.4 }, { 10.0, 10.3 }, { 10.1, 10.2 }, { 10.2, 10.4 } })); 24 | 25 | pyclustering_package * result = optics_algorithm(sample.get(), 4, 2, 2, 0); 26 | ASSERT_EQ((std::size_t) OPTICS_PACKAGE_SIZE, result->size); 27 | 28 | delete result; 29 | } -------------------------------------------------------------------------------- /ccore/tst/utest-interface-ttsas.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | #include 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | #include "utenv_utils.hpp" 17 | 18 | #include 19 | 20 | 21 | using namespace pyclustering; 22 | using namespace pyclustering::utils::metric; 23 | 24 | 25 | TEST(utest_interface_ttsas, ttsas_api) { 26 | std::shared_ptr sample = pack(dataset({ { 1 }, { 2 }, { 3 }, { 10 }, { 11 }, { 12 } })); 27 | 28 | distance_metric metric = distance_metric_factory::euclidean_square(); 29 | 30 | pyclustering_package * ttsas_result = ttsas_algorithm(sample.get(), 1.0, 5.0, &metric); 31 | ASSERT_NE(nullptr, ttsas_result); 32 | 33 | delete ttsas_result; 34 | } -------------------------------------------------------------------------------- /ccore/tst/utest-ordering_analyser.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | 14 | #include "samples.hpp" 15 | #include "utenv_check.hpp" 16 | 17 | 18 | using namespace pyclustering::clst; 19 | 20 | 21 | TEST(utest_ordering, cluster_allocation_identical_ordering) { 22 | ordering cluster_ordering = {5.0, 5.0, 5.0, 5.0, 5.0, 5.0}; 23 | 24 | EXPECT_EQ(1U, ordering_analyser::extract_cluster_amount(cluster_ordering, 6.5)); 25 | EXPECT_EQ(0U, ordering_analyser::extract_cluster_amount(cluster_ordering, 4.5)); 26 | } 27 | 28 | 29 | TEST(utest_ordering, impossible_calculate_radius_identical_ordering) { 30 | ordering cluster_ordering = {5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0}; 31 | 32 | EXPECT_TRUE(ordering_analyser::calculate_connvectivity_radius(cluster_ordering, 2) < 0); 33 | } 34 | 35 | 36 | TEST(utest_ordering, impossible_calculate_radius_geterogeneous_ordering) { 37 | ordering cluster_ordering = {5.0, 5.0, 5.0, 5.0, 6.0, 8.0, 6.0, 5.0, 5.0, 5.0}; 38 | 39 | EXPECT_TRUE(ordering_analyser().calculate_connvectivity_radius(cluster_ordering, 3) < 0); 40 | } 41 | -------------------------------------------------------------------------------- /ccore/tst/utest-utils-algorithm.cpp: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @authors Andrei Novikov (pyclustering@yandex.ru) 4 | @date 2014-2020 5 | @copyright BSD-3-Clause 6 | 7 | */ 8 | 9 | 10 | #include 11 | 12 | #include 13 | 14 | 15 | using namespace pyclustering::utils::algorithm; 16 | 17 | 18 | TEST(utest_algorithm, find_left_element_valid_input) { 19 | std::vector values = { 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4 }; 20 | std::vector answer = { 0, 0, 2, 2, 2, 5, 5, 5, 5, 9, 9, 9, 12 }; 21 | 22 | for (std::size_t i = 0; i < values.size(); i++) { 23 | auto iter = find_left_element(values.begin(), values.begin() + i + 1); 24 | 25 | auto actual_index = std::distance(values.begin(), iter); 26 | auto expected_index = answer[i]; 27 | 28 | ASSERT_EQ(expected_index, actual_index); 29 | } 30 | } 31 | 32 | TEST(utest_algorithm, find_left_element_invalid_input) { 33 | std::vector values = { 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4 }; 34 | auto iter = find_left_element(values.begin(), values.begin()); 35 | ASSERT_EQ(values.begin(), iter); 36 | } -------------------------------------------------------------------------------- /ci/cloud/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Cloud Tool for Yandex Disk service. 4 | @details The tool has been implemented to support CI infrastructure of pyclustering library. 5 | 6 | @authors Andrei Novikov (pyclustering@yandex.ru) 7 | @date 2014-2020 8 | @copyright BSD-3-Clause 9 | 10 | """ 11 | -------------------------------------------------------------------------------- /ci/cloud/__main__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Cloud Tool for Yandex Disk service. 4 | @details Cloud Tool is used for storing binaries of pyclustering library. 5 | 6 | @authors Andrei Novikov (pyclustering@yandex.ru) 7 | @date 2014-2020 8 | @copyright BSD-3-Clause 9 | 10 | """ 11 | 12 | 13 | import sys 14 | 15 | 16 | from cloud.task import task 17 | from cloud.task_handler import task_handler 18 | 19 | 20 | def run(): 21 | if len(sys.argv) == 2: 22 | client_task = task(sys.argv[1], []) 23 | token = "" 24 | 25 | elif len(sys.argv) < 3: 26 | raise SyntaxError("ERROR: Incorrect amount of arguments '%d' " 27 | "(please, see 'python3 ci/cloud --help')." % len(sys.argv)) 28 | 29 | else: 30 | token = sys.argv[1] 31 | action = sys.argv[2] 32 | params = sys.argv[3:] 33 | 34 | client_task = task(action, params) 35 | 36 | task_handler(token).process(client_task) 37 | 38 | 39 | if __name__ == '__main__': 40 | try: 41 | run() 42 | exit(0) 43 | 44 | except Exception as error: 45 | print(error) 46 | exit(-1) 47 | -------------------------------------------------------------------------------- /ci/cloud/cloud/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Cloud Tool for Yandex Disk service. 4 | @details Cloud Tool is used for storing binaries of pyclustering library. 5 | 6 | @authors Andrei Novikov (pyclustering@yandex.ru) 7 | @date 2014-2020 8 | @copyright BSD-3-Clause 9 | 10 | """ -------------------------------------------------------------------------------- /ci/cloud/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Tests for Cloud Tool. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /docs/img/agglomerative_lsun_clustering_single_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/agglomerative_lsun_clustering_single_link.png -------------------------------------------------------------------------------- /docs/img/bang_blocks_chainlink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/bang_blocks_chainlink.png -------------------------------------------------------------------------------- /docs/img/bang_clustering_chainlink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/bang_clustering_chainlink.png -------------------------------------------------------------------------------- /docs/img/bang_dendrogram_chainlink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/bang_dendrogram_chainlink.png -------------------------------------------------------------------------------- /docs/img/birch_cf_encoding_lsun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/birch_cf_encoding_lsun.png -------------------------------------------------------------------------------- /docs/img/birch_clustering_old_faithful.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/birch_clustering_old_faithful.png -------------------------------------------------------------------------------- /docs/img/clique_clustering_target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/clique_clustering_target.png -------------------------------------------------------------------------------- /docs/img/clique_clustering_with_noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/clique_clustering_with_noise.png -------------------------------------------------------------------------------- /docs/img/dbscan_atom_visualizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/dbscan_atom_visualizer.png -------------------------------------------------------------------------------- /docs/img/elbow_example_simple_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/elbow_example_simple_03.png -------------------------------------------------------------------------------- /docs/img/ema_old_faithful_clustering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/ema_old_faithful_clustering.png -------------------------------------------------------------------------------- /docs/img/example_cluster_place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/example_cluster_place.png -------------------------------------------------------------------------------- /docs/img/fcm_segmentation_stpetersburg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/fcm_segmentation_stpetersburg.png -------------------------------------------------------------------------------- /docs/img/fcps_cluster_analysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/fcps_cluster_analysis.png -------------------------------------------------------------------------------- /docs/img/fsync_sync_examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/fsync_sync_examples.png -------------------------------------------------------------------------------- /docs/img/ga_clustering_sample_simple_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/ga_clustering_sample_simple_04.png -------------------------------------------------------------------------------- /docs/img/gmeans_example_clustering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/gmeans_example_clustering.png -------------------------------------------------------------------------------- /docs/img/gmeans_hepta_multidim_visualizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/gmeans_hepta_multidim_visualizer.png -------------------------------------------------------------------------------- /docs/img/gmeans_lsun_multidim_visualizer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/gmeans_lsun_multidim_visualizer.png -------------------------------------------------------------------------------- /docs/img/hhn_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/hhn_architecture.png -------------------------------------------------------------------------------- /docs/img/hhn_three_ensembles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/hhn_three_ensembles.png -------------------------------------------------------------------------------- /docs/img/kd_tree_balanced_lsun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/kd_tree_balanced_lsun.png -------------------------------------------------------------------------------- /docs/img/kd_tree_balanced_two_diamonds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/kd_tree_balanced_two_diamonds.png -------------------------------------------------------------------------------- /docs/img/kd_tree_unbalanced_two_diamonds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/kd_tree_unbalanced_two_diamonds.png -------------------------------------------------------------------------------- /docs/img/kmeans_example_clustering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/kmeans_example_clustering.png -------------------------------------------------------------------------------- /docs/img/kmeans_plusplus_initializer_results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/kmeans_plusplus_initializer_results.png -------------------------------------------------------------------------------- /docs/img/optics_example_clustering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/optics_example_clustering.png -------------------------------------------------------------------------------- /docs/img/optics_noise_tetra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/optics_noise_tetra.png -------------------------------------------------------------------------------- /docs/img/pam_build_initial_medoids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/pam_build_initial_medoids.png -------------------------------------------------------------------------------- /docs/img/pam_clustering_tetra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/pam_clustering_tetra.png -------------------------------------------------------------------------------- /docs/img/pam_clustering_two_diamonds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/pam_clustering_two_diamonds.png -------------------------------------------------------------------------------- /docs/img/pyclustering_build_msvc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/pyclustering_build_msvc.png -------------------------------------------------------------------------------- /docs/img/silhouette_ksearch_hepta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/silhouette_ksearch_hepta.png -------------------------------------------------------------------------------- /docs/img/silhouette_score_for_various_K.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/silhouette_score_for_various_K.png -------------------------------------------------------------------------------- /docs/img/sync_partial_synchronization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/sync_partial_synchronization.png -------------------------------------------------------------------------------- /docs/img/sync_som_image_segmentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/sync_som_image_segmentation.png -------------------------------------------------------------------------------- /docs/img/target_som_processing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/target_som_processing.png -------------------------------------------------------------------------------- /docs/img/xmeans_clustering_famous_iris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/xmeans_clustering_famous_iris.png -------------------------------------------------------------------------------- /docs/img/xmeans_clustering_famous_iris_filtered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/xmeans_clustering_famous_iris_filtered.png -------------------------------------------------------------------------------- /docs/img/xmeans_clustering_mndl_target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/xmeans_clustering_mndl_target.png -------------------------------------------------------------------------------- /docs/img/xmeans_clustering_simple3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/img/xmeans_clustering_simple3.png -------------------------------------------------------------------------------- /docs/logo/pyclustering_logo_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/logo/pyclustering_logo_01.png -------------------------------------------------------------------------------- /docs/logo/pyclustering_logo_01.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/logo/pyclustering_logo_01.xcf -------------------------------------------------------------------------------- /docs/logo/pyclustering_logo_01_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/logo/pyclustering_logo_01_small.png -------------------------------------------------------------------------------- /docs/logo/pyclustering_logo_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/logo/pyclustering_logo_02.png -------------------------------------------------------------------------------- /docs/logo/pyclustering_logo_02.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/docs/logo/pyclustering_logo_02.xcf -------------------------------------------------------------------------------- /pyclustering/cluster/examples/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Collection of examples devoted to clustering algorithms and methods. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /pyclustering/cluster/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Test runner for integration tests and unit-tests for cluster analysis module 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from pyclustering.tests.suite_holder import suite_holder 13 | 14 | # Generate images without having a window appear. 15 | import matplotlib 16 | matplotlib.use('Agg') 17 | 18 | 19 | from pyclustering.cluster.tests.integration import clustering_integration_tests 20 | from pyclustering.cluster.tests.unit import clustering_unit_tests 21 | 22 | 23 | class clustering_tests(suite_holder): 24 | def __init__(self): 25 | super().__init__() 26 | clustering_integration_tests.fill_suite(self.get_suite()) 27 | clustering_unit_tests.fill_suite(self.get_suite()) 28 | 29 | @staticmethod 30 | def fill_suite(cluster_suite): 31 | clustering_integration_tests.fill_suite(cluster_suite) 32 | clustering_unit_tests.fill_suite(cluster_suite) 33 | -------------------------------------------------------------------------------- /pyclustering/container/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief pyclustering module of data structures (containers). 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /pyclustering/container/examples/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Collection of examples devoted to containers. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /pyclustering/container/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Unit-test runner for containers. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from pyclustering.tests.suite_holder import suite_holder 13 | 14 | from pyclustering.container.tests.unit import container_unit_tests 15 | 16 | 17 | class container_tests(suite_holder): 18 | def __init__(self): 19 | super().__init__() 20 | container_unit_tests.fill_suite(self.get_suite()) 21 | 22 | @staticmethod 23 | def fill_suite(container_suite): 24 | container_unit_tests.fill_suite(container_suite) 25 | -------------------------------------------------------------------------------- /pyclustering/container/tests/unit/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Unit-test runner for containers. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | import unittest 12 | from pyclustering.tests.suite_holder import suite_holder 13 | 14 | from pyclustering.container.tests.unit import ut_cftree as container_cftree_unit_tests 15 | from pyclustering.container.tests.unit import ut_kdtree as container_kdtree_unit_tests 16 | 17 | 18 | class container_unit_tests(suite_holder): 19 | def __init__(self): 20 | super().__init__() 21 | container_unit_tests.fill_suite(self.get_suite()) 22 | 23 | @staticmethod 24 | def fill_suite(unit_container_suite): 25 | unit_container_suite.addTests(unittest.TestLoader().loadTestsFromModule(container_cftree_unit_tests)) 26 | unit_container_suite.addTests(unittest.TestLoader().loadTestsFromModule(container_kdtree_unit_tests)) 27 | -------------------------------------------------------------------------------- /pyclustering/core/32-bit/linux/.linux.info: -------------------------------------------------------------------------------- 1 | linux ccore x86 2 | -------------------------------------------------------------------------------- /pyclustering/core/32-bit/macos/.macos.info: -------------------------------------------------------------------------------- 1 | macos ccore x86 2 | -------------------------------------------------------------------------------- /pyclustering/core/32-bit/win/.win.info: -------------------------------------------------------------------------------- 1 | windows ccore x86 2 | -------------------------------------------------------------------------------- /pyclustering/core/64-bit/linux/.linux.info: -------------------------------------------------------------------------------- 1 | linux ccore x64 2 | -------------------------------------------------------------------------------- /pyclustering/core/64-bit/macos/.macos.info: -------------------------------------------------------------------------------- 1 | macos ccore x64 2 | -------------------------------------------------------------------------------- /pyclustering/core/64-bit/win/.win.info: -------------------------------------------------------------------------------- 1 | windows ccore x64 2 | -------------------------------------------------------------------------------- /pyclustering/core/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Core module provides access to CCORE library (part of this project). 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /pyclustering/core/agglomerative_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for agglomerative algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | from ctypes import c_size_t, c_double, POINTER; 12 | 13 | from pyclustering.core.wrapper import ccore_library; 14 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder; 15 | 16 | def agglomerative_algorithm(data, number_clusters, link): 17 | pointer_data = package_builder(data, c_double).create(); 18 | 19 | ccore = ccore_library.get(); 20 | ccore.agglomerative_algorithm.restype = POINTER(pyclustering_package); 21 | package = ccore.agglomerative_algorithm(pointer_data, c_size_t(number_clusters), c_size_t(link)); 22 | 23 | result = package_extractor(package).extract(); 24 | ccore.free_pyclustering_package(package); 25 | 26 | return result; 27 | -------------------------------------------------------------------------------- /pyclustering/core/bsas_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for BSAS algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_size_t, POINTER 13 | 14 | from pyclustering.core.wrapper import ccore_library 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 16 | 17 | 18 | def bsas(sample, amount, threshold, metric_pointer): 19 | pointer_data = package_builder(sample, c_double).create() 20 | 21 | ccore = ccore_library.get() 22 | 23 | ccore.bsas_algorithm.restype = POINTER(pyclustering_package) 24 | package = ccore.bsas_algorithm(pointer_data, c_size_t(amount), c_double(threshold), metric_pointer) 25 | 26 | result = package_extractor(package).extract() 27 | ccore.free_pyclustering_package(package) 28 | 29 | return result[0], result[1] -------------------------------------------------------------------------------- /pyclustering/core/converter.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Common converter from python types to C/C++. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_size_t 13 | 14 | 15 | def convert_data_type(data_type): 16 | if data_type == 'points': return c_size_t(0); 17 | elif data_type == 'distance_matrix': return c_size_t(1); 18 | else: raise TypeError("Unknown data type is specified '%s'." % data_type); -------------------------------------------------------------------------------- /pyclustering/core/dbscan_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for DBSCAN algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | from ctypes import c_double, c_size_t, POINTER 12 | 13 | from pyclustering.core.converter import convert_data_type 14 | from pyclustering.core.wrapper import ccore_library 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 16 | 17 | 18 | def dbscan(sample, eps, min_neighbors, data_type): 19 | pointer_data = package_builder(sample, c_double).create() 20 | c_data_type = convert_data_type(data_type) 21 | 22 | ccore = ccore_library.get() 23 | 24 | ccore.dbscan_algorithm.restype = POINTER(pyclustering_package) 25 | package = ccore.dbscan_algorithm(pointer_data, c_double(eps), c_size_t(min_neighbors), c_data_type) 26 | 27 | list_of_clusters = package_extractor(package).extract() 28 | ccore.free_pyclustering_package(package) 29 | 30 | noise = list_of_clusters[len(list_of_clusters) - 1] 31 | list_of_clusters.remove(noise) 32 | 33 | return list_of_clusters, noise -------------------------------------------------------------------------------- /pyclustering/core/fcm_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for Fuzzy C-Means algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_size_t, POINTER 13 | 14 | from pyclustering.core.wrapper import ccore_library 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 16 | 17 | 18 | class fcm_package_indexer: 19 | INDEX_CLUSTERS = 0 20 | INDEX_CENTERS = 1 21 | INDEX_MEMBERSHIP = 2 22 | 23 | 24 | def fcm_algorithm(sample, centers, m, tolerance, itermax): 25 | pointer_data = package_builder(sample, c_double).create() 26 | pointer_centers = package_builder(centers, c_double).create() 27 | 28 | ccore = ccore_library.get() 29 | 30 | ccore.fcm_algorithm.restype = POINTER(pyclustering_package) 31 | package = ccore.fcm_algorithm(pointer_data, pointer_centers, c_double(m), c_double(tolerance), c_size_t(itermax)) 32 | 33 | result = package_extractor(package).extract() 34 | ccore.free_pyclustering_package(package) 35 | 36 | return result -------------------------------------------------------------------------------- /pyclustering/core/gmeans_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for G-Means algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | from ctypes import c_double, c_size_t, c_longlong, POINTER 12 | 13 | from pyclustering.core.wrapper import ccore_library 14 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 15 | 16 | 17 | def gmeans(sample, kinit, tolerance, repeat, kmax, random_state): 18 | random_state = random_state or -1 19 | pointer_data = package_builder(sample, c_double).create() 20 | 21 | ccore = ccore_library.get() 22 | 23 | ccore.gmeans_algorithm.restype = POINTER(pyclustering_package) 24 | package = ccore.gmeans_algorithm(pointer_data, c_size_t(kinit), c_double(tolerance), c_size_t(repeat), c_longlong(kmax), c_longlong(random_state)) 25 | 26 | result = package_extractor(package).extract() 27 | ccore.free_pyclustering_package(package) 28 | 29 | return result[0], result[1], result[2][0] 30 | -------------------------------------------------------------------------------- /pyclustering/core/kmeans_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for K-Means algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_bool, c_size_t, POINTER 13 | 14 | from pyclustering.core.wrapper import ccore_library 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 16 | 17 | 18 | def kmeans(sample, centers, tolerance, itermax, observe, metric_pointer): 19 | pointer_data = package_builder(sample, c_double).create() 20 | pointer_centers = package_builder(centers, c_double).create() 21 | 22 | ccore = ccore_library.get() 23 | 24 | ccore.kmeans_algorithm.restype = POINTER(pyclustering_package) 25 | package = ccore.kmeans_algorithm(pointer_data, pointer_centers, c_double(tolerance), c_size_t(itermax), 26 | c_bool(observe), metric_pointer) 27 | 28 | result = package_extractor(package).extract() 29 | ccore.free_pyclustering_package(package) 30 | 31 | return result -------------------------------------------------------------------------------- /pyclustering/core/kmedians_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for K-Medians algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_size_t, POINTER 13 | 14 | from pyclustering.core.wrapper import ccore_library 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 16 | 17 | 18 | def kmedians(sample, centers, tolerance, itermax, metric_pointer): 19 | pointer_data = package_builder(sample, c_double).create() 20 | pointer_centers = package_builder(centers, c_double).create() 21 | 22 | ccore = ccore_library.get() 23 | 24 | ccore.kmedians_algorithm.restype = POINTER(pyclustering_package) 25 | package = ccore.kmedians_algorithm(pointer_data, pointer_centers, c_double(tolerance), c_size_t(itermax), metric_pointer) 26 | 27 | result = package_extractor(package).extract() 28 | ccore.free_pyclustering_package(package) 29 | 30 | return result[0], result[1] -------------------------------------------------------------------------------- /pyclustering/core/kmedoids_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for K-Medoids algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_size_t, POINTER 13 | 14 | from pyclustering.core.wrapper import ccore_library 15 | from pyclustering.core.converter import convert_data_type 16 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder 17 | 18 | 19 | def kmedoids(sample, medoids, tolerance, itermax, metric_pointer, data_type): 20 | pointer_data = package_builder(sample, c_double).create() 21 | medoids_package = package_builder(medoids, c_size_t).create() 22 | c_data_type = convert_data_type(data_type) 23 | 24 | ccore = ccore_library.get() 25 | 26 | ccore.kmedoids_algorithm.restype = POINTER(pyclustering_package) 27 | package = ccore.kmedoids_algorithm(pointer_data, medoids_package, c_double(tolerance), c_size_t(itermax), metric_pointer, c_data_type) 28 | 29 | result = package_extractor(package).extract() 30 | ccore.free_pyclustering_package(package) 31 | 32 | return result[0], result[1], result[2][0], result[3][0] 33 | -------------------------------------------------------------------------------- /pyclustering/core/mbsas_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for MBSAS algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_size_t, POINTER; 13 | 14 | from pyclustering.core.wrapper import ccore_library; 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder; 16 | 17 | 18 | def mbsas(sample, amount, threshold, metric_pointer): 19 | pointer_data = package_builder(sample, c_double).create(); 20 | 21 | ccore = ccore_library.get(); 22 | 23 | ccore.mbsas_algorithm.restype = POINTER(pyclustering_package); 24 | package = ccore.mbsas_algorithm(pointer_data, c_size_t(amount), c_double(threshold), metric_pointer); 25 | 26 | result = package_extractor(package).extract(); 27 | ccore.free_pyclustering_package(package); 28 | 29 | return result[0], result[1]; -------------------------------------------------------------------------------- /pyclustering/core/pam_build_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for PAM BUILD algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, c_size_t, POINTER 13 | 14 | from pyclustering.core.converter import convert_data_type 15 | from pyclustering.core.wrapper import ccore_library 16 | from pyclustering.core.pyclustering_package import pyclustering_package, package_builder, package_extractor 17 | 18 | 19 | def pam_build(sample, amount, pointer_metric, data_type): 20 | pointer_data = package_builder(sample, c_double).create() 21 | c_data_type = convert_data_type(data_type) 22 | 23 | ccore = ccore_library.get() 24 | ccore.pam_build_algorithm.restype = POINTER(pyclustering_package) 25 | package = ccore.pam_build_algorithm(pointer_data, c_size_t(amount), pointer_metric, c_data_type) 26 | 27 | results = package_extractor(package).extract() 28 | ccore.free_pyclustering_package(package) 29 | 30 | if isinstance(results, bytes): 31 | raise RuntimeError(results.decode('utf-8')) 32 | 33 | return results[0] 34 | -------------------------------------------------------------------------------- /pyclustering/core/ttsas_wrapper.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief CCORE Wrapper for TTSAS algorithm. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from ctypes import c_double, POINTER; 13 | 14 | from pyclustering.core.wrapper import ccore_library; 15 | from pyclustering.core.pyclustering_package import pyclustering_package, package_extractor, package_builder; 16 | 17 | 18 | def ttsas(sample, threshold1, threshold2, metric_pointer): 19 | pointer_data = package_builder(sample, c_double).create(); 20 | 21 | ccore = ccore_library.get(); 22 | 23 | ccore.ttsas_algorithm.restype = POINTER(pyclustering_package); 24 | package = ccore.ttsas_algorithm(pointer_data, c_double(threshold1), c_double(threshold2), metric_pointer); 25 | 26 | result = package_extractor(package).extract(); 27 | ccore.free_pyclustering_package(package); 28 | 29 | return result[0], result[1]; -------------------------------------------------------------------------------- /pyclustering/gcolor/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief pyclustering module for graph coloring algorithms. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /pyclustering/gcolor/examples/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/gcolor/examples/__init__.py -------------------------------------------------------------------------------- /pyclustering/gcolor/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Unit-test runner for tests of graph coloring algorithms. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | import unittest 12 | 13 | from pyclustering.tests.suite_holder import suite_holder 14 | 15 | from pyclustering.gcolor.tests import ut_dsatur as gcolor_dsatur_unit_tests 16 | from pyclustering.gcolor.tests import ut_hysteresis as gcolor_hysteresis_unit_tests 17 | from pyclustering.gcolor.tests import ut_sync as gcolor_sync_unit_tests 18 | 19 | 20 | class gcolor_tests(suite_holder): 21 | def __init__(self): 22 | super().__init__() 23 | gcolor_tests.fill_suite(self.get_suite()) 24 | 25 | @staticmethod 26 | def fill_suite(gcolor_tests): 27 | gcolor_tests.addTests(unittest.TestLoader().loadTestsFromModule(gcolor_dsatur_unit_tests)) 28 | gcolor_tests.addTests(unittest.TestLoader().loadTestsFromModule(gcolor_hysteresis_unit_tests)) 29 | gcolor_tests.addTests(unittest.TestLoader().loadTestsFromModule(gcolor_sync_unit_tests)) 30 | -------------------------------------------------------------------------------- /pyclustering/nnet/examples/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/nnet/examples/__init__.py -------------------------------------------------------------------------------- /pyclustering/nnet/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Test runner for unit and integration tests of oscillatory and neural networks. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | import unittest 13 | from pyclustering.tests.suite_holder import suite_holder 14 | 15 | # Generate images without having a window appear. 16 | import matplotlib 17 | matplotlib.use('Agg') 18 | 19 | from pyclustering.nnet.tests.integration import nnet_integration_tests 20 | from pyclustering.nnet.tests.unit import nnet_unit_tests 21 | 22 | 23 | class nnet_tests(suite_holder): 24 | def __init__(self): 25 | super().__init__() 26 | nnet_tests.fill_suite(self.get_suite()) 27 | 28 | @staticmethod 29 | def fill_suite(nnet_suite): 30 | nnet_integration_tests.fill_suite(nnet_suite) 31 | nnet_unit_tests.fill_suite(nnet_suite) 32 | -------------------------------------------------------------------------------- /pyclustering/nnet/tests/hhn_templates.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Templates for tests of Hodgkin-Huxley oscillatory network. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | from pyclustering.nnet.hhn import hhn_network; 13 | 14 | 15 | class HhnTestTemplates: 16 | @staticmethod 17 | def templateSyncEnsembleAllocation(stimulus, params, sim_steps, sim_time, expected_clusters, ccore): 18 | result_testing = False; 19 | 20 | for _ in range(0, 5, 1): 21 | net = hhn_network(len(stimulus), stimulus, params, ccore=ccore); 22 | (t, dyn_p, dyn_c) = net.simulate(sim_steps, sim_time); 23 | 24 | assert t is not None; 25 | assert dyn_p is not None; 26 | assert dyn_c is not None; 27 | 28 | assert len(t) == sim_steps + 1; 29 | assert len(dyn_p) == sim_steps + 1; 30 | assert len(dyn_c) == sim_steps + 1; 31 | 32 | ensembles = net.allocate_sync_ensembles(1.0); 33 | if (ensembles != expected_clusters): 34 | continue; 35 | 36 | result_testing = True; 37 | break; 38 | 39 | assert result_testing; -------------------------------------------------------------------------------- /pyclustering/nnet/tests/unit/ut_hhn.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Unit-tests for oscillatory network based on Hodgkin-Huxley model of neuron. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | import unittest 13 | 14 | from pyclustering.nnet.tests.hhn_templates import HhnTestTemplates 15 | 16 | 17 | class HhnUnitTest(unittest.TestCase): 18 | def testGlobalSyncWithSameStimulus(self): 19 | HhnTestTemplates.templateSyncEnsembleAllocation([27, 27, 27], None, 600, 50, [[0, 1, 2]], False); 20 | 21 | def testGlobalSyncWithVariousStimulus(self): 22 | HhnTestTemplates.templateSyncEnsembleAllocation([26, 26, 27, 27, 26, 25], None, 600, 50, [[0, 1, 2, 3, 4, 5]], False); 23 | 24 | def testPartialSync(self): 25 | HhnTestTemplates.templateSyncEnsembleAllocation([25, 25, 50, 50], None, 800, 200, [[0, 1], [2, 3]], False); 26 | -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphBrokenCircle1.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 6 Nodes, 7 Edges 2 | c OPTIMAL NUMBER OF COLORS: 2 3 | 4 | m 0 1 0 0 0 1 5 | m 1 0 1 0 0 0 6 | m 0 1 0 1 0 1 7 | m 0 0 1 0 1 0 8 | m 0 0 0 1 0 1 9 | m 1 0 1 0 1 0 10 | 11 | r 0 1 12 | r 1 2 13 | r 2 2 14 | r 3 1 15 | r 2 0 16 | r 1 0 17 | -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphBrokenCircle2.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 5 Nodes, 6 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 1 0 0 1 5 | m 1 0 1 0 0 6 | m 0 1 0 1 1 7 | m 0 0 1 0 1 8 | m 1 0 1 1 0 9 | 10 | r 0 1 11 | r 1 2 12 | r 3 2 13 | r 4 1 14 | r 2 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphFivePointedFrameStar.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 10 Nodes, 10 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 1 1 0 0 1 0 0 0 0 5 | m 1 0 0 0 0 0 1 1 0 0 6 | m 1 0 0 1 0 0 0 0 1 0 7 | m 0 0 1 0 1 0 0 1 0 0 8 | m 0 0 0 1 0 1 1 0 0 0 9 | m 1 0 0 0 1 0 0 0 0 1 10 | m 0 1 0 0 1 0 0 0 1 0 11 | m 0 1 0 1 0 0 0 0 0 1 12 | m 0 0 1 0 0 0 1 0 0 1 13 | m 0 0 0 0 0 1 0 1 1 0 14 | 15 | r 2 3.2 16 | r 2 2.7 17 | r 0.5 2.2 18 | r 1 2 19 | r 3 2 20 | r 3.5 2.2 21 | r 1.3 1 22 | r 2.7 1 23 | r 0.9 0.5 24 | r 3.1 0.5 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphFivePointedStar.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 5 Nodes, 5 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 0 1 1 0 5 | m 0 0 0 1 1 6 | m 1 0 0 0 1 7 | m 1 1 0 0 0 8 | m 0 1 1 0 0 9 | 10 | r 0 0.6 11 | r 1 1 12 | r 2 0.6 13 | r 1.7 0 14 | r 0.3 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphFull1.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 6 Nodes 2 | c OPTIMAL NUMBER OF COLORS: 7 3 | 4 | m 0 1 1 1 1 1 1 5 | m 1 0 1 1 1 1 1 6 | m 1 1 0 1 1 1 1 7 | m 1 1 1 0 1 1 1 8 | m 1 1 1 1 0 1 1 9 | m 1 1 1 1 1 0 1 10 | m 1 1 1 1 1 1 0 11 | 12 | r 0 2 13 | r 0.5 3.5 14 | r 2 4 15 | r 3.5 3.5 16 | r 4 2 17 | r 3.5 0.5 18 | r 2 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphFull2.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 8 Nodes 2 | c OPTIMAL NUMBER OF COLORS: 8 3 | 4 | m 0 1 1 1 1 1 1 1 5 | m 1 0 1 1 1 1 1 1 6 | m 1 1 0 1 1 1 1 1 7 | m 1 1 1 0 1 1 1 1 8 | m 1 1 1 1 0 1 1 1 9 | m 1 1 1 1 1 0 1 1 10 | m 1 1 1 1 1 1 0 1 11 | m 1 1 1 1 1 1 1 0 12 | 13 | r 0 2 14 | r 0.5 3.5 15 | r 2 4 16 | r 3.5 3.5 17 | r 4 2 18 | r 3.5 0.5 19 | r 2 0 20 | r 0.5 0.5 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphOneCircle1.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 5 Nodes, 5 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 1 0 0 1 5 | m 1 0 1 0 0 6 | m 0 1 0 1 0 7 | m 0 0 1 0 1 8 | m 1 0 0 1 0 9 | 10 | r 0 1 11 | r 1 2 12 | r 2 2 13 | r 3 1 14 | r 1.5 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphOneCircle2.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 6 Nodes, 6 Edges 2 | c OPTIMAL NUMBER OF COLORS: 2 3 | 4 | m 0 1 0 0 0 1 5 | m 1 0 1 0 0 0 6 | m 0 1 0 1 0 0 7 | m 0 0 1 0 1 0 8 | m 0 0 0 1 0 1 9 | m 1 0 0 0 1 0 10 | 11 | r 0 1 12 | r 1 2 13 | r 2 2 14 | r 3 1 15 | r 2 0 16 | r 1 0 17 | -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphOneCircle3.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 7 Nodes, 7 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 1 0 0 0 0 1 5 | m 1 0 1 0 0 0 0 6 | m 0 1 0 1 0 0 0 7 | m 0 0 1 0 1 0 0 8 | m 0 0 0 1 0 1 0 9 | m 0 0 0 0 1 0 1 10 | m 1 0 0 0 0 1 0 11 | 12 | r 0 1 13 | r 1 2 14 | r 2 2 15 | r 3 1 16 | r 2.5 0 17 | r 1.5 0 18 | r 0.5 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphOneCrossroad.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 5 Nodes, 4 Edges 2 | c OPTIMAL NUMBER OF COLORS: 2 3 | 4 | m 0 0 0 0 1 5 | m 0 0 0 0 1 6 | m 0 0 0 0 1 7 | m 0 0 0 0 1 8 | m 1 1 1 1 0 9 | 10 | r 0 1 11 | r 1 2 12 | r 2 1 13 | r 1 0 14 | r 1 1 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphOneLine.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 5 Nodes, 4 Edges 2 | c OPTIMAL NUMBER OF COLORS: 2 3 | 4 | m 0 1 0 0 0 5 | m 1 0 1 0 0 6 | m 0 1 0 1 0 7 | m 0 0 1 0 1 8 | m 0 0 0 1 0 9 | 10 | r 0 0 11 | r 1 0 12 | r 2 0 13 | r 3 0 14 | r 4 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphSimple1.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 5 Nodes, 4 Edges 2 | c OPTIMAL NUMBER OF COLORS: 2 3 | 4 | m 0 0 1 0 0 5 | m 0 0 0 1 0 6 | m 1 0 0 1 1 7 | m 0 1 1 0 0 8 | m 0 0 1 0 0 9 | 10 | r 1 2 11 | r 0 2 12 | r 1 1 13 | r 0 1 14 | r 1 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphSimple2.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 9 Nodes, 12 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 1 0 1 0 0 0 0 0 5 | m 1 0 1 1 1 0 0 0 0 6 | m 0 1 0 0 1 0 0 0 0 7 | m 1 1 0 0 1 0 0 1 0 8 | m 0 1 1 1 0 1 0 1 0 9 | m 0 0 0 0 1 0 0 0 0 10 | m 0 0 0 0 0 0 0 1 0 11 | m 0 0 0 1 1 0 1 0 1 12 | m 0 0 0 0 0 0 0 1 0 13 | 14 | r 3 3 15 | r 5 3 16 | r 7 3 17 | r 3 6 18 | r 7 6 19 | r 9 6 20 | r 3 9 21 | r 5 9 22 | r 7 9 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphSimple3.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 14 Nodes, 20 Edges 2 | c OPTIMAL NUMBER OF COLORS: 3 3 | 4 | m 0 0 0 1 0 0 0 0 0 0 0 0 0 0 5 | m 0 0 0 0 0 0 1 0 0 0 0 0 0 0 6 | m 0 0 0 0 0 0 1 0 0 0 0 0 0 0 7 | m 1 0 0 0 1 0 1 1 1 0 0 0 0 0 8 | m 0 0 0 1 0 0 0 0 1 0 0 0 0 0 9 | m 0 0 0 0 0 0 1 0 0 0 0 0 0 0 10 | m 0 1 1 1 0 1 0 1 0 1 1 1 0 0 11 | m 0 0 0 1 0 0 1 0 1 0 0 1 0 0 12 | m 0 0 0 1 1 0 0 1 0 0 0 1 1 0 13 | m 0 0 0 0 0 0 1 0 0 0 0 0 0 1 14 | m 0 0 0 0 0 0 1 0 0 0 0 0 0 0 15 | m 0 0 0 0 0 0 1 1 1 0 0 0 1 1 16 | m 0 0 0 0 0 0 0 0 1 0 0 1 0 0 17 | m 0 0 0 0 0 0 0 0 0 1 0 1 0 0 18 | 19 | r 6 8 20 | r 0 6 21 | r 2 6 22 | r 4 6 23 | r 6 6 24 | r 0 4 25 | r 2 4 26 | r 4 4 27 | r 6 4 28 | r 0 2 29 | r 2 2 30 | r 4 2 31 | r 6 2 32 | r 4 0 -------------------------------------------------------------------------------- /pyclustering/samples/graphs/GraphTwoCrossroads.grpr: -------------------------------------------------------------------------------- 1 | c DESCRIPTION: 10 Nodes, 9 Edges 2 | c OPTIMAL NUMBER OF COLORS: 2 3 | 4 | m 0 0 0 0 1 0 0 0 0 0 5 | m 0 0 0 0 1 0 0 0 0 0 6 | m 0 0 0 0 1 0 0 0 0 0 7 | m 0 0 0 0 1 0 0 0 0 0 8 | m 1 1 1 1 0 0 0 0 0 1 9 | m 0 0 0 0 0 0 0 0 0 1 10 | m 0 0 0 0 0 0 0 0 0 1 11 | m 0 0 0 0 0 0 0 0 0 1 12 | m 0 0 0 0 0 0 0 0 0 1 13 | m 0 0 0 0 1 1 1 1 1 0 14 | 15 | r 0 0 16 | r 2 0 17 | r 0 2 18 | r 2 2 19 | r 1 1 20 | r 4 2 21 | r 6 2 22 | r 4 0 23 | r 6 0 24 | r 5 1 -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageBuildings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageBuildings.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageFieldFlower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageFieldFlower.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageFieldTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageFieldTree.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageNile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageNile.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageNileSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageNileSmall.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimple18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimple18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimpleBeach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimpleBeach.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimpleBuilding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimpleBuilding.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimpleFruits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimpleFruits.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageSimpleFruitsSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageSimpleFruitsSmall.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageThinBlackLines01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageThinBlackLines01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageThinBlackLines02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageThinBlackLines02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageThinBlackLines03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageThinBlackLines03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageWhiteSea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageWhiteSea.png -------------------------------------------------------------------------------- /pyclustering/samples/images/ImageWhiteSeaSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/ImageWhiteSeaSmall.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_0_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_0_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_1_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_1_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_2_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_2_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_3_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_3_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_4_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_4_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_5_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_5_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_6_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_6_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_7_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_7_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_8_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_8_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample02.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample03.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample04.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample05.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample06.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample07.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample08.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample09.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample10.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample11.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample12.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample13.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample14.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample15.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample16.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample17.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample18.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample19.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample20.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample21.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample22.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample23.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample24.png -------------------------------------------------------------------------------- /pyclustering/samples/images/digits/Digit_9_Sample25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/digits/Digit_9_Sample25.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_A_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_A_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_B_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_B_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_C_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_C_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_D_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_D_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_E_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_E_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_F_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_F_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_G_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_G_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_H_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_H_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_I_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_I_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_J_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_J_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_K_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_K_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_L_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_L_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_M_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_M_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_N_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_N_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_O_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_O_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_P_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_P_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_Q_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_Q_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_R_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_R_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_S_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_S_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_T_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_T_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_U_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_U_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_V_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_V_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_W_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_W_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_X_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_X_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_Y_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_Y_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/images/symbols/Symbol_Z_Sample01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/annoviko/pyclustering/906532e4a5422479cc6813e852f9c3cb48ea7a64/pyclustering/samples/images/symbols/Symbol_Z_Sample01.png -------------------------------------------------------------------------------- /pyclustering/samples/samples/famous/Iris.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 0 22 | 0 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 0 37 | 0 38 | 0 39 | 0 40 | 0 41 | 0 42 | 0 43 | 0 44 | 0 45 | 0 46 | 0 47 | 0 48 | 0 49 | 0 50 | 0 51 | 1 52 | 1 53 | 1 54 | 1 55 | 1 56 | 1 57 | 1 58 | 1 59 | 1 60 | 1 61 | 1 62 | 1 63 | 1 64 | 1 65 | 1 66 | 1 67 | 1 68 | 1 69 | 1 70 | 1 71 | 1 72 | 1 73 | 1 74 | 1 75 | 1 76 | 1 77 | 1 78 | 1 79 | 1 80 | 1 81 | 1 82 | 1 83 | 1 84 | 1 85 | 1 86 | 1 87 | 1 88 | 1 89 | 1 90 | 1 91 | 1 92 | 1 93 | 1 94 | 1 95 | 1 96 | 1 97 | 1 98 | 1 99 | 1 100 | 1 101 | 2 102 | 2 103 | 2 104 | 2 105 | 2 106 | 2 107 | 2 108 | 2 109 | 2 110 | 2 111 | 2 112 | 2 113 | 2 114 | 2 115 | 2 116 | 2 117 | 2 118 | 2 119 | 2 120 | 2 121 | 2 122 | 2 123 | 2 124 | 2 125 | 2 126 | 2 127 | 2 128 | 2 129 | 2 130 | 2 131 | 2 132 | 2 133 | 2 134 | 2 135 | 2 136 | 2 137 | 2 138 | 2 139 | 2 140 | 2 141 | 2 142 | 2 143 | 2 144 | 2 145 | 2 146 | 2 147 | 2 148 | 2 149 | 2 150 | 2 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple01.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple01.data: -------------------------------------------------------------------------------- 1 | 3.522979 5.487981 2 | 3.768699 5.364477 3 | 3.423602 5.419900 4 | 3.803905 5.389491 5 | 3.936690 5.663041 6 | 6.968136 7.755556 7 | 6.750795 7.269541 8 | 6.593196 7.850364 9 | 6.978178 7.609850 10 | 6.554487 7.498119 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple02.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 1 12 | 1 13 | 1 14 | 1 15 | 1 16 | 2 17 | 2 18 | 2 19 | 2 20 | 2 21 | 2 22 | 2 23 | 2 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple02.data: -------------------------------------------------------------------------------- 1 | 3.461363 4.135324 2 | 3.699588 4.827335 3 | 3.400206 4.127698 4 | 3.889032 4.103663 5 | 3.612092 4.225430 6 | 3.976381 4.547439 7 | 3.563788 4.876437 8 | 3.177711 4.332012 9 | 3.392175 4.370581 10 | 3.248184 4.786105 11 | 7.500097 6.704815 12 | 7.090406 6.647416 13 | 7.336926 6.143379 14 | 7.062946 6.022702 15 | 7.349885 6.188665 16 | 7.502041 0.161533 17 | 7.206695 0.353056 18 | 7.835975 0.449885 19 | 7.672964 0.842298 20 | 7.016772 0.912601 21 | 7.482343 0.762685 22 | 7.118470 0.022688 23 | 7.167884 0.926609 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple03.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 1 12 | 1 13 | 1 14 | 1 15 | 1 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 21 | 2 22 | 2 23 | 2 24 | 2 25 | 2 26 | 2 27 | 2 28 | 2 29 | 2 30 | 2 31 | 3 32 | 3 33 | 3 34 | 3 35 | 3 36 | 3 37 | 3 38 | 3 39 | 3 40 | 3 41 | 1 42 | 1 43 | 1 44 | 1 45 | 1 46 | 1 47 | 1 48 | 1 49 | 1 50 | 1 51 | 1 52 | 1 53 | 1 54 | 1 55 | 1 56 | 1 57 | 1 58 | 1 59 | 1 60 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple04.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 21 | 1 22 | 1 23 | 1 24 | 1 25 | 1 26 | 1 27 | 1 28 | 1 29 | 1 30 | 1 31 | 2 32 | 2 33 | 2 34 | 2 35 | 2 36 | 2 37 | 2 38 | 2 39 | 2 40 | 2 41 | 2 42 | 2 43 | 2 44 | 2 45 | 2 46 | 3 47 | 3 48 | 3 49 | 3 50 | 3 51 | 3 52 | 3 53 | 3 54 | 3 55 | 3 56 | 3 57 | 3 58 | 3 59 | 3 60 | 3 61 | 4 62 | 4 63 | 4 64 | 4 65 | 4 66 | 4 67 | 4 68 | 4 69 | 4 70 | 4 71 | 4 72 | 4 73 | 4 74 | 4 75 | 4 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple05.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 21 | 1 22 | 1 23 | 1 24 | 1 25 | 1 26 | 1 27 | 1 28 | 1 29 | 1 30 | 1 31 | 2 32 | 2 33 | 2 34 | 2 35 | 2 36 | 2 37 | 2 38 | 2 39 | 2 40 | 2 41 | 2 42 | 2 43 | 2 44 | 2 45 | 2 46 | 3 47 | 3 48 | 3 49 | 3 50 | 3 51 | 3 52 | 3 53 | 3 54 | 3 55 | 3 56 | 3 57 | 3 58 | 3 59 | 3 60 | 3 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple06.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 1 22 | 1 23 | 1 24 | 1 25 | 1 26 | 1 27 | 1 28 | 1 29 | 1 30 | 1 31 | 1 32 | 1 33 | 1 34 | 1 35 | 1 36 | 1 37 | 1 38 | 1 39 | 1 40 | 1 41 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple06.data: -------------------------------------------------------------------------------- 1 | 2.0 6.0 2 | 3.0 6.0 3 | 1.5 5.5 4 | 2.5 5.5 5 | 3.5 5.5 6 | 2.0 5.0 7 | 3.0 5.0 8 | 4.0 5.0 9 | 1.5 4.5 10 | 2.5 4.5 11 | 3.5 4.5 12 | 1.0 4.0 13 | 2.0 4.0 14 | 3.0 4.0 15 | 4.0 4.0 16 | 1.5 3.5 17 | 2.5 3.5 18 | 3.5 3.5 19 | 2.0 3.0 20 | 3.0 3.0 21 | 8.0 6.0 22 | 7.0 5.5 23 | 8.0 5.5 24 | 8.5 5.5 25 | 6.0 5.0 26 | 7.0 5.0 27 | 8.0 5.0 28 | 9.0 5.0 29 | 6.5 4.5 30 | 7.5 4.5 31 | 8.5 4.5 32 | 6.0 4.0 33 | 7.0 4.0 34 | 8.0 4.0 35 | 9.0 4.0 36 | 6.5 3.5 37 | 7.5 3.5 38 | 8.5 3.5 39 | 7.0 3.0 40 | 8.0 3.0 41 | 7.5 2.5 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple07.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 1 12 | 1 13 | 1 14 | 1 15 | 1 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple07.data: -------------------------------------------------------------------------------- 1 | -2.65617759433 2 | -2.05137318519 3 | -2.65688557978 4 | -2.16958378946 5 | -2.18865771721 6 | -2.99500597119 7 | -2.80258672219 8 | -2.2225721641 9 | -2.6142214967 10 | -2.675968428 11 | 4.32872256557 12 | 4.11915338613 13 | 4.09161574268 14 | 4.79095614369 15 | 4.03637367918 16 | 4.88716113831 17 | 4.18586756767 18 | 4.18240224698 19 | 4.70646249673 20 | 4.45684674024 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple08.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 21 | 1 22 | 1 23 | 1 24 | 1 25 | 1 26 | 1 27 | 1 28 | 1 29 | 1 30 | 1 31 | 1 32 | 1 33 | 1 34 | 1 35 | 1 36 | 1 37 | 1 38 | 1 39 | 1 40 | 1 41 | 1 42 | 1 43 | 1 44 | 1 45 | 1 46 | 2 47 | 2 48 | 2 49 | 2 50 | 2 51 | 2 52 | 2 53 | 2 54 | 2 55 | 2 56 | 2 57 | 2 58 | 2 59 | 2 60 | 2 61 | 2 62 | 2 63 | 2 64 | 2 65 | 2 66 | 3 67 | 3 68 | 3 69 | 3 70 | 3 71 | 3 72 | 3 73 | 3 74 | 3 75 | 3 76 | 3 77 | 3 78 | 3 79 | 3 80 | 3 81 | 3 82 | 3 83 | 3 84 | 3 85 | 3 86 | 3 87 | 3 88 | 3 89 | 3 90 | 3 91 | 3 92 | 3 93 | 3 94 | 3 95 | 3 96 | 3 97 | 3 98 | 3 99 | 3 100 | 3 101 | 3 102 | 3 103 | 3 104 | 3 105 | 3 106 | 3 107 | 3 108 | 3 109 | 3 110 | 3 111 | 3 112 | 3 113 | 3 114 | 3 115 | 3 116 | 3 117 | 3 118 | 3 119 | 3 120 | 3 121 | 3 122 | 3 123 | 3 124 | 3 125 | 3 126 | 3 127 | 3 128 | 3 129 | 3 130 | 3 131 | 3 132 | 3 133 | 3 134 | 3 135 | 3 136 | 3 137 | 3 138 | 3 139 | 3 140 | 3 141 | 3 142 | 3 143 | 3 144 | 3 145 | 3 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple09.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 1 22 | 1 23 | 1 24 | 1 25 | 1 26 | 1 27 | 1 28 | 1 29 | 1 30 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple09.data: -------------------------------------------------------------------------------- 1 | 4.1232 2 | 4.1232 3 | 4.1232 4 | 4.1232 5 | 4.1232 6 | 4.1232 7 | 4.1232 8 | 4.1232 9 | 4.1232 10 | 4.1232 11 | 4.1232 12 | 4.1232 13 | 4.1232 14 | 4.1232 15 | 4.1232 16 | 4.1232 17 | 4.1232 18 | 4.1232 19 | 4.1232 20 | 4.1232 21 | 7.8391 22 | 7.8391 23 | 7.8391 24 | 7.8391 25 | 7.8391 26 | 7.8391 27 | 7.8391 28 | 7.8391 29 | 7.8391 30 | 7.8391 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple10.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 0 12 | 1 13 | 1 14 | 1 15 | 1 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 21 | 1 22 | 1 23 | 2 24 | 2 25 | 2 26 | 2 27 | 2 28 | 2 29 | 2 30 | 2 31 | 2 32 | 2 33 | 2 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple11.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 0 10 | 0 11 | 1 12 | 1 13 | 1 14 | 1 15 | 1 16 | 1 17 | 1 18 | 1 19 | 1 20 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple11.data: -------------------------------------------------------------------------------- 1 | 1.3454 1.2345 1.1234 2 | 1.4562 1.5425 1.3145 3 | 1.2344 1.1235 1.4234 4 | 1.1234 1.2345 1.1234 5 | 1.3354 1.2345 1.4322 6 | 1.0123 1.0241 1.0748 7 | 1.3045 1.1985 1.4453 8 | 1.4441 1.1127 1.6555 9 | 1.4566 1.6642 1.3453 10 | 1.6034 1.6092 1.6445 11 | 4.3454 4.2345 4.1234 12 | 4.4562 4.5425 4.3145 13 | 4.2344 4.1235 4.4234 14 | 4.1234 4.2345 4.1234 15 | 4.3354 4.2345 4.4322 16 | 4.0123 4.0241 4.0748 17 | 4.3045 4.1985 4.4453 18 | 4.4441 4.1127 4.6555 19 | 4.4566 4.6642 4.3453 20 | 4.6034 4.6092 4.6445 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple12.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1 11 | 2 12 | 2 13 | 2 14 | 2 15 | 2 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple12.data: -------------------------------------------------------------------------------- 1 | 1.3454 1.2345 2 | 1.3454 1.2345 3 | 1.3454 1.2345 4 | 1.3454 1.2345 5 | 1.3454 1.2345 6 | 3.4601 2.1853 7 | 3.4601 2.1853 8 | 3.4601 2.1853 9 | 3.4601 2.1853 10 | 3.4601 2.1853 11 | 4.4566 4.6642 12 | 4.4566 4.6642 13 | 4.4566 4.6642 14 | 4.4566 4.6642 15 | 4.4566 4.6642 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple13.answer: -------------------------------------------------------------------------------- 1 | 0 2 | 0 3 | 0 4 | 0 5 | 0 6 | 1 7 | 1 8 | 1 9 | 1 10 | 1 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple13.data: -------------------------------------------------------------------------------- 1 | 1.35 1.34 0 2 | 1.45 1.32 0 3 | 1.23 1.23 0 4 | 1.86 1.37 0 5 | 1.34 1.97 0 6 | 3.56 3.78 0 7 | 3.87 3.98 0 8 | 3.79 4.01 0 9 | 3.57 3.62 0 10 | 3.45 3.92 0 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple14.answer: -------------------------------------------------------------------------------- 1 | n 2 | n 3 | n 4 | n 5 | n 6 | n 7 | n 8 | n 9 | 0 10 | n 11 | 0 12 | 0 13 | 0 14 | 0 15 | 0 16 | 0 17 | 0 18 | 0 19 | 0 20 | 0 21 | 0 22 | 0 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 0 37 | 0 38 | 0 39 | 0 40 | 0 41 | 0 -------------------------------------------------------------------------------- /pyclustering/samples/samples/simple/Simple14.data: -------------------------------------------------------------------------------- 1 | 3.84883118 7.98287654 2 | 6.15957575 0.93742612 3 | 0.58865177 7.34201309 4 | 6.95169446 6.34775643 5 | 3.64920659 1.43836441 6 | 4.98745463 1.48505 7 | 1.50897943 0.66372945 8 | 1.7165765 6.51867617 9 | 3.63916014 4.03335428 10 | 1.64755443 6.91168503 11 | 5.18619498 5.01467501 12 | 5.22841242 4.66132755 13 | 4.46416522 4.99414511 14 | 5.74935967 5.19903379 15 | 4.71599415 4.88615725 16 | 5.24744658 4.56903919 17 | 5.19049452 5.41090111 18 | 4.46223735 4.4370961 19 | 4.06165299 5.64246575 20 | 4.13648305 5.0203021 21 | 5.0931739 5.90484805 22 | 5.27248291 5.10978874 23 | 4.98665978 5.02617475 24 | 4.49543272 3.6342554 25 | 5.49451608 4.56799783 26 | 5.26142474 4.99616694 27 | 5.5543285 5.59529684 28 | 4.15108339 4.31406758 29 | 5.12194741 4.93568024 30 | 4.77956745 4.73403704 31 | 5.58123982 5.5657367 32 | 5.06730322 4.57878869 33 | 4.58515378 5.18852395 34 | 5.49669378 4.8901156 35 | 5.42696559 4.71035229 36 | 3.5934053 4.76841482 37 | 5.60826032 5.61143477 38 | 6.23623543 4.93332256 39 | 5.25518697 4.35253186 40 | 3.63467815 5.25080737 41 | 3.63467815 5.25080737 -------------------------------------------------------------------------------- /pyclustering/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Test runner for unit and integration tests in the project. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | -------------------------------------------------------------------------------- /pyclustering/tests/__main__.py: -------------------------------------------------------------------------------- 1 | from pyclustering.tests.tests_runner import tests_runner 2 | 3 | if __name__ == "__main__": 4 | tests_runner.run() 5 | -------------------------------------------------------------------------------- /pyclustering/utils/examples/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Examples of usage of various utils. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ -------------------------------------------------------------------------------- /pyclustering/utils/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Test runner for unit and integration tests of utils module. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | # Generate images without having a window appear. 13 | import matplotlib 14 | matplotlib.use('Agg') 15 | 16 | from pyclustering.tests.suite_holder import suite_holder 17 | 18 | from pyclustering.utils.tests.integration import utils_integration_tests 19 | from pyclustering.utils.tests.unit import utils_unit_tests 20 | 21 | 22 | class utils_tests(suite_holder): 23 | def __init__(self): 24 | super().__init__() 25 | utils_tests.fill_suite(self.get_suite()) 26 | 27 | 28 | @staticmethod 29 | def fill_suite(utils_suite): 30 | utils_unit_tests.fill_suite(utils_suite) 31 | utils_integration_tests.fill_suite(utils_suite) 32 | -------------------------------------------------------------------------------- /pyclustering/utils/tests/integration/__init__.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | @brief Integration-test runner for utils. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | import unittest 12 | 13 | # Generate images without having a window appear. 14 | import matplotlib 15 | matplotlib.use('Agg') 16 | 17 | from pyclustering.tests.suite_holder import suite_holder 18 | 19 | from pyclustering.utils.tests.integration import it_metric as utils_metric_integration_tests 20 | 21 | 22 | class utils_integration_tests(suite_holder): 23 | def __init__(self): 24 | super().__init__() 25 | utils_integration_tests.fill_suite(self.get_suite()) 26 | 27 | @staticmethod 28 | def fill_suite(integration_nnet_suite): 29 | integration_nnet_suite.addTests(unittest.TestLoader().loadTestsFromModule(utils_metric_integration_tests)) 30 | -------------------------------------------------------------------------------- /pyclustering/utils/tests/unit/ut_dimension.py: -------------------------------------------------------------------------------- 1 | """! 2 | 3 | Unit-tests for dimension analyser. 4 | 5 | @authors Andrei Novikov (pyclustering@yandex.ru) 6 | @date 2014-2020 7 | @copyright BSD-3-Clause 8 | 9 | """ 10 | 11 | 12 | import unittest; 13 | 14 | # Generate images without having a window appear. 15 | import matplotlib; 16 | matplotlib.use('Agg'); 17 | 18 | from pyclustering.utils.dimension import dimension_info; 19 | 20 | 21 | class DimensionUnitTest(unittest.TestCase): 22 | def testGetDimension(self): 23 | info = dimension_info([ [1], [2], [3], [4], [5] ]); 24 | assert 1 == info.get_dimensions(); 25 | 26 | info = dimension_info([[1, 2], [3, 4]]); 27 | assert 2 == info.get_dimensions(); 28 | --------------------------------------------------------------------------------