TopoEmbedX 0.0.2.dev131__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. topoembedx-0.0.2.dev131/.github/dependabot.yml +10 -0
  2. topoembedx-0.0.2.dev131/.github/workflows/deploy.yml +102 -0
  3. topoembedx-0.0.2.dev131/.github/workflows/docs.yml +74 -0
  4. topoembedx-0.0.2.dev131/.github/workflows/lint.yml +18 -0
  5. topoembedx-0.0.2.dev131/.github/workflows/test.yml +57 -0
  6. topoembedx-0.0.2.dev131/.gitignore +23 -0
  7. topoembedx-0.0.2.dev131/.pre-commit-config.yaml +47 -0
  8. topoembedx-0.0.2.dev131/CODE_OF_CONDUCT.md +4 -0
  9. topoembedx-0.0.2.dev131/LICENSE.txt +19 -0
  10. topoembedx-0.0.2.dev131/PKG-INFO +237 -0
  11. topoembedx-0.0.2.dev131/README.md +162 -0
  12. topoembedx-0.0.2.dev131/TopoEmbedX.egg-info/PKG-INFO +237 -0
  13. topoembedx-0.0.2.dev131/TopoEmbedX.egg-info/SOURCES.txt +49 -0
  14. topoembedx-0.0.2.dev131/TopoEmbedX.egg-info/dependency_links.txt +1 -0
  15. topoembedx-0.0.2.dev131/TopoEmbedX.egg-info/requires.txt +36 -0
  16. topoembedx-0.0.2.dev131/TopoEmbedX.egg-info/top_level.txt +1 -0
  17. topoembedx-0.0.2.dev131/codecov.yml +7 -0
  18. topoembedx-0.0.2.dev131/docs/Makefile +19 -0
  19. topoembedx-0.0.2.dev131/docs/_static/favicon-48.png +0 -0
  20. topoembedx-0.0.2.dev131/docs/api/classes.rst +44 -0
  21. topoembedx-0.0.2.dev131/docs/api/index.rst +11 -0
  22. topoembedx-0.0.2.dev131/docs/conf.py +79 -0
  23. topoembedx-0.0.2.dev131/docs/contributing/index.rst +257 -0
  24. topoembedx-0.0.2.dev131/docs/index.rst +81 -0
  25. topoembedx-0.0.2.dev131/docs/notebooks +1 -0
  26. topoembedx-0.0.2.dev131/docs/tutorials/index.rst +11 -0
  27. topoembedx-0.0.2.dev131/pyproject.toml +146 -0
  28. topoembedx-0.0.2.dev131/resources/logo.png +0 -0
  29. topoembedx-0.0.2.dev131/setup.cfg +4 -0
  30. topoembedx-0.0.2.dev131/test/classes/test_cell2vec.py +33 -0
  31. topoembedx-0.0.2.dev131/test/classes/test_cell_diff2vec.py +31 -0
  32. topoembedx-0.0.2.dev131/test/classes/test_deepcell.py +33 -0
  33. topoembedx-0.0.2.dev131/test/classes/test_higher_order_laplacian_eigenmaps.py +34 -0
  34. topoembedx-0.0.2.dev131/test/classes/test_hoglee.py +33 -0
  35. topoembedx-0.0.2.dev131/test/classes/test_hope.py +32 -0
  36. topoembedx-0.0.2.dev131/test/test_neighborhood.py +49 -0
  37. topoembedx-0.0.2.dev131/test/test_tutorials.py +34 -0
  38. topoembedx-0.0.2.dev131/topoembedx/__init__.py +8 -0
  39. topoembedx-0.0.2.dev131/topoembedx/_version.py +16 -0
  40. topoembedx-0.0.2.dev131/topoembedx/classes/__init__.py +1 -0
  41. topoembedx-0.0.2.dev131/topoembedx/classes/cell2vec.py +155 -0
  42. topoembedx-0.0.2.dev131/topoembedx/classes/cell_diff2vec.py +140 -0
  43. topoembedx-0.0.2.dev131/topoembedx/classes/deepcell.py +135 -0
  44. topoembedx-0.0.2.dev131/topoembedx/classes/higher_order_laplacian_eigenmaps.py +100 -0
  45. topoembedx-0.0.2.dev131/topoembedx/classes/hoglee.py +92 -0
  46. topoembedx-0.0.2.dev131/topoembedx/classes/hope.py +188 -0
  47. topoembedx-0.0.2.dev131/topoembedx/classes/random_walks.py +189 -0
  48. topoembedx-0.0.2.dev131/topoembedx/exceptions.py +13 -0
  49. topoembedx-0.0.2.dev131/topoembedx/neighborhood.py +84 -0
  50. topoembedx-0.0.2.dev131/tutorials/cell2vec.ipynb +220 -0
  51. topoembedx-0.0.2.dev131/tutorials/deepcell.ipynb +425 -0
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ groups:
8
+ actions:
9
+ patterns:
10
+ - "*"
@@ -0,0 +1,102 @@
1
+ name: Publish to PyPI and TestPyPI
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ build:
7
+ name: Build Distribution
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v4
11
+ - name: Get history and tags for SCM versioning to work
12
+ if: ${{ !startsWith(github.ref, 'refs/tags/') }}
13
+ run: |
14
+ git fetch --prune --unshallow
15
+ git tag -d $(git tag --points-at HEAD)
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.x"
20
+ - name: Install pypa/build
21
+ run: pip install build --user
22
+ - name: Build a binary wheel and a source tarball
23
+ run: python3 -m build
24
+ - name: Store the distribution packages
25
+ uses: actions/upload-artifact@v4
26
+ with:
27
+ name: python-package-distributions
28
+ path: dist/
29
+
30
+ publish-to-pypi:
31
+ name: Publish to PyPI
32
+ if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
33
+ needs: [build]
34
+ runs-on: ubuntu-latest
35
+ environment:
36
+ name: pypi
37
+ url: https://pypi.org/p/TopoEmbedX
38
+ permissions:
39
+ id-token: write
40
+
41
+ steps:
42
+ - name: Download all the dists
43
+ uses: actions/download-artifact@v4
44
+ with:
45
+ name: python-package-distributions
46
+ path: dist/
47
+ - name: Publish distribution 📦 to PyPI
48
+ uses: pypa/gh-action-pypi-publish@release/v1
49
+
50
+ github-release:
51
+ name: Sign and Upload as GitHub Release
52
+ needs: [publish-to-pypi]
53
+ runs-on: ubuntu-latest
54
+
55
+ permissions:
56
+ contents: write
57
+ id-token: write
58
+
59
+ steps:
60
+ - name: Download all the dists
61
+ uses: actions/download-artifact@v4
62
+ with:
63
+ name: python-package-distributions
64
+ path: dist/
65
+ - name: Sign the dists with Sigstore
66
+ uses: sigstore/gh-action-sigstore-python@v3.0.0
67
+ with:
68
+ inputs: >-
69
+ ./dist/*.tar.gz
70
+ ./dist/*.whl
71
+ - name: Create GitHub Release
72
+ env:
73
+ GITHUB_TOKEN: ${{ github.token }}
74
+ run: gh release create '${{ github.ref_name }}' --repo '${{ github.repository }}' --notes ""
75
+ - name: Upload artifact signatures to GitHub Release
76
+ env:
77
+ GITHUB_TOKEN: ${{ github.token }}
78
+ run: gh release upload '${{ github.ref_name }}' dist/** --repo '${{ github.repository }}'
79
+
80
+ publish-to-testpypi:
81
+ name: Publish to TestPyPI
82
+ if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
83
+ needs: [build]
84
+ runs-on: ubuntu-latest
85
+
86
+ environment:
87
+ name: testpypi
88
+ url: https://test.pypi.org/p/TopoEmbedX
89
+
90
+ permissions:
91
+ id-token: write
92
+
93
+ steps:
94
+ - name: Download all the dists
95
+ uses: actions/download-artifact@v4
96
+ with:
97
+ name: python-package-distributions
98
+ path: dist/
99
+ - name: Publish distribution 📦 to TestPyPI
100
+ uses: pypa/gh-action-pypi-publish@release/v1
101
+ with:
102
+ repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,74 @@
1
+ name: "Docs: Check and Deploy"
2
+
3
+ on:
4
+ push:
5
+ branches: [main, github-actions-test]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
11
+ cancel-in-progress: true
12
+
13
+ permissions:
14
+ contents: write
15
+
16
+ jobs:
17
+ build:
18
+ runs-on: ${{matrix.os}}
19
+ strategy:
20
+ matrix:
21
+ os: [ubuntu-latest]
22
+ python-version: [3.10.11]
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - name: Build using Python ${{matrix.python-version}}
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: ${{matrix.python-version}}
30
+ cache: "pip"
31
+ cache-dependency-path: "pyproject.toml"
32
+ - name: Install dependencies [pip]
33
+ run: |
34
+ pip install "karateclub @ git+https://github.com/benedekrozemberczki/karateclub@cb46a91df8dcbeb2570debcf6a9d0c518107a2de"
35
+ pip install -e .[doc]
36
+ - name: Install Pandoc [apt-get]
37
+ run: |
38
+ sudo apt-get -y install pandoc
39
+ - name: Generate Docs [Sphinx]
40
+ run: |
41
+ sphinx-build -b html -D version=latest -D release=latest docs docs/_build
42
+ - name: Deploy Docs
43
+ uses: JamesIves/github-pages-deploy-action@v4
44
+ if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.repository == 'pyt-team/TopoEmbedX' }}
45
+ with:
46
+ branch: main
47
+ folder: docs/_build
48
+ token: ${{ secrets.DOCUMENTATION_KEY }}
49
+ repository-name: pyt-team/pyt-team.github.io
50
+ target-folder: topoembedx
51
+ clean: true
52
+
53
+ numpydoc-validation:
54
+ runs-on: ${{matrix.os}}
55
+ strategy:
56
+ matrix:
57
+ os: [ubuntu-latest]
58
+ python-version: [3.12]
59
+
60
+ steps:
61
+ - uses: actions/checkout@v4
62
+ - name: Build using Python ${{matrix.python-version}}
63
+ uses: actions/setup-python@v5
64
+ with:
65
+ python-version: ${{matrix.python-version}}
66
+ cache: "pip"
67
+ cache-dependency-path: "pyproject.toml"
68
+ - name: Install dependencies [pip]
69
+ run: |
70
+ pip install "karateclub @ git+https://github.com/benedekrozemberczki/karateclub@cb46a91df8dcbeb2570debcf6a9d0c518107a2de"
71
+ pip install -e .[doc]
72
+ - name: Checking NumpyDoc Validation for files
73
+ run: |
74
+ numpydoc lint test/**/*.py topoembedx/**/*.py
@@ -0,0 +1,18 @@
1
+ name: Linting
2
+
3
+ on:
4
+ push:
5
+ branches: [main, github-actions-test]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ ruff:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: chartboost/ruff-action@v1
@@ -0,0 +1,57 @@
1
+ name: "Test"
2
+
3
+ on:
4
+ push:
5
+ branches: [main, github-actions-test]
6
+ paths-ignore:
7
+ - "docs/**"
8
+ - "README.md"
9
+ - "LICENSE.txt"
10
+ - ".gitignore"
11
+
12
+ pull_request:
13
+ branches: [main]
14
+ paths-ignore:
15
+ - "docs/**"
16
+ - "README.md"
17
+ - "LICENSE.txt"
18
+ - ".gitignore"
19
+
20
+ concurrency:
21
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
22
+ cancel-in-progress: true
23
+
24
+ jobs:
25
+ pytest:
26
+ runs-on: ${{ matrix.os }}
27
+
28
+ strategy:
29
+ matrix:
30
+ os: [ubuntu-latest]
31
+ python-version: ["3.10", "3.11", "3.12"]
32
+
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+ - name: Set up Python ${{ matrix.python-version }}
36
+ uses: actions/setup-python@v5
37
+ with:
38
+ python-version: ${{ matrix.python-version }}
39
+ cache: "pip"
40
+ cache-dependency-path: "pyproject.toml"
41
+
42
+ - name: Install main package [pip]
43
+ run: |
44
+ pip install "karateclub @ git+https://github.com/benedekrozemberczki/karateclub@cb46a91df8dcbeb2570debcf6a9d0c518107a2de"
45
+ pip install -e .[all]
46
+ - name: Typecheck [mypy]
47
+ run: |
48
+ mypy -p topoembedx
49
+ - name: Run tests [pytest]
50
+ run: |
51
+ pytest --cov --cov-report=xml:coverage.xml
52
+ - name: Upload coverage
53
+ uses: codecov/codecov-action@v4
54
+ with:
55
+ token: ${{ secrets.CODECOV_TOKEN }}
56
+ file: coverage.xml
57
+ fail_ci_if_error: false
@@ -0,0 +1,23 @@
1
+ .DS_Store
2
+ .pytest_cache/
3
+ .eggs/
4
+ *.egg-info/
5
+ .ipynb_checkpoints
6
+ .coverage
7
+ .coverage.*
8
+ coverage.xml
9
+ .vscode
10
+ .idea
11
+ .venv
12
+ *.out
13
+ *.pt
14
+ **/*.cpython-38.pyc
15
+ **/__pycache__/**
16
+ __pycache__/
17
+ dist/
18
+ docs/build/
19
+ topoembedx/.DS_Store
20
+ topoembedx/_version.py
21
+
22
+ # Sphinx documentation
23
+ docs/_build/
@@ -0,0 +1,47 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: fix-byte-order-marker
6
+ - id: check-case-conflict
7
+ - id: check-merge-conflict
8
+ - id: check-yaml
9
+ - id: mixed-line-ending
10
+ args:
11
+ - --fix=no
12
+ - id: check-added-large-files
13
+ args:
14
+ - --maxkb=2048
15
+ - id: trailing-whitespace
16
+
17
+ - repo: https://github.com/astral-sh/ruff-pre-commit
18
+ rev: v0.7.0
19
+ hooks:
20
+ - id: ruff
21
+ types_or: [python, pyi, jupyter]
22
+ args: ["--fix", "--show-fixes"]
23
+ - id: ruff-format
24
+ types_or: [python, pyi, jupyter]
25
+
26
+ - repo: https://github.com/adamchainz/blacken-docs
27
+ rev: 1.19.0
28
+ hooks:
29
+ - id: blacken-docs
30
+ additional_dependencies: [black==24.*]
31
+
32
+ - repo: https://github.com/numpy/numpydoc
33
+ rev: v1.8.0
34
+ hooks:
35
+ - id: numpydoc-validation
36
+
37
+ - repo: https://github.com/rbubley/mirrors-prettier
38
+ rev: v3.3.3
39
+ hooks:
40
+ - id: prettier
41
+
42
+ - repo: https://github.com/pre-commit/pygrep-hooks
43
+ rev: v1.10.0
44
+ hooks:
45
+ - id: rst-backticks
46
+ - id: rst-directive-colons
47
+ - id: rst-inline-touching-normal
@@ -0,0 +1,4 @@
1
+ Our Code of Conduct is at
2
+ https://pyt-team.github.io/toponetx/project/code_of_conduct.html.
3
+
4
+ The code of conduct lives in the TopoNetX repository under `docs/project/code_of_conduct.rst`.
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2022 pyt-team authors
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,237 @@
1
+ Metadata-Version: 2.1
2
+ Name: TopoEmbedX
3
+ Version: 0.0.2.dev131
4
+ Summary: Representation Learning on Topological Domains
5
+ Author-email: Mustafa Hajij <mhajij@usfca.edu>, Mathilde Papillon <papillon@ucsb.edu>, Florian Frantzen <florian.frantzen@cs.rwth-aachen.de>
6
+ License: Copyright (c) 2022 pyt-team authors
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
25
+
26
+ Project-URL: documentation, https://pyt-team.github.io/topoembedx/
27
+ Project-URL: source, https://github.com/pyt-team/TopoEmbedX/
28
+ Classifier: Development Status :: 3 - Alpha
29
+ Classifier: Intended Audience :: Developers
30
+ Classifier: Intended Audience :: Science/Research
31
+ Classifier: Operating System :: OS Independent
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Programming Language :: Python :: 3
34
+ Classifier: Programming Language :: Python :: 3 :: Only
35
+ Classifier: Programming Language :: Python :: 3.10
36
+ Classifier: Programming Language :: Python :: 3.11
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Topic :: Scientific/Engineering
39
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
40
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
41
+ Requires-Python: >=3.10
42
+ Description-Content-Type: text/markdown
43
+ License-File: LICENSE.txt
44
+ Requires-Dist: numpy
45
+ Requires-Dist: karateclub
46
+ Requires-Dist: networkx
47
+ Requires-Dist: pyrandwalk
48
+ Requires-Dist: scipy
49
+ Requires-Dist: toponetx
50
+ Requires-Dist: karateclub
51
+ Requires-Dist: pygsp
52
+ Provides-Extra: doc
53
+ Requires-Dist: jupyter; extra == "doc"
54
+ Requires-Dist: matplotlib; extra == "doc"
55
+ Requires-Dist: nbsphinx; extra == "doc"
56
+ Requires-Dist: nbsphinx_link; extra == "doc"
57
+ Requires-Dist: numpydoc>=1.8.0; extra == "doc"
58
+ Requires-Dist: sphinx; extra == "doc"
59
+ Requires-Dist: sphinx-copybutton; extra == "doc"
60
+ Requires-Dist: sphinx_gallery; extra == "doc"
61
+ Requires-Dist: pydata-sphinx-theme; extra == "doc"
62
+ Provides-Extra: lint
63
+ Requires-Dist: pre-commit; extra == "lint"
64
+ Requires-Dist: ruff; extra == "lint"
65
+ Provides-Extra: test
66
+ Requires-Dist: pytest; extra == "test"
67
+ Requires-Dist: pytest-cov; extra == "test"
68
+ Requires-Dist: coverage; extra == "test"
69
+ Requires-Dist: jupyter; extra == "test"
70
+ Requires-Dist: mypy; extra == "test"
71
+ Provides-Extra: dev
72
+ Requires-Dist: TopoEmbedX[lint,test]; extra == "dev"
73
+ Provides-Extra: all
74
+ Requires-Dist: TopoEmbedX[dev,doc]; extra == "all"
75
+
76
+ <h2 align="center">
77
+ <img src="https://raw.githubusercontent.com/pyt-team/TopoEmbedX/main/resources/logo.png" height="250">
78
+ </h2>
79
+
80
+ <h3 align="center">
81
+ Representation Learning on Topological Domains
82
+ </h3>
83
+
84
+ <p align="center">
85
+ <a href="#%EF%B8%8F-main-features">Main Features</a> •
86
+ <a href="#-installing-topoembedx">Installing TopoEmbedX</a> •
87
+ <a href="#-getting-started">Getting Started</a> •
88
+ <a href="#-references">References</a>
89
+ </p>
90
+
91
+ <div align="center">
92
+
93
+ [![Test](https://github.com/pyt-team/TopoEmbedX/actions/workflows/test.yml/badge.svg)](https://github.com/pyt-team/TopoEmbedX/actions/workflows/test.yml)
94
+ [![Lint](https://github.com/pyt-team/TopoEmbedX/actions/workflows/lint.yml/badge.svg)](https://github.com/pyt-team/TopoEmbedX/actions/workflows/lint.yml)
95
+ [![Codecov](https://codecov.io/gh/pyt-team/TopoEmbedX/branch/main/graph/badge.svg)](https://app.codecov.io/gh/pyt-team/TopoEmbedX)
96
+ [![Docs](https://img.shields.io/badge/docs-website-brightgreen)](https://pyt-team.github.io/topoembedx/index.html)
97
+ [![Python](https://img.shields.io/badge/python-3.10+-blue?logo=python)](https://www.python.org/)
98
+ [![license](https://badgen.net/github/license/pyt-team/TopoNetX?color=green)](https://github.com/pyt-team/TopoNetX/blob/main/LICENSE)
99
+ [![slack](https://img.shields.io/badge/chat-on%20slack-purple?logo=slack)](https://join.slack.com/t/pyt-teamworkspace/shared_invite/zt-2k63sv99s-jbFMLtwzUCc8nt3sIRWjEw)
100
+
101
+ [![DOI](https://zenodo.org/badge/609414708.svg)](https://zenodo.org/badge/latestdoi/609414708)
102
+
103
+ </div>
104
+
105
+ ![topoembedx](https://user-images.githubusercontent.com/8267869/234074436-402ac931-2dc9-43da-a056-6c927f613242.png)
106
+
107
+ Many natural systems as diverse as social networks and proteins are characterized by _relational structure_. This is the structure of interactions between components in the system, such as social interactions between individuals or electrostatic interactions between atoms.
108
+
109
+ How can we conveniently represent data defined on such relational systems?
110
+
111
+ `TopoEmbedX` (TEX) is a package for representation learning on topological domains, the mathematical structures of relational systems.
112
+
113
+ ## 🛠️ Main Features
114
+
115
+ Support of higher order representation learning algorithms such as:
116
+
117
+ - DeepCell,
118
+ - Cell2Vec,
119
+ - Higher Order Laplacian Eigenmaps, and
120
+ - Higher Order Geometric Laplacian Eigenmaps
121
+
122
+ for the topological domains supported in [TopoNetX](https://github.com/pyt-team/TopoNetX).
123
+
124
+ ## 🤖 Installing TopoEmbedX
125
+
126
+ `TopoEmbedX` is available on PyPI and can be installed using `pip`.
127
+
128
+ ```bash
129
+ pip install "pygsp @ git+https://github.com/epfl-lts2/pygsp@a3412ce7696c02c8a55439e89d0c9ab8ae863269"
130
+ pip install "karateclub @ git+https://github.com/benedekrozemberczki/karateclub@cb46a91df8dcbeb2570debcf6a9d0c518107a2de"
131
+ pip install topoembedx
132
+ ```
133
+
134
+ The library depends on `pygsp` and `karateclub`, which did not receive updates
135
+ on PyPI for a long time. You have to manually install the latest versions from
136
+ GitHub for up-to-date Python and NetworkX compatibility.
137
+
138
+ ## 🦾 Getting Started
139
+
140
+ ```ruby
141
+ import topoembedx as tex
142
+ import toponetx as tnx
143
+
144
+ # create a cell complex object with a few cells
145
+ cc = tnx.CellComplex([[1, 2, 3, 4], [3, 4, 5, 6, 7, 8]], ranks=2)
146
+
147
+ # create a model
148
+ model = tex.Cell2Vec()
149
+
150
+ # fit the model
151
+ model.fit(cc, neighborhood_type="adj", neighborhood_dim={"rank": 1, "via_rank": -1})
152
+ # here neighborhood_dim={"rank": 1, "via_rank": -1} specifies the dimension for
153
+ # which the cell embeddings are going to be computed.
154
+ # rank=1 means that the embeddings will be computed for the first dimension.
155
+ # The integer 'via_rank' is ignored and only considered
156
+ # when the input complex is a combinatorial complex or colored hypergraph.
157
+
158
+
159
+ # get the embeddings:
160
+ embeddings = model.get_embedding()
161
+ ```
162
+
163
+ ## 🧑‍💻 Install from source
164
+
165
+ To install the latest version from source, follow these steps:
166
+
167
+ 1. Clone a copy of `TopoEmbedX` from source:
168
+
169
+ ```bash
170
+ git clone https://github.com/pyt-team/TopoEmbedX
171
+ cd TopoEmbedX
172
+ ```
173
+
174
+ 2. If you have already cloned `TopoEmbedX` from source, update it:
175
+
176
+ ```bash
177
+ git pull
178
+ ```
179
+
180
+ 3. Install a recent version of `pygsp` and `karateclub`:
181
+
182
+ ```bash
183
+ pip install "pygsp @ git+https://github.com/epfl-lts2/pygsp@a3412ce7696c02c8a55439e89d0c9ab8ae863269"
184
+ pip install "karateclub @ git+https://github.com/benedekrozemberczki/karateclub@cb46a91df8dcbeb2570debcf6a9d0c518107a2de"
185
+ ```
186
+
187
+ 4. Install `TopoEmbedX` in editable mode:
188
+
189
+ ```bash
190
+ pip install -e '.[all]'
191
+ ```
192
+
193
+ 5. Install pre-commit hooks:
194
+
195
+ ```bash
196
+ pre-commit install
197
+ ```
198
+
199
+ ## 🔍 References
200
+
201
+ To learn more about topological representation learning.
202
+
203
+ - Mustafa Hajij, Ghada Zamzmi, Theodore Papamarkou, Nina Miolane, Aldo Guzmán-Sáenz, Karthikeyan Natesan Ramamurthy, Tolga Birdal, Tamal K. Dey, Soham Mukherjee, Shreyas N. Samaga, Neal Livesay, Robin Walters, Paul Rosen, Michael T. Schaub. [Topological Deep Learning: Going Beyond Graph Data](https://arxiv.org/abs/2206.00606).
204
+
205
+ ```
206
+ @misc{hajij2023topological,
207
+ title={Topological Deep Learning: Going Beyond Graph Data},
208
+ author={Mustafa Hajij and Ghada Zamzmi and Theodore Papamarkou and Nina Miolane and Aldo Guzmán-Sáenz and Karthikeyan Natesan Ramamurthy and Tolga Birdal and Tamal K. Dey and Soham Mukherjee and Shreyas N. Samaga and Neal Livesay and Robin Walters and Paul Rosen and Michael T. Schaub},
209
+ year={2023},
210
+ eprint={2206.00606},
211
+ archivePrefix={arXiv},
212
+ primaryClass={cs.LG}
213
+ }
214
+ ```
215
+
216
+ Figure from:
217
+
218
+ - Mathilde Papillon, Sophia Sanborn, Mustafa Hajij, Nina Miolane. [Architectures of Topological Deep Learning: A Survey on Topological Neural Networks.](https://arxiv.org/pdf/2304.10031.pdf)
219
+
220
+ ```
221
+ @misc{papillon2023architectures,
222
+ title={Architectures of Topological Deep Learning: A Survey on Topological Neural Networks},
223
+ author={Mathilde Papillon and Sophia Sanborn and Mustafa Hajij and Nina Miolane},
224
+ year={2023},
225
+ eprint={2304.10031},
226
+ archivePrefix={arXiv},
227
+ primaryClass={cs.LG}
228
+ }
229
+ ```
230
+
231
+ ## Funding
232
+
233
+ <img align="right" width="200" src="https://raw.githubusercontent.com/pyt-team/TopoNetX/main/resources/erc_logo.png">
234
+
235
+ Partially funded by the European Union (ERC, HIGH-HOPeS, 101039827). Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council Executive Agency. Neither the European Union nor the granting authority can be held responsible for them.
236
+
237
+ Partially funded by the National Science Foundation (DMS-2134231, DMS-2134241).