{"id":33167150,"url":"https://github.com/merylldindin/topologyx","last_synced_at":"2025-12-30T16:22:38.420Z","repository":{"id":45689653,"uuid":"138686533","full_name":"merylldindin/topologyx","owner":"merylldindin","description":"Topological Data Analysis Routines","archived":false,"fork":false,"pushed_at":"2025-11-12T22:09:32.000Z","size":17028,"stargazers_count":147,"open_issues_count":8,"forks_count":30,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-11-13T00:11:22.888Z","etag":null,"topics":["betti-curves","gudhi","persistence-landscape","persistent-homology","python","simplex-algorithm","tomato-clustering","topology"],"latest_commit_sha":null,"homepage":"https://pypi.org/manage/project/topologyx","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/merylldindin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2018-06-26T04:55:17.000Z","updated_at":"2025-11-09T02:25:09.000Z","dependencies_parsed_at":"2024-01-25T18:05:20.784Z","dependency_job_id":"388d7426-ab6d-458c-9a9d-63b1c043f2d2","html_url":"https://github.com/merylldindin/topologyx","commit_stats":null,"previous_names":["merylldindin/topologyx","merylldindin/tdatoolbox"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/merylldindin/topologyx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merylldindin%2Ftopologyx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merylldindin%2Ftopologyx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merylldindin%2Ftopologyx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merylldindin%2Ftopologyx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merylldindin","download_url":"https://codeload.github.com/merylldindin/topologyx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merylldindin%2Ftopologyx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285484486,"owners_count":27179744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["betti-curves","gudhi","persistence-landscape","persistent-homology","python","simplex-algorithm","tomato-clustering","topology"],"created_at":"2025-11-16T00:00:44.021Z","updated_at":"2025-11-20T18:01:34.290Z","avatar_url":"https://github.com/merylldindin.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":["Courses"],"readme":"\u003ca href=\"https://merylldindin.com\"\u003e\n  \u003cimg src=\"https://cdn.merylldindin.com/github/topologyx.webp\" alt=\"topologyx\" width=\"100%\"\u003e\n\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/merylldindin/topologyx/graphs/contributors\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/merylldindin/topologyx.svg?style=for-the-badge\" alt=\"contributors\"/\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/merylldindin/topologyx/stargazers\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/merylldindin/topologyx.svg?style=for-the-badge\" alt=\"stars\"/\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/merylldindin/topologyx/issues\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/merylldindin/topologyx.svg?style=for-the-badge\" alt=\"issues\"/\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://pypi.python.org/pypi/topologyx\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/topologyx.svg?style=for-the-badge\" alt=\"pypi version\"/\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/merylldindin/topologyx/blob/master/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/merylldindin/topologyx.svg?style=for-the-badge\" alt=\"license\"/\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ch2\u003e Topology Data Analysis Routines \u003c/h2\u003e\n    \u003ca href=\"https://github.com/merylldindin/topologyx/issues\"\u003e\n        Report Bug\n    \u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## \u003csummary\u003eTable of Contents\u003c/summary\u003e\n\n\u003col\u003e\n    \u003cli\u003e\u003ca href=\"#about-topologyx\"\u003eAbout TopologyX\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#get-started\"\u003eGet Started\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\n## About TopologyX\n\nTopological Data Analysis, also abbreviated _TDA_, is a recent field that emerged from various works in applied topology and computational geometry. It aims at providing well-founded mathematical, statistical, and algorithmic methods to exploit the topological and underlying geometric structures in data. My aim is to develop some tools in this repository that may be applied to data science in general. Some of them have already proven useful for classification tasks.\n\nRead more about applied TDA:\n\n- [General introduction to TDA](https://hal.inria.fr/hal-02155849/file/1906.05795.pdf)\n- [Medium article with general TDA overview](https://towardsdatascience.com/from-tda-to-dl-d06f234f51d)\n- [Medium article about TDA for clustering](https://towardsdatascience.com/tda-to-rule-them-all-tomato-clustering-878e03394a1)\n- [Paper on applied TDA for arrhythmia detection](https://arxiv.org/abs/1906.05795)\n\n## Built With\n\n- [Python](https://www.python.org/)\n- [Poetry](https://python-poetry.org/)\n- [Gudhi](https://gudhi.inria.fr/)\n- [Keras](https://keras.io/)\n\n## Get Started\n\n```bash\npip install topologyx\n# or with poetry\npoetry add topologyx\n```\n\n### How To Use\n\n```python\nfrom topologyx.filtrations import Filtration\n\nfiltration = Filtration(data, use_alpha=False)\nfiltration.build_persistence_diagram(filtration_type=FiltrationType.SIMPLE, dimension=0)\n```\n\n```python\nfrom topologyx.clustering import TomatoClustering\n\ntomato = TomatoClustering(data)\n_ = tomato.estimate_clusters(visualize=True)\n_ = tomato.fit_predict(n_clusters=3, visualize=True)\n```\n\n### Local Installation\n\n```bash\ngit clone https://github.com/merylldindin/topologyx\n# install dependencies\nmake install\n```\n\n### Using Notebooks\n\n`ipykernel` comes out of the box with our dependencies, so you can directly use the notebooks provided in the `examples` folder. I use `VSCode` as engine for my jupyter notebooks.\n\n**Tutorial: Filtration of a 3D shape:** This [notebook](https://github.com/merylldindin/topologyx/blob/master/examples/filtrations.ipynb) gives a simple example of how to handle three-dimensional shapes. The whole example is based on the height as filtration function, so not invariant in space. However, it gives a pretty good idea of what the output of a topological analysis may give.\n\n**Tutorial: ToMaTo clustering:** This [notebook](https://github.com/merylldindin/topologyx/blob/master/examples/clustering.ipynb) rather focus on a specific strength of TDA: its robustness to detect centroids in dataset, along with its ability to record the relationships between each point, enabling us to retrace the whole structure of the centroids. Examples are provided in the notebook.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerylldindin%2Ftopologyx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerylldindin%2Ftopologyx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerylldindin%2Ftopologyx/lists"}