{"id":30021896,"url":"https://github.com/gagolews/quitefastmst","last_synced_at":"2026-02-11T18:09:00.666Z","repository":{"id":305128070,"uuid":"1021982011","full_name":"gagolews/quitefastmst","owner":"gagolews","description":"quitefastmst: Euclidean and Mutual Reachability Minimum Spanning Trees","archived":false,"fork":false,"pushed_at":"2026-02-02T14:08:31.000Z","size":26635,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-03T02:54:00.811Z","etag":null,"topics":["cluster-analysis","clustering","clustering-evaluation","euclidean-distances","genie","hdbscan","hdbscan-clustering-algorithm","machine-learning","machine-learning-algorithms","minimum-spanning-tree","mst","mutual-reachability-distance","neighbor-search","outlier-detection"],"latest_commit_sha":null,"homepage":"https://quitefastmst.gagolewski.com/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gagolews.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-18T09:01:44.000Z","updated_at":"2026-02-02T14:08:34.000Z","dependencies_parsed_at":"2025-08-06T03:37:06.653Z","dependency_job_id":"bc8259f0-a4c9-4839-8758-89bd1ed4bdc8","html_url":"https://github.com/gagolews/quitefastmst","commit_stats":null,"previous_names":["gagolews/quitefastmst"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gagolews/quitefastmst","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagolews%2Fquitefastmst","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagolews%2Fquitefastmst/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagolews%2Fquitefastmst/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagolews%2Fquitefastmst/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gagolews","download_url":"https://codeload.github.com/gagolews/quitefastmst/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gagolews%2Fquitefastmst/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29340491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T16:14:43.024Z","status":"ssl_error","status_checked_at":"2026-02-11T16:14:15.258Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cluster-analysis","clustering","clustering-evaluation","euclidean-distances","genie","hdbscan","hdbscan-clustering-algorithm","machine-learning","machine-learning-algorithms","minimum-spanning-tree","mst","mutual-reachability-distance","neighbor-search","outlier-detection"],"created_at":"2025-08-06T03:36:54.350Z","updated_at":"2026-02-11T18:09:00.661Z","avatar_url":"https://github.com/gagolews.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://quitefastmst.gagolewski.com/\"\u003e\u003cimg src=\"https://www.gagolewski.com/_static/img/quitefastmst.png\" align=\"right\" height=\"128\" width=\"128\" /\u003e\u003c/a\u003e\n# [*quitefastmst*](https://quitefastmst.gagolewski.com/) Package for R and Python\n\n## Euclidean and Mutual Reachability Minimum Spanning Trees\n\n\n![quitefastmst for Python](https://github.com/gagolews/quitefastmst/workflows/quitefastmst%20for%20Python/badge.svg)\n![quitefastmst for R](https://github.com/gagolews/quitefastmst/workflows/quitefastmst%20for%20R/badge.svg)\n\n**Keywords**: Euclidean minimum spanning tree, MST, EMST,\nmutual reachability distance, nearest neighbours, k-nn, k-d tree,\nBorůvka, Prim, Jarník, Kruskal, Genie, HDBSCAN\\*, DBSCAN,\nclustering, outlier detection.\n\n\nPackage **features**:\n\n* [Euclidean Minimum Spanning Trees](https://en.wikipedia.org/wiki/Euclidean_minimum_spanning_tree)\n    using single-, sesqui-, and dual-tree Borůvka algorithms – quite fast\n    in spaces of low intrinsic dimensionality,\n\n* Minimum spanning trees with respect to mutual reachability distances based\n    on the Euclidean metric (used in the definition of the HDBSCAN\\* algorithm;\n    see Campello, Moulavi, Sander, 2013),\n\n* Euclidean nearest neighbours with nicely-optimised K-d trees,\n\n* relatively fast fallback algorithms for spaces of higher dimensionality,\n\n* supports multiprocessing via OpenMP (on selected platforms).\n\n\nRefer to the package **homepage** at \u003chttps://quitefastmst.gagolewski.com/\u003e\nfor the reference manual, tutorials, examples, and benchmarks.\n\n**Author and maintainer**: [Marek Gagolewski](https://www.gagolewski.com/)\n\nPossible applications in topological data analysis:\nclustering ([HDBSCAN\\*](https://hdbscan.readthedocs.io/en/latest/index.html),\n[Lumbermark](https://lumbermark.gagolewski.com/),\n[Genie](https://genieclust.gagolewski.com/), Single linkage, etc.),\noutlier detection ([Deadwood](https://deadwood.gagolewski.com/)),\ndensity estimation, dimensionality reduction, and many more.\n\n\n## How to Install\n\n### Python Version\n\nTo install from [PyPI](https://pypi.org/project/quitefastmst), call:\n\n```bash\npip3 install quitefastmst  # python3 -m pip install quitefastmst\n```\n\n*To learn more about Python, check out my open-access textbook*\n[Minimalist Data Wrangling in Python](https://datawranglingpy.gagolewski.com/).\n\n\nFor best performance, advanced users will benefit from compiling the package\nfrom sources:\n\n```bash\nCPPFLAGS=\"-O3 -march=native\" pip3 install quitefastmst --force --no-binary=\"quitefastmst\"\n```\n\n🚧 TO DO (help needed): How to enable OpenMP support on macOS/Darwin in `setup.py`?\n\n\n### R Version\n\nTo install from [CRAN](https://CRAN.R-project.org/package=quitefastmst), call:\n\n```r\ninstall.packages(\"quitefastmst\")\n```\n\n*To learn more about R, check out my open-access textbook*\n[Deep R Programming](https://deepr.gagolewski.com/).\n\n\nFor best performance, advanced users will benefit from compiling the package\nfrom sources:\n\n```r\nSys.setenv(CXX_DEFS=\"-O3 -march=native\")  # for gcc and clang\ninstall.packages(\"quitefastmst\", type=\"source\")\n```\n\n\n### Other\n\nThe core functionality is implemented in the form of a C++ library.\nIt can thus be easily adapted for use in other environments.\nNew contributions are welcome, e.g., Julia, Matlab/GNU Octave wrappers.\n\n\n## License\n\nCopyright (C) 2025–2026 Marek Gagolewski \u003chttps://www.gagolewski.com/\u003e\n\nThis program is free software: you can redistribute it and/or modify it\nunder the terms of the GNU Affero General Public License Version 3,\n19 November 2007, published by the Free Software Foundation.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\nGeneral Public License Version 3 for more details. You should have\nreceived a copy of the License along with this program. If not, see\n\u003chttps://www.gnu.org/licenses/\u003e.\n\n\n## References\n\nO. Borůvka, O jistém problému minimálním,\n*Práce Moravské Přírodovědecké Společnosti* **3**, 1926, 37–58\n\nJ.L. Bentley, Multidimensional binary search trees used for associative\nsearching, *Communications of the ACM* **18**(9), 509–517, 1975,\n[DOI:10.1145/361002.361007](https://doi.org/10.1145/361002.361007)\n\nR.J.G.B. Campello, D. Moulavi, A. Zimek, J. Sander, Hierarchical\ndensity estimates for data clustering, visualization, and outlier detection,\n*ACM Transactions on Knowledge Discovery from Data (TKDD)* **10**(1),\n2015, 1–51, [DOI:10.1145/2733381](https://doi.org/10.1145/2733381)\n\nR.J.G.B. Campello, D. Moulavi, J. Sander,\nDensity-based clustering based on hierarchical density estimates,\n*Lecture Notes in Computer Science* **7819**, 2013, 160–172,\n[DOI:10.1007/978-3-642-37456-2_14](https://doi.org/10.1007/978-3-642-37456-2_14)\n\nM. Gagolewski, quitefastmst, in preparation, 2026\n\nM. Gagolewski, A. Cena, M. Bartoszuk, Ł. Brzozowski,\nClustering with minimum spanning trees: How good can it be?,\n*Journal of Classification* **42**, 2025, 90–112,\n[DOI:10.1007/s00357-024-09483-1](https://doi.org/10.1007/s00357-024-09483-1)\n\nV. Jarník, O jistém problému minimálním (z dopisu panu O. Borůvkovi),\n*Práce Moravské Přírodovědecké Společnosti* **6**, 1930, 57–63\n\nS. Maneewongvatana, D.M. Mount, It's okay to be skinny, if your friends\nare fat, *The 4th CGC Workshop on Computational Geometry*, 1999\n\nW.B. March, R. Parikshit, A. Gray, Fast Euclidean minimum spanning\ntree: Algorithm, analysis, and applications,\n*Proc. 16th ACM SIGKDD Intl. Conf. Knowledge Discovery and Data Mining (KDD '10)*,\n2010, 603–612\n\nC.F. Olson, Parallel algorithms for hierarchical clustering,\n*Parallel Computing* **21**(8), 1995, 1313–1325\n\nL. McInnes, J. Healy, Accelerated hierarchical density-based\nclustering, *IEEE Intl. Conf. Data Mining Workshops (ICMDW)*, 2017, 33–42,\n[DOI:10.1109/ICDMW.2017.12](https://doi.org/10.1109/ICDMW.2017.12)\n\nR. Prim, Shortest connection networks and some generalizations,\n*The Bell System Technical Journal* **36**(6), 1957, 1389–1401\n\nN. Sample, M. Haines, M. Arnold, T. Purcell,\nOptimizing search strategies in K-d Trees, *5th WSES/IEEE Conf. Circuits,\nSystems, Communications \u0026 Computers (CSCC'01)*, 2001\n\n\nSee **quitefastmst**'s [homepage](https://quitefastmst.gagolewski.com/)\nfor more references.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgagolews%2Fquitefastmst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgagolews%2Fquitefastmst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgagolews%2Fquitefastmst/lists"}