From 603cb9f3e5cea51d4579be487c914e744f7b3350 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 3 Jul 2024 16:15:48 -0400 Subject: [PATCH 01/19] Added a file for the jupyter notebook showcasing --- .github/workflows/lint.yml | 26 +- .github/workflows/test_codebase.yml | 124 +-- .github/workflows/test_tutorials.yml | 118 +-- .gitignore | 334 +++--- .pre-commit-config.yaml | 80 +- .python-version | 1 + LICENSE | 42 +- README.md | 156 +-- configs/__init__.py | 2 +- configs/datasets/AQSOL.yaml | 24 +- configs/datasets/MUTAG.yaml | 40 +- configs/datasets/NCI1.yaml | 32 +- configs/datasets/NCI109.yaml | 26 +- configs/datasets/PROTEINS_TU.yaml | 28 +- configs/datasets/ZINC.yaml | 28 +- configs/datasets/cocitation_citeseer.yaml | 26 +- configs/datasets/cocitation_cora.yaml | 26 +- configs/datasets/cocitation_pubmed.yaml | 24 +- configs/datasets/manual_dataset.yaml | 24 +- configs/models/cell/cwn.yaml | 10 +- configs/models/hypergraph/unigcn.yaml | 6 +- configs/models/simplicial/san.yaml | 12 +- .../data_fields_to_dense.yaml | 2 +- .../data_manipulations/identity.yaml | 2 +- .../keep_selected_fields.yaml | 8 +- .../data_manipulations/node_degrees.yaml | 4 +- .../node_feat_to_float.yaml | 4 +- .../one_hot_node_degree_features.yaml | 12 +- .../feature_liftings/projection_sum.yaml | 2 +- .../liftings/graph2cell/cycle_lifting.yaml | 10 +- .../graph2hypergraph/knn_lifting.yaml | 8 +- .../graph2simplicial/clique_lifting.yaml | 12 +- configs/transforms/liftings/identity.yaml | 6 +- modules/__init__.py | 10 +- modules/data/load/base.py | 72 +- modules/data/load/loaders.py | 412 ++++---- modules/data/preprocess/preprocessor.py | 274 ++--- .../data/utils/concat2geometric_dataset.py | 54 +- modules/data/utils/custom_dataset.py | 30 +- modules/data/utils/utils.py | 846 +++++++-------- modules/models/cell/cwn.py | 128 +-- modules/models/hypergraph/unigcn.py | 102 +- modules/models/simplicial/san.py | 98 +- .../data_manipulations/manipulations.py | 612 +++++------ modules/transforms/data_transform.py | 150 +-- .../feature_liftings/feature_liftings.py | 114 +- .../digraph2simplicial/clique_lifting.py | 0 .../transforms/liftings/graph2cell/base.py | 102 +- .../liftings/graph2cell/cycle_lifting.py | 96 +- .../liftings/graph2combinatorial/base.py | 30 +- .../liftings/graph2hypergraph/base.py | 30 +- .../liftings/graph2hypergraph/knn_lifting.py | 150 +-- .../liftings/graph2pointcloud/base.py | 30 +- .../liftings/graph2simplicial/base.py | 113 +- .../graph2simplicial/clique_lifting.py | 96 +- modules/transforms/liftings/lifting.py | 435 ++++---- .../liftings/pointcloud2cell/base.py | 36 +- .../liftings/pointcloud2combinatorial/base.py | 30 +- .../liftings/pointcloud2graph/base.py | 30 +- .../liftings/pointcloud2hypergraph/base.py | 30 +- .../liftings/pointcloud2simplicial/base.py | 36 +- modules/utils/utils.py | 994 +++++++++--------- pyproject.toml | 336 +++--- .../feature_liftings/test_projection_sum.py | 180 ++-- .../liftings/graph2cell/test_cycle_lifting.py | 120 +-- .../graph2hypergraph/test_khop_lifting.py | 92 +- .../graph2simplicial/test_clique_lifting.py | 174 +-- test/tutorials/test_tutorials.py | 68 +- .../weighted_clique_lifting.ipynb | 0 tutorials/graph2cell/cycle_lifting.ipynb | 702 ++++++------- tutorials/graph2hypergraph/knn_lifting.ipynb | 694 ++++++------ .../graph2simplicial/clique_lifting.ipynb | 71 +- 72 files changed, 4424 insertions(+), 4412 deletions(-) create mode 100644 .python-version create mode 100644 modules/transforms/liftings/digraph2simplicial/clique_lifting.py create mode 100644 tutorials/digraph2simplicial/weighted_clique_lifting.ipynb diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c7fbaccd..a2d3bf5c 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,14 +1,14 @@ -name: Linting - -on: - push: - branches: [ main,github-actions-test ] - pull_request: - branches: [ main ] - -jobs: - ruff: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 +name: Linting + +on: + push: + branches: [ main,github-actions-test ] + pull_request: + branches: [ main ] + +jobs: + ruff: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 - uses: chartboost/ruff-action@v1 \ No newline at end of file diff --git a/.github/workflows/test_codebase.yml b/.github/workflows/test_codebase.yml index bef89252..d0428181 100644 --- a/.github/workflows/test_codebase.yml +++ b/.github/workflows/test_codebase.yml @@ -1,63 +1,63 @@ -name: "Testing Codebase" - -on: - workflow_dispatch: - push: - branches: [main,github-actions-test] - paths-ignore: - - 'docs/**' - - 'README.md' - - 'LICENSE.txt' - - '.gitignore' - - pull_request: - branches: [main] - paths-ignore: - - 'docs/**' - - 'README.md' - - 'LICENSE.txt' - - '.gitignore' - -jobs: - - pytest: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python-version: ["3.10", "3.11"] - torch-version: [2.0.1] - include: - - torch-version: 2.0.1 - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - cache: "pip" - cache-dependency-path: '**/pyproject.toml' - - - name: Install PyTorch ${{ matrix.torch-version }}+cpu - run: | - pip install --upgrade pip setuptools wheel - pip install torch==${{ matrix.torch-version}} --extra-index-url https://download.pytorch.org/whl/cpu - pip install torch-scatter -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html - pip install torch-sparse -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html - pip install torch-cluster -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html - pip show pip - - name: Install main package - run: | - pip install -e .[all] - - name: Run tests for codebase [pytest] - run: | - pytest -n 2 --cov --cov-report=xml:coverage.xml test/transforms/feature_liftings test/transforms/liftings - - name: Upload coverage - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: coverage.xml +name: "Testing Codebase" + +on: + workflow_dispatch: + push: + branches: [main,github-actions-test] + paths-ignore: + - 'docs/**' + - 'README.md' + - 'LICENSE.txt' + - '.gitignore' + + pull_request: + branches: [main] + paths-ignore: + - 'docs/**' + - 'README.md' + - 'LICENSE.txt' + - '.gitignore' + +jobs: + + pytest: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python-version: ["3.10", "3.11"] + torch-version: [2.0.1] + include: + - torch-version: 2.0.1 + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: '**/pyproject.toml' + + - name: Install PyTorch ${{ matrix.torch-version }}+cpu + run: | + pip install --upgrade pip setuptools wheel + pip install torch==${{ matrix.torch-version}} --extra-index-url https://download.pytorch.org/whl/cpu + pip install torch-scatter -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html + pip install torch-sparse -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html + pip install torch-cluster -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html + pip show pip + - name: Install main package + run: | + pip install -e .[all] + - name: Run tests for codebase [pytest] + run: | + pytest -n 2 --cov --cov-report=xml:coverage.xml test/transforms/feature_liftings test/transforms/liftings + - name: Upload coverage + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: coverage.xml fail_ci_if_error: false \ No newline at end of file diff --git a/.github/workflows/test_tutorials.yml b/.github/workflows/test_tutorials.yml index 87165aea..425dc3c7 100644 --- a/.github/workflows/test_tutorials.yml +++ b/.github/workflows/test_tutorials.yml @@ -1,59 +1,59 @@ -name: "Testing Tutorials" - -on: - workflow_dispatch: - push: - branches: [main,github-actions-test] - paths-ignore: - - 'docs/**' - - 'README.md' - - 'LICENSE.txt' - - '.gitignore' - - pull_request: - branches: [main] - paths-ignore: - - 'docs/**' - - 'README.md' - - 'LICENSE.txt' - - '.gitignore' - -# Disable debugger's warnings from nbconvert in test_tutorials.py -env: - PYDEVD_DISABLE_FILE_VALIDATION: 1 - -jobs: - test-all-tutorials-pytest: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python-version: ["3.10", "3.11"] - torch-version: [2.0.1] - include: - - torch-version: 2.0.1 - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - cache: "pip" - cache-dependency-path: "pyproject.toml" - - - name: Install PyTorch ${{ matrix.torch-version }}+cpu - run: | - pip install --upgrade pip setuptools wheel - pip install torch==${{ matrix.torch-version}} --extra-index-url https://download.pytorch.org/whl/cpu - pip install torch-scatter -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html - pip install torch-sparse -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html - pip install torch-cluster -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html - - name: Install main package - run: | - pip install -e .[all] - - name: Run tests for tutorials on all domains [pytest] - run: | - pytest test/tutorials/test_tutorials.py +name: "Testing Tutorials" + +on: + workflow_dispatch: + push: + branches: [main,github-actions-test] + paths-ignore: + - 'docs/**' + - 'README.md' + - 'LICENSE.txt' + - '.gitignore' + + pull_request: + branches: [main] + paths-ignore: + - 'docs/**' + - 'README.md' + - 'LICENSE.txt' + - '.gitignore' + +# Disable debugger's warnings from nbconvert in test_tutorials.py +env: + PYDEVD_DISABLE_FILE_VALIDATION: 1 + +jobs: + test-all-tutorials-pytest: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python-version: ["3.10", "3.11"] + torch-version: [2.0.1] + include: + - torch-version: 2.0.1 + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: "pyproject.toml" + + - name: Install PyTorch ${{ matrix.torch-version }}+cpu + run: | + pip install --upgrade pip setuptools wheel + pip install torch==${{ matrix.torch-version}} --extra-index-url https://download.pytorch.org/whl/cpu + pip install torch-scatter -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html + pip install torch-sparse -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html + pip install torch-cluster -f https://data.pyg.org/whl/torch-${{ matrix.torch-version }}+cpu.html + - name: Install main package + run: | + pip install -e .[all] + - name: Run tests for tutorials on all domains [pytest] + run: | + pytest test/tutorials/test_tutorials.py diff --git a/.gitignore b/.gitignore index df7fee7c..aea0b2d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,168 +1,168 @@ -# Byte-compiled / optimized / DLL files / DS_Store -__pycache__/ -*.py[cod] -*$py.class -.DS_Store -*/.DS_Store - -# dataset folders -datasets/* - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -# VS Code +# Byte-compiled / optimized / DLL files / DS_Store +__pycache__/ +*.py[cod] +*$py.class +.DS_Store +*/.DS_Store + +# dataset folders +datasets/* + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# VS Code .vscode/ \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3c6c889e..2fc5d326 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,41 +1,41 @@ -default_language_version : - python : python3 -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 - hooks: - - id: check-byte-order-marker - - id: check-case-conflict - - id: check-merge-conflict - - id: check-yaml - - id: mixed-line-ending - args: - - --fix=no - - id: check-added-large-files - args: - - --maxkb=2048 - - id: trailing-whitespace - - id: requirements-txt-fixer - - - repo: https://github.com/psf/black - rev: 23.3.0 - hooks: - - id: black-jupyter - - - repo: https://github.com/pycqa/isort - rev: 5.12.0 - hooks: - - id : isort - args : ["--profile=black", "--filter-files"] - - #- repo: https://github.com/asottile/blacken-docs - # rev: 1.13.0 - # hooks: - # - id: blacken-docs - # additional_dependencies: [black==23.3.0] - - # - repo: https://github.com/pycqa/flake8 - # rev: 6.0.0 - # hooks: - # - id: flake8 +default_language_version : + python : python3 +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.0.1 + hooks: + - id: check-byte-order-marker + - id: check-case-conflict + - id: check-merge-conflict + - id: check-yaml + - id: mixed-line-ending + args: + - --fix=no + - id: check-added-large-files + args: + - --maxkb=2048 + - id: trailing-whitespace + - id: requirements-txt-fixer + + - repo: https://github.com/psf/black + rev: 23.3.0 + hooks: + - id: black-jupyter + + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id : isort + args : ["--profile=black", "--filter-files"] + + #- repo: https://github.com/asottile/blacken-docs + # rev: 1.13.0 + # hooks: + # - id: blacken-docs + # additional_dependencies: [black==23.3.0] + + # - repo: https://github.com/pycqa/flake8 + # rev: 6.0.0 + # hooks: + # - id: flake8 # additional_dependencies: [flake8-docstrings, Flake8-pyproject] \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..d2c96c0a --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.11.3 diff --git a/LICENSE b/LICENSE index 2e9a2880..bd133403 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ -MIT License - -Copyright (c) 2024 pyt-team - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2024 pyt-team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 315d9b92..ab3eca37 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,78 @@ -# ICML Topological Deep Learning Challenge 2024: Beyond the Graph Domain -Official repository for the Topological Deep Learning Challenge 2024, jointly organized by [TAG-DS](https://www.tagds.com) & PyT-Team and hosted by the [Geometry-grounded Representation Learning and Generative Modeling (GRaM) Workshop](https://gram-workshop.github.io) at ICML 2024. - -## Relevant Information -- The deadline is **July 12th, 2024 (Anywhere on Earth)**. Participants are welcome to modify their submissions until this time. -- Please, check out the [main webpage of the challenge](https://pyt-team.github.io/packs/challenge.html) for the full description of the competition (motivation, submission requirements, evaluation, etc.) - -## Brief Description -The main purpose of the challenge is to further expand the current scope and impact of Topological Deep Learning (TDL), enabling the exploration of its applicability in new contexts and scenarios. To do so, we propose participants to design and implement lifting mappings between different data structures and topological domains (point-clouds, graphs, hypergraphs, simplicial/cell/combinatorial complexes), potentially bridging the gap between TDL and all kinds of existing datasets. - - -## General Guidelines -Everyone can participate and participation is free --only principal PyT-Team developers are excluded. It is sufficient to: -- Send a valid Pull Request (i.e. passing all tests) before the deadline. -- Respect Submission Requirements (see below). - -Teams are accepted, and there is no restriction on the number of team members. An acceptable Pull Request automatically subscribes a participant/team to the challenge. - -We encourage participants to start submitting their Pull Request early on, as this helps addressing potential issues with the code. Moreover, earlier Pull Requests will be given priority consideration in the case of multiple submissions of similar quality implementing the same lifting. - -A Pull Request should contain no more than one lifting. However, there is no restriction on the number of submissions (Pull Requests) per participant/team. - -## Basic Setup -To develop on your machine, here are some tips. - -First, we recommend using Python 3.11.3, which is the python version used to run the unit-tests. - -For example, create a conda environment: - ```bash - conda create -n topox python=3.11.3 - conda activate topox - ``` - -Then: - -1. Clone a copy of tmx from source: - - ```bash - git clone git@github.com:pyt-team/challenge-icml-2024.git - cd challenge-icml-2024 - ``` - -2. Install tmx in editable mode: - - ```bash - pip install -e '.[all]' - ``` - **Notes:** - - Requires pip >= 21.3. Refer: [PEP 660](https://peps.python.org/pep-0660/). - - On Windows, use `pip install -e .[all]` instead (without quotes around `[all]`). - -4. Install torch, torch-scatter, torch-sparse with or without CUDA depending on your needs. - - ```bash - pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/${CUDA} - pip install torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-2.0.1+${CUDA}.html - pip install torch-cluster -f https://data.pyg.org/whl/torch-2.0.0+${CUDA}.html - ``` - - where `${CUDA}` should be replaced by either `cpu`, `cu102`, `cu113`, or `cu115` depending on your PyTorch installation (`torch.version.cuda`). - -5. Ensure that you have a working tmx installation by running the entire test suite with - - ```bash - pytest - ``` - - In case an error occurs, please first check if all sub-packages ([`torch-scatter`](https://github.com/rusty1s/pytorch_scatter), [`torch-sparse`](https://github.com/rusty1s/pytorch_sparse), [`torch-cluster`](https://github.com/rusty1s/pytorch_cluster) and [`torch-spline-conv`](https://github.com/rusty1s/pytorch_spline_conv)) are on its latest reported version. - -6. Install pre-commit hooks: - - ```bash - pre-commit install - ``` - -## Questions - -Feel free to contact us through GitHub issues on this repository, or through the [Geometry and Topology in Machine Learning slack](https://tda-in-ml.slack.com/join/shared_invite/enQtOTIyMTIyNTYxMTM2LTA2YmQyZjVjNjgxZWYzMDUyODY5MjlhMGE3ZTI1MzE4NjI2OTY0MmUyMmQ3NGE0MTNmMzNiMTViMjM2MzE4OTc#/). Alternatively, you can contact us via mail at any of these accounts: guillermo.bernardez@upc.edu, lev.telyatnikov@uniroma1.it. +# ICML Topological Deep Learning Challenge 2024: Beyond the Graph Domain +Official repository for the Topological Deep Learning Challenge 2024, jointly organized by [TAG-DS](https://www.tagds.com) & PyT-Team and hosted by the [Geometry-grounded Representation Learning and Generative Modeling (GRaM) Workshop](https://gram-workshop.github.io) at ICML 2024. + +## Relevant Information +- The deadline is **July 12th, 2024 (Anywhere on Earth)**. Participants are welcome to modify their submissions until this time. +- Please, check out the [main webpage of the challenge](https://pyt-team.github.io/packs/challenge.html) for the full description of the competition (motivation, submission requirements, evaluation, etc.) + +## Brief Description +The main purpose of the challenge is to further expand the current scope and impact of Topological Deep Learning (TDL), enabling the exploration of its applicability in new contexts and scenarios. To do so, we propose participants to design and implement lifting mappings between different data structures and topological domains (point-clouds, graphs, hypergraphs, simplicial/cell/combinatorial complexes), potentially bridging the gap between TDL and all kinds of existing datasets. + + +## General Guidelines +Everyone can participate and participation is free --only principal PyT-Team developers are excluded. It is sufficient to: +- Send a valid Pull Request (i.e. passing all tests) before the deadline. +- Respect Submission Requirements (see below). + +Teams are accepted, and there is no restriction on the number of team members. An acceptable Pull Request automatically subscribes a participant/team to the challenge. + +We encourage participants to start submitting their Pull Request early on, as this helps addressing potential issues with the code. Moreover, earlier Pull Requests will be given priority consideration in the case of multiple submissions of similar quality implementing the same lifting. + +A Pull Request should contain no more than one lifting. However, there is no restriction on the number of submissions (Pull Requests) per participant/team. + +## Basic Setup +To develop on your machine, here are some tips. + +First, we recommend using Python 3.11.3, which is the python version used to run the unit-tests. + +For example, create a conda environment: + ```bash + conda create -n topox python=3.11.3 + conda activate topox + ``` + +Then: + +1. Clone a copy of tmx from source: + + ```bash + git clone git@github.com:pyt-team/challenge-icml-2024.git + cd challenge-icml-2024 + ``` + +2. Install tmx in editable mode: + + ```bash + pip install -e '.[all]' + ``` + **Notes:** + - Requires pip >= 21.3. Refer: [PEP 660](https://peps.python.org/pep-0660/). + - On Windows, use `pip install -e .[all]` instead (without quotes around `[all]`). + +4. Install torch, torch-scatter, torch-sparse with or without CUDA depending on your needs. + + ```bash + pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/${CUDA} + pip install torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-2.0.1+${CUDA}.html + pip install torch-cluster -f https://data.pyg.org/whl/torch-2.0.0+${CUDA}.html + ``` + + where `${CUDA}` should be replaced by either `cpu`, `cu102`, `cu113`, or `cu115` depending on your PyTorch installation (`torch.version.cuda`). + +5. Ensure that you have a working tmx installation by running the entire test suite with + + ```bash + pytest + ``` + + In case an error occurs, please first check if all sub-packages ([`torch-scatter`](https://github.com/rusty1s/pytorch_scatter), [`torch-sparse`](https://github.com/rusty1s/pytorch_sparse), [`torch-cluster`](https://github.com/rusty1s/pytorch_cluster) and [`torch-spline-conv`](https://github.com/rusty1s/pytorch_spline_conv)) are on its latest reported version. + +6. Install pre-commit hooks: + + ```bash + pre-commit install + ``` + +## Questions + +Feel free to contact us through GitHub issues on this repository, or through the [Geometry and Topology in Machine Learning slack](https://tda-in-ml.slack.com/join/shared_invite/enQtOTIyMTIyNTYxMTM2LTA2YmQyZjVjNjgxZWYzMDUyODY5MjlhMGE3ZTI1MzE4NjI2OTY0MmUyMmQ3NGE0MTNmMzNiMTViMjM2MzE4OTc#/). Alternatively, you can contact us via mail at any of these accounts: guillermo.bernardez@upc.edu, lev.telyatnikov@uniroma1.it. diff --git a/configs/__init__.py b/configs/__init__.py index 56bf7f4a..3d3602a0 100755 --- a/configs/__init__.py +++ b/configs/__init__.py @@ -1 +1 @@ -# this file is needed here to include configs when building project as a package +# this file is needed here to include configs when building project as a package diff --git a/configs/datasets/AQSOL.yaml b/configs/datasets/AQSOL.yaml index c2c5e6ee..5dc2f635 100644 --- a/configs/datasets/AQSOL.yaml +++ b/configs/datasets/AQSOL.yaml @@ -1,12 +1,12 @@ -data_domain: graph -data_type: AQSOL -data_name: AQSOL -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 1 -num_classes: 1 -task: classification -loss_type: cross_entropy -task_level: graph +data_domain: graph +data_type: AQSOL +data_name: AQSOL +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 1 +num_classes: 1 +task: classification +loss_type: cross_entropy +task_level: graph diff --git a/configs/datasets/MUTAG.yaml b/configs/datasets/MUTAG.yaml index ee3aa764..c6d73899 100755 --- a/configs/datasets/MUTAG.yaml +++ b/configs/datasets/MUTAG.yaml @@ -1,20 +1,20 @@ -data_domain: graph -data_type: TUDataset -data_name: MUTAG -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: - - 7 # initial node features - - 4 # initial edge features -num_classes: 2 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: graph - -# Lifting parameters -max_dim_if_lifted: 2 -preserve_edge_attr_if_lifted: False - +data_domain: graph +data_type: TUDataset +data_name: MUTAG +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: + - 7 # initial node features + - 4 # initial edge features +num_classes: 2 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: graph + +# Lifting parameters +max_dim_if_lifted: 2 +preserve_edge_attr_if_lifted: False + diff --git a/configs/datasets/NCI1.yaml b/configs/datasets/NCI1.yaml index 1894f753..619d4029 100755 --- a/configs/datasets/NCI1.yaml +++ b/configs/datasets/NCI1.yaml @@ -1,16 +1,16 @@ -data_domain: graph -data_type: TUDataset -data_name: NCI1 -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 37 -num_classes: 2 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: graph - - - +data_domain: graph +data_type: TUDataset +data_name: NCI1 +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 37 +num_classes: 2 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: graph + + + diff --git a/configs/datasets/NCI109.yaml b/configs/datasets/NCI109.yaml index 35cfb053..2235c284 100755 --- a/configs/datasets/NCI109.yaml +++ b/configs/datasets/NCI109.yaml @@ -1,13 +1,13 @@ -data_domain: graph -data_type: TUDataset -data_name: NCI109 -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 38 -num_classes: 2 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: graph +data_domain: graph +data_type: TUDataset +data_name: NCI109 +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 38 +num_classes: 2 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: graph diff --git a/configs/datasets/PROTEINS_TU.yaml b/configs/datasets/PROTEINS_TU.yaml index dff1b61a..3f0f4eb4 100755 --- a/configs/datasets/PROTEINS_TU.yaml +++ b/configs/datasets/PROTEINS_TU.yaml @@ -1,14 +1,14 @@ -data_domain: graph -data_type: TUDataset -data_name: PROTEINS -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 3 # here basically I specify the initial num features in PROTEINS at x aka x_0 -num_classes: 2 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: graph - +data_domain: graph +data_type: TUDataset +data_name: PROTEINS +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 3 # here basically I specify the initial num features in PROTEINS at x aka x_0 +num_classes: 2 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: graph + diff --git a/configs/datasets/ZINC.yaml b/configs/datasets/ZINC.yaml index 952a21a1..2d8dd516 100644 --- a/configs/datasets/ZINC.yaml +++ b/configs/datasets/ZINC.yaml @@ -1,14 +1,14 @@ -data_domain: graph -data_type: ZINC -data_name: ZINC -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 1 -num_classes: 1 -task: regression -loss_type: mse -monitor_metric: mae -task_level: graph - +data_domain: graph +data_type: ZINC +data_name: ZINC +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 1 +num_classes: 1 +task: regression +loss_type: mse +monitor_metric: mae +task_level: graph + diff --git a/configs/datasets/cocitation_citeseer.yaml b/configs/datasets/cocitation_citeseer.yaml index 84609a39..c9b1fc67 100755 --- a/configs/datasets/cocitation_citeseer.yaml +++ b/configs/datasets/cocitation_citeseer.yaml @@ -1,13 +1,13 @@ -data_domain: graph -data_type: cocitation -data_name: citeseer -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 3703 -num_classes: 6 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: node +data_domain: graph +data_type: cocitation +data_name: citeseer +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 3703 +num_classes: 6 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: node diff --git a/configs/datasets/cocitation_cora.yaml b/configs/datasets/cocitation_cora.yaml index 24fa319d..14efe1f3 100755 --- a/configs/datasets/cocitation_cora.yaml +++ b/configs/datasets/cocitation_cora.yaml @@ -1,13 +1,13 @@ -data_domain: graph -data_type: cocitation -data_name: Cora -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 1433 -num_classes: 7 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: node +data_domain: graph +data_type: cocitation +data_name: Cora +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 1433 +num_classes: 7 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: node diff --git a/configs/datasets/cocitation_pubmed.yaml b/configs/datasets/cocitation_pubmed.yaml index 5a3f9ca0..b482872c 100755 --- a/configs/datasets/cocitation_pubmed.yaml +++ b/configs/datasets/cocitation_pubmed.yaml @@ -1,13 +1,13 @@ -data_domain: graph -data_type: cocitation -data_name: PubMed -data_dir: datasets/${data_domain}/${data_type} -#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} - -# Dataset parameters -num_features: 500 -num_classes: 3 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy +data_domain: graph +data_type: cocitation +data_name: PubMed +data_dir: datasets/${data_domain}/${data_type} +#data_split_dir: ${oc.env:PROJECT_ROOT}/datasets/data_splits/${data_name} + +# Dataset parameters +num_features: 500 +num_classes: 3 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy task_level: node \ No newline at end of file diff --git a/configs/datasets/manual_dataset.yaml b/configs/datasets/manual_dataset.yaml index ac580b74..63b2d22d 100755 --- a/configs/datasets/manual_dataset.yaml +++ b/configs/datasets/manual_dataset.yaml @@ -1,12 +1,12 @@ -data_domain: graph -data_type: toy_dataset -data_name: manual -data_dir: datasets/${data_domain}/${data_type} - -# Dataset parameters -num_features: 1 -num_classes: 2 -task: classification -loss_type: cross_entropy -monitor_metric: accuracy -task_level: node +data_domain: graph +data_type: toy_dataset +data_name: manual +data_dir: datasets/${data_domain}/${data_type} + +# Dataset parameters +num_features: 1 +num_classes: 2 +task: classification +loss_type: cross_entropy +monitor_metric: accuracy +task_level: node diff --git a/configs/models/cell/cwn.yaml b/configs/models/cell/cwn.yaml index cd119b97..dc98d663 100644 --- a/configs/models/cell/cwn.yaml +++ b/configs/models/cell/cwn.yaml @@ -1,6 +1,6 @@ -in_channels_0: null # This will be set by the dataset -in_channels_1: null # This will be set by the dataset -in_channels_2: null # This will be set by the dataset -hidden_channels: 32 -out_channels: null # This will be set by the dataset +in_channels_0: null # This will be set by the dataset +in_channels_1: null # This will be set by the dataset +in_channels_2: null # This will be set by the dataset +hidden_channels: 32 +out_channels: null # This will be set by the dataset n_layers: 2 \ No newline at end of file diff --git a/configs/models/hypergraph/unigcn.yaml b/configs/models/hypergraph/unigcn.yaml index 740ee5ab..71a3e536 100644 --- a/configs/models/hypergraph/unigcn.yaml +++ b/configs/models/hypergraph/unigcn.yaml @@ -1,4 +1,4 @@ -in_channels: null # This will be set by the dataset -hidden_channels: 32 -out_channels: null # This will be set by the dataset +in_channels: null # This will be set by the dataset +hidden_channels: 32 +out_channels: null # This will be set by the dataset n_layers: 2 \ No newline at end of file diff --git a/configs/models/simplicial/san.yaml b/configs/models/simplicial/san.yaml index 07a46084..f62b9ef5 100644 --- a/configs/models/simplicial/san.yaml +++ b/configs/models/simplicial/san.yaml @@ -1,7 +1,7 @@ -in_channels: null # This will be set by the dataset -hidden_channels: 32 -out_channels: null # This will be set by the dataset -n_layers: 2 -n_filters: 2 -order_harmonic: 5 +in_channels: null # This will be set by the dataset +hidden_channels: 32 +out_channels: null # This will be set by the dataset +n_layers: 2 +n_filters: 2 +order_harmonic: 5 epsilon_harmonic: 0.1 \ No newline at end of file diff --git a/configs/transforms/data_manipulations/data_fields_to_dense.yaml b/configs/transforms/data_manipulations/data_fields_to_dense.yaml index 52505086..90568132 100755 --- a/configs/transforms/data_manipulations/data_fields_to_dense.yaml +++ b/configs/transforms/data_manipulations/data_fields_to_dense.yaml @@ -1,2 +1,2 @@ -transform_name: "DataFieldsToDense" +transform_name: "DataFieldsToDense" transform_type: "data manipulation" \ No newline at end of file diff --git a/configs/transforms/data_manipulations/identity.yaml b/configs/transforms/data_manipulations/identity.yaml index 8e355278..80c807cc 100755 --- a/configs/transforms/data_manipulations/identity.yaml +++ b/configs/transforms/data_manipulations/identity.yaml @@ -1,2 +1,2 @@ -transform_name: "Identity" +transform_name: "Identity" transform_type: null \ No newline at end of file diff --git a/configs/transforms/data_manipulations/keep_selected_fields.yaml b/configs/transforms/data_manipulations/keep_selected_fields.yaml index 456db777..dde2973a 100644 --- a/configs/transforms/data_manipulations/keep_selected_fields.yaml +++ b/configs/transforms/data_manipulations/keep_selected_fields.yaml @@ -1,5 +1,5 @@ -transform_name: "KeepSelectedFields" -transform_type: "data manipulation" - -keep_fields: +transform_name: "KeepSelectedFields" +transform_type: "data manipulation" + +keep_fields: - "x" \ No newline at end of file diff --git a/configs/transforms/data_manipulations/node_degrees.yaml b/configs/transforms/data_manipulations/node_degrees.yaml index 74bfd66c..d301285c 100755 --- a/configs/transforms/data_manipulations/node_degrees.yaml +++ b/configs/transforms/data_manipulations/node_degrees.yaml @@ -1,3 +1,3 @@ -transform_name: "NodeDegrees" -transform_type: "data manipulation" +transform_name: "NodeDegrees" +transform_type: "data manipulation" selected_fields: ["edge_index", "incidence"] \ No newline at end of file diff --git a/configs/transforms/data_manipulations/node_feat_to_float.yaml b/configs/transforms/data_manipulations/node_feat_to_float.yaml index 65c44b21..1619ea41 100755 --- a/configs/transforms/data_manipulations/node_feat_to_float.yaml +++ b/configs/transforms/data_manipulations/node_feat_to_float.yaml @@ -1,2 +1,2 @@ -transform_name: "NodeFeaturesToFloat" -transform_type: "data manipulation" +transform_name: "NodeFeaturesToFloat" +transform_type: "data manipulation" diff --git a/configs/transforms/data_manipulations/one_hot_node_degree_features.yaml b/configs/transforms/data_manipulations/one_hot_node_degree_features.yaml index 72e82427..a220c27e 100755 --- a/configs/transforms/data_manipulations/one_hot_node_degree_features.yaml +++ b/configs/transforms/data_manipulations/one_hot_node_degree_features.yaml @@ -1,6 +1,6 @@ -transform_name: "OneHotDegreeFeatures" -transform_type: "data manipulation" - -degrees_fields: "node_degrees" -features_fields: "x" - +transform_name: "OneHotDegreeFeatures" +transform_type: "data manipulation" + +degrees_fields: "node_degrees" +features_fields: "x" + diff --git a/configs/transforms/feature_liftings/projection_sum.yaml b/configs/transforms/feature_liftings/projection_sum.yaml index 63b0ed80..b7969a0d 100755 --- a/configs/transforms/feature_liftings/projection_sum.yaml +++ b/configs/transforms/feature_liftings/projection_sum.yaml @@ -1,2 +1,2 @@ -transform_name: "ProjectionSum" +transform_name: "ProjectionSum" transform_type: null \ No newline at end of file diff --git a/configs/transforms/liftings/graph2cell/cycle_lifting.yaml b/configs/transforms/liftings/graph2cell/cycle_lifting.yaml index 4eb6790d..8ac560be 100644 --- a/configs/transforms/liftings/graph2cell/cycle_lifting.yaml +++ b/configs/transforms/liftings/graph2cell/cycle_lifting.yaml @@ -1,5 +1,5 @@ -transform_type: 'lifting' -transform_name: "CellCycleLifting" -max_cell_length: null -preserve_edge_attr: False -feature_lifting: ProjectionSum +transform_type: 'lifting' +transform_name: "CellCycleLifting" +max_cell_length: null +preserve_edge_attr: False +feature_lifting: ProjectionSum diff --git a/configs/transforms/liftings/graph2hypergraph/knn_lifting.yaml b/configs/transforms/liftings/graph2hypergraph/knn_lifting.yaml index 645e2357..ec4bd293 100755 --- a/configs/transforms/liftings/graph2hypergraph/knn_lifting.yaml +++ b/configs/transforms/liftings/graph2hypergraph/knn_lifting.yaml @@ -1,5 +1,5 @@ -transform_type: 'lifting' -transform_name: "HypergraphKNNLifting" -k_value: 3 -loop: True +transform_type: 'lifting' +transform_name: "HypergraphKNNLifting" +k_value: 3 +loop: True feature_lifting: ProjectionSum \ No newline at end of file diff --git a/configs/transforms/liftings/graph2simplicial/clique_lifting.yaml b/configs/transforms/liftings/graph2simplicial/clique_lifting.yaml index 0e4f3267..d1b562c3 100755 --- a/configs/transforms/liftings/graph2simplicial/clique_lifting.yaml +++ b/configs/transforms/liftings/graph2simplicial/clique_lifting.yaml @@ -1,6 +1,6 @@ -transform_type: 'lifting' -transform_name: "SimplicialCliqueLifting" -complex_dim: 3 -preserve_edge_attr: False -signed: True -feature_lifting: ProjectionSum +transform_type: 'lifting' +transform_name: "SimplicialCliqueLifting" +complex_dim: 3 +preserve_edge_attr: False +signed: True +feature_lifting: ProjectionSum diff --git a/configs/transforms/liftings/identity.yaml b/configs/transforms/liftings/identity.yaml index 3d2e4dc9..12d9a1d5 100644 --- a/configs/transforms/liftings/identity.yaml +++ b/configs/transforms/liftings/identity.yaml @@ -1,4 +1,4 @@ -# @package _global_ - -defaults: +# @package _global_ + +defaults: - transforms@_here_: null \ No newline at end of file diff --git a/modules/__init__.py b/modules/__init__.py index 895b4d03..7686141b 100755 --- a/modules/__init__.py +++ b/modules/__init__.py @@ -1,5 +1,5 @@ -__version__ = "0.0.1" - -# from .io import * -# from .transforms import * -# from .data import * +__version__ = "0.0.1" + +# from .io import * +# from .transforms import * +# from .data import * diff --git a/modules/data/load/base.py b/modules/data/load/base.py index c0eb168e..83f7d8d1 100755 --- a/modules/data/load/base.py +++ b/modules/data/load/base.py @@ -1,36 +1,36 @@ -from abc import ABC, abstractmethod - -import torch_geometric -from omegaconf import DictConfig - -# logger = logging.getLogger(__name__) - - -class AbstractLoader(ABC): - """Abstract class that provides an interface to load data. - - Parameters - ---------- - parameters : DictConfig - Configuration parameters. - """ - - def __init__(self, parameters: DictConfig): - self.cfg = parameters - - @abstractmethod - def load( - self, - ) -> torch_geometric.data.Data: - """Load data into Data. - - Parameters - ---------- - None - - Returns - ------- - Data - Data object containing the loaded data. - """ - raise NotImplementedError +from abc import ABC, abstractmethod + +import torch_geometric +from omegaconf import DictConfig + +# logger = logging.getLogger(__name__) + + +class AbstractLoader(ABC): + """Abstract class that provides an interface to load data. + + Parameters + ---------- + parameters : DictConfig + Configuration parameters. + """ + + def __init__(self, parameters: DictConfig): + self.cfg = parameters + + @abstractmethod + def load( + self, + ) -> torch_geometric.data.Data: + """Load data into Data. + + Parameters + ---------- + None + + Returns + ------- + Data + Data object containing the loaded data. + """ + raise NotImplementedError diff --git a/modules/data/load/loaders.py b/modules/data/load/loaders.py index 8ccafb11..394ede25 100755 --- a/modules/data/load/loaders.py +++ b/modules/data/load/loaders.py @@ -1,206 +1,206 @@ -import os - -import numpy as np -import rootutils -import torch_geometric -from omegaconf import DictConfig - -from modules.data.load.base import AbstractLoader -from modules.data.utils.concat2geometric_dataset import ConcatToGeometricDataset -from modules.data.utils.custom_dataset import CustomDataset -from modules.data.utils.utils import ( - load_cell_complex_dataset, - load_hypergraph_pickle_dataset, - load_manual_graph, - load_simplicial_dataset, -) - - -class GraphLoader(AbstractLoader): - r"""Loader for graph datasets. - - Parameters - ---------- - parameters : DictConfig - Configuration parameters. - """ - - def __init__(self, parameters: DictConfig): - super().__init__(parameters) - self.parameters = parameters - - def load(self) -> torch_geometric.data.Dataset: - r"""Load graph dataset. - - Parameters - ---------- - None - - Returns - ------- - torch_geometric.data.Dataset - torch_geometric.data.Dataset object containing the loaded data. - """ - # Define the path to the data directory - root_folder = rootutils.find_root() - root_data_dir = os.path.join(root_folder, self.parameters["data_dir"]) - - self.data_dir = os.path.join(root_data_dir, self.parameters["data_name"]) - if ( - self.parameters.data_name.lower() in ["cora", "citeseer", "pubmed"] - and self.parameters.data_type == "cocitation" - ): - dataset = torch_geometric.datasets.Planetoid( - root=root_data_dir, - name=self.parameters["data_name"], - ) - - elif self.parameters.data_name in [ - "MUTAG", - "ENZYMES", - "PROTEINS", - "COLLAB", - "IMDB-BINARY", - "IMDB-MULTI", - "REDDIT-BINARY", - "NCI1", - "NCI109", - ]: - dataset = torch_geometric.datasets.TUDataset( - root=root_data_dir, - name=self.parameters["data_name"], - use_node_attr=False, - ) - - elif self.parameters.data_name in ["ZINC", "AQSOL"]: - datasets = [] - for split in ["train", "val", "test"]: - if self.parameters.data_name == "ZINC": - datasets.append( - torch_geometric.datasets.ZINC( - root=root_data_dir, - subset=True, - split=split, - ) - ) - elif self.parameters.data_name == "AQSOL": - datasets.append( - torch_geometric.datasets.AQSOL( - root=root_data_dir, - split=split, - ) - ) - # The splits are predefined - # Extract and prepare split_idx - split_idx = {"train": np.arange(len(datasets[0]))} - split_idx["valid"] = np.arange( - len(datasets[0]), len(datasets[0]) + len(datasets[1]) - ) - split_idx["test"] = np.arange( - len(datasets[0]) + len(datasets[1]), - len(datasets[0]) + len(datasets[1]) + len(datasets[2]), - ) - # Join dataset to process it - dataset = datasets[0] + datasets[1] + datasets[2] - dataset = ConcatToGeometricDataset(dataset) - - elif self.parameters.data_name in ["manual"]: - data = load_manual_graph() - dataset = CustomDataset([data], self.data_dir) - - else: - raise NotImplementedError( - f"Dataset {self.parameters.data_name} not implemented" - ) - - return dataset - - -class CellComplexLoader(AbstractLoader): - r"""Loader for cell complex datasets. - - Parameters - ---------- - parameters : DictConfig - Configuration parameters. - """ - - def __init__(self, parameters: DictConfig): - super().__init__(parameters) - self.parameters = parameters - - def load( - self, - ) -> torch_geometric.data.Dataset: - r"""Load cell complex dataset. - - Parameters - ---------- - None - - Returns - ------- - torch_geometric.data.Dataset - torch_geometric.data.Dataset object containing the loaded data. - """ - return load_cell_complex_dataset(self.parameters) - - -class SimplicialLoader(AbstractLoader): - r"""Loader for simplicial datasets. - - Parameters - ---------- - parameters : DictConfig - Configuration parameters. - """ - - def __init__(self, parameters: DictConfig): - super().__init__(parameters) - self.parameters = parameters - - def load( - self, - ) -> torch_geometric.data.Dataset: - r"""Load simplicial dataset. - - Parameters - ---------- - None - - Returns - ------- - torch_geometric.data.Dataset - torch_geometric.data.Dataset object containing the loaded data. - """ - return load_simplicial_dataset(self.parameters) - - -class HypergraphLoader(AbstractLoader): - r"""Loader for hypergraph datasets. - - Parameters - ---------- - parameters : DictConfig - Configuration parameters. - """ - - def __init__(self, parameters: DictConfig): - super().__init__(parameters) - self.parameters = parameters - - def load( - self, - ) -> torch_geometric.data.Dataset: - r"""Load hypergraph dataset. - - Parameters - ---------- - None - - Returns - ------- - torch_geometric.data.Dataset - torch_geometric.data.Dataset object containing the loaded data. - """ - return load_hypergraph_pickle_dataset(self.parameters) +import os + +import numpy as np +import rootutils +import torch_geometric +from omegaconf import DictConfig + +from modules.data.load.base import AbstractLoader +from modules.data.utils.concat2geometric_dataset import ConcatToGeometricDataset +from modules.data.utils.custom_dataset import CustomDataset +from modules.data.utils.utils import ( + load_cell_complex_dataset, + load_hypergraph_pickle_dataset, + load_manual_graph, + load_simplicial_dataset, +) + + +class GraphLoader(AbstractLoader): + r"""Loader for graph datasets. + + Parameters + ---------- + parameters : DictConfig + Configuration parameters. + """ + + def __init__(self, parameters: DictConfig): + super().__init__(parameters) + self.parameters = parameters + + def load(self) -> torch_geometric.data.Dataset: + r"""Load graph dataset. + + Parameters + ---------- + None + + Returns + ------- + torch_geometric.data.Dataset + torch_geometric.data.Dataset object containing the loaded data. + """ + # Define the path to the data directory + root_folder = rootutils.find_root() + root_data_dir = os.path.join(root_folder, self.parameters["data_dir"]) + + self.data_dir = os.path.join(root_data_dir, self.parameters["data_name"]) + if ( + self.parameters.data_name.lower() in ["cora", "citeseer", "pubmed"] + and self.parameters.data_type == "cocitation" + ): + dataset = torch_geometric.datasets.Planetoid( + root=root_data_dir, + name=self.parameters["data_name"], + ) + + elif self.parameters.data_name in [ + "MUTAG", + "ENZYMES", + "PROTEINS", + "COLLAB", + "IMDB-BINARY", + "IMDB-MULTI", + "REDDIT-BINARY", + "NCI1", + "NCI109", + ]: + dataset = torch_geometric.datasets.TUDataset( + root=root_data_dir, + name=self.parameters["data_name"], + use_node_attr=False, + ) + + elif self.parameters.data_name in ["ZINC", "AQSOL"]: + datasets = [] + for split in ["train", "val", "test"]: + if self.parameters.data_name == "ZINC": + datasets.append( + torch_geometric.datasets.ZINC( + root=root_data_dir, + subset=True, + split=split, + ) + ) + elif self.parameters.data_name == "AQSOL": + datasets.append( + torch_geometric.datasets.AQSOL( + root=root_data_dir, + split=split, + ) + ) + # The splits are predefined + # Extract and prepare split_idx + split_idx = {"train": np.arange(len(datasets[0]))} + split_idx["valid"] = np.arange( + len(datasets[0]), len(datasets[0]) + len(datasets[1]) + ) + split_idx["test"] = np.arange( + len(datasets[0]) + len(datasets[1]), + len(datasets[0]) + len(datasets[1]) + len(datasets[2]), + ) + # Join dataset to process it + dataset = datasets[0] + datasets[1] + datasets[2] + dataset = ConcatToGeometricDataset(dataset) + + elif self.parameters.data_name in ["manual"]: + data = load_manual_graph() + dataset = CustomDataset([data], self.data_dir) + + else: + raise NotImplementedError( + f"Dataset {self.parameters.data_name} not implemented" + ) + + return dataset + + +class CellComplexLoader(AbstractLoader): + r"""Loader for cell complex datasets. + + Parameters + ---------- + parameters : DictConfig + Configuration parameters. + """ + + def __init__(self, parameters: DictConfig): + super().__init__(parameters) + self.parameters = parameters + + def load( + self, + ) -> torch_geometric.data.Dataset: + r"""Load cell complex dataset. + + Parameters + ---------- + None + + Returns + ------- + torch_geometric.data.Dataset + torch_geometric.data.Dataset object containing the loaded data. + """ + return load_cell_complex_dataset(self.parameters) + + +class SimplicialLoader(AbstractLoader): + r"""Loader for simplicial datasets. + + Parameters + ---------- + parameters : DictConfig + Configuration parameters. + """ + + def __init__(self, parameters: DictConfig): + super().__init__(parameters) + self.parameters = parameters + + def load( + self, + ) -> torch_geometric.data.Dataset: + r"""Load simplicial dataset. + + Parameters + ---------- + None + + Returns + ------- + torch_geometric.data.Dataset + torch_geometric.data.Dataset object containing the loaded data. + """ + return load_simplicial_dataset(self.parameters) + + +class HypergraphLoader(AbstractLoader): + r"""Loader for hypergraph datasets. + + Parameters + ---------- + parameters : DictConfig + Configuration parameters. + """ + + def __init__(self, parameters: DictConfig): + super().__init__(parameters) + self.parameters = parameters + + def load( + self, + ) -> torch_geometric.data.Dataset: + r"""Load hypergraph dataset. + + Parameters + ---------- + None + + Returns + ------- + torch_geometric.data.Dataset + torch_geometric.data.Dataset object containing the loaded data. + """ + return load_hypergraph_pickle_dataset(self.parameters) diff --git a/modules/data/preprocess/preprocessor.py b/modules/data/preprocess/preprocessor.py index 72e06624..55ea64fe 100644 --- a/modules/data/preprocess/preprocessor.py +++ b/modules/data/preprocess/preprocessor.py @@ -1,137 +1,137 @@ -import json -import os - -import torch_geometric - -from modules.data.utils.utils import ensure_serializable, make_hash -from modules.transforms.data_transform import DataTransform - - -class PreProcessor(torch_geometric.data.InMemoryDataset): - r"""Preprocessor for datasets. - - Parameters - ---------- - data_dir : str - Path to the directory containing the data. - data_list : list - List of data objects. - transforms_config : DictConfig | dict - Configuration parameters for the transforms. - **kwargs: optional - Additional arguments. - """ - - def __init__(self, data_list, transforms_config, data_dir, **kwargs): - if isinstance(data_list, torch_geometric.data.Dataset): - data_list = [data_list.get(idx) for idx in range(len(data_list))] - elif isinstance(data_list, torch_geometric.data.Data): - data_list = [data_list] - self.data_list = data_list - pre_transform = self.instantiate_pre_transform(data_dir, transforms_config) - super().__init__(self.processed_data_dir, None, pre_transform, **kwargs) - self.save_transform_parameters() - self.load(self.processed_paths[0]) - - @property - def processed_dir(self) -> str: - r"""Return the path to the processed directory. - - Returns - ------- - str - Path to the processed directory. - """ - return self.root - - @property - def processed_file_names(self) -> str: - r"""Return the name of the processed file. - - Returns - ------- - str - Name of the processed file. - """ - return "data.pt" - - def instantiate_pre_transform( - self, data_dir, transforms_config - ) -> torch_geometric.transforms.Compose: - r"""Instantiate the pre-transforms. - - Parameters - ---------- - data_dir : str - Path to the directory containing the data. - transforms_config : DictConfig - Configuration parameters for the transforms. - - Returns - ------- - torch_geometric.transforms.Compose - Pre-transform object. - """ - pre_transforms_dict = { - key: DataTransform(**value) for key, value in transforms_config.items() - } - pre_transforms = torch_geometric.transforms.Compose( - list(pre_transforms_dict.values()) - ) - self.set_processed_data_dir(pre_transforms_dict, data_dir, transforms_config) - return pre_transforms - - def set_processed_data_dir( - self, pre_transforms_dict, data_dir, transforms_config - ) -> None: - r"""Set the processed data directory. - - Parameters - ---------- - pre_transforms_dict : dict - Dictionary containing the pre-transforms. - data_dir : str - Path to the directory containing the data. - transforms_config : DictConfig - Configuration parameters for the transforms. - """ - # Use self.transform_parameters to define unique save/load path for each transform parameters - repo_name = "_".join(list(transforms_config.keys())) - transforms_parameters = { - transform_name: transform.parameters - for transform_name, transform in pre_transforms_dict.items() - } - params_hash = make_hash(transforms_parameters) - self.transforms_parameters = ensure_serializable(transforms_parameters) - self.processed_data_dir = os.path.join(*[data_dir, repo_name, f"{params_hash}"]) - - def save_transform_parameters(self) -> None: - r"""Save the transform parameters.""" - # Check if root/params_dict.json exists, if not, save it - path_transform_parameters = os.path.join( - self.processed_data_dir, "path_transform_parameters_dict.json" - ) - if not os.path.exists(path_transform_parameters): - with open(path_transform_parameters, "w") as f: - json.dump(self.transforms_parameters, f) - else: - # If path_transform_parameters exists, check if the transform_parameters are the same - with open(path_transform_parameters) as f: - saved_transform_parameters = json.load(f) - - if saved_transform_parameters != self.transforms_parameters: - raise ValueError("Different transform parameters for the same data_dir") - - print( - f"Transform parameters are the same, using existing data_dir: {self.processed_data_dir}" - ) - - def process(self) -> None: - r"""Process the data.""" - self.data_list = [self.pre_transform(d) for d in self.data_list] - - self._data, self.slices = self.collate(self.data_list) - self._data_list = None # Reset cache. - - assert isinstance(self._data, torch_geometric.data.Data) - self.save(self.data_list, self.processed_paths[0]) +import json +import os + +import torch_geometric + +from modules.data.utils.utils import ensure_serializable, make_hash +from modules.transforms.data_transform import DataTransform + + +class PreProcessor(torch_geometric.data.InMemoryDataset): + r"""Preprocessor for datasets. + + Parameters + ---------- + data_dir : str + Path to the directory containing the data. + data_list : list + List of data objects. + transforms_config : DictConfig | dict + Configuration parameters for the transforms. + **kwargs: optional + Additional arguments. + """ + + def __init__(self, data_list, transforms_config, data_dir, **kwargs): + if isinstance(data_list, torch_geometric.data.Dataset): + data_list = [data_list.get(idx) for idx in range(len(data_list))] + elif isinstance(data_list, torch_geometric.data.Data): + data_list = [data_list] + self.data_list = data_list + pre_transform = self.instantiate_pre_transform(data_dir, transforms_config) + super().__init__(self.processed_data_dir, None, pre_transform, **kwargs) + self.save_transform_parameters() + self.load(self.processed_paths[0]) + + @property + def processed_dir(self) -> str: + r"""Return the path to the processed directory. + + Returns + ------- + str + Path to the processed directory. + """ + return self.root + + @property + def processed_file_names(self) -> str: + r"""Return the name of the processed file. + + Returns + ------- + str + Name of the processed file. + """ + return "data.pt" + + def instantiate_pre_transform( + self, data_dir, transforms_config + ) -> torch_geometric.transforms.Compose: + r"""Instantiate the pre-transforms. + + Parameters + ---------- + data_dir : str + Path to the directory containing the data. + transforms_config : DictConfig + Configuration parameters for the transforms. + + Returns + ------- + torch_geometric.transforms.Compose + Pre-transform object. + """ + pre_transforms_dict = { + key: DataTransform(**value) for key, value in transforms_config.items() + } + pre_transforms = torch_geometric.transforms.Compose( + list(pre_transforms_dict.values()) + ) + self.set_processed_data_dir(pre_transforms_dict, data_dir, transforms_config) + return pre_transforms + + def set_processed_data_dir( + self, pre_transforms_dict, data_dir, transforms_config + ) -> None: + r"""Set the processed data directory. + + Parameters + ---------- + pre_transforms_dict : dict + Dictionary containing the pre-transforms. + data_dir : str + Path to the directory containing the data. + transforms_config : DictConfig + Configuration parameters for the transforms. + """ + # Use self.transform_parameters to define unique save/load path for each transform parameters + repo_name = "_".join(list(transforms_config.keys())) + transforms_parameters = { + transform_name: transform.parameters + for transform_name, transform in pre_transforms_dict.items() + } + params_hash = make_hash(transforms_parameters) + self.transforms_parameters = ensure_serializable(transforms_parameters) + self.processed_data_dir = os.path.join(*[data_dir, repo_name, f"{params_hash}"]) + + def save_transform_parameters(self) -> None: + r"""Save the transform parameters.""" + # Check if root/params_dict.json exists, if not, save it + path_transform_parameters = os.path.join( + self.processed_data_dir, "path_transform_parameters_dict.json" + ) + if not os.path.exists(path_transform_parameters): + with open(path_transform_parameters, "w") as f: + json.dump(self.transforms_parameters, f) + else: + # If path_transform_parameters exists, check if the transform_parameters are the same + with open(path_transform_parameters) as f: + saved_transform_parameters = json.load(f) + + if saved_transform_parameters != self.transforms_parameters: + raise ValueError("Different transform parameters for the same data_dir") + + print( + f"Transform parameters are the same, using existing data_dir: {self.processed_data_dir}" + ) + + def process(self) -> None: + r"""Process the data.""" + self.data_list = [self.pre_transform(d) for d in self.data_list] + + self._data, self.slices = self.collate(self.data_list) + self._data_list = None # Reset cache. + + assert isinstance(self._data, torch_geometric.data.Data) + self.save(self.data_list, self.processed_paths[0]) diff --git a/modules/data/utils/concat2geometric_dataset.py b/modules/data/utils/concat2geometric_dataset.py index f7136846..723fcecc 100644 --- a/modules/data/utils/concat2geometric_dataset.py +++ b/modules/data/utils/concat2geometric_dataset.py @@ -1,27 +1,27 @@ -from torch_geometric.data import Data, Dataset - - -class ConcatToGeometricDataset(Dataset): - def __init__(self, concat_dataset): - super().__init__() - self.concat_dataset = concat_dataset - - def len(self): - return len(self.concat_dataset) - - def get(self, idx): - data = self.concat_dataset[idx] - - x = data.x.float() - edge_index = data.edge_index - edge_attr = data.edge_attr - y = data.y - if len(x.shape) == 1: - x = x.unsqueeze(dim=1) - if len(edge_attr.shape) == 1: - edge_attr = edge_attr.unsqueeze(dim=1) - if len(y.shape) == 1: - y = y.unsqueeze(dim=1) - - # Construct PyTorch Geometric Data object - return Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=y) +from torch_geometric.data import Data, Dataset + + +class ConcatToGeometricDataset(Dataset): + def __init__(self, concat_dataset): + super().__init__() + self.concat_dataset = concat_dataset + + def len(self): + return len(self.concat_dataset) + + def get(self, idx): + data = self.concat_dataset[idx] + + x = data.x.float() + edge_index = data.edge_index + edge_attr = data.edge_attr + y = data.y + if len(x.shape) == 1: + x = x.unsqueeze(dim=1) + if len(edge_attr.shape) == 1: + edge_attr = edge_attr.unsqueeze(dim=1) + if len(y.shape) == 1: + y = y.unsqueeze(dim=1) + + # Construct PyTorch Geometric Data object + return Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=y) diff --git a/modules/data/utils/custom_dataset.py b/modules/data/utils/custom_dataset.py index a579935a..1108d455 100644 --- a/modules/data/utils/custom_dataset.py +++ b/modules/data/utils/custom_dataset.py @@ -1,15 +1,15 @@ -import torch_geometric - - -class CustomDataset(torch_geometric.data.InMemoryDataset): - def __init__(self, data_list, data_dir, transform=None): - self.data_list = data_list - super().__init__(data_dir, transform) - self.load(self.processed_paths[0]) - - @property - def processed_file_names(self): - return "data.pt" - - def process(self): - self.save(self.data_list, self.processed_paths[0]) +import torch_geometric + + +class CustomDataset(torch_geometric.data.InMemoryDataset): + def __init__(self, data_list, data_dir, transform=None): + self.data_list = data_list + super().__init__(data_dir, transform) + self.load(self.processed_paths[0]) + + @property + def processed_file_names(self): + return "data.pt" + + def process(self): + self.save(self.data_list, self.processed_paths[0]) diff --git a/modules/data/utils/utils.py b/modules/data/utils/utils.py index 93ab5021..854f845f 100755 --- a/modules/data/utils/utils.py +++ b/modules/data/utils/utils.py @@ -1,423 +1,423 @@ -import hashlib -import os.path as osp -import pickle - -import networkx as nx -import numpy as np -import omegaconf -import toponetx.datasets.graph as graph -import torch -import torch_geometric -from topomodelx.utils.sparse import from_sparse -from torch_geometric.data import Data -from torch_sparse import coalesce - - -def get_complex_connectivity(complex, max_rank, signed=False): - r"""Gets the connectivity matrices for the complex. - - Parameters - ---------- - complex : topnetx.CellComplex, topnetx.SimplicialComplex - Cell complex. - max_rank : int - Maximum rank of the complex. - signed : bool - If True, returns signed connectivity matrices. - - Returns - ------- - dict - Dictionary containing the connectivity matrices. - """ - practical_shape = list( - np.pad(list(complex.shape), (0, max_rank + 1 - len(complex.shape))) - ) - connectivity = {} - for rank_idx in range(max_rank + 1): - for connectivity_info in [ - "incidence", - "down_laplacian", - "up_laplacian", - "adjacency", - "hodge_laplacian", - ]: - try: - connectivity[f"{connectivity_info}_{rank_idx}"] = from_sparse( - getattr(complex, f"{connectivity_info}_matrix")( - rank=rank_idx, signed=signed - ) - ) - except ValueError: # noqa: PERF203 - if connectivity_info == "incidence": - connectivity[f"{connectivity_info}_{rank_idx}"] = ( - generate_zero_sparse_connectivity( - m=practical_shape[rank_idx - 1], n=practical_shape[rank_idx] - ) - ) - else: - connectivity[f"{connectivity_info}_{rank_idx}"] = ( - generate_zero_sparse_connectivity( - m=practical_shape[rank_idx], n=practical_shape[rank_idx] - ) - ) - connectivity["shape"] = practical_shape - return connectivity - - -def generate_zero_sparse_connectivity(m, n): - r"""Generates a zero sparse connectivity matrix. - - Parameters - ---------- - m : int - Number of rows. - n : int - Number of columns. - - Returns - ------- - torch.sparse_coo_tensor - Zero sparse connectivity matrix. - """ - return torch.sparse_coo_tensor((m, n)).coalesce() - - -def load_cell_complex_dataset(cfg): - r"""Loads cell complex datasets.""" - - -def load_simplicial_dataset(cfg): - r"""Loads simplicial datasets. - - Parameters - ---------- - cfg : DictConfig - Configuration parameters. - - Returns - ------- - torch_geometric.data.Data - Simplicial dataset. - """ - if cfg["data_name"] != "KarateClub": - return NotImplementedError - data = graph.karate_club(complex_type="simplicial", feat_dim=2) - max_rank = data.dim - features = {} - dict_feat_equivalence = { - 0: "node_feat", - 1: "edge_feat", - 2: "face_feat", - 3: "tetrahedron_feat", - } - for rank_idx in range(max_rank + 1): - try: - features[f"x_{rank_idx}"] = torch.tensor( - np.stack( - list( - data.get_simplex_attributes( - dict_feat_equivalence[rank_idx] - ).values() - ) - ) - ) - except ValueError: # noqa: PERF203 - features[f"x_{rank_idx}"] = torch.tensor( - np.zeros((data.shape[rank_idx], 0)) - ) - features["y"] = torch.tensor( - [ - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 1, - 1, - 1, - 0, - 0, - 1, - 1, - 0, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ] - ) - # features['num_nodes'] = data.shape[0] - features["x"] = features["x_0"] - connectivity = get_complex_connectivity(data, max_rank) - data = torch_geometric.data.Data(**connectivity, **features) - - # Project node-level features to edge-level (WHY DO WE NEED IT, data already has x_1) - data.x_1 = data.x_1 + torch.mm(data.incidence_1.to_dense().T, data.x_0) - - return torch_geometric.transforms.random_node_split.RandomNodeSplit( - num_val=4, num_test=4 - )(data) - - -def load_hypergraph_pickle_dataset(cfg): - r"""Loads hypergraph datasets from pickle files. - - Parameters - ---------- - cfg : DictConfig - Configuration parameters. - - Returns - ------- - torch_geometric.data.Data - Hypergraph dataset. - """ - data_dir = cfg["data_dir"] - print(f"Loading {cfg['data_domain']} dataset name: {cfg['data_name']}") - - # Load node features: - - with open(osp.join(data_dir, "features.pickle"), "rb") as f: - features = pickle.load(f) - features = features.todense() - - # Load node labels: - with open(osp.join(data_dir, "labels.pickle"), "rb") as f: - labels = pickle.load(f) - - num_nodes, feature_dim = features.shape - assert num_nodes == len(labels) - print(f"number of nodes:{num_nodes}, feature dimension: {feature_dim}") - - features = torch.FloatTensor(features) - labels = torch.LongTensor(labels) - - # Load hypergraph. - with open(osp.join(data_dir, "hypergraph.pickle"), "rb") as f: - # Hypergraph in hyperGCN is in the form of a dictionary. - # { hyperedge: [list of nodes in the he], ...} - hypergraph = pickle.load(f) - - print(f"number of hyperedges: {len(hypergraph)}") - - edge_idx = 0 # num_nodes - node_list = [] - edge_list = [] - for he in hypergraph: - cur_he = hypergraph[he] - cur_size = len(cur_he) - - node_list += list(cur_he) - edge_list += [edge_idx] * cur_size - - edge_idx += 1 - - # check that every node is in some hyperedge - if len(np.unique(node_list)) != num_nodes: - # add self hyperedges to isolated nodes - isolated_nodes = np.setdiff1d(np.arange(num_nodes), np.unique(node_list)) - - for node in isolated_nodes: - node_list += [node] - edge_list += [edge_idx] - edge_idx += 1 - hypergraph[f"Unique_additonal_he_{edge_idx}"] = [node] - - edge_index = np.array([node_list, edge_list], dtype=int) - edge_index = torch.LongTensor(edge_index) - - data = Data( - x=features, - x_0=features, - edge_index=edge_index, - incidence_hyperedges=edge_index, - y=labels, - ) - - # data.coalesce() - # There might be errors if edge_index.max() != num_nodes. - # used user function to override the default function. - # the following will also sort the edge_index and remove duplicates. - total_num_node_id_he_id = edge_index.max() + 1 - data.edge_index, data.edge_attr = coalesce( - data.edge_index, None, total_num_node_id_he_id, total_num_node_id_he_id - ) - - n_x = num_nodes - num_class = len(np.unique(labels.numpy())) - - # Add parameters to attribute - data.n_x = n_x - data.num_hyperedges = len(hypergraph) - data.num_class = num_class - - data.incidence_hyperedges = torch.sparse_coo_tensor( - data.edge_index, - values=torch.ones(data.edge_index.shape[1]), - size=(data.num_nodes, data.num_hyperedges), - ) - - # Print some info - print("Final num_hyperedges", data.num_hyperedges) - print("Final num_nodes", data.num_nodes) - print("Final num_class", data.num_class) - - return data - - -def load_manual_graph(): - """Create a manual graph for testing purposes.""" - # Define the vertices (just 8 vertices) - vertices = [i for i in range(8)] - y = [0, 1, 1, 1, 0, 0, 0, 0] - # Define the edges - edges = [ - [0, 1], - [0, 2], - [0, 4], - [1, 2], - [2, 3], - [5, 2], - [5, 6], - [6, 3], - [5, 7], - [2, 7], - [0, 7], - ] - - # Define the tetrahedrons - tetrahedrons = [[0, 1, 2, 4]] - - # Add tetrahedrons - for tetrahedron in tetrahedrons: - for i in range(len(tetrahedron)): - for j in range(i + 1, len(tetrahedron)): - edges.append([tetrahedron[i], tetrahedron[j]]) # noqa: PERF401 - - # Create a graph - G = nx.Graph() - - # Add vertices - G.add_nodes_from(vertices) - - # Add edges - G.add_edges_from(edges) - G.to_undirected() - edge_list = torch.Tensor(list(G.edges())).T.long() - - # Generate feature from 0 to 9 - x = torch.tensor([1, 5, 10, 50, 100, 500, 1000, 5000]).unsqueeze(1).float() - - return torch_geometric.data.Data( - x=x, - edge_index=edge_list, - num_nodes=len(vertices), - y=torch.tensor(y), - ) - - -def get_Planetoid_pyg(cfg): - r"""Loads Planetoid graph datasets from torch_geometric. - - Parameters - ---------- - cfg : DictConfig - Configuration parameters. - - Returns - ------- - torch_geometric.data.Data - Graph dataset. - """ - data_dir, data_name = cfg["data_dir"], cfg["data_name"] - dataset = torch_geometric.datasets.Planetoid(data_dir, data_name) - data = dataset.data - data.num_nodes = data.x.shape[0] - return data - - -def get_TUDataset_pyg(cfg): - r"""Loads TU graph datasets from torch_geometric. - - Parameters - ---------- - cfg : DictConfig - Configuration parameters. - - Returns - ------- - list - List containing the graph dataset. - """ - data_dir, data_name = cfg["data_dir"], cfg["data_name"] - dataset = torch_geometric.datasets.TUDataset(root=data_dir, name=data_name) - return [data for data in dataset] - - -def ensure_serializable(obj): - r"""Ensures that the object is serializable. - - Parameters - ---------- - obj : object - Object to ensure serializability. - - Returns - ------- - object - Object that is serializable. - """ - if isinstance(obj, dict): - for key, value in obj.items(): - obj[key] = ensure_serializable(value) - return obj - elif isinstance(obj, list | tuple): # noqa: RET505 - return [ensure_serializable(item) for item in obj] - elif isinstance(obj, set): - return {ensure_serializable(item) for item in obj} - elif isinstance(obj, str | int | float | bool | type(None)): - return obj - elif isinstance(obj, omegaconf.dictconfig.DictConfig): - return dict(obj) - else: - return None - - -def make_hash(o): - r"""Makes a hash from a dictionary, list, tuple or set to any level, that - contains only other hashable types (including any lists, tuples, sets, and - dictionaries). - - Parameters - ---------- - o : dict, list, tuple, set - Object to hash. - - Returns - ------- - int - Hash of the object. - """ - sha1 = hashlib.sha1() - sha1.update(str.encode(str(o))) - hash_as_hex = sha1.hexdigest() - # Convert the hex back to int and restrict it to the relevant int range - return int(hash_as_hex, 16) % 4294967295 +import hashlib +import os.path as osp +import pickle + +import networkx as nx +import numpy as np +import omegaconf +import toponetx.datasets.graph as graph +import torch +import torch_geometric +from topomodelx.utils.sparse import from_sparse +from torch_geometric.data import Data +from torch_sparse import coalesce + + +def get_complex_connectivity(complex, max_rank, signed=False): + r"""Gets the connectivity matrices for the complex. + + Parameters + ---------- + complex : topnetx.CellComplex, topnetx.SimplicialComplex + Cell complex. + max_rank : int + Maximum rank of the complex. + signed : bool + If True, returns signed connectivity matrices. + + Returns + ------- + dict + Dictionary containing the connectivity matrices. + """ + practical_shape = list( + np.pad(list(complex.shape), (0, max_rank + 1 - len(complex.shape))) + ) + connectivity = {} + for rank_idx in range(max_rank + 1): + for connectivity_info in [ + "incidence", + "down_laplacian", + "up_laplacian", + "adjacency", + "hodge_laplacian", + ]: + try: + connectivity[f"{connectivity_info}_{rank_idx}"] = from_sparse( + getattr(complex, f"{connectivity_info}_matrix")( + rank=rank_idx, signed=signed + ) + ) + except ValueError: # noqa: PERF203 + if connectivity_info == "incidence": + connectivity[ + f"{connectivity_info}_{rank_idx}" + ] = generate_zero_sparse_connectivity( + m=practical_shape[rank_idx - 1], n=practical_shape[rank_idx] + ) + else: + connectivity[ + f"{connectivity_info}_{rank_idx}" + ] = generate_zero_sparse_connectivity( + m=practical_shape[rank_idx], n=practical_shape[rank_idx] + ) + connectivity["shape"] = practical_shape + return connectivity + + +def generate_zero_sparse_connectivity(m, n): + r"""Generates a zero sparse connectivity matrix. + + Parameters + ---------- + m : int + Number of rows. + n : int + Number of columns. + + Returns + ------- + torch.sparse_coo_tensor + Zero sparse connectivity matrix. + """ + return torch.sparse_coo_tensor((m, n)).coalesce() + + +def load_cell_complex_dataset(cfg): + r"""Loads cell complex datasets.""" + + +def load_simplicial_dataset(cfg): + r"""Loads simplicial datasets. + + Parameters + ---------- + cfg : DictConfig + Configuration parameters. + + Returns + ------- + torch_geometric.data.Data + Simplicial dataset. + """ + if cfg["data_name"] != "KarateClub": + return NotImplementedError + data = graph.karate_club(complex_type="simplicial", feat_dim=2) + max_rank = data.dim + features = {} + dict_feat_equivalence = { + 0: "node_feat", + 1: "edge_feat", + 2: "face_feat", + 3: "tetrahedron_feat", + } + for rank_idx in range(max_rank + 1): + try: + features[f"x_{rank_idx}"] = torch.tensor( + np.stack( + list( + data.get_simplex_attributes( + dict_feat_equivalence[rank_idx] + ).values() + ) + ) + ) + except ValueError: # noqa: PERF203 + features[f"x_{rank_idx}"] = torch.tensor( + np.zeros((data.shape[rank_idx], 0)) + ) + features["y"] = torch.tensor( + [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 0, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ] + ) + # features['num_nodes'] = data.shape[0] + features["x"] = features["x_0"] + connectivity = get_complex_connectivity(data, max_rank) + data = torch_geometric.data.Data(**connectivity, **features) + + # Project node-level features to edge-level (WHY DO WE NEED IT, data already has x_1) + data.x_1 = data.x_1 + torch.mm(data.incidence_1.to_dense().T, data.x_0) + + return torch_geometric.transforms.random_node_split.RandomNodeSplit( + num_val=4, num_test=4 + )(data) + + +def load_hypergraph_pickle_dataset(cfg): + r"""Loads hypergraph datasets from pickle files. + + Parameters + ---------- + cfg : DictConfig + Configuration parameters. + + Returns + ------- + torch_geometric.data.Data + Hypergraph dataset. + """ + data_dir = cfg["data_dir"] + print(f"Loading {cfg['data_domain']} dataset name: {cfg['data_name']}") + + # Load node features: + + with open(osp.join(data_dir, "features.pickle"), "rb") as f: + features = pickle.load(f) + features = features.todense() + + # Load node labels: + with open(osp.join(data_dir, "labels.pickle"), "rb") as f: + labels = pickle.load(f) + + num_nodes, feature_dim = features.shape + assert num_nodes == len(labels) + print(f"number of nodes:{num_nodes}, feature dimension: {feature_dim}") + + features = torch.FloatTensor(features) + labels = torch.LongTensor(labels) + + # Load hypergraph. + with open(osp.join(data_dir, "hypergraph.pickle"), "rb") as f: + # Hypergraph in hyperGCN is in the form of a dictionary. + # { hyperedge: [list of nodes in the he], ...} + hypergraph = pickle.load(f) + + print(f"number of hyperedges: {len(hypergraph)}") + + edge_idx = 0 # num_nodes + node_list = [] + edge_list = [] + for he in hypergraph: + cur_he = hypergraph[he] + cur_size = len(cur_he) + + node_list += list(cur_he) + edge_list += [edge_idx] * cur_size + + edge_idx += 1 + + # check that every node is in some hyperedge + if len(np.unique(node_list)) != num_nodes: + # add self hyperedges to isolated nodes + isolated_nodes = np.setdiff1d(np.arange(num_nodes), np.unique(node_list)) + + for node in isolated_nodes: + node_list += [node] + edge_list += [edge_idx] + edge_idx += 1 + hypergraph[f"Unique_additonal_he_{edge_idx}"] = [node] + + edge_index = np.array([node_list, edge_list], dtype=int) + edge_index = torch.LongTensor(edge_index) + + data = Data( + x=features, + x_0=features, + edge_index=edge_index, + incidence_hyperedges=edge_index, + y=labels, + ) + + # data.coalesce() + # There might be errors if edge_index.max() != num_nodes. + # used user function to override the default function. + # the following will also sort the edge_index and remove duplicates. + total_num_node_id_he_id = edge_index.max() + 1 + data.edge_index, data.edge_attr = coalesce( + data.edge_index, None, total_num_node_id_he_id, total_num_node_id_he_id + ) + + n_x = num_nodes + num_class = len(np.unique(labels.numpy())) + + # Add parameters to attribute + data.n_x = n_x + data.num_hyperedges = len(hypergraph) + data.num_class = num_class + + data.incidence_hyperedges = torch.sparse_coo_tensor( + data.edge_index, + values=torch.ones(data.edge_index.shape[1]), + size=(data.num_nodes, data.num_hyperedges), + ) + + # Print some info + print("Final num_hyperedges", data.num_hyperedges) + print("Final num_nodes", data.num_nodes) + print("Final num_class", data.num_class) + + return data + + +def load_manual_graph(): + """Create a manual graph for testing purposes.""" + # Define the vertices (just 8 vertices) + vertices = [i for i in range(8)] + y = [0, 1, 1, 1, 0, 0, 0, 0] + # Define the edges + edges = [ + [0, 1], + [0, 2], + [0, 4], + [1, 2], + [2, 3], + [5, 2], + [5, 6], + [6, 3], + [5, 7], + [2, 7], + [0, 7], + ] + + # Define the tetrahedrons + tetrahedrons = [[0, 1, 2, 4]] + + # Add tetrahedrons + for tetrahedron in tetrahedrons: + for i in range(len(tetrahedron)): + for j in range(i + 1, len(tetrahedron)): + edges.append([tetrahedron[i], tetrahedron[j]]) # noqa: PERF401 + + # Create a graph + G = nx.Graph() + + # Add vertices + G.add_nodes_from(vertices) + + # Add edges + G.add_edges_from(edges) + G.to_undirected() + edge_list = torch.Tensor(list(G.edges())).T.long() + + # Generate feature from 0 to 9 + x = torch.tensor([1, 5, 10, 50, 100, 500, 1000, 5000]).unsqueeze(1).float() + + return torch_geometric.data.Data( + x=x, + edge_index=edge_list, + num_nodes=len(vertices), + y=torch.tensor(y), + ) + + +def get_Planetoid_pyg(cfg): + r"""Loads Planetoid graph datasets from torch_geometric. + + Parameters + ---------- + cfg : DictConfig + Configuration parameters. + + Returns + ------- + torch_geometric.data.Data + Graph dataset. + """ + data_dir, data_name = cfg["data_dir"], cfg["data_name"] + dataset = torch_geometric.datasets.Planetoid(data_dir, data_name) + data = dataset.data + data.num_nodes = data.x.shape[0] + return data + + +def get_TUDataset_pyg(cfg): + r"""Loads TU graph datasets from torch_geometric. + + Parameters + ---------- + cfg : DictConfig + Configuration parameters. + + Returns + ------- + list + List containing the graph dataset. + """ + data_dir, data_name = cfg["data_dir"], cfg["data_name"] + dataset = torch_geometric.datasets.TUDataset(root=data_dir, name=data_name) + return [data for data in dataset] + + +def ensure_serializable(obj): + r"""Ensures that the object is serializable. + + Parameters + ---------- + obj : object + Object to ensure serializability. + + Returns + ------- + object + Object that is serializable. + """ + if isinstance(obj, dict): + for key, value in obj.items(): + obj[key] = ensure_serializable(value) + return obj + elif isinstance(obj, list | tuple): # noqa: RET505 + return [ensure_serializable(item) for item in obj] + elif isinstance(obj, set): + return {ensure_serializable(item) for item in obj} + elif isinstance(obj, str | int | float | bool | type(None)): + return obj + elif isinstance(obj, omegaconf.dictconfig.DictConfig): + return dict(obj) + else: + return None + + +def make_hash(o): + r"""Makes a hash from a dictionary, list, tuple or set to any level, that + contains only other hashable types (including any lists, tuples, sets, and + dictionaries). + + Parameters + ---------- + o : dict, list, tuple, set + Object to hash. + + Returns + ------- + int + Hash of the object. + """ + sha1 = hashlib.sha1() + sha1.update(str.encode(str(o))) + hash_as_hex = sha1.hexdigest() + # Convert the hex back to int and restrict it to the relevant int range + return int(hash_as_hex, 16) % 4294967295 diff --git a/modules/models/cell/cwn.py b/modules/models/cell/cwn.py index caf4521e..ac757c94 100644 --- a/modules/models/cell/cwn.py +++ b/modules/models/cell/cwn.py @@ -1,64 +1,64 @@ -import torch -from topomodelx.nn.cell.cwn import CWN - - -class CWNModel(torch.nn.Module): - r"""A simple CWN model that runs over cell complex data. - Note that some parameters are defined by the considered dataset. - - Parameters - ---------- - model_config : Dict | DictConfig - Model configuration. - dataset_config : Dict | DictConfig - Dataset configuration. - """ - - def __init__(self, model_config, dataset_config): - in_channels_0 = ( - dataset_config["num_features"] - if isinstance(dataset_config["num_features"], int) - else dataset_config["num_features"][0] - ) - in_channels_1 = in_channels_0 - in_channels_2 = in_channels_0 - hidden_channels = model_config["hidden_channels"] - out_channels = dataset_config["num_classes"] - n_layers = model_config["n_layers"] - super().__init__() - self.base_model = CWN( - in_channels_0, - in_channels_1, - in_channels_2, - hidden_channels, - n_layers, - ) - self.linear_0 = torch.nn.Linear(hidden_channels, out_channels) - self.linear_1 = torch.nn.Linear(hidden_channels, out_channels) - self.linear_2 = torch.nn.Linear(hidden_channels, out_channels) - - def forward(self, data): - r"""Forward pass of the model. - - Parameters - ---------- - data : torch_geometric.data.Data - Input data. - - Returns - ------- - tuple of torch.Tensor - Output tensor. - """ - x_0, x_1, x_2 = self.base_model( - data.x_0, - data.x_1, - data.x_2, - data.adjacency_1, - data.incidence_2, - data.incidence_1.T, - ) - x_0 = self.linear_0(x_0) - x_1 = self.linear_1(x_1) - x_2 = self.linear_2(x_2) - return (x_0, x_1, x_2) +import torch +from topomodelx.nn.cell.cwn import CWN + + +class CWNModel(torch.nn.Module): + r"""A simple CWN model that runs over cell complex data. + Note that some parameters are defined by the considered dataset. + + Parameters + ---------- + model_config : Dict | DictConfig + Model configuration. + dataset_config : Dict | DictConfig + Dataset configuration. + """ + + def __init__(self, model_config, dataset_config): + in_channels_0 = ( + dataset_config["num_features"] + if isinstance(dataset_config["num_features"], int) + else dataset_config["num_features"][0] + ) + in_channels_1 = in_channels_0 + in_channels_2 = in_channels_0 + hidden_channels = model_config["hidden_channels"] + out_channels = dataset_config["num_classes"] + n_layers = model_config["n_layers"] + super().__init__() + self.base_model = CWN( + in_channels_0, + in_channels_1, + in_channels_2, + hidden_channels, + n_layers, + ) + self.linear_0 = torch.nn.Linear(hidden_channels, out_channels) + self.linear_1 = torch.nn.Linear(hidden_channels, out_channels) + self.linear_2 = torch.nn.Linear(hidden_channels, out_channels) + + def forward(self, data): + r"""Forward pass of the model. + + Parameters + ---------- + data : torch_geometric.data.Data + Input data. + + Returns + ------- + tuple of torch.Tensor + Output tensor. + """ + x_0, x_1, x_2 = self.base_model( + data.x_0, + data.x_1, + data.x_2, + data.adjacency_1, + data.incidence_2, + data.incidence_1.T, + ) + x_0 = self.linear_0(x_0) + x_1 = self.linear_1(x_1) + x_2 = self.linear_2(x_2) + return (x_0, x_1, x_2) diff --git a/modules/models/hypergraph/unigcn.py b/modules/models/hypergraph/unigcn.py index c5cb240b..45710c44 100644 --- a/modules/models/hypergraph/unigcn.py +++ b/modules/models/hypergraph/unigcn.py @@ -1,51 +1,51 @@ -import torch -from topomodelx.nn.hypergraph.unigcn import UniGCN - - -class UniGCNModel(torch.nn.Module): - r"""A simple UniGCN model that runs over hypergraph data. - Note that some parameters are defined by the considered dataset. - - Parameters - ---------- - model_config : Dict | DictConfig - Model configuration. - dataset_config : Dict | DictConfig - Dataset configuration. - """ - - def __init__(self, model_config, dataset_config): - in_channels = ( - dataset_config["num_features"] - if isinstance(dataset_config["num_features"], int) - else dataset_config["num_features"][0] - ) - hidden_channels = model_config["hidden_channels"] - out_channels = dataset_config["num_classes"] - n_layers = model_config["n_layers"] - super().__init__() - self.base_model = UniGCN( - in_channels=in_channels, - hidden_channels=hidden_channels, - n_layers=n_layers, - ) - self.linear_0 = torch.nn.Linear(hidden_channels, out_channels) - self.linear_hyperedges = torch.nn.Linear(hidden_channels, out_channels) - - def forward(self, data): - r"""Forward pass of the model. - - Parameters - ---------- - data : torch_geometric.data.Data - Input data. - - Returns - ------- - torch.Tensor - Output tensor. - """ - x_0, x_hyperedges = self.base_model(data.x_0, data.incidence_hyperedges) - x_0 = self.linear_0(x_0) - x_hyperedges = self.linear_hyperedges(x_hyperedges) - return (x_0, x_hyperedges) +import torch +from topomodelx.nn.hypergraph.unigcn import UniGCN + + +class UniGCNModel(torch.nn.Module): + r"""A simple UniGCN model that runs over hypergraph data. + Note that some parameters are defined by the considered dataset. + + Parameters + ---------- + model_config : Dict | DictConfig + Model configuration. + dataset_config : Dict | DictConfig + Dataset configuration. + """ + + def __init__(self, model_config, dataset_config): + in_channels = ( + dataset_config["num_features"] + if isinstance(dataset_config["num_features"], int) + else dataset_config["num_features"][0] + ) + hidden_channels = model_config["hidden_channels"] + out_channels = dataset_config["num_classes"] + n_layers = model_config["n_layers"] + super().__init__() + self.base_model = UniGCN( + in_channels=in_channels, + hidden_channels=hidden_channels, + n_layers=n_layers, + ) + self.linear_0 = torch.nn.Linear(hidden_channels, out_channels) + self.linear_hyperedges = torch.nn.Linear(hidden_channels, out_channels) + + def forward(self, data): + r"""Forward pass of the model. + + Parameters + ---------- + data : torch_geometric.data.Data + Input data. + + Returns + ------- + torch.Tensor + Output tensor. + """ + x_0, x_hyperedges = self.base_model(data.x_0, data.incidence_hyperedges) + x_0 = self.linear_0(x_0) + x_hyperedges = self.linear_hyperedges(x_hyperedges) + return (x_0, x_hyperedges) diff --git a/modules/models/simplicial/san.py b/modules/models/simplicial/san.py index fbdd26c6..cf615b7b 100644 --- a/modules/models/simplicial/san.py +++ b/modules/models/simplicial/san.py @@ -1,49 +1,49 @@ -import torch -from topomodelx.nn.simplicial.san import SAN - - -class SANModel(torch.nn.Module): - r"""A simple SAN model that runs over simplicial complex data. - Note that some parameters are defined by the considered dataset. - - Parameters - ---------- - model_config : Dict | DictConfig - Model configuration. - dataset_config : Dict | DictConfig - Dataset configuration. - """ - - def __init__(self, model_config, dataset_config): - in_channels = ( - dataset_config["num_features"] - if isinstance(dataset_config["num_features"], int) - else dataset_config["num_features"][0] - ) - hidden_channels = model_config["hidden_channels"] - out_channels = dataset_config["num_classes"] - n_layers = model_config["n_layers"] - super().__init__() - self.base_model = SAN( - in_channels=in_channels, - hidden_channels=hidden_channels, - n_layers=n_layers, - ) - self.linear = torch.nn.Linear(hidden_channels, out_channels) - - def forward(self, data): - r"""Forward pass of the model. - - Parameters - ---------- - data : torch_geometric.data.Data - Input data. - - Returns - ------- - torch.Tensor - Output tensor. - """ - x = self.base_model(data.x_1, data.up_laplacian_1, data.down_laplacian_1) - x = self.linear(x) - return torch.sigmoid(x) +import torch +from topomodelx.nn.simplicial.san import SAN + + +class SANModel(torch.nn.Module): + r"""A simple SAN model that runs over simplicial complex data. + Note that some parameters are defined by the considered dataset. + + Parameters + ---------- + model_config : Dict | DictConfig + Model configuration. + dataset_config : Dict | DictConfig + Dataset configuration. + """ + + def __init__(self, model_config, dataset_config): + in_channels = ( + dataset_config["num_features"] + if isinstance(dataset_config["num_features"], int) + else dataset_config["num_features"][0] + ) + hidden_channels = model_config["hidden_channels"] + out_channels = dataset_config["num_classes"] + n_layers = model_config["n_layers"] + super().__init__() + self.base_model = SAN( + in_channels=in_channels, + hidden_channels=hidden_channels, + n_layers=n_layers, + ) + self.linear = torch.nn.Linear(hidden_channels, out_channels) + + def forward(self, data): + r"""Forward pass of the model. + + Parameters + ---------- + data : torch_geometric.data.Data + Input data. + + Returns + ------- + torch.Tensor + Output tensor. + """ + x = self.base_model(data.x_1, data.up_laplacian_1, data.down_laplacian_1) + x = self.linear(x) + return torch.sigmoid(x) diff --git a/modules/transforms/data_manipulations/manipulations.py b/modules/transforms/data_manipulations/manipulations.py index 64fe4143..bd305829 100644 --- a/modules/transforms/data_manipulations/manipulations.py +++ b/modules/transforms/data_manipulations/manipulations.py @@ -1,306 +1,306 @@ -import torch -import torch_geometric -from torch_geometric.utils import one_hot - - -class IdentityTransform(torch_geometric.transforms.BaseTransform): - r"""An identity transform that does nothing to the input data.""" - - def __init__(self, **kwargs): - super().__init__() - self.type = "domain2domain" - self.parameters = kwargs - - def forward(self, data: torch_geometric.data.Data): - r"""Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - torch_geometric.data.Data - The (un)transformed data. - """ - return data - - -class NodeFeaturesToFloat(torch_geometric.transforms.BaseTransform): - r"""A transform that converts the node features of the input graph to float. - - Parameters - ---------- - **kwargs : optional - Parameters for the transform. - """ - - def __init__(self, **kwargs): - super().__init__() - self.type = "map_node_features_to_float" - - def forward(self, data: torch_geometric.data.Data): - r"""Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - torch_geometric.data.Data - The transformed data. - """ - data.x = data.x.float() - return data - - -class NodeDegrees(torch_geometric.transforms.BaseTransform): - r"""A transform that calculates the node degrees of the input graph. - - Parameters - ---------- - **kwargs : optional - Parameters for the transform. - """ - - def __init__(self, **kwargs): - super().__init__() - self.type = "node_degrees" - self.parameters = kwargs - - def forward(self, data: torch_geometric.data.Data): - r"""Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - torch_geometric.data.Data - The transformed data. - """ - field_to_process = [] - for key in data: - for field_substring in self.parameters["selected_fields"]: - if field_substring in key and key != "incidence_0": - field_to_process.append(key) # noqa : PERF401 - - for field in field_to_process: - data = self.calculate_node_degrees(data, field) - - return data - - def calculate_node_degrees( - self, data: torch_geometric.data.Data, field: str - ) -> torch_geometric.data.Data: - r"""Calculate the node degrees of the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - field : str - The field to calculate the node degrees. - - Returns - ------- - torch_geometric.data.Data - """ - if data[field].is_sparse: - degrees = abs(data[field].to_dense()).sum(1) - else: - assert ( - field == "edge_index" - ), "Following logic of finding degrees is only implemented for edge_index" - degrees = ( - torch_geometric.utils.to_dense_adj( - data[field], - max_num_nodes=data["x"].shape[0], # data["num_nodes"] - ) - .squeeze(0) - .sum(1) - ) - - if "incidence" in field: - field_name = str(int(field.split("_")[1]) - 1) + "_cell" + "_degrees" - else: - field_name = "node_degrees" - - data[field_name] = degrees.unsqueeze(1) - return data - - -class KeepOnlyConnectedComponent(torch_geometric.transforms.BaseTransform): - """ - A transform that keeps only the largest connected components of the input graph. - - Parameters - ---------- - **kwargs : optional - Parameters for the transform. - """ - - def __init__(self, **kwargs): - super().__init__() - self.type = "keep_connected_component" - self.parameters = kwargs - - def forward(self, data: torch_geometric.data.Data): - """ - Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - torch_geometric.data.Data - The transformed data. - """ - from torch_geometric.transforms import LargestConnectedComponents - - # torch_geometric.transforms.largest_connected_components() - num_components = self.parameters["num_components"] - lcc = LargestConnectedComponents( - num_components=num_components, connection="strong" - ) - return lcc(data) - - -class OneHotDegreeFeatures(torch_geometric.transforms.BaseTransform): - r"""A transform that adds the node degree as one hot encodings to the node features. - - Parameters - ---------- - **kwargs : optional - Parameters for the transform. - """ - - def __init__(self, **kwargs): - super().__init__() - self.type = "one_hot_degree_features" - self.deg_field = kwargs["degrees_fields"] - self.features_fields = kwargs["features_fields"] - self.transform = OneHotDegree(max_degree=kwargs["max_degrees"]) - - def forward(self, data: torch_geometric.data.Data): - r"""Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - torch_geometric.data.Data - The transformed data. - """ - return self.transform.forward( - data, degrees_field=self.deg_field, features_field=self.features_fields - ) - - -class OneHotDegree(torch_geometric.transforms.BaseTransform): - r"""Adds the node degree as one hot encodings to the node features - - Parameters - ---------- - max_degree : int - The maximum degree of the graph. - cat : bool, optional - If set to `True`, the one hot encodings are concatenated to the node features. - """ - - def __init__( - self, - max_degree: int, - cat: bool = False, - ) -> None: - self.max_degree = max_degree - self.cat = cat - - def forward( - self, data: torch_geometric.data.Data, degrees_field: str, features_field: str - ) -> torch_geometric.data.Data: - r"""Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - degrees_field : str - The field containing the node degrees. - features_field : str - The field containing the node features. - - Returns - ------- - torch_geometric.data.Data - The transformed data. - """ - assert data.edge_index is not None - - deg = data[degrees_field].to(torch.long) - - if len(deg.shape) == 2: - deg = deg.squeeze(1) - - deg = one_hot(deg, num_classes=self.max_degree + 1) - - if self.cat: - x = data[features_field] - x = x.view(-1, 1) if x.dim() == 1 else x - data[features_field] = torch.cat([x, deg.to(x.dtype)], dim=-1) - else: - data[features_field] = deg - - return data - - def __repr__(self) -> str: - return f"{self.__class__.__name__}({self.max_degree})" - - -class KeepSelectedDataFields(torch_geometric.transforms.BaseTransform): - r"""A transform that keeps only the selected fields of the input data. - - Parameters - ---------- - **kwargs : optional - Parameters for the transform. - """ - - def __init__(self, **kwargs): - super().__init__() - self.type = "keep_selected_data_fields" - self.parameters = kwargs - - def forward(self, data: torch_geometric.data.Data): - r"""Apply the transform to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - torch_geometric.data.Data - The transformed data. - """ - # Keeps all the fields - if len(self.parameters["keep_fields"]) == 1: - return data - - for key, _ in data.items(): # noqa : PERF102 - if key not in self.parameters["keep_fields"]: - del data[key] - - return data +import torch +import torch_geometric +from torch_geometric.utils import one_hot + + +class IdentityTransform(torch_geometric.transforms.BaseTransform): + r"""An identity transform that does nothing to the input data.""" + + def __init__(self, **kwargs): + super().__init__() + self.type = "domain2domain" + self.parameters = kwargs + + def forward(self, data: torch_geometric.data.Data): + r"""Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + torch_geometric.data.Data + The (un)transformed data. + """ + return data + + +class NodeFeaturesToFloat(torch_geometric.transforms.BaseTransform): + r"""A transform that converts the node features of the input graph to float. + + Parameters + ---------- + **kwargs : optional + Parameters for the transform. + """ + + def __init__(self, **kwargs): + super().__init__() + self.type = "map_node_features_to_float" + + def forward(self, data: torch_geometric.data.Data): + r"""Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + torch_geometric.data.Data + The transformed data. + """ + data.x = data.x.float() + return data + + +class NodeDegrees(torch_geometric.transforms.BaseTransform): + r"""A transform that calculates the node degrees of the input graph. + + Parameters + ---------- + **kwargs : optional + Parameters for the transform. + """ + + def __init__(self, **kwargs): + super().__init__() + self.type = "node_degrees" + self.parameters = kwargs + + def forward(self, data: torch_geometric.data.Data): + r"""Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + torch_geometric.data.Data + The transformed data. + """ + field_to_process = [] + for key in data: + for field_substring in self.parameters["selected_fields"]: + if field_substring in key and key != "incidence_0": + field_to_process.append(key) # noqa : PERF401 + + for field in field_to_process: + data = self.calculate_node_degrees(data, field) + + return data + + def calculate_node_degrees( + self, data: torch_geometric.data.Data, field: str + ) -> torch_geometric.data.Data: + r"""Calculate the node degrees of the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + field : str + The field to calculate the node degrees. + + Returns + ------- + torch_geometric.data.Data + """ + if data[field].is_sparse: + degrees = abs(data[field].to_dense()).sum(1) + else: + assert ( + field == "edge_index" + ), "Following logic of finding degrees is only implemented for edge_index" + degrees = ( + torch_geometric.utils.to_dense_adj( + data[field], + max_num_nodes=data["x"].shape[0], # data["num_nodes"] + ) + .squeeze(0) + .sum(1) + ) + + if "incidence" in field: + field_name = str(int(field.split("_")[1]) - 1) + "_cell" + "_degrees" + else: + field_name = "node_degrees" + + data[field_name] = degrees.unsqueeze(1) + return data + + +class KeepOnlyConnectedComponent(torch_geometric.transforms.BaseTransform): + """ + A transform that keeps only the largest connected components of the input graph. + + Parameters + ---------- + **kwargs : optional + Parameters for the transform. + """ + + def __init__(self, **kwargs): + super().__init__() + self.type = "keep_connected_component" + self.parameters = kwargs + + def forward(self, data: torch_geometric.data.Data): + """ + Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + torch_geometric.data.Data + The transformed data. + """ + from torch_geometric.transforms import LargestConnectedComponents + + # torch_geometric.transforms.largest_connected_components() + num_components = self.parameters["num_components"] + lcc = LargestConnectedComponents( + num_components=num_components, connection="strong" + ) + return lcc(data) + + +class OneHotDegreeFeatures(torch_geometric.transforms.BaseTransform): + r"""A transform that adds the node degree as one hot encodings to the node features. + + Parameters + ---------- + **kwargs : optional + Parameters for the transform. + """ + + def __init__(self, **kwargs): + super().__init__() + self.type = "one_hot_degree_features" + self.deg_field = kwargs["degrees_fields"] + self.features_fields = kwargs["features_fields"] + self.transform = OneHotDegree(max_degree=kwargs["max_degrees"]) + + def forward(self, data: torch_geometric.data.Data): + r"""Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + torch_geometric.data.Data + The transformed data. + """ + return self.transform.forward( + data, degrees_field=self.deg_field, features_field=self.features_fields + ) + + +class OneHotDegree(torch_geometric.transforms.BaseTransform): + r"""Adds the node degree as one hot encodings to the node features + + Parameters + ---------- + max_degree : int + The maximum degree of the graph. + cat : bool, optional + If set to `True`, the one hot encodings are concatenated to the node features. + """ + + def __init__( + self, + max_degree: int, + cat: bool = False, + ) -> None: + self.max_degree = max_degree + self.cat = cat + + def forward( + self, data: torch_geometric.data.Data, degrees_field: str, features_field: str + ) -> torch_geometric.data.Data: + r"""Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + degrees_field : str + The field containing the node degrees. + features_field : str + The field containing the node features. + + Returns + ------- + torch_geometric.data.Data + The transformed data. + """ + assert data.edge_index is not None + + deg = data[degrees_field].to(torch.long) + + if len(deg.shape) == 2: + deg = deg.squeeze(1) + + deg = one_hot(deg, num_classes=self.max_degree + 1) + + if self.cat: + x = data[features_field] + x = x.view(-1, 1) if x.dim() == 1 else x + data[features_field] = torch.cat([x, deg.to(x.dtype)], dim=-1) + else: + data[features_field] = deg + + return data + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.max_degree})" + + +class KeepSelectedDataFields(torch_geometric.transforms.BaseTransform): + r"""A transform that keeps only the selected fields of the input data. + + Parameters + ---------- + **kwargs : optional + Parameters for the transform. + """ + + def __init__(self, **kwargs): + super().__init__() + self.type = "keep_selected_data_fields" + self.parameters = kwargs + + def forward(self, data: torch_geometric.data.Data): + r"""Apply the transform to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + torch_geometric.data.Data + The transformed data. + """ + # Keeps all the fields + if len(self.parameters["keep_fields"]) == 1: + return data + + for key, _ in data.items(): # noqa : PERF102 + if key not in self.parameters["keep_fields"]: + del data[key] + + return data diff --git a/modules/transforms/data_transform.py b/modules/transforms/data_transform.py index 59253ecf..3ac9b805 100755 --- a/modules/transforms/data_transform.py +++ b/modules/transforms/data_transform.py @@ -1,75 +1,75 @@ -import torch_geometric - -from modules.transforms.data_manipulations.manipulations import ( - IdentityTransform, - KeepOnlyConnectedComponent, - NodeDegrees, - NodeFeaturesToFloat, - OneHotDegreeFeatures, -) -from modules.transforms.feature_liftings.feature_liftings import ProjectionSum -from modules.transforms.liftings.graph2cell.cycle_lifting import CellCycleLifting -from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( - HypergraphKNNLifting, -) -from modules.transforms.liftings.graph2simplicial.clique_lifting import ( - SimplicialCliqueLifting, -) - -TRANSFORMS = { - # Graph -> Hypergraph - "HypergraphKNNLifting": HypergraphKNNLifting, - # Graph -> Simplicial Complex - "SimplicialCliqueLifting": SimplicialCliqueLifting, - # Graph -> Cell Complex - "CellCycleLifting": CellCycleLifting, - # Feature Liftings - "ProjectionSum": ProjectionSum, - # Data Manipulations - "Identity": IdentityTransform, - "NodeDegrees": NodeDegrees, - "OneHotDegreeFeatures": OneHotDegreeFeatures, - "NodeFeaturesToFloat": NodeFeaturesToFloat, - "KeepOnlyConnectedComponent": KeepOnlyConnectedComponent, -} - - -class DataTransform(torch_geometric.transforms.BaseTransform): - """Abstract class that provides an interface to define a custom data lifting. - - Parameters - ---------- - transform_name : str - The name of the transform to be used. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, transform_name, **kwargs): - super().__init__() - - kwargs["transform_name"] = transform_name - self.parameters = kwargs - - self.transform = ( - TRANSFORMS[transform_name](**kwargs) if transform_name is not None else None - ) - - def forward(self, data: torch_geometric.data.Data) -> torch_geometric.data.Data: - """Forward pass of the lifting. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data to be lifted. - - Returns - ------- - transformed_data : torch_geometric.data.Data - The lifted data. - """ - return self.transform(data) - - -if __name__ == "__main__": - _ = DataTransform() +import torch_geometric + +from modules.transforms.data_manipulations.manipulations import ( + IdentityTransform, + KeepOnlyConnectedComponent, + NodeDegrees, + NodeFeaturesToFloat, + OneHotDegreeFeatures, +) +from modules.transforms.feature_liftings.feature_liftings import ProjectionSum +from modules.transforms.liftings.graph2cell.cycle_lifting import CellCycleLifting +from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( + HypergraphKNNLifting, +) +from modules.transforms.liftings.graph2simplicial.clique_lifting import ( + SimplicialCliqueLifting, +) + +TRANSFORMS = { + # Graph -> Hypergraph + "HypergraphKNNLifting": HypergraphKNNLifting, + # Graph -> Simplicial Complex + "SimplicialCliqueLifting": SimplicialCliqueLifting, + # Graph -> Cell Complex + "CellCycleLifting": CellCycleLifting, + # Feature Liftings + "ProjectionSum": ProjectionSum, + # Data Manipulations + "Identity": IdentityTransform, + "NodeDegrees": NodeDegrees, + "OneHotDegreeFeatures": OneHotDegreeFeatures, + "NodeFeaturesToFloat": NodeFeaturesToFloat, + "KeepOnlyConnectedComponent": KeepOnlyConnectedComponent, +} + + +class DataTransform(torch_geometric.transforms.BaseTransform): + """Abstract class that provides an interface to define a custom data lifting. + + Parameters + ---------- + transform_name : str + The name of the transform to be used. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, transform_name, **kwargs): + super().__init__() + + kwargs["transform_name"] = transform_name + self.parameters = kwargs + + self.transform = ( + TRANSFORMS[transform_name](**kwargs) if transform_name is not None else None + ) + + def forward(self, data: torch_geometric.data.Data) -> torch_geometric.data.Data: + """Forward pass of the lifting. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data to be lifted. + + Returns + ------- + transformed_data : torch_geometric.data.Data + The lifted data. + """ + return self.transform(data) + + +if __name__ == "__main__": + _ = DataTransform() diff --git a/modules/transforms/feature_liftings/feature_liftings.py b/modules/transforms/feature_liftings/feature_liftings.py index 687f9f1e..2cf41fda 100644 --- a/modules/transforms/feature_liftings/feature_liftings.py +++ b/modules/transforms/feature_liftings/feature_liftings.py @@ -1,56 +1,58 @@ -import torch -import torch_geometric - - -class ProjectionSum(torch_geometric.transforms.BaseTransform): - r"""Lifts r-cell features to r+1-cells by projection. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__() - - def lift_features( - self, data: torch_geometric.data.Data | dict - ) -> torch_geometric.data.Data | dict: - r"""Projects r-cell features of a graph to r+1-cell structures using the incidence matrix. - - Parameters - ---------- - data : torch_geometric.data.Data | dict - The input data to be lifted. - - Returns - ------- - torch_geometric.data.Data | dict - The lifted data.""" - keys = sorted([key.split("_")[1] for key in data.keys() if "incidence" in key]) # noqa : SIM118 - for elem in keys: - if f"x_{elem}" not in data: - idx_to_project = 0 if elem == "hyperedges" else int(elem) - 1 - data["x_" + elem] = torch.matmul( - abs(data["incidence_" + elem].t()), - data[f"x_{idx_to_project}"], - ) - return data - - def forward( - self, data: torch_geometric.data.Data | dict - ) -> torch_geometric.data.Data | dict: - r"""Applies the lifting to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data | dict - The input data to be lifted. - - Returns - ------- - torch_geometric.data.Data | dict - The lifted data. - """ - return self.lift_features(data) +import torch +import torch_geometric + + +class ProjectionSum(torch_geometric.transforms.BaseTransform): + r"""Lifts r-cell features to r+1-cells by projection. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__() + + def lift_features( + self, data: torch_geometric.data.Data | dict + ) -> torch_geometric.data.Data | dict: + r"""Projects r-cell features of a graph to r+1-cell structures using the incidence matrix. + + Parameters + ---------- + data : torch_geometric.data.Data | dict + The input data to be lifted. + + Returns + ------- + torch_geometric.data.Data | dict + The lifted data.""" + keys = sorted( + [key.split("_")[1] for key in data.keys() if "incidence" in key] + ) # noqa : SIM118 + for elem in keys: + if f"x_{elem}" not in data: + idx_to_project = 0 if elem == "hyperedges" else int(elem) - 1 + data["x_" + elem] = torch.matmul( + abs(data["incidence_" + elem].t()), + data[f"x_{idx_to_project}"], + ) + return data + + def forward( + self, data: torch_geometric.data.Data | dict + ) -> torch_geometric.data.Data | dict: + r"""Applies the lifting to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data | dict + The input data to be lifted. + + Returns + ------- + torch_geometric.data.Data | dict + The lifted data. + """ + return self.lift_features(data) diff --git a/modules/transforms/liftings/digraph2simplicial/clique_lifting.py b/modules/transforms/liftings/digraph2simplicial/clique_lifting.py new file mode 100644 index 00000000..e69de29b diff --git a/modules/transforms/liftings/graph2cell/base.py b/modules/transforms/liftings/graph2cell/base.py index 689a3dd9..93d87046 100755 --- a/modules/transforms/liftings/graph2cell/base.py +++ b/modules/transforms/liftings/graph2cell/base.py @@ -1,51 +1,51 @@ -import networkx as nx -import torch -from toponetx.classes import CellComplex - -from modules.data.utils.utils import get_complex_connectivity -from modules.transforms.liftings.lifting import GraphLifting - - -class Graph2CellLifting(GraphLifting): - r"""Abstract class for lifting graphs to cell complexes. - - Parameters - ---------- - complex_dim : int, optional - The dimension of the cell complex to be generated. Default is 2. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, complex_dim=2, **kwargs): - super().__init__(**kwargs) - self.complex_dim = complex_dim - self.type = "graph2cell" - - def _get_lifted_topology(self, cell_complex: CellComplex, graph: nx.Graph) -> dict: - r"""Returns the lifted topology. - - Parameters - ---------- - cell_complex : CellComplex - The cell complex. - graph : nx.Graph - The input graph. - - Returns - ------- - dict - The lifted topology. - """ - lifted_topology = get_complex_connectivity(cell_complex, self.complex_dim) - lifted_topology["x_0"] = torch.stack( - list(cell_complex.get_cell_attributes("features", 0).values()) - ) - # If new edges have been added during the lifting process, we discard the edge attributes - if self.contains_edge_attr and cell_complex.shape[1] == ( - graph.number_of_edges() - ): - lifted_topology["x_1"] = torch.stack( - list(cell_complex.get_cell_attributes("features", 1).values()) - ) - return lifted_topology +import networkx as nx +import torch +from toponetx.classes import CellComplex + +from modules.data.utils.utils import get_complex_connectivity +from modules.transforms.liftings.lifting import GraphLifting + + +class Graph2CellLifting(GraphLifting): + r"""Abstract class for lifting graphs to cell complexes. + + Parameters + ---------- + complex_dim : int, optional + The dimension of the cell complex to be generated. Default is 2. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, complex_dim=2, **kwargs): + super().__init__(**kwargs) + self.complex_dim = complex_dim + self.type = "graph2cell" + + def _get_lifted_topology(self, cell_complex: CellComplex, graph: nx.Graph) -> dict: + r"""Returns the lifted topology. + + Parameters + ---------- + cell_complex : CellComplex + The cell complex. + graph : nx.Graph + The input graph. + + Returns + ------- + dict + The lifted topology. + """ + lifted_topology = get_complex_connectivity(cell_complex, self.complex_dim) + lifted_topology["x_0"] = torch.stack( + list(cell_complex.get_cell_attributes("features", 0).values()) + ) + # If new edges have been added during the lifting process, we discard the edge attributes + if self.contains_edge_attr and cell_complex.shape[1] == ( + graph.number_of_edges() + ): + lifted_topology["x_1"] = torch.stack( + list(cell_complex.get_cell_attributes("features", 1).values()) + ) + return lifted_topology diff --git a/modules/transforms/liftings/graph2cell/cycle_lifting.py b/modules/transforms/liftings/graph2cell/cycle_lifting.py index f3aa9cf6..bd3e10fe 100755 --- a/modules/transforms/liftings/graph2cell/cycle_lifting.py +++ b/modules/transforms/liftings/graph2cell/cycle_lifting.py @@ -1,48 +1,48 @@ -import networkx as nx -import torch_geometric -from toponetx.classes import CellComplex - -from modules.transforms.liftings.graph2cell.base import Graph2CellLifting - - -class CellCycleLifting(Graph2CellLifting): - r"""Lifts graphs to cell complexes by identifying the cycles as 2-cells. - - Parameters - ---------- - max_cell_length : int, optional - The maximum length of the cycles to be lifted. Default is None. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, max_cell_length=None, **kwargs): - super().__init__(**kwargs) - self.complex_dim = 2 - self.max_cell_length = max_cell_length - - def lift_topology(self, data: torch_geometric.data.Data) -> dict: - r"""Finds the cycles of a graph and lifts them to 2-cells. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data to be lifted. - - Returns - ------- - dict - The lifted topology. - """ - G = self._generate_graph_from_data(data) - cycles = nx.cycle_basis(G) - cell_complex = CellComplex(G) - - # Eliminate self-loop cycles - cycles = [cycle for cycle in cycles if len(cycle) != 1] - # Eliminate cycles that are greater than the max_cell_lenght - if self.max_cell_length is not None: - cycles = [cycle for cycle in cycles if len(cycle) <= self.max_cell_length] - if len(cycles) != 0: - cell_complex.add_cells_from(cycles, rank=self.complex_dim) - return self._get_lifted_topology(cell_complex, G) +import networkx as nx +import torch_geometric +from toponetx.classes import CellComplex + +from modules.transforms.liftings.graph2cell.base import Graph2CellLifting + + +class CellCycleLifting(Graph2CellLifting): + r"""Lifts graphs to cell complexes by identifying the cycles as 2-cells. + + Parameters + ---------- + max_cell_length : int, optional + The maximum length of the cycles to be lifted. Default is None. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, max_cell_length=None, **kwargs): + super().__init__(**kwargs) + self.complex_dim = 2 + self.max_cell_length = max_cell_length + + def lift_topology(self, data: torch_geometric.data.Data) -> dict: + r"""Finds the cycles of a graph and lifts them to 2-cells. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data to be lifted. + + Returns + ------- + dict + The lifted topology. + """ + G = self._generate_graph_from_data(data) + cycles = nx.cycle_basis(G) + cell_complex = CellComplex(G) + + # Eliminate self-loop cycles + cycles = [cycle for cycle in cycles if len(cycle) != 1] + # Eliminate cycles that are greater than the max_cell_lenght + if self.max_cell_length is not None: + cycles = [cycle for cycle in cycles if len(cycle) <= self.max_cell_length] + if len(cycles) != 0: + cell_complex.add_cells_from(cycles, rank=self.complex_dim) + return self._get_lifted_topology(cell_complex, G) diff --git a/modules/transforms/liftings/graph2combinatorial/base.py b/modules/transforms/liftings/graph2combinatorial/base.py index db005333..c367105d 100755 --- a/modules/transforms/liftings/graph2combinatorial/base.py +++ b/modules/transforms/liftings/graph2combinatorial/base.py @@ -1,15 +1,15 @@ -from modules.transforms.liftings.lifting import GraphLifting - - -class Graph2CombinatorialLifting(GraphLifting): - r"""Abstract class for lifting graphs to combinatorial complexes. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.type = "graph2combinatorial" +from modules.transforms.liftings.lifting import GraphLifting + + +class Graph2CombinatorialLifting(GraphLifting): + r"""Abstract class for lifting graphs to combinatorial complexes. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.type = "graph2combinatorial" diff --git a/modules/transforms/liftings/graph2hypergraph/base.py b/modules/transforms/liftings/graph2hypergraph/base.py index 1c5bc01f..3b5f9e0a 100755 --- a/modules/transforms/liftings/graph2hypergraph/base.py +++ b/modules/transforms/liftings/graph2hypergraph/base.py @@ -1,15 +1,15 @@ -from modules.transforms.liftings.lifting import GraphLifting - - -class Graph2HypergraphLifting(GraphLifting): - r"""Abstract class for lifting graphs to hypergraphs. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.type = "graph2hypergraph" +from modules.transforms.liftings.lifting import GraphLifting + + +class Graph2HypergraphLifting(GraphLifting): + r"""Abstract class for lifting graphs to hypergraphs. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.type = "graph2hypergraph" diff --git a/modules/transforms/liftings/graph2hypergraph/knn_lifting.py b/modules/transforms/liftings/graph2hypergraph/knn_lifting.py index 4ee78866..c01961d8 100755 --- a/modules/transforms/liftings/graph2hypergraph/knn_lifting.py +++ b/modules/transforms/liftings/graph2hypergraph/knn_lifting.py @@ -1,75 +1,75 @@ -import torch -import torch_geometric - -from modules.transforms.liftings.graph2hypergraph.base import Graph2HypergraphLifting - - -class HypergraphKNNLifting(Graph2HypergraphLifting): - r"""Lifts graphs to hypergraph domain by considering k-nearest neighbors. - - Parameters - ---------- - k_value : int, optional - The number of nearest neighbors to consider. Default is 1. - loop: boolean, optional - If True the hyperedges will contain the node they were created from. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, k_value=1, loop=True, **kwargs): - super().__init__(**kwargs) - self.k = k_value - self.loop = loop - self.transform = torch_geometric.transforms.KNNGraph(self.k, self.loop) - - def lift_topology(self, data: torch_geometric.data.Data) -> dict: - r"""Lifts the topology of a graph to hypergraph domain by considering k-nearest neighbors. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data to be lifted. - - Returns - ------- - dict - The lifted topology. - """ - num_nodes = data.x.shape[0] - data.pos = data.x - num_hyperedges = num_nodes - incidence_1 = torch.zeros(num_nodes, num_nodes) - data_lifted = self.transform(data) - # check for loops, since KNNGraph is inconsistent with nodes with equal features - if self.loop: - for i in range(num_nodes): - if not torch.any( - torch.all(data_lifted.edge_index == torch.tensor([[i, i]]).T, dim=0) - ): - connected_nodes = data_lifted.edge_index[ - 0, data_lifted.edge_index[1] == i - ] - dists = torch.sqrt( - torch.sum( - (data.pos[connected_nodes] - data.pos[i].unsqueeze(0) ** 2), - dim=1, - ) - ) - furthest = torch.argmax(dists) - idx = torch.where( - torch.all( - data_lifted.edge_index - == torch.tensor([[connected_nodes[furthest], i]]).T, - dim=0, - ) - )[0] - data_lifted.edge_index[:, idx] = torch.tensor([[i, i]]).T - - incidence_1[data_lifted.edge_index[1], data_lifted.edge_index[0]] = 1 - incidence_1 = torch.Tensor(incidence_1).to_sparse_coo() - return { - "incidence_hyperedges": incidence_1, - "num_hyperedges": num_hyperedges, - "x_0": data.x, - } +import torch +import torch_geometric + +from modules.transforms.liftings.graph2hypergraph.base import Graph2HypergraphLifting + + +class HypergraphKNNLifting(Graph2HypergraphLifting): + r"""Lifts graphs to hypergraph domain by considering k-nearest neighbors. + + Parameters + ---------- + k_value : int, optional + The number of nearest neighbors to consider. Default is 1. + loop: boolean, optional + If True the hyperedges will contain the node they were created from. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, k_value=1, loop=True, **kwargs): + super().__init__(**kwargs) + self.k = k_value + self.loop = loop + self.transform = torch_geometric.transforms.KNNGraph(self.k, self.loop) + + def lift_topology(self, data: torch_geometric.data.Data) -> dict: + r"""Lifts the topology of a graph to hypergraph domain by considering k-nearest neighbors. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data to be lifted. + + Returns + ------- + dict + The lifted topology. + """ + num_nodes = data.x.shape[0] + data.pos = data.x + num_hyperedges = num_nodes + incidence_1 = torch.zeros(num_nodes, num_nodes) + data_lifted = self.transform(data) + # check for loops, since KNNGraph is inconsistent with nodes with equal features + if self.loop: + for i in range(num_nodes): + if not torch.any( + torch.all(data_lifted.edge_index == torch.tensor([[i, i]]).T, dim=0) + ): + connected_nodes = data_lifted.edge_index[ + 0, data_lifted.edge_index[1] == i + ] + dists = torch.sqrt( + torch.sum( + (data.pos[connected_nodes] - data.pos[i].unsqueeze(0) ** 2), + dim=1, + ) + ) + furthest = torch.argmax(dists) + idx = torch.where( + torch.all( + data_lifted.edge_index + == torch.tensor([[connected_nodes[furthest], i]]).T, + dim=0, + ) + )[0] + data_lifted.edge_index[:, idx] = torch.tensor([[i, i]]).T + + incidence_1[data_lifted.edge_index[1], data_lifted.edge_index[0]] = 1 + incidence_1 = torch.Tensor(incidence_1).to_sparse_coo() + return { + "incidence_hyperedges": incidence_1, + "num_hyperedges": num_hyperedges, + "x_0": data.x, + } diff --git a/modules/transforms/liftings/graph2pointcloud/base.py b/modules/transforms/liftings/graph2pointcloud/base.py index dbe5e2cb..3ab5c5cb 100755 --- a/modules/transforms/liftings/graph2pointcloud/base.py +++ b/modules/transforms/liftings/graph2pointcloud/base.py @@ -1,15 +1,15 @@ -from modules.transforms.liftings.lifting import GraphLifting - - -class Graph2PointcloudLifting(GraphLifting): - r"""Abstract class for lifting graphs to pointclouds. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.type = "graph2pointcloud" +from modules.transforms.liftings.lifting import GraphLifting + + +class Graph2PointcloudLifting(GraphLifting): + r"""Abstract class for lifting graphs to pointclouds. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.type = "graph2pointcloud" diff --git a/modules/transforms/liftings/graph2simplicial/base.py b/modules/transforms/liftings/graph2simplicial/base.py index 1500a229..b40cf9a8 100755 --- a/modules/transforms/liftings/graph2simplicial/base.py +++ b/modules/transforms/liftings/graph2simplicial/base.py @@ -1,56 +1,57 @@ -import networkx as nx -import torch -from toponetx.classes import SimplicialComplex - -from modules.data.utils.utils import get_complex_connectivity -from modules.transforms.liftings.lifting import GraphLifting - - -class Graph2SimplicialLifting(GraphLifting): - r"""Abstract class for lifting graphs to simplicial complexes. - - Parameters - ---------- - complex_dim : int, optional - The dimension of the simplicial complex to be generated. Default is 2. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, complex_dim=2, **kwargs): - super().__init__(**kwargs) - self.complex_dim = complex_dim - self.type = "graph2simplicial" - self.signed = kwargs.get("signed", False) - - def _get_lifted_topology( - self, simplicial_complex: SimplicialComplex, graph: nx.Graph - ) -> dict: - r"""Returns the lifted topology. - - Parameters - ---------- - simplicial_complex : SimplicialComplex - The simplicial complex. - graph : nx.Graph - The input graph. - - Returns - ------- - dict - The lifted topology. - """ - lifted_topology = get_complex_connectivity( - simplicial_complex, self.complex_dim, signed=self.signed - ) - lifted_topology["x_0"] = torch.stack( - list(simplicial_complex.get_simplex_attributes("features", 0).values()) - ) - # If new edges have been added during the lifting process, we discard the edge attributes - if self.contains_edge_attr and simplicial_complex.shape[1] == ( - graph.number_of_edges() - ): - lifted_topology["x_1"] = torch.stack( - list(simplicial_complex.get_simplex_attributes("features", 1).values()) - ) - return lifted_topology +import networkx as nx +import torch +from toponetx.classes import SimplicialComplex + +from modules.data.utils.utils import get_complex_connectivity +from modules.transforms.liftings.lifting import GraphLifting + + +class Graph2SimplicialLifting(GraphLifting): + r"""Abstract class for lifting graphs to simplicial complexes. + + Parameters + ---------- + complex_dim : int, optional + The dimension of the simplicial complex to be generated. Default is 2. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, complex_dim=2, **kwargs): + super().__init__(**kwargs) + self.complex_dim = complex_dim + self.type = "graph2simplicial" + self.signed = kwargs.get("signed", False) + + def _get_lifted_topology( + self, simplicial_complex: SimplicialComplex, graph: nx.Graph + ) -> dict: + r"""Returns the lifted topology. + + Parameters + ---------- + simplicial_complex : SimplicialComplex + The simplicial complex. + graph : nx.Graph + The input graph. + + Returns + ------- + dict + The lifted topology. + """ + + lifted_topology = get_complex_connectivity( + simplicial_complex, self.complex_dim, signed=self.signed + ) + lifted_topology["x_0"] = torch.stack( + list(simplicial_complex.get_simplex_attributes("features", 0).values()) + ) + # If new edges have been added during the lifting process, we discard the edge attributes + if self.contains_edge_attr and simplicial_complex.shape[1] == ( + graph.number_of_edges() + ): + lifted_topology["x_1"] = torch.stack( + list(simplicial_complex.get_simplex_attributes("features", 1).values()) + ) + return lifted_topology diff --git a/modules/transforms/liftings/graph2simplicial/clique_lifting.py b/modules/transforms/liftings/graph2simplicial/clique_lifting.py index 88789927..f23c23ea 100755 --- a/modules/transforms/liftings/graph2simplicial/clique_lifting.py +++ b/modules/transforms/liftings/graph2simplicial/clique_lifting.py @@ -1,47 +1,49 @@ -from itertools import combinations - -import networkx as nx -import torch_geometric -from toponetx.classes import SimplicialComplex - -from modules.transforms.liftings.graph2simplicial.base import Graph2SimplicialLifting - - -class SimplicialCliqueLifting(Graph2SimplicialLifting): - r"""Lifts graphs to simplicial complex domain by identifying the cliques as k-simplices. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - - def lift_topology(self, data: torch_geometric.data.Data) -> dict: - r"""Lifts the topology of a graph to a simplicial complex by identifying the cliques as k-simplices. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data to be lifted. - - Returns - ------- - dict - The lifted topology. - """ - graph = self._generate_graph_from_data(data) - simplicial_complex = SimplicialComplex(graph) - cliques = nx.find_cliques(graph) - simplices = [set() for _ in range(2, self.complex_dim + 1)] - for clique in cliques: - for i in range(2, self.complex_dim + 1): - for c in combinations(clique, i + 1): - simplices[i - 2].add(tuple(c)) - - for set_k_simplices in simplices: - simplicial_complex.add_simplices_from(list(set_k_simplices)) - - return self._get_lifted_topology(simplicial_complex, graph) +from itertools import combinations + +import networkx as nx +import torch_geometric +from toponetx.classes import SimplicialComplex + +from modules.transforms.liftings.graph2simplicial.base import Graph2SimplicialLifting + + +class SimplicialCliqueLifting(Graph2SimplicialLifting): + r"""Lifts graphs to simplicial complex domain by identifying the cliques as k-simplices. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def lift_topology(self, data: torch_geometric.data.Data) -> dict: + r"""Lifts the topology of a graph to a simplicial complex by identifying the cliques as k-simplices. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data to be lifted. + + Returns + ------- + dict + The lifted topology. + """ + + graph = self._generate_graph_from_data(data) + simplicial_complex = SimplicialComplex(graph) + cliques = nx.find_cliques(graph) + simplices = [set() for _ in range(2, self.complex_dim + 1)] + + for clique in cliques: + for i in range(2, self.complex_dim + 1): + for c in combinations(clique, i + 1): + simplices[i - 2].add(tuple(c)) + + for set_k_simplices in simplices: + simplicial_complex.add_simplices_from(list(set_k_simplices)) + + return self._get_lifted_topology(simplicial_complex, graph) diff --git a/modules/transforms/liftings/lifting.py b/modules/transforms/liftings/lifting.py index ddb72781..969ab7e9 100644 --- a/modules/transforms/liftings/lifting.py +++ b/modules/transforms/liftings/lifting.py @@ -1,217 +1,218 @@ -from abc import abstractmethod - -import networkx as nx -import torch_geometric -from torch_geometric.utils.undirected import is_undirected, to_undirected - -from modules.transforms.data_manipulations.manipulations import IdentityTransform -from modules.transforms.feature_liftings.feature_liftings import ProjectionSum - -# Implemented Feature Liftings -FEATURE_LIFTINGS = { - "ProjectionSum": ProjectionSum, - None: IdentityTransform, -} - - -class AbstractLifting(torch_geometric.transforms.BaseTransform): - r"""Abstract class for topological liftings. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'projection'. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, feature_lifting=None, **kwargs): - super().__init__() - self.feature_lifting = FEATURE_LIFTINGS[feature_lifting]() - - @abstractmethod - def lift_topology(self, data: torch_geometric.data.Data) -> dict: - r"""Lifts the topology of a graph to higher-order topological domains. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data to be lifted. - - Returns - ------- - dict - The lifted topology. - """ - raise NotImplementedError - - def forward(self, data: torch_geometric.data.Data) -> torch_geometric.data.Data: - r"""Applies the full lifting (topology + features) to the input data. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data to be lifted. - - Returns - ------- - torch_geometric.data.Data - The lifted data. - """ - initial_data = data.to_dict() - lifted_topology = self.lift_topology(data) - lifted_topology = self.feature_lifting(lifted_topology) - return torch_geometric.data.Data(**initial_data, **lifted_topology) - - -class GraphLifting(AbstractLifting): - r"""Abstract class for lifting graph topologies to other (topological) domains. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'projection'. - preserve_edge_attr : bool, optional - Whether to preserve edge attributes. Default is False. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__( - self, feature_lifting="ProjectionSum", preserve_edge_attr=False, **kwargs - ): - super().__init__(feature_lifting=feature_lifting, **kwargs) - self.preserve_edge_attr = preserve_edge_attr - - def _data_has_edge_attr(self, data: torch_geometric.data.Data) -> bool: - r"""Checks if the input data object has edge attributes. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - bool - Whether the data object has edge attributes. - """ - return hasattr(data, "edge_attr") and data.edge_attr is not None - - def _generate_graph_from_data(self, data: torch_geometric.data.Data) -> nx.Graph: - r"""Generates a NetworkX graph from the input data object. - - Parameters - ---------- - data : torch_geometric.data.Data - The input data. - - Returns - ------- - nx.Graph - The generated NetworkX graph. - """ - # Check if data object have edge_attr, return list of tuples as [(node_id, {'features':data}, 'dim':1)] or ?? - nodes = [(n, dict(features=data.x[n], dim=0)) for n in range(data.x.shape[0])] - - if self.preserve_edge_attr and self._data_has_edge_attr(data): - # In case edge features are given, assign features to every edge - edge_index, edge_attr = ( - data.edge_index, - data.edge_attr - if is_undirected(data.edge_index, data.edge_attr) - else to_undirected(data.edge_index, data.edge_attr), - ) - edges = [ - (i.item(), j.item(), dict(features=edge_attr[edge_idx], dim=1)) - for edge_idx, (i, j) in enumerate( - zip(edge_index[0], edge_index[1], strict=False) - ) - ] - self.contains_edge_attr = True - else: - # If edge_attr is not present, return list list of edges - edges = [ - (i.item(), j.item()) - for i, j in zip(data.edge_index[0], data.edge_index[1], strict=False) - ] - self.contains_edge_attr = False - graph = nx.Graph() - graph.add_nodes_from(nodes) - graph.add_edges_from(edges) - return graph - - -class PointCloudLifting(AbstractLifting): - r"""Abstract class for lifting point cloud topologies to other (topological) domains. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'ProjectionSum'. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, feature_lifting="ProjectionSum", **kwargs): - super().__init__(feature_lifting=feature_lifting, **kwargs) - - -class CellComplexLifting(AbstractLifting): - r"""Abstract class for lifting cell complexes to other (topological) domains. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'ProjectionSum'. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, feature_lifting="ProjectionSum", **kwargs): - super().__init__(feature_lifting=feature_lifting, **kwargs) - - -class SimplicialLifting(AbstractLifting): - r"""Abstract class for lifting simplicial complexes to other (topological) domains. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'ProjectionSum'. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, feature_lifting="ProjectionSum", **kwargs): - super().__init__(feature_lifting=feature_lifting, **kwargs) - - -class HypergraphLifting(AbstractLifting): - r"""Abstract class for lifting hypergraphs to other (topological) domains. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'projection'. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, feature_lifting="ProjectionSum", **kwargs): - super().__init__(feature_lifting=feature_lifting, **kwargs) - - -class CombinatorialLifting(AbstractLifting): - r"""Abstract class for lifting combinatorial structures to other (topological) domains. - - Parameters - ---------- - feature_lifting : str, optional - The feature lifting method to be used. Default is 'ProjectionSum'. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, feature_lifting="ProjectionSum", **kwargs): - super().__init__(feature_lifting=feature_lifting, **kwargs) +from abc import abstractmethod + +import networkx as nx +import torch_geometric +from torch_geometric.utils.undirected import is_undirected, to_undirected + +from modules.transforms.data_manipulations.manipulations import IdentityTransform +from modules.transforms.feature_liftings.feature_liftings import ProjectionSum + +# Implemented Feature Liftings +FEATURE_LIFTINGS = { + "ProjectionSum": ProjectionSum, + None: IdentityTransform, +} + + +class AbstractLifting(torch_geometric.transforms.BaseTransform): + r"""Abstract class for topological liftings. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'projection'. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, feature_lifting=None, **kwargs): + super().__init__() + self.feature_lifting = FEATURE_LIFTINGS[feature_lifting]() + + @abstractmethod + def lift_topology(self, data: torch_geometric.data.Data) -> dict: + r"""Lifts the topology of a graph to higher-order topological domains. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data to be lifted. + + Returns + ------- + dict + The lifted topology. + """ + raise NotImplementedError + + def forward(self, data: torch_geometric.data.Data) -> torch_geometric.data.Data: + r"""Applies the full lifting (topology + features) to the input data. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data to be lifted. + + Returns + ------- + torch_geometric.data.Data + The lifted data. + """ + print("In forward") + initial_data = data.to_dict() + lifted_topology = self.lift_topology(data) + lifted_topology = self.feature_lifting(lifted_topology) + return torch_geometric.data.Data(**initial_data, **lifted_topology) + + +class GraphLifting(AbstractLifting): + r"""Abstract class for lifting graph topologies to other (topological) domains. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'projection'. + preserve_edge_attr : bool, optional + Whether to preserve edge attributes. Default is False. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__( + self, feature_lifting="ProjectionSum", preserve_edge_attr=False, **kwargs + ): + super().__init__(feature_lifting=feature_lifting, **kwargs) + self.preserve_edge_attr = preserve_edge_attr + + def _data_has_edge_attr(self, data: torch_geometric.data.Data) -> bool: + r"""Checks if the input data object has edge attributes. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + bool + Whether the data object has edge attributes. + """ + return hasattr(data, "edge_attr") and data.edge_attr is not None + + def _generate_graph_from_data(self, data: torch_geometric.data.Data) -> nx.Graph: + r"""Generates a NetworkX graph from the input data object. + + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + nx.Graph + The generated NetworkX graph. + """ + # Check if data object have edge_attr, return list of tuples as [(node_id, {'features':data}, 'dim':1)] or ?? + nodes = [(n, dict(features=data.x[n], dim=0)) for n in range(data.x.shape[0])] + + if self.preserve_edge_attr and self._data_has_edge_attr(data): + # In case edge features are given, assign features to every edge + edge_index, edge_attr = ( + data.edge_index, + data.edge_attr + if is_undirected(data.edge_index, data.edge_attr) + else to_undirected(data.edge_index, data.edge_attr), + ) + edges = [ + (i.item(), j.item(), dict(features=edge_attr[edge_idx], dim=1)) + for edge_idx, (i, j) in enumerate( + zip(edge_index[0], edge_index[1], strict=False) + ) + ] + self.contains_edge_attr = True + else: + # If edge_attr is not present, return list list of edges + edges = [ + (i.item(), j.item()) + for i, j in zip(data.edge_index[0], data.edge_index[1], strict=False) + ] + self.contains_edge_attr = False + graph = nx.Graph() + graph.add_nodes_from(nodes) + graph.add_edges_from(edges) + return graph + + +class PointCloudLifting(AbstractLifting): + r"""Abstract class for lifting point cloud topologies to other (topological) domains. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'ProjectionSum'. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, feature_lifting="ProjectionSum", **kwargs): + super().__init__(feature_lifting=feature_lifting, **kwargs) + + +class CellComplexLifting(AbstractLifting): + r"""Abstract class for lifting cell complexes to other (topological) domains. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'ProjectionSum'. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, feature_lifting="ProjectionSum", **kwargs): + super().__init__(feature_lifting=feature_lifting, **kwargs) + + +class SimplicialLifting(AbstractLifting): + r"""Abstract class for lifting simplicial complexes to other (topological) domains. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'ProjectionSum'. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, feature_lifting="ProjectionSum", **kwargs): + super().__init__(feature_lifting=feature_lifting, **kwargs) + + +class HypergraphLifting(AbstractLifting): + r"""Abstract class for lifting hypergraphs to other (topological) domains. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'projection'. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, feature_lifting="ProjectionSum", **kwargs): + super().__init__(feature_lifting=feature_lifting, **kwargs) + + +class CombinatorialLifting(AbstractLifting): + r"""Abstract class for lifting combinatorial structures to other (topological) domains. + + Parameters + ---------- + feature_lifting : str, optional + The feature lifting method to be used. Default is 'ProjectionSum'. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, feature_lifting="ProjectionSum", **kwargs): + super().__init__(feature_lifting=feature_lifting, **kwargs) diff --git a/modules/transforms/liftings/pointcloud2cell/base.py b/modules/transforms/liftings/pointcloud2cell/base.py index 7f3cd93a..634c34df 100755 --- a/modules/transforms/liftings/pointcloud2cell/base.py +++ b/modules/transforms/liftings/pointcloud2cell/base.py @@ -1,18 +1,18 @@ -from modules.transforms.liftings.lifting import PointCloudLifting - - -class PointCloud2CellLifting(PointCloudLifting): - r"""Abstract class for lifting pointclouds to cell complexes. - - Parameters - ---------- - complex_dim : int, optional - The dimension of the cell complex to be generated. Default is 2. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, complex_dim=2, **kwargs): - super().__init__(**kwargs) - self.complex_dim = complex_dim - self.type = "pointcloud2cell" +from modules.transforms.liftings.lifting import PointCloudLifting + + +class PointCloud2CellLifting(PointCloudLifting): + r"""Abstract class for lifting pointclouds to cell complexes. + + Parameters + ---------- + complex_dim : int, optional + The dimension of the cell complex to be generated. Default is 2. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, complex_dim=2, **kwargs): + super().__init__(**kwargs) + self.complex_dim = complex_dim + self.type = "pointcloud2cell" diff --git a/modules/transforms/liftings/pointcloud2combinatorial/base.py b/modules/transforms/liftings/pointcloud2combinatorial/base.py index e4a9c639..fa24966a 100755 --- a/modules/transforms/liftings/pointcloud2combinatorial/base.py +++ b/modules/transforms/liftings/pointcloud2combinatorial/base.py @@ -1,15 +1,15 @@ -from modules.transforms.liftings.lifting import PointCloudLifting - - -class PointCloud2CombinatorialLifting(PointCloudLifting): - r"""Abstract class for lifting graphs to combinatorial complexes. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.type = "pointcloud2combinatorial" +from modules.transforms.liftings.lifting import PointCloudLifting + + +class PointCloud2CombinatorialLifting(PointCloudLifting): + r"""Abstract class for lifting graphs to combinatorial complexes. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.type = "pointcloud2combinatorial" diff --git a/modules/transforms/liftings/pointcloud2graph/base.py b/modules/transforms/liftings/pointcloud2graph/base.py index 8860861e..b574fe9f 100755 --- a/modules/transforms/liftings/pointcloud2graph/base.py +++ b/modules/transforms/liftings/pointcloud2graph/base.py @@ -1,15 +1,15 @@ -from modules.transforms.liftings.lifting import PointCloudLifting - - -class PointCloud2GraphLifting(PointCloudLifting): - r"""Abstract class for lifting pointclouds to graphs. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.type = "pointcloud2graph" +from modules.transforms.liftings.lifting import PointCloudLifting + + +class PointCloud2GraphLifting(PointCloudLifting): + r"""Abstract class for lifting pointclouds to graphs. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.type = "pointcloud2graph" diff --git a/modules/transforms/liftings/pointcloud2hypergraph/base.py b/modules/transforms/liftings/pointcloud2hypergraph/base.py index 08fa30dd..616d5968 100755 --- a/modules/transforms/liftings/pointcloud2hypergraph/base.py +++ b/modules/transforms/liftings/pointcloud2hypergraph/base.py @@ -1,15 +1,15 @@ -from modules.transforms.liftings.lifting import PointCloudLifting - - -class PointCloud2HypergraphLifting(PointCloudLifting): - r"""Abstract class for lifting pointclouds to hypergraphs. - - Parameters - ---------- - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, **kwargs): - super().__init__(**kwargs) - self.type = "pointcloud2hypergraph" +from modules.transforms.liftings.lifting import PointCloudLifting + + +class PointCloud2HypergraphLifting(PointCloudLifting): + r"""Abstract class for lifting pointclouds to hypergraphs. + + Parameters + ---------- + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.type = "pointcloud2hypergraph" diff --git a/modules/transforms/liftings/pointcloud2simplicial/base.py b/modules/transforms/liftings/pointcloud2simplicial/base.py index fddfaf17..4bde5176 100755 --- a/modules/transforms/liftings/pointcloud2simplicial/base.py +++ b/modules/transforms/liftings/pointcloud2simplicial/base.py @@ -1,18 +1,18 @@ -from modules.transforms.liftings.lifting import PointCloudLifting - - -class PointCloud2SimplicialLifting(PointCloudLifting): - r"""Abstract class for lifting pointclouds to simplicial complexes. - - Parameters - ---------- - complex_dim : int, optional - The dimension of the simplicial complex to be generated. Default is 2. - **kwargs : optional - Additional arguments for the class. - """ - - def __init__(self, complex_dim=2, **kwargs): - super().__init__(**kwargs) - self.complex_dim = complex_dim - self.type = "pointcloud2simplicial" +from modules.transforms.liftings.lifting import PointCloudLifting + + +class PointCloud2SimplicialLifting(PointCloudLifting): + r"""Abstract class for lifting pointclouds to simplicial complexes. + + Parameters + ---------- + complex_dim : int, optional + The dimension of the simplicial complex to be generated. Default is 2. + **kwargs : optional + Additional arguments for the class. + """ + + def __init__(self, complex_dim=2, **kwargs): + super().__init__(**kwargs) + self.complex_dim = complex_dim + self.type = "pointcloud2simplicial" diff --git a/modules/utils/utils.py b/modules/utils/utils.py index 1dfcdc2e..b860153a 100644 --- a/modules/utils/utils.py +++ b/modules/utils/utils.py @@ -1,497 +1,497 @@ -import pprint -import random -import shutil - -import matplotlib.pyplot as plt -import networkx as nx -import numpy as np -import omegaconf -import rootutils -import torch -import torch_geometric -from matplotlib.patches import Polygon - -plt.rcParams["text.usetex"] = bool(shutil.which("latex")) -rootutils.setup_root("./", indicator=".project-root", pythonpath=True) - - -def load_dataset_config(dataset_name: str) -> omegaconf.DictConfig: - r"""Load the dataset configuration. - - Parameters - ---------- - dataset_name : str - Name of the dataset. - - Returns - ------- - omegaconf.DictConfig - Dataset configuration. - """ - - root_folder = rootutils.find_root() - dataset_config_path = f"{root_folder}/configs/datasets/{dataset_name}.yaml" - dataset_config = omegaconf.OmegaConf.load(dataset_config_path) - - # Print configuration - print(f"\nDataset configuration for {dataset_name}:\n") - pprint.pp(dict(dataset_config.copy())) - return dataset_config - - -def load_transform_config( - transform_type: str, transform_id: str -) -> omegaconf.DictConfig: - r"""Load the transform configuration. - - Parameters - ---------- - transform_name : str - Name of the transform. - transform_id : str - Identifier of the transform. If the transform is a topological lifting, - it should include the type of the lifting and the identifier separated by a '/' - (e.g. graph2cell/cycle_lifting). - - Returns - ------- - omegaconf.DictConfig - Transform configuration. - """ - root_folder = rootutils.find_root() - transform_config_path = ( - f"{root_folder}/configs/transforms/{transform_type}/{transform_id}.yaml" - ) - transform_config = omegaconf.OmegaConf.load(transform_config_path) - # Print configuration - if transform_type == "liftings": - print(f"\nTransform configuration for {transform_id}:\n") - else: - print(f"\nTransform configuration for {transform_type}/{transform_id}:\n") - pprint.pp(dict(transform_config.copy())) - return transform_config - - -def load_model_config(model_type: str, model_name: str) -> omegaconf.DictConfig: - r"""Load the model configuration. - - Parameters - ---------- - model_name : str - Name of the model. - - Returns - ------- - omegaconf.DictConfig - Model configuration. - """ - root_folder = rootutils.find_root() - model_config_path = f"{root_folder}/configs/models/{model_type}/{model_name}.yaml" - model_config = omegaconf.OmegaConf.load(model_config_path) - # Print configuration - print(f"\nModel configuration for {model_type} {model_name.upper()}:\n") - pprint.pp(dict(model_config.copy())) - return model_config - - -def describe_data(dataset: torch_geometric.data.Dataset, idx_sample: int = 0): - r"""Describe a data sample of the considered dataset. - - Parameters - ---------- - data : torch_geometric.data.Data - Data object. - idx_sample : int - Index of the sample to describe. - """ - # assert isinstance( - # dataset, torch_geometric.data.Dataset - # ), "Data object must be a PyG Dataset object." - num_samples = len(dataset) - if num_samples == 1: - print(f"\nDataset only contains {num_samples} sample:") - else: - print(f"\nDataset contains {num_samples} samples.\n") - print( - f"Providing more details about sample {idx_sample % num_samples}/{num_samples}:" - ) - data = dataset.get(idx_sample % num_samples) - complex_dim = [] - features_dim = [] - # If lifted, we can look at the generated features for each cell - for dim in range(10): - if hasattr(data, f"x_{dim}") and getattr(data, f"x_{dim}").shape[0] > 0: - complex_dim.append(getattr(data, f"x_{dim}").shape[0]) - features_dim.append(getattr(data, f"x_{dim}").shape[1]) - # If not lifted, we check the classical fields of a dataset loaded from PyG - if len(complex_dim) == 0: - if hasattr(data, "num_nodes"): - complex_dim.append(data.num_nodes) - features_dim.append(data.num_node_features) - elif hasattr(data, "x"): - complex_dim.append(data.x.shape[0]) - features_dim.append(data.x.shape[1]) - else: - raise ValueError("Data object does not contain any vertices/points.") - if hasattr(data, "num_edges"): - complex_dim.append(data.num_edges) - features_dim.append(data.num_edge_features) - elif hasattr(data, "edge_index"): - complex_dim.append(data.edge_index.shape[1]) - features_dim.append(data.edge_attr.shape[1]) - # Check if the data object contains hyperedges - hyperedges = False - if hasattr(data, "x_hyperedges"): - hyperedges = data.x_hyperedges.shape[0] - hyperedges_features_dim = data.x_hyperedges.shape[1] - - # Plot the graph if it is not too large - if complex_dim[0] < 50: - plot_manual_graph(data) - - if hyperedges: - print( - f" - Hypergraph with {complex_dim[0]} vertices and {hyperedges} hyperedges." - ) - features_dim.append(hyperedges_features_dim) - print(f" - The nodes have feature dimensions {features_dim[0]}.") - print(f" - The hyperedges have feature dimensions {features_dim[1]}.") - else: - if len(complex_dim) == 1: - print(f" - Set with {complex_dim[0]} points.") - print(f" - Features dimension: {features_dim[0]}") - elif len(complex_dim) == 2: - print( - f" - Graph with {complex_dim[0]} vertices and {complex_dim[1]} edges." - ) - print(f" - Features dimensions: {features_dim}") - # Check if there are isolated nodes - if hasattr(data, "edge_index") and hasattr(data, "x"): - connected_nodes = torch.unique(data.edge_index) - isolated_nodes = [] - for i in range(data.x.shape[0]): - if i not in connected_nodes: - isolated_nodes.append(i) # noqa : PERF401 - print(f" - There are {len(isolated_nodes)} isolated nodes.") - else: - for i, c_d in enumerate(complex_dim): - print(f" - The complex has {c_d} {i}-cells.") - print(f" - The {i}-cells have features dimension {features_dim[i]}") - print("") - - -def plot_manual_graph(data, title=None): - r"""Plot a manual graph. If lifted, the plot shows the inferred - higher-order structures (bipartite graph for hyperedges, - colored 2-cells and 3-cells for simplicial/cell complexes). - Combinatorial complexes are plotted as simplicial/cell complexes. - - Parameters - ---------- - data : torch_geometric.data.Data - Data object containing the graph. - title: str - Title for the plot. - """ - - def sort_vertices_ccw(vertices): - r"""Sort vertices in counter-clockwise order. - - Parameters - ---------- - vertices : list - List of vertices. - - Returns - ------- - list - List of vertices sorted in counter-clockwise order. - """ - centroid = [ - sum(v[0] for v in vertices) / len(vertices), - sum(v[1] for v in vertices) / len(vertices), - ] - return sorted( - vertices, key=lambda v: (np.arctan2(v[1] - centroid[1], v[0] - centroid[0])) - ) - - max_order = 1 - if hasattr(data, "incidence_3"): - max_order = 3 - elif hasattr(data, "incidence_2"): - max_order = 2 - elif hasattr(data, "incidence_hyperedges"): - max_order = 0 - incidence = data.incidence_hyperedges.coalesce() - - # Collect vertices - vertices = [i for i in range(data.x.shape[0])] - - # Hyperedges - if max_order == 0: - n_vertices = len(vertices) - n_hyperedges = incidence.shape[1] - vertices += [i + n_vertices for i in range(n_hyperedges)] - indices = incidence.indices() - edges = np.array([indices[1].numpy(), indices[0].numpy() + n_vertices]).T - pos_n = [[i, 0] for i in range(n_vertices)] - pos_he = [[i, 1] for i in range(n_hyperedges)] - pos = pos_n + pos_he - - # Collect edges - if max_order > 0: - edges = [] - edge_mapper = {} - if hasattr(data, "incidence_1"): - for edge_idx, edge in enumerate(abs(data.incidence_1.to_dense().T)): - node_idxs = torch.where(edge != 0)[0].numpy() - - edges.append(torch.where(edge != 0)[0].numpy()) - edge_mapper[edge_idx] = sorted(node_idxs) - edges = np.array(edges) - elif hasattr(data, "edge_index"): - edges = data.edge_index.T.tolist() - edge_mapper = {} - for e, edge in enumerate(edges): - edge_mapper[e] = [node for node in edge] - # Collect 2dn order polygons - if max_order > 1: - faces = [] - faces_mapper = {} - for faces_idx, face in enumerate(abs(data.incidence_2.to_dense().T)): - edge_idxs = torch.where(face != 0)[0].numpy() - - nodes = [] - for edge_idx in edge_idxs: - nodes += edge_mapper[edge_idx] - - faces_mapper[faces_idx] = { - "edge_idxs": sorted(edge_idxs), - "node_idxs": sorted(list(set(nodes))), - } - - faces.append(sorted(list(set(nodes)))) - - # Collect volumes - if max_order == 3: - volumes = [] - volume_mapper = {} - for volume_idx, volume in enumerate(abs(data.incidence_3.to_dense().T)): - face_idxs = torch.where(volume != 0)[0].numpy() - - nodes = [] - edges_in_volumes = [] - for face_idx in face_idxs: - nodes += faces_mapper[face_idx]["node_idxs"] - edges_in_volumes += faces_mapper[face_idx]["edge_idxs"] - - volume_mapper[volume_idx] = { - "face_idxs": sorted(face_idxs), - "edge_idxs": sorted(list(set(edges_in_volumes))), - "node_idxs": sorted(list(set(nodes))), - } - - volumes.append(sorted(list(set(nodes)))) - volumes = np.array(volumes) - - # Create a graph - G = nx.Graph() - - # Add vertices - G.add_nodes_from(vertices) - # Add edges - G.add_edges_from(edges) - - # Plot the graph with edge indices using other layout - if max_order != 0: - pos = nx.spring_layout(G, seed=42) - # pos[3] = np.array([0.15539556, 0.25]) - - plt.figure(figsize=(5, 5)) - # Draw the graph with labels - if max_order == 0: - labels = {i: "$v_{" + str(i) + "}$" for i in range(n_vertices)} - for e in range(n_hyperedges): - labels[e + n_vertices] = "$h_{" + str(e) + "}$" - else: - labels = {i: "$v_{" + str(i) + "}$" for i in G.nodes()} - - nx.draw( - G, - pos, - labels=labels, - node_size=500, - node_color="skyblue", - font_size=12, - edge_color="black", - width=1, - linewidths=1, - alpha=0.9, - ) - - # Color the faces of the graph - face_color_map = { - 0: "pink", - 1: "gray", - 2: "blue", - 3: "blue", - 4: "orange", - 5: "purple", - 6: "red", - 7: "brown", - 8: "black", - 9: "gray", - } - - if max_order > 1: - for _, clique in enumerate(faces): - # Get the face color: - # Calculate to how many volumes cique belongs - # Then assign the color to the face - counter = 0 - if max_order == 3: - for volume in volumes: - from itertools import combinations - - for comb in combinations(volume, 3): - if set(clique) == set(comb): - counter += 1 - else: - counter = random.randint(0, 9) - - polygon = [pos[v] for v in clique] - sorted_polygon = sort_vertices_ccw(polygon) - poly = Polygon( - sorted_polygon, - closed=True, - fill=True, - facecolor=face_color_map[counter], - # edgecolor="pink", - alpha=0.3, - ) - plt.gca().add_patch(poly) - - # Draw edges with different color and thickness - if max_order > 0: - nx.draw_networkx_edge_labels( - G, - pos, - edge_labels={ - tuple(corr_nodes): "$e_{" + str(edge_idx) + "}$" - for edge_idx, corr_nodes in edge_mapper.items() - }, - font_color="red", - alpha=0.9, - font_size=8, - rotate=False, - horizontalalignment="center", - verticalalignment="center", - ) - if title is not None: - plt.title(title) - if max_order == 0: - plt.title("Lifted Graph - top nodes represent the hyperedges") - elif max_order == 1: - plt.title("Original Graph") - elif max_order == 2: - plt.title("Lifted Graph with colored 2-cells") - else: - plt.title("Lifted Graph with colored 2 and 3-cells") - plt.axis("off") - plt.show() - - -def describe_simplicial_complex(data: torch_geometric.data.Data): - r"""Describe a simplicial complex. - - Parameters - ---------- - data : torch_geometric.data.Data - Data object containing the simplicial complex. - """ - edges2nodes = [[] for _ in range(data.incidence_1.shape[1])] - indices = data.incidence_1.coalesce().indices() - for i in range(data.incidence_1.shape[1]): - edges2nodes[i] = indices[0, indices[1, :] == i] - edges2nodes = torch.stack(edges2nodes) - - triangles2edges = [[] for _ in range(data.incidence_2.shape[1])] - indices = data.incidence_2.coalesce().indices() - for i in range(data.incidence_2.shape[1]): - triangles2edges[i] = indices[0, indices[1, :] == i] - triangles2edges = torch.stack(triangles2edges) - - incidence_2 = data.incidence_2.coalesce() - indices = incidence_2.indices() - - print(f"The simplicial complex has {incidence_2.shape[1]} triangles.") - for triangles_idx in torch.unique(indices[1]): - corresponding_idxs = indices[1] == triangles_idx - edges = indices[0, corresponding_idxs] - nodes = torch.unique(edges2nodes[edges]).numpy() - print(f"Triangle {triangles_idx} is composed from nodes {nodes}") - if triangles_idx >= 10: - print("...") - break - - incidence_3 = data.incidence_3.coalesce() - indices = incidence_3.indices() - - print(f"\nThe simplicial complex has {incidence_3.shape[1]} tetrahedrons.") - for tetrahedrons_idx in torch.unique(indices[1]): - corresponding_idxs = indices[1] == tetrahedrons_idx - triangles = indices[0, corresponding_idxs] - nodes = torch.unique(edges2nodes[triangles2edges[triangles]]).numpy() - print(f"Tetrahedron {tetrahedrons_idx} is composed from nodes {nodes}") - if tetrahedrons_idx > 10: - print("...") - break - - -def describe_cell_complex(data: torch_geometric.data.Data): - r"""Describe a simplicial complex. - - Parameters - ---------- - data : torch_geometric.data.Data - Data object containing the simplicial complex. - """ - edges2nodes = [[] for _ in range(data.incidence_1.shape[1])] - indices = data.incidence_1.coalesce().indices() - for i in range(data.incidence_1.shape[1]): - edges2nodes[i] = indices[0, indices[1, :] == i] - edges2nodes = torch.stack(edges2nodes) - - incidence_2 = data.incidence_2.coalesce() - indices = incidence_2.indices() - - print(f"The cell complex has {incidence_2.shape[1]} cells.") - for cell_idx in torch.unique(indices[1]): - corresponding_idxs = indices[1] == cell_idx - edges = indices[0, corresponding_idxs] - nodes = torch.unique(edges2nodes[edges]) - print(f"Cell {cell_idx} is composed from the edges {nodes}") - if cell_idx >= 10: - print("...") - break - - -def describe_hypergraph(data: torch_geometric.data.Data): - r"""Describe a hypergraph. - - Parameters - ---------- - data : torch_geometric.data.Data - Data object containing the hypergraph. - """ - incidence = data.incidence_hyperedges.coalesce() - indices = incidence.indices() - - print(f"The hypergraph has {data.incidence_hyperedges.shape[1]} hyperedges.") - for he_idx in torch.unique(indices[1]): - corresponding_idxs = indices[0] == he_idx - nodes = indices[1, corresponding_idxs] - print(f"Hyperedge {he_idx} contains the nodes {nodes.numpy()}") - if he_idx >= 10: - print("...") - break +import pprint +import random +import shutil + +import matplotlib.pyplot as plt +import networkx as nx +import numpy as np +import omegaconf +import rootutils +import torch +import torch_geometric +from matplotlib.patches import Polygon + +plt.rcParams["text.usetex"] = bool(shutil.which("latex")) +rootutils.setup_root("./", indicator=".project-root", pythonpath=True) + + +def load_dataset_config(dataset_name: str) -> omegaconf.DictConfig: + r"""Load the dataset configuration. + + Parameters + ---------- + dataset_name : str + Name of the dataset. + + Returns + ------- + omegaconf.DictConfig + Dataset configuration. + """ + + root_folder = rootutils.find_root() + dataset_config_path = f"{root_folder}/configs/datasets/{dataset_name}.yaml" + dataset_config = omegaconf.OmegaConf.load(dataset_config_path) + + # Print configuration + print(f"\nDataset configuration for {dataset_name}:\n") + pprint.pp(dict(dataset_config.copy())) + return dataset_config + + +def load_transform_config( + transform_type: str, transform_id: str +) -> omegaconf.DictConfig: + r"""Load the transform configuration. + + Parameters + ---------- + transform_name : str + Name of the transform. + transform_id : str + Identifier of the transform. If the transform is a topological lifting, + it should include the type of the lifting and the identifier separated by a '/' + (e.g. graph2cell/cycle_lifting). + + Returns + ------- + omegaconf.DictConfig + Transform configuration. + """ + root_folder = rootutils.find_root() + transform_config_path = ( + f"{root_folder}/configs/transforms/{transform_type}/{transform_id}.yaml" + ) + transform_config = omegaconf.OmegaConf.load(transform_config_path) + # Print configuration + if transform_type == "liftings": + print(f"\nTransform configuration for {transform_id}:\n") + else: + print(f"\nTransform configuration for {transform_type}/{transform_id}:\n") + pprint.pp(dict(transform_config.copy())) + return transform_config + + +def load_model_config(model_type: str, model_name: str) -> omegaconf.DictConfig: + r"""Load the model configuration. + + Parameters + ---------- + model_name : str + Name of the model. + + Returns + ------- + omegaconf.DictConfig + Model configuration. + """ + root_folder = rootutils.find_root() + model_config_path = f"{root_folder}/configs/models/{model_type}/{model_name}.yaml" + model_config = omegaconf.OmegaConf.load(model_config_path) + # Print configuration + print(f"\nModel configuration for {model_type} {model_name.upper()}:\n") + pprint.pp(dict(model_config.copy())) + return model_config + + +def describe_data(dataset: torch_geometric.data.Dataset, idx_sample: int = 0): + r"""Describe a data sample of the considered dataset. + + Parameters + ---------- + data : torch_geometric.data.Data + Data object. + idx_sample : int + Index of the sample to describe. + """ + # assert isinstance( + # dataset, torch_geometric.data.Dataset + # ), "Data object must be a PyG Dataset object." + num_samples = len(dataset) + if num_samples == 1: + print(f"\nDataset only contains {num_samples} sample:") + else: + print(f"\nDataset contains {num_samples} samples.\n") + print( + f"Providing more details about sample {idx_sample % num_samples}/{num_samples}:" + ) + data = dataset.get(idx_sample % num_samples) + complex_dim = [] + features_dim = [] + # If lifted, we can look at the generated features for each cell + for dim in range(10): + if hasattr(data, f"x_{dim}") and getattr(data, f"x_{dim}").shape[0] > 0: + complex_dim.append(getattr(data, f"x_{dim}").shape[0]) + features_dim.append(getattr(data, f"x_{dim}").shape[1]) + # If not lifted, we check the classical fields of a dataset loaded from PyG + if len(complex_dim) == 0: + if hasattr(data, "num_nodes"): + complex_dim.append(data.num_nodes) + features_dim.append(data.num_node_features) + elif hasattr(data, "x"): + complex_dim.append(data.x.shape[0]) + features_dim.append(data.x.shape[1]) + else: + raise ValueError("Data object does not contain any vertices/points.") + if hasattr(data, "num_edges"): + complex_dim.append(data.num_edges) + features_dim.append(data.num_edge_features) + elif hasattr(data, "edge_index"): + complex_dim.append(data.edge_index.shape[1]) + features_dim.append(data.edge_attr.shape[1]) + # Check if the data object contains hyperedges + hyperedges = False + if hasattr(data, "x_hyperedges"): + hyperedges = data.x_hyperedges.shape[0] + hyperedges_features_dim = data.x_hyperedges.shape[1] + + # Plot the graph if it is not too large + if complex_dim[0] < 50: + plot_manual_graph(data) + + if hyperedges: + print( + f" - Hypergraph with {complex_dim[0]} vertices and {hyperedges} hyperedges." + ) + features_dim.append(hyperedges_features_dim) + print(f" - The nodes have feature dimensions {features_dim[0]}.") + print(f" - The hyperedges have feature dimensions {features_dim[1]}.") + else: + if len(complex_dim) == 1: + print(f" - Set with {complex_dim[0]} points.") + print(f" - Features dimension: {features_dim[0]}") + elif len(complex_dim) == 2: + print( + f" - Graph with {complex_dim[0]} vertices and {complex_dim[1]} edges." + ) + print(f" - Features dimensions: {features_dim}") + # Check if there are isolated nodes + if hasattr(data, "edge_index") and hasattr(data, "x"): + connected_nodes = torch.unique(data.edge_index) + isolated_nodes = [] + for i in range(data.x.shape[0]): + if i not in connected_nodes: + isolated_nodes.append(i) # noqa : PERF401 + print(f" - There are {len(isolated_nodes)} isolated nodes.") + else: + for i, c_d in enumerate(complex_dim): + print(f" - The complex has {c_d} {i}-cells.") + print(f" - The {i}-cells have features dimension {features_dim[i]}") + print("") + + +def plot_manual_graph(data, title=None): + r"""Plot a manual graph. If lifted, the plot shows the inferred + higher-order structures (bipartite graph for hyperedges, + colored 2-cells and 3-cells for simplicial/cell complexes). + Combinatorial complexes are plotted as simplicial/cell complexes. + + Parameters + ---------- + data : torch_geometric.data.Data + Data object containing the graph. + title: str + Title for the plot. + """ + + def sort_vertices_ccw(vertices): + r"""Sort vertices in counter-clockwise order. + + Parameters + ---------- + vertices : list + List of vertices. + + Returns + ------- + list + List of vertices sorted in counter-clockwise order. + """ + centroid = [ + sum(v[0] for v in vertices) / len(vertices), + sum(v[1] for v in vertices) / len(vertices), + ] + return sorted( + vertices, key=lambda v: (np.arctan2(v[1] - centroid[1], v[0] - centroid[0])) + ) + + max_order = 1 + if hasattr(data, "incidence_3"): + max_order = 3 + elif hasattr(data, "incidence_2"): + max_order = 2 + elif hasattr(data, "incidence_hyperedges"): + max_order = 0 + incidence = data.incidence_hyperedges.coalesce() + + # Collect vertices + vertices = [i for i in range(data.x.shape[0])] + + # Hyperedges + if max_order == 0: + n_vertices = len(vertices) + n_hyperedges = incidence.shape[1] + vertices += [i + n_vertices for i in range(n_hyperedges)] + indices = incidence.indices() + edges = np.array([indices[1].numpy(), indices[0].numpy() + n_vertices]).T + pos_n = [[i, 0] for i in range(n_vertices)] + pos_he = [[i, 1] for i in range(n_hyperedges)] + pos = pos_n + pos_he + + # Collect edges + if max_order > 0: + edges = [] + edge_mapper = {} + if hasattr(data, "incidence_1"): + for edge_idx, edge in enumerate(abs(data.incidence_1.to_dense().T)): + node_idxs = torch.where(edge != 0)[0].numpy() + + edges.append(torch.where(edge != 0)[0].numpy()) + edge_mapper[edge_idx] = sorted(node_idxs) + edges = np.array(edges) + elif hasattr(data, "edge_index"): + edges = data.edge_index.T.tolist() + edge_mapper = {} + for e, edge in enumerate(edges): + edge_mapper[e] = [node for node in edge] + # Collect 2dn order polygons + if max_order > 1: + faces = [] + faces_mapper = {} + for faces_idx, face in enumerate(abs(data.incidence_2.to_dense().T)): + edge_idxs = torch.where(face != 0)[0].numpy() + + nodes = [] + for edge_idx in edge_idxs: + nodes += edge_mapper[edge_idx] + + faces_mapper[faces_idx] = { + "edge_idxs": sorted(edge_idxs), + "node_idxs": sorted(list(set(nodes))), + } + + faces.append(sorted(list(set(nodes)))) + + # Collect volumes + if max_order == 3: + volumes = [] + volume_mapper = {} + for volume_idx, volume in enumerate(abs(data.incidence_3.to_dense().T)): + face_idxs = torch.where(volume != 0)[0].numpy() + + nodes = [] + edges_in_volumes = [] + for face_idx in face_idxs: + nodes += faces_mapper[face_idx]["node_idxs"] + edges_in_volumes += faces_mapper[face_idx]["edge_idxs"] + + volume_mapper[volume_idx] = { + "face_idxs": sorted(face_idxs), + "edge_idxs": sorted(list(set(edges_in_volumes))), + "node_idxs": sorted(list(set(nodes))), + } + + volumes.append(sorted(list(set(nodes)))) + volumes = np.array(volumes) + + # Create a graph + G = nx.Graph() + + # Add vertices + G.add_nodes_from(vertices) + # Add edges + G.add_edges_from(edges) + + # Plot the graph with edge indices using other layout + if max_order != 0: + pos = nx.spring_layout(G, seed=42) + # pos[3] = np.array([0.15539556, 0.25]) + + plt.figure(figsize=(5, 5)) + # Draw the graph with labels + if max_order == 0: + labels = {i: "$v_{" + str(i) + "}$" for i in range(n_vertices)} + for e in range(n_hyperedges): + labels[e + n_vertices] = "$h_{" + str(e) + "}$" + else: + labels = {i: "$v_{" + str(i) + "}$" for i in G.nodes()} + + nx.draw( + G, + pos, + labels=labels, + node_size=500, + node_color="skyblue", + font_size=12, + edge_color="black", + width=1, + linewidths=1, + alpha=0.9, + ) + + # Color the faces of the graph + face_color_map = { + 0: "pink", + 1: "gray", + 2: "blue", + 3: "blue", + 4: "orange", + 5: "purple", + 6: "red", + 7: "brown", + 8: "black", + 9: "gray", + } + + if max_order > 1: + for _, clique in enumerate(faces): + # Get the face color: + # Calculate to how many volumes cique belongs + # Then assign the color to the face + counter = 0 + if max_order == 3: + for volume in volumes: + from itertools import combinations + + for comb in combinations(volume, 3): + if set(clique) == set(comb): + counter += 1 + else: + counter = random.randint(0, 9) + + polygon = [pos[v] for v in clique] + sorted_polygon = sort_vertices_ccw(polygon) + poly = Polygon( + sorted_polygon, + closed=True, + fill=True, + facecolor=face_color_map[counter], + # edgecolor="pink", + alpha=0.3, + ) + plt.gca().add_patch(poly) + + # Draw edges with different color and thickness + if max_order > 0: + nx.draw_networkx_edge_labels( + G, + pos, + edge_labels={ + tuple(corr_nodes): "$e_{" + str(edge_idx) + "}$" + for edge_idx, corr_nodes in edge_mapper.items() + }, + font_color="red", + alpha=0.9, + font_size=8, + rotate=False, + horizontalalignment="center", + verticalalignment="center", + ) + if title is not None: + plt.title(title) + if max_order == 0: + plt.title("Lifted Graph - top nodes represent the hyperedges") + elif max_order == 1: + plt.title("Original Graph") + elif max_order == 2: + plt.title("Lifted Graph with colored 2-cells") + else: + plt.title("Lifted Graph with colored 2 and 3-cells") + plt.axis("off") + plt.show() + + +def describe_simplicial_complex(data: torch_geometric.data.Data): + r"""Describe a simplicial complex. + + Parameters + ---------- + data : torch_geometric.data.Data + Data object containing the simplicial complex. + """ + edges2nodes = [[] for _ in range(data.incidence_1.shape[1])] + indices = data.incidence_1.coalesce().indices() + for i in range(data.incidence_1.shape[1]): + edges2nodes[i] = indices[0, indices[1, :] == i] + edges2nodes = torch.stack(edges2nodes) + + triangles2edges = [[] for _ in range(data.incidence_2.shape[1])] + indices = data.incidence_2.coalesce().indices() + for i in range(data.incidence_2.shape[1]): + triangles2edges[i] = indices[0, indices[1, :] == i] + triangles2edges = torch.stack(triangles2edges) + + incidence_2 = data.incidence_2.coalesce() + indices = incidence_2.indices() + + print(f"The simplicial complex has {incidence_2.shape[1]} triangles.") + for triangles_idx in torch.unique(indices[1]): + corresponding_idxs = indices[1] == triangles_idx + edges = indices[0, corresponding_idxs] + nodes = torch.unique(edges2nodes[edges]).numpy() + print(f"Triangle {triangles_idx} is composed from nodes {nodes}") + if triangles_idx >= 10: + print("...") + break + + incidence_3 = data.incidence_3.coalesce() + indices = incidence_3.indices() + + print(f"\nThe simplicial complex has {incidence_3.shape[1]} tetrahedrons.") + for tetrahedrons_idx in torch.unique(indices[1]): + corresponding_idxs = indices[1] == tetrahedrons_idx + triangles = indices[0, corresponding_idxs] + nodes = torch.unique(edges2nodes[triangles2edges[triangles]]).numpy() + print(f"Tetrahedron {tetrahedrons_idx} is composed from nodes {nodes}") + if tetrahedrons_idx > 10: + print("...") + break + + +def describe_cell_complex(data: torch_geometric.data.Data): + r"""Describe a simplicial complex. + + Parameters + ---------- + data : torch_geometric.data.Data + Data object containing the simplicial complex. + """ + edges2nodes = [[] for _ in range(data.incidence_1.shape[1])] + indices = data.incidence_1.coalesce().indices() + for i in range(data.incidence_1.shape[1]): + edges2nodes[i] = indices[0, indices[1, :] == i] + edges2nodes = torch.stack(edges2nodes) + + incidence_2 = data.incidence_2.coalesce() + indices = incidence_2.indices() + + print(f"The cell complex has {incidence_2.shape[1]} cells.") + for cell_idx in torch.unique(indices[1]): + corresponding_idxs = indices[1] == cell_idx + edges = indices[0, corresponding_idxs] + nodes = torch.unique(edges2nodes[edges]) + print(f"Cell {cell_idx} is composed from the edges {nodes}") + if cell_idx >= 10: + print("...") + break + + +def describe_hypergraph(data: torch_geometric.data.Data): + r"""Describe a hypergraph. + + Parameters + ---------- + data : torch_geometric.data.Data + Data object containing the hypergraph. + """ + incidence = data.incidence_hyperedges.coalesce() + indices = incidence.indices() + + print(f"The hypergraph has {data.incidence_hyperedges.shape[1]} hyperedges.") + for he_idx in torch.unique(indices[1]): + corresponding_idxs = indices[0] == he_idx + nodes = indices[1, corresponding_idxs] + print(f"Hyperedge {he_idx} contains the nodes {nodes.numpy()}") + if he_idx >= 10: + print("...") + break diff --git a/pyproject.toml b/pyproject.toml index af67ad7c..5835af52 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,169 +1,169 @@ -[build-system] -requires = ["setuptools", "wheel"] -build-backend = "setuptools.build_meta" - -[project] -name = "challenge-icml-2024" -version = "0.0.1" -authors = [ - {name = "PyT-Team Authors", email = "guillermo.bernardez@upc.edu"} -] -readme = "README.md" -description = "Topological Deep Learning" -license = {file = "LICENSE.txt"} -classifiers = [ - "License :: OSI Approved :: MIT License", - "Development Status :: 4 - Beta", - "Intended Audience :: Science/Research", - "Topic :: Scientific/Engineering", - "Topic :: Scientific/Engineering :: Mathematics", - "Topic :: Scientific/Engineering :: Artificial Intelligence", - "Natural Language :: English", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11" -] -requires-python = ">= 3.10" -dependencies=[ - "tqdm", - "numpy", - "scipy", - "requests", - "scikit-learn", - "matplotlib", - "networkx", - "pandas", - "pyg-nightly", - "decorator", - "hypernetx < 2.0.0", - "omegaconf", - "trimesh", - "spharapy", - "rich", - "rootutils", - "pytest", - "toponetx @ git+https://github.com/pyt-team/TopoNetX.git", - "topomodelx @ git+https://github.com/pyt-team/TopoModelX.git", - "topoembedx @ git+https://github.com/pyt-team/TopoEmbedX.git", - -] - -[project.optional-dependencies] -doc = [ - "jupyter", - "nbsphinx", - "nbsphinx_link", - "sphinx", - "sphinx_gallery", - "pydata-sphinx-theme" -] -lint = [ - "pre-commit", - "ruff" -] -test = [ - "pytest", - "pytest-cov", - "coverage", - "jupyter", - "mypy", - "pytest-xdist", - "pytest-split" -] - -dev = ["challenge-icml-2024[test, lint]"] -all = ["challenge-icml-2024[dev, doc]"] - -[project.urls] -homepage="https://github.com/pyt-team/challenge-icml-2024.git" -repository="https://github.com/pyt-team/challenge-icml-2024.git" - -[tool.ruff] - -# Same as Black. -line-length = 88 -indent-width = 4 - -target-version = "py310" -extend-include = ["*.ipynb"] - -[lint] -# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. -select = ["E4", "E7", "E9", "F"] -ignore = [] - -# Allow fix for all enabled rules (when `--fix`) is provided. -fixable = ["ALL"] -unfixable = [] - -# Allow unused variables when underscore-prefixed. -dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" - -[format] -# Like Black, use double quotes for strings. -quote-style = "double" - -# Like Black, indent with spaces, rather than tabs. -indent-style = "space" - -# Like Black, respect magic trailing commas. -skip-magic-trailing-comma = false - -# Like Black, automatically detect the appropriate line ending. -line-ending = "auto" - -[tool.ruff.format] -docstring-code-format = true - -[tool.ruff.lint] -select = [ - "F", # pyflakes errors - "E", # code style - "W", # warnings - "I", # import order - "UP", # pyupgrade rules - "B", # bugbear rules - "PIE", # pie rules - "Q", # quote rules - "RET", # return rules - "SIM", # code simplifications - "NPY", # numpy rules - "PERF", # performance rules - "RUF", # miscellaneous rules -] -ignore = ["E501"] # line too long - -[tool.ruff.lint.pydocstyle] -convention = "numpy" - -[tool.ruff.lint.per-file-ignores] -"__init__.py" = ["F403"] - -[tool.setuptools.packages.find] -include = [ - "modules", - "modules.*" -] - -[tool.mypy] -warn_redundant_casts = true -warn_unused_ignores = true -show_error_codes = true -disable_error_code = ["import-untyped"] -plugins = "numpy.typing.mypy_plugin" - -[tool.pytest.ini_options] -addopts = "--capture=no" - -[tool.numpydoc_validation] -checks = [ - "all", - "GL01", - "ES01", - "EX01", - "SA01" -] -exclude = [ - '\.undocumented_method$', - '\.__init__$', +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "challenge-icml-2024" +version = "0.0.1" +authors = [ + {name = "PyT-Team Authors", email = "guillermo.bernardez@upc.edu"} +] +readme = "README.md" +description = "Topological Deep Learning" +license = {file = "LICENSE.txt"} +classifiers = [ + "License :: OSI Approved :: MIT License", + "Development Status :: 4 - Beta", + "Intended Audience :: Science/Research", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11" +] +requires-python = ">= 3.10" +dependencies=[ + "tqdm", + "numpy", + "scipy", + "requests", + "scikit-learn", + "matplotlib", + "networkx", + "pandas", + "pyg-nightly", + "decorator", + "hypernetx < 2.0.0", + "omegaconf", + "trimesh", + "spharapy", + "rich", + "rootutils", + "pytest", + "toponetx @ git+https://github.com/pyt-team/TopoNetX.git", + "topomodelx @ git+https://github.com/pyt-team/TopoModelX.git", + "topoembedx @ git+https://github.com/pyt-team/TopoEmbedX.git", + +] + +[project.optional-dependencies] +doc = [ + "jupyter", + "nbsphinx", + "nbsphinx_link", + "sphinx", + "sphinx_gallery", + "pydata-sphinx-theme" +] +lint = [ + "pre-commit", + "ruff" +] +test = [ + "pytest", + "pytest-cov", + "coverage", + "jupyter", + "mypy", + "pytest-xdist", + "pytest-split" +] + +dev = ["challenge-icml-2024[test, lint]"] +all = ["challenge-icml-2024[dev, doc]"] + +[project.urls] +homepage="https://github.com/pyt-team/challenge-icml-2024.git" +repository="https://github.com/pyt-team/challenge-icml-2024.git" + +[tool.ruff] + +# Same as Black. +line-length = 88 +indent-width = 4 + +target-version = "py310" +extend-include = ["*.ipynb"] + +[lint] +# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. +select = ["E4", "E7", "E9", "F"] +ignore = [] + +# Allow fix for all enabled rules (when `--fix`) is provided. +fixable = ["ALL"] +unfixable = [] + +# Allow unused variables when underscore-prefixed. +dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" + +[format] +# Like Black, use double quotes for strings. +quote-style = "double" + +# Like Black, indent with spaces, rather than tabs. +indent-style = "space" + +# Like Black, respect magic trailing commas. +skip-magic-trailing-comma = false + +# Like Black, automatically detect the appropriate line ending. +line-ending = "auto" + +[tool.ruff.format] +docstring-code-format = true + +[tool.ruff.lint] +select = [ + "F", # pyflakes errors + "E", # code style + "W", # warnings + "I", # import order + "UP", # pyupgrade rules + "B", # bugbear rules + "PIE", # pie rules + "Q", # quote rules + "RET", # return rules + "SIM", # code simplifications + "NPY", # numpy rules + "PERF", # performance rules + "RUF", # miscellaneous rules +] +ignore = ["E501"] # line too long + +[tool.ruff.lint.pydocstyle] +convention = "numpy" + +[tool.ruff.lint.per-file-ignores] +"__init__.py" = ["F403"] + +[tool.setuptools.packages.find] +include = [ + "modules", + "modules.*" +] + +[tool.mypy] +warn_redundant_casts = true +warn_unused_ignores = true +show_error_codes = true +disable_error_code = ["import-untyped"] +plugins = "numpy.typing.mypy_plugin" + +[tool.pytest.ini_options] +addopts = "--capture=no" + +[tool.numpydoc_validation] +checks = [ + "all", + "GL01", + "ES01", + "EX01", + "SA01" +] +exclude = [ + '\.undocumented_method$', + '\.__init__$', ] \ No newline at end of file diff --git a/test/transforms/feature_liftings/test_projection_sum.py b/test/transforms/feature_liftings/test_projection_sum.py index e77920b9..6a3d8138 100644 --- a/test/transforms/feature_liftings/test_projection_sum.py +++ b/test/transforms/feature_liftings/test_projection_sum.py @@ -1,90 +1,90 @@ -"Test the ProjectionSum feature lifting." - -import torch - -from modules.data.utils.utils import load_manual_graph -from modules.transforms.feature_liftings.feature_liftings import ProjectionSum -from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( - HypergraphKNNLifting, -) -from modules.transforms.liftings.graph2simplicial.clique_lifting import ( - SimplicialCliqueLifting, -) - - -class TestProjectionSum: - """Test the ProjectionSum class.""" - - def setup_method(self): - # Load the graph - self.data = load_manual_graph() - # Initialize the ProjectionLifting class - self.feature_lifting = ProjectionSum() - - # Initialize a simplicial/cell lifting class - self.lifting = SimplicialCliqueLifting(complex_dim=3) - - self.lifting_h = HypergraphKNNLifting(k_value=3) - - def test_lift_features(self): - # Test the lift_features method for simplicial/cell lifting - lifted_data = self.lifting.forward(self.data.clone()) - del lifted_data.x_1 - del lifted_data.x_2 - del lifted_data.x_3 - lifted_data = self.feature_lifting.forward(lifted_data) - - expected_x1 = torch.tensor( - [ - [6.0], - [11.0], - [101.0], - [5001.0], - [15.0], - [105.0], - [60.0], - [110.0], - [510.0], - [5010.0], - [1050.0], - [1500.0], - [5500.0], - ] - ) - - expected_x2 = torch.tensor( - [[32.0], [212.0], [222.0], [10022.0], [230.0], [11020.0]] - ) - - expected_x3 = torch.tensor([[696.0]]) - - assert ( - expected_x1 == lifted_data.x_1 - ).all(), "Something is wrong with the lifted features x_1." - assert ( - expected_x2 == lifted_data.x_2 - ).all(), "Something is wrong with the lifted features x_2." - assert ( - expected_x3 == lifted_data.x_3 - ).all(), "Something is wrong with the lifted features x_3." - - # Test the lift_features method for hypergraph lifting - lifted_data = self.lifting_h.forward(self.data.clone()) - del lifted_data.x_hyperedges - lifted_data = self.feature_lifting.forward(lifted_data) - - expected_x_0 = torch.tensor( - [[1.0], [5.0], [10.0], [50.0], [100.0], [500.0], [1000.0], [5000.0]] - ) - - expected_x_hyperedges = torch.tensor( - [[16.0], [66.0], [166.0], [650.0], [1600.0], [6500.0], [6000.0], [5000.0]] - ) - - assert ( - expected_x_0 == lifted_data.x_0 - ).all(), "Something is wrong with the lifted features x_0." - - assert ( - expected_x_hyperedges == lifted_data.x_hyperedges - ).all(), "Something is wrong with the lifted features x_hyperedges." +"Test the ProjectionSum feature lifting." + +import torch + +from modules.data.utils.utils import load_manual_graph +from modules.transforms.feature_liftings.feature_liftings import ProjectionSum +from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( + HypergraphKNNLifting, +) +from modules.transforms.liftings.graph2simplicial.clique_lifting import ( + SimplicialCliqueLifting, +) + + +class TestProjectionSum: + """Test the ProjectionSum class.""" + + def setup_method(self): + # Load the graph + self.data = load_manual_graph() + # Initialize the ProjectionLifting class + self.feature_lifting = ProjectionSum() + + # Initialize a simplicial/cell lifting class + self.lifting = SimplicialCliqueLifting(complex_dim=3) + + self.lifting_h = HypergraphKNNLifting(k_value=3) + + def test_lift_features(self): + # Test the lift_features method for simplicial/cell lifting + lifted_data = self.lifting.forward(self.data.clone()) + del lifted_data.x_1 + del lifted_data.x_2 + del lifted_data.x_3 + lifted_data = self.feature_lifting.forward(lifted_data) + + expected_x1 = torch.tensor( + [ + [6.0], + [11.0], + [101.0], + [5001.0], + [15.0], + [105.0], + [60.0], + [110.0], + [510.0], + [5010.0], + [1050.0], + [1500.0], + [5500.0], + ] + ) + + expected_x2 = torch.tensor( + [[32.0], [212.0], [222.0], [10022.0], [230.0], [11020.0]] + ) + + expected_x3 = torch.tensor([[696.0]]) + + assert ( + expected_x1 == lifted_data.x_1 + ).all(), "Something is wrong with the lifted features x_1." + assert ( + expected_x2 == lifted_data.x_2 + ).all(), "Something is wrong with the lifted features x_2." + assert ( + expected_x3 == lifted_data.x_3 + ).all(), "Something is wrong with the lifted features x_3." + + # Test the lift_features method for hypergraph lifting + lifted_data = self.lifting_h.forward(self.data.clone()) + del lifted_data.x_hyperedges + lifted_data = self.feature_lifting.forward(lifted_data) + + expected_x_0 = torch.tensor( + [[1.0], [5.0], [10.0], [50.0], [100.0], [500.0], [1000.0], [5000.0]] + ) + + expected_x_hyperedges = torch.tensor( + [[16.0], [66.0], [166.0], [650.0], [1600.0], [6500.0], [6000.0], [5000.0]] + ) + + assert ( + expected_x_0 == lifted_data.x_0 + ).all(), "Something is wrong with the lifted features x_0." + + assert ( + expected_x_hyperedges == lifted_data.x_hyperedges + ).all(), "Something is wrong with the lifted features x_hyperedges." diff --git a/test/transforms/liftings/graph2cell/test_cycle_lifting.py b/test/transforms/liftings/graph2cell/test_cycle_lifting.py index 3dec9fd8..1f69d008 100644 --- a/test/transforms/liftings/graph2cell/test_cycle_lifting.py +++ b/test/transforms/liftings/graph2cell/test_cycle_lifting.py @@ -1,60 +1,60 @@ -"""Test the message passing module.""" - -import torch - -from modules.data.utils.utils import load_manual_graph -from modules.transforms.liftings.graph2cell.cycle_lifting import CellCycleLifting - - -class TestCellCyclesLifting: - """Test the CellCyclesLifting class.""" - - def setup_method(self): - # Load the graph - self.data = load_manual_graph() - - # Initialise the CellCyclesLifting class - self.lifting = CellCycleLifting() - - def test_lift_topology(self): - # Test the lift_topology method - lifted_data = self.lifting.forward(self.data.clone()) - - expected_incidence_1 = torch.tensor( - [ - [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], - ] - ) - - assert ( - expected_incidence_1 == lifted_data.incidence_1.to_dense() - ).all(), "Something is wrong with incidence_1." - - expected_incidence_2 = torch.tensor( - [ - [0.0, 0.0, 0.0, 1.0, 0.0, 1.0], - [1.0, 0.0, 0.0, 0.0, 1.0, 1.0], - [0.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [1.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 1.0], - [0.0, 0.0, 0.0, 1.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 1.0, 0.0], - [0.0, 1.0, 1.0, 0.0, 0.0, 0.0], - [1.0, 1.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0, 0.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0], - ] - ) - - assert ( - expected_incidence_2 == lifted_data.incidence_2.to_dense() - ).all(), "Something is wrong with incidence_2." +"""Test the message passing module.""" + +import torch + +from modules.data.utils.utils import load_manual_graph +from modules.transforms.liftings.graph2cell.cycle_lifting import CellCycleLifting + + +class TestCellCyclesLifting: + """Test the CellCyclesLifting class.""" + + def setup_method(self): + # Load the graph + self.data = load_manual_graph() + + # Initialise the CellCyclesLifting class + self.lifting = CellCycleLifting() + + def test_lift_topology(self): + # Test the lift_topology method + lifted_data = self.lifting.forward(self.data.clone()) + + expected_incidence_1 = torch.tensor( + [ + [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], + ] + ) + + assert ( + expected_incidence_1 == lifted_data.incidence_1.to_dense() + ).all(), "Something is wrong with incidence_1." + + expected_incidence_2 = torch.tensor( + [ + [0.0, 0.0, 0.0, 1.0, 0.0, 1.0], + [1.0, 0.0, 0.0, 0.0, 1.0, 1.0], + [0.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [1.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 1.0, 1.0, 0.0, 0.0, 0.0], + [1.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0], + ] + ) + + assert ( + expected_incidence_2 == lifted_data.incidence_2.to_dense() + ).all(), "Something is wrong with incidence_2." diff --git a/test/transforms/liftings/graph2hypergraph/test_khop_lifting.py b/test/transforms/liftings/graph2hypergraph/test_khop_lifting.py index a61b926f..7bbc1b01 100644 --- a/test/transforms/liftings/graph2hypergraph/test_khop_lifting.py +++ b/test/transforms/liftings/graph2hypergraph/test_khop_lifting.py @@ -1,46 +1,46 @@ -"""Test the message passing module.""" - -import torch - -from modules.data.utils.utils import load_manual_graph -from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( - HypergraphKNNLifting, -) - - -class TestHypergraphKHopLifting: - """Test the HypergraphKHopLifting class.""" - - def setup_method(self): - # Load the graph - self.data = load_manual_graph() - - # Initialise the HypergraphKHopLifting class - - self.lifting_k = HypergraphKNNLifting(k_value=3) - - def test_lift_topology(self): - # Test the lift_topology method - lifted_data_k = self.lifting_k.forward(self.data.clone()) - - expected_n_hyperedges = 8 - - expected_incidence_1 = torch.tensor( - [ - [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], - ] - ) - - assert ( - expected_incidence_1 == lifted_data_k.incidence_hyperedges.to_dense() - ).all(), "Something is wrong with incidence_hyperedges (k=1)." - assert ( - expected_n_hyperedges == lifted_data_k.num_hyperedges - ), "Something is wrong with the number of hyperedges (k=1)." +"""Test the message passing module.""" + +import torch + +from modules.data.utils.utils import load_manual_graph +from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( + HypergraphKNNLifting, +) + + +class TestHypergraphKHopLifting: + """Test the HypergraphKHopLifting class.""" + + def setup_method(self): + # Load the graph + self.data = load_manual_graph() + + # Initialise the HypergraphKHopLifting class + + self.lifting_k = HypergraphKNNLifting(k_value=3) + + def test_lift_topology(self): + # Test the lift_topology method + lifted_data_k = self.lifting_k.forward(self.data.clone()) + + expected_n_hyperedges = 8 + + expected_incidence_1 = torch.tensor( + [ + [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], + ] + ) + + assert ( + expected_incidence_1 == lifted_data_k.incidence_hyperedges.to_dense() + ).all(), "Something is wrong with incidence_hyperedges (k=1)." + assert ( + expected_n_hyperedges == lifted_data_k.num_hyperedges + ), "Something is wrong with the number of hyperedges (k=1)." diff --git a/test/transforms/liftings/graph2simplicial/test_clique_lifting.py b/test/transforms/liftings/graph2simplicial/test_clique_lifting.py index 208cc580..79a8cbfa 100644 --- a/test/transforms/liftings/graph2simplicial/test_clique_lifting.py +++ b/test/transforms/liftings/graph2simplicial/test_clique_lifting.py @@ -1,87 +1,87 @@ -"""Test the message passing module.""" - -import torch - -from modules.data.utils.utils import load_manual_graph -from modules.transforms.liftings.graph2simplicial.clique_lifting import ( - SimplicialCliqueLifting, -) - - -class TestSimplicialCliqueLifting: - """Test the SimplicialCliqueLifting class.""" - - def setup_method(self): - # Load the graph - self.data = load_manual_graph() - - # Initialise the SimplicialCliqueLifting class - self.lifting_signed = SimplicialCliqueLifting(complex_dim=3, signed=True) - self.lifting_unsigned = SimplicialCliqueLifting(complex_dim=3, signed=False) - - def test_lift_topology(self): - """Test the lift_topology method.""" - - # Test the lift_topology method - lifted_data_signed = self.lifting_signed.forward(self.data.clone()) - lifted_data_unsigned = self.lifting_unsigned.forward(self.data.clone()) - - expected_incidence_1 = torch.tensor( - [ - [-1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -1.0, -1.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], - ] - ) - - assert ( - abs(expected_incidence_1) == lifted_data_unsigned.incidence_1.to_dense() - ).all(), "Something is wrong with unsigned incidence_1 (nodes to edges)." - assert ( - expected_incidence_1 == lifted_data_signed.incidence_1.to_dense() - ).all(), "Something is wrong with signed incidence_1 (nodes to edges)." - - expected_incidence_2 = torch.tensor( - [ - [1.0, 1.0, 0.0, 0.0, 0.0, 0.0], - [-1.0, 0.0, 1.0, 1.0, 0.0, 0.0], - [0.0, -1.0, -1.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, -1.0, 0.0, 0.0], - [1.0, 0.0, 0.0, 0.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, -1.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 1.0, 0.0, 1.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 1.0], - [0.0, 0.0, 0.0, 1.0, 0.0, -1.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, 0.0, 0.0, 1.0], - ] - ) - - assert ( - abs(expected_incidence_2) == lifted_data_unsigned.incidence_2.to_dense() - ).all(), "Something is wrong with unsigned incidence_2 (edges to triangles)." - assert ( - expected_incidence_2 == lifted_data_signed.incidence_2.to_dense() - ).all(), "Something is wrong with signed incidence_2 (edges to triangles)." - - expected_incidence_3 = torch.tensor( - [[-1.0], [1.0], [-1.0], [0.0], [1.0], [0.0]] - ) - - assert ( - abs(expected_incidence_3) == lifted_data_unsigned.incidence_3.to_dense() - ).all(), ( - "Something is wrong with unsigned incidence_3 (triangles to tetrahedrons)." - ) - assert ( - expected_incidence_3 == lifted_data_signed.incidence_3.to_dense() - ).all(), ( - "Something is wrong with signed incidence_3 (triangles to tetrahedrons)." - ) +"""Test the message passing module.""" + +import torch + +from modules.data.utils.utils import load_manual_graph +from modules.transforms.liftings.graph2simplicial.clique_lifting import ( + SimplicialCliqueLifting, +) + + +class TestSimplicialCliqueLifting: + """Test the SimplicialCliqueLifting class.""" + + def setup_method(self): + # Load the graph + self.data = load_manual_graph() + + # Initialise the SimplicialCliqueLifting class + self.lifting_signed = SimplicialCliqueLifting(complex_dim=3, signed=True) + self.lifting_unsigned = SimplicialCliqueLifting(complex_dim=3, signed=False) + + def test_lift_topology(self): + """Test the lift_topology method.""" + + # Test the lift_topology method + lifted_data_signed = self.lifting_signed.forward(self.data.clone()) + lifted_data_unsigned = self.lifting_unsigned.forward(self.data.clone()) + + expected_incidence_1 = torch.tensor( + [ + [-1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 0.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -1.0, -1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], + ] + ) + + assert ( + abs(expected_incidence_1) == lifted_data_unsigned.incidence_1.to_dense() + ).all(), "Something is wrong with unsigned incidence_1 (nodes to edges)." + assert ( + expected_incidence_1 == lifted_data_signed.incidence_1.to_dense() + ).all(), "Something is wrong with signed incidence_1 (nodes to edges)." + + expected_incidence_2 = torch.tensor( + [ + [1.0, 1.0, 0.0, 0.0, 0.0, 0.0], + [-1.0, 0.0, 1.0, 1.0, 0.0, 0.0], + [0.0, -1.0, -1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, -1.0, 0.0, 0.0], + [1.0, 0.0, 0.0, 0.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, -1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 1.0, 0.0, 1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + [0.0, 0.0, 0.0, 1.0, 0.0, -1.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 0.0, 1.0], + ] + ) + + assert ( + abs(expected_incidence_2) == lifted_data_unsigned.incidence_2.to_dense() + ).all(), "Something is wrong with unsigned incidence_2 (edges to triangles)." + assert ( + expected_incidence_2 == lifted_data_signed.incidence_2.to_dense() + ).all(), "Something is wrong with signed incidence_2 (edges to triangles)." + + expected_incidence_3 = torch.tensor( + [[-1.0], [1.0], [-1.0], [0.0], [1.0], [0.0]] + ) + + assert ( + abs(expected_incidence_3) == lifted_data_unsigned.incidence_3.to_dense() + ).all(), ( + "Something is wrong with unsigned incidence_3 (triangles to tetrahedrons)." + ) + assert ( + expected_incidence_3 == lifted_data_signed.incidence_3.to_dense() + ).all(), ( + "Something is wrong with signed incidence_3 (triangles to tetrahedrons)." + ) diff --git a/test/tutorials/test_tutorials.py b/test/tutorials/test_tutorials.py index 88b456f8..b7390bf0 100644 --- a/test/tutorials/test_tutorials.py +++ b/test/tutorials/test_tutorials.py @@ -1,34 +1,34 @@ -"""Unit tests for the tutorials.""" - -import glob -import subprocess -import tempfile - -import pytest - - -def _exec_tutorial(path): - """Execute a tutorial notebook.""" - file_name = tempfile.NamedTemporaryFile(suffix=".ipynb").name - args = [ - "jupyter", - "nbconvert", - "--to", - "notebook", - "--execute", - "--ExecutePreprocessor.timeout=1000", - "--ExecutePreprocessor.kernel_name=python3", - "--output", - file_name, - path, - ] - subprocess.check_call(args) - - -paths = sorted(glob.glob("tutorials/*/*.ipynb")) - - -@pytest.mark.parametrize("path", paths) -def test_tutorial(path): - """Run the test of the tutorials.""" - _exec_tutorial(path) +"""Unit tests for the tutorials.""" + +import glob +import subprocess +import tempfile + +import pytest + + +def _exec_tutorial(path): + """Execute a tutorial notebook.""" + file_name = tempfile.NamedTemporaryFile(suffix=".ipynb").name + args = [ + "jupyter", + "nbconvert", + "--to", + "notebook", + "--execute", + "--ExecutePreprocessor.timeout=1000", + "--ExecutePreprocessor.kernel_name=python3", + "--output", + file_name, + path, + ] + subprocess.check_call(args) + + +paths = sorted(glob.glob("tutorials/*/*.ipynb")) + + +@pytest.mark.parametrize("path", paths) +def test_tutorial(path): + """Run the test of the tutorials.""" + _exec_tutorial(path) diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb new file mode 100644 index 00000000..e69de29b diff --git a/tutorials/graph2cell/cycle_lifting.ipynb b/tutorials/graph2cell/cycle_lifting.ipynb index fe7834de..75042165 100644 --- a/tutorials/graph2cell/cycle_lifting.ipynb +++ b/tutorials/graph2cell/cycle_lifting.ipynb @@ -1,351 +1,351 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Graph-to-Cell Cycle Lifting Tutorial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "***\n", - "This notebook shows how to import a dataset, with the desired lifting, and how to run a neural network using the loaded data.\n", - "\n", - "The notebook is divided into sections:\n", - "\n", - "- [Loading the dataset](#loading-the-dataset) loads the config files for the data and the desired tranformation, createsa a dataset object and visualizes it.\n", - "- [Loading and applying the lifting](#loading-and-applying-the-lifting) defines a simple neural network to test that the lifting creates the expected incidence matrices.\n", - "- [Create and run a simplicial nn model](#create-and-run-a-simplicial-nn-model) simply runs a forward pass of the model to check that everything is working as expected.\n", - "\n", - "***\n", - "***\n", - "\n", - "Note that for simplicity the notebook is setup to use a simple graph. However, there is a set of available datasets that you can play with.\n", - "\n", - "To switch to one of the available datasets, simply change the *dataset_name* variable in [Dataset config](#dataset-config) to one of the following names:\n", - "\n", - "* cocitation_cora\n", - "* cocitation_citeseer\n", - "* cocitation_pubmed\n", - "* MUTAG\n", - "* NCI1\n", - "* NCI109\n", - "* PROTEINS_TU\n", - "* AQSOL\n", - "* ZINC\n", - "***" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Imports and utilities" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# With this cell any imported module is reloaded before each cell execution\n", - "%load_ext autoreload\n", - "%autoreload 2\n", - "from modules.data.load.loaders import GraphLoader\n", - "from modules.data.preprocess.preprocessor import PreProcessor\n", - "from modules.utils.utils import (\n", - " describe_data,\n", - " load_dataset_config,\n", - " load_model_config,\n", - " load_transform_config,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading the dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we just need to spicify the name of the available dataset that we want to load. First, the dataset config is read from the corresponding yaml file (located at `/configs/datasets/` directory), and then the data is loaded via the implemented `Loaders`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset configuration for manual_dataset:\n", - "\n", - "{'data_domain': 'graph',\n", - " 'data_type': 'toy_dataset',\n", - " 'data_name': 'manual',\n", - " 'data_dir': 'datasets/graph/toy_dataset',\n", - " 'num_features': 1,\n", - " 'num_classes': 2,\n", - " 'task': 'classification',\n", - " 'loss_type': 'cross_entropy',\n", - " 'monitor_metric': 'accuracy',\n", - " 'task_level': 'node'}\n" - ] - } - ], - "source": [ - "dataset_name = \"manual_dataset\"\n", - "dataset_config = load_dataset_config(dataset_name)\n", - "loader = GraphLoader(dataset_config)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can then access to the data through the `load()`method:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset only contains 1 sample:\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " - Graph with 8 vertices and 13 edges.\n", - " - Features dimensions: [1, 0]\n", - " - There are 0 isolated nodes.\n", - "\n" - ] - } - ], - "source": [ - "dataset = loader.load()\n", - "describe_data(dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading and Applying the Lifting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section we will instantiate the lifting we want to apply to the data. For this example the cycle lifting was chosen. The algorithm finds a cycle base for the graph and creates a cell for each cycle in said base. This is a connectivity based deterministic lifting that preserves the initial connectivity of the graph. [[1]](https://arxiv.org/abs/2309.01632) combine two heuristics to design an algorithm that selects cycle basis in $O(m \\log m)$ time, where $m$ is the number of edges of the graph.\n", - "\n", - "***\n", - "[[1]](https://arxiv.org/abs/2309.01632) Hoppe, J., & Schaub, M. T. (2024). Representing Edge Flows on Graphs via Sparse Cell\n", - "Complexes. In Learning on Graphs Conference (pp. 1-1). PMLR.\n", - "***\n", - "For cell complexes creating a lifting involves creating a `CellComplex` object from topomodelx and adding cells to it using the method `add_cells_from`. The `CellComplex` class then takes care of creating all the needed matrices.\n", - "\n", - "Similarly to before, we can specify the transformation we want to apply through its type and id --the correxponding config files located at `/configs/transforms`. \n", - "\n", - "Note that the *tranform_config* dictionary generated below can contain a sequence of tranforms if it is needed.\n", - "\n", - "This can also be used to explore liftings from one topological domain to another, for example using two liftings it is possible to achieve a sequence such as: graph -> cell complex -> hypergraph. " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Transform configuration for graph2cell/cycle_lifting:\n", - "\n", - "{'transform_type': 'lifting',\n", - " 'transform_name': 'CellCycleLifting',\n", - " 'max_cell_length': None,\n", - " 'preserve_edge_attr': False,\n", - " 'feature_lifting': 'ProjectionSum'}\n" - ] - } - ], - "source": [ - "# Define transformation type and id\n", - "transform_type = \"liftings\"\n", - "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", - "transform_id = \"graph2cell/cycle_lifting\"\n", - "\n", - "# Read yaml file\n", - "transform_config = {\n", - " \"lifting\": load_transform_config(transform_type, transform_id)\n", - " # other transforms (e.g. data manipulations, feature liftings) can be added here\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We than apply the transform via our `PreProcesor`:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transform parameters are the same, using existing data_dir: /challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/1820307683\n", - "\n", - "Dataset only contains 1 sample:\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAIeCAYAAAAveKxoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACnr0lEQVR4nOzdd3zV5dn48c/3jJzsQUggrBAIEBL23jMMGYqooECrtdpqh9b297T16fKps47WVmtrh7WPPm1Z1lVBmRlsWQFkyZ6ZZCdnfe/fH4dEIglJyDnne5Jcb1/nJTnne+77OiHkXOce160ppRRCCCGEEFeZjA5ACCGEEIFFkgMhhBBC1CHJgRBCCCHqkORACCGEEHVIciCEEEKIOiQ5EEIIIUQdkhwIIYQQog5JDoQQQghRhyQHQgghhKhDkgNxQ6dPn0bTNN588806969du5YhQ4YQHByMpmkUFxf7LIbNmzejaRqbN2/2WR/+UPO9fPHFF/3a73333UfPnj2bfG14eLhvA2qiJ554Ak3TjA6jjob+PQS6N998E03TOH36dO19U6ZMYcqUKYbFJAKbJAftWM0vjE8//bRZzyssLGTRokWEhITw+9//nrfeeouwsDCeeeYZ3n33Xd8E2wynTp3iO9/5Dn379iU0NJTQ0FBSU1P59re/TU5OjtHhGa6yspInnnii1SdbgezIkSP88Ic/ZMiQIURERJCQkMDcuXOb/W9NCKNYjA5ABLbExESqqqqwWq219+3atYuysjKefPJJ0tPTa+9/5plnuPPOO1mwYIEBkXp8+OGHLF68GIvFwtKlSxk8eDAmk4kjR47wzjvv8Ic//IFTp06RmJhoWIz+9uc//xld12u/rqys5H/+538A5JOjj/zlL3/hr3/9K3fccQff+ta3KCkp4fXXX2fMmDGsXbu2zr8bIQKRJAfihjRNIzg4uM59eXl5AERHRxsQUcNOnDjB3XffTWJiIhs2bCAhIaHO47/61a947bXXMJluPGBWUVFBWFiYL0P1q2sTu/ZKKUV1dTUhISF+6e+ee+7hiSeeqDNFc//999O/f3+eeOIJSQ5EwJNpBXFDX55jnTJlCvfeey8AI0eORNM07rvvPjRNo6Kigr///e9omlZ7f40LFy5w//3306lTJ2w2G2lpabzxxhvX9Xf+/HkWLFhAWFgY8fHxPPbYY9jt9ibF+vzzz1NRUcHf/va36xIDAIvFwiOPPEL37t1r76uZYz9x4gRz5swhIiKCpUuXApCVlcVdd91Fjx49sNlsdO/enccee4yqqqo67da0cfLkSWbNmkVYWBhdunThl7/8JQ0devqnP/2J3r17Y7PZGDlyJLt27brhaysuLsZsNvO73/2u9r6CggJMJhOxsbF1+nn44Yfp3Llznfhq1hycPn2auLg4AP7nf/6n9u/qiSeeqNPfhQsXWLBgAeHh4cTFxfH//t//w+123zDGGmvWrGHy5MlEREQQGRnJyJEj+cc//lHnmpUrVzJ8+HBCQkLo2LEjy5Yt48KFC4227XK5ePLJJ2u/dz179uS///u/r/sZ6dmzJ/PmzePjjz9mxIgRhISE8PrrrwOe7+X3vvc9unfvjs1mIzk5mV/96ld1RldqrrvvvvuIiooiOjqae++9t8lra4YPH37d2o3Y2FgmTpzI4cOHm9QGNO17uWPHDmbPnk1UVBShoaFMnjyZLVu2NLmPa73yyiukpaURGhpKTEwMI0aMuK4/0T7IyIFolp/85Cf069ePP/3pT/zyl78kKSmJ3r17k56ezgMPPMCoUaP4xje+AUDv3r0ByM3NZcyYMWiaxne+8x3i4uJYs2YNX//61yktLeV73/seAFVVVUyfPp2zZ8/yyCOP0KVLF9566y02btzYpNg+/PBDkpOTGT16dLNek8vlYtasWUyYMIEXX3yR0NBQwPMGVllZycMPP0xsbCw7d+7klVde4fz586xcubJOG263m9mzZzNmzBief/551q5dyy9+8QtcLhe//OUv61z7j3/8g7KyMr75zW+iaRrPP/88Cxcu5OTJkw1+yo+OjmbAgAFkZmbyyCOPAJCdnY2maRQVFfHZZ5+RlpYGeJKaiRMn1ttOXFwcf/jDH3j44Ye5/fbbWbhwIQCDBg2q81pmzZrF6NGjefHFF1m/fj0vvfQSvXv35uGHH77h9/LNN9/k/vvvJy0tjccff5zo6Gj27t3L2rVrWbJkSe01X/va1xg5ciTPPvssubm5/Pa3v2XLli3s3bv3hiNSDzzwAH//+9+58847+cEPfsCOHTt49tlnOXz4MP/+97/rXHv06FHuuecevvnNb/Lggw/Sr18/KisrmTx5MhcuXOCb3/wmPXr0YOvWrTz++ONcunSJl19+GfCMNNx2221kZ2fz0EMP0b9/f/7973/XJsY36/Lly3Ts2LFJ1zble7lx40ZuueUWhg8fzi9+8QtMJhN/+9vfmDZtGllZWYwaNarJsf35z3/mkUce4c477+TRRx+lurqanJwcduzYUdufaEeUaLf+9re/KUDt2rWrwWtOnTqlAPW3v/2t0eeFhYWpe++997o2vv71r6uEhARVUFBQ5/67775bRUVFqcrKSqWUUi+//LIC1IoVK2qvqaioUMnJyQpQmzZtajDOkpISBagFCxZc99iVK1dUfn5+7a2mP6WUuvfeexWgfvzjH1/3vGuvq/Hss88qTdPUmTNnrmvju9/9bu19uq6ruXPnqqCgIJWfn6+U+uJ7GRsbq4qKimqvfe+99xSgPvjggwZfn1JKffvb31adOnWq/fr73/++mjRpkoqPj1d/+MMflFJKFRYWKk3T1G9/+9s68SUmJtZ+nZ+frwD1i1/84ro+al7LL3/5yzr3Dx06VA0fPvyG8RUXF6uIiAg1evRoVVVVVecxXdeVUko5HA4VHx+vBgwYUOeaDz/8UAHq5z//ee19v/jFL9S1v6L27dunAPXAAw/Uafv//b//pwC1cePG2vsSExMVoNauXVvn2ieffFKFhYWpY8eO1bn/xz/+sTKbzers2bNKKaXeffddBajnn3++9hqXy6UmTpx43b+HpsrMzFSapqmf/exnjV7blO+lruuqT58+atasWbX3KeX5uU1KSlIzZsyova/m3+ypU6dq75s8ebKaPHly7de33XabSktLa/brEm2TTCsIn1JKsXr1aubPn49SioKCgtrbrFmzKCkpYc+ePQB89NFHJCQkcOedd9Y+PzQ0tHYk4kZKS0sB6t2GN2XKFOLi4mpvv//976+7pr5PxNfOT1dUVFBQUMC4ceNQSrF3797rrv/Od75T++eaURKHw8H69evrXLd48WJiYmJqv675lH/y5MkbvsaJEyeSm5vL0aNHAc8IwaRJk5g4cSJZWVmAZzRBKdXgyEFTPfTQQ9f13Vh869ato6ysjB//+MfXrVOp2ZL46aefkpeXx7e+9a0618ydO5eUlBT+85//NNj+Rx99BMD3v//9Ovf/4Ac/ALjuuUlJScyaNavOfStXrmTixInExMTU+VlMT0/H7XaTmZlZ25fFYqnzc2E2m/nud797w+9BQ/Ly8liyZAlJSUn88Ic/bPT6pnwv9+3bx/Hjx1myZAmFhYW1r6WiooLp06eTmZl53VTJjURHR3P+/PlGp7hE+yDTCsKn8vPzKS4u5k9/+hN/+tOf6r2mZoHjmTNnSE5Ovm5ve79+/RrtJyIiAoDy8vLrHnv99dcpKysjNzeXZcuWXfe4xWKhW7du191/9uxZfv7zn/P+++9z5cqVOo+VlJTU+dpkMtGrV6869/Xt2xegzt5ygB49etT5uiZR+HIfX1bzhp+VlUW3bt3Yu3cvTz31FHFxcbW1E7KysoiMjGTw4ME3bOtGgoODa9clXBtjY/GdOHECgAEDBjR4zZkzZ4D6/05TUlLIzs6+4XNNJhPJycl17u/cuTPR0dG1bddISkq6ro3jx4+Tk5Nz3eurce3PYkJCwnXJZlN+Fr+soqKCefPmUVZWRnZ2dp02y8vL6/zMms1m4uLimvS9PH78OMANpzpKSkrqJKI38qMf/Yj169czatQokpOTmTlzJkuWLGH8+PFNer5oWyQ5ED5V88ll2bJlDf4Su3a++2ZFRUWRkJDAwYMHr3usZg3Cl9+ka9hstut2MLjdbmbMmEFRURE/+tGPSElJISwsjAsXLnDfffc16xPZl5nN5nrvVw0sXqzRpUsXkpKSyMzMpGfPniilGDt2LHFxcTz66KOcOXOGrKwsxo0b1+iOjJuJL1A0tTBSfTsTdF1nxowZDX56r0novMXhcLBw4UJycnL4+OOPr3uzf/HFF2u3lYJn63BDP6dfVvMz+MILLzBkyJB6r2lOQav+/ftz9OhRPvzwQ9auXcvq1at57bXX+PnPf14nRtE+SHIgvKa+X9pxcXFERETgdrsb3b6VmJjIwYMHUUrVaatmGL0xc+fO5S9/+Qs7d+5s1kKs+hw4cIBjx47x97//na9+9au1969bt67e63Vd5+TJk3XeXI4dOwbQ5OqETTFx4kQyMzNJSkqqLbAzePBgoqKiWLt2LXv27Gn0F7mvqg7WLEA9ePDgdZ/ua9TUlzh69CjTpk2r89jRo0dvWH8iMTERXdc5fvw4/fv3r70/NzeX4uLiJtWu6N27N+Xl5U36WdywYQPl5eV13mCb+rMInp+Jr371q2zYsIEVK1YwefLk66756le/yoQJE2q/rklomvK9rLkmMjLSa1sjw8LCWLx4MYsXL65NbJ5++mkef/zx66Y3RNsmaw6E14SFhV231ctsNnPHHXewevXqej/V5+fn1/55zpw5XLx4kVWrVtXeV1lZ2eB0xJf98Ic/JDQ0lPvvv5/c3NzrHm/sk/mX4/7yc5RS/Pa3v23wOa+++mqda1999VWsVivTp09vcr+NmThxIqdPn2b58uW10wwmk4lx48bx61//GqfT2eh6g5rdGN4ueT1z5kwiIiJ49tlnqa6urvNYzfdxxIgRxMfH88c//rHO9sM1a9Zw+PBh5s6d22D7c+bMAajdUVDj17/+NcANn1tj0aJFbNu2jY8//vi6x4qLi3G5XLV9uVwu/vCHP9Q+7na7eeWVVxrto8Z3v/tdli9fzmuvvVa7K+TLevXqRXp6eu2tZgi/Kd/L4cOH07t3b1588cV6p9Ou/bfVFIWFhXW+DgoKIjU1FaUUTqezWW2J1k9GDgRvvPEGa9euve7+Rx99tFntDB8+nPXr1/PrX/+6dgh89OjRPPfcc2zatInRo0fz4IMPkpqaSlFREXv27GH9+vUUFRUB8OCDD/Lqq6/y1a9+ld27d5OQkMBbb71V+2bWmD59+vCPf/yDe+65h379+tVWSFRKcerUKf7xj39gMpnqXV/wZSkpKfTu3Zv/9//+HxcuXCAyMpLVq1c3OO8eHBzM2rVruffeexk9ejRr1qzhP//5D//93//d4Pz2zah54z969CjPPPNM7f2TJk1izZo1tXUTbiQkJITU1FSWL19O37596dChAwMGDLjh/HZTREZG8pvf/IYHHniAkSNHsmTJEmJiYti/fz+VlZX8/e9/x2q18qtf/Yqvfe1rTJ48mXvuuad2K2PPnj157LHHGmx/8ODB3HvvvfzpT3+iuLiYyZMns3PnTv7+97+zYMECpk6d2miM//Vf/8X777/PvHnzuO+++xg+fDgVFRUcOHCAVatWcfr0aTp27Mj8+fMZP348P/7xjzl9+jSpqam888471601acjLL7/Ma6+9xtixYwkNDeXtt9+u8/jtt99+w0JbTflemkwm/vKXv3DLLbeQlpbG1772Nbp27cqFCxfYtGkTkZGRfPDBB02KFzwJSefOnRk/fjydOnXi8OHDvPrqq8ydO7d2TY9oRwzYISECRM32poZu586da9ZWxiNHjqhJkyapkJAQBdTZ1pibm6u+/e1vq+7duyur1ao6d+6spk+frv70pz/VaePMmTPq1ltvVaGhoapjx47q0UcfVWvXrm10K+O1Pv/8c/Xwww+r5ORkFRwcrEJCQlRKSop66KGH1L59++pce++996qwsLB62/nss89Uenq6Cg8PVx07dlQPPvig2r9//3Xfj5o2Tpw4oWbOnKlCQ0NVp06d1C9+8Qvldrtrr6v5Xr7wwgvX9UUDWwvrEx8frwCVm5tbe192drYC1MSJE6+7/stbGZVSauvWrWr48OEqKCioTt8NfT++vK3wRt5//301btw4FRISoiIjI9WoUaPUP//5zzrXLF++XA0dOlTZbDbVoUMHtXTpUnX+/PlG+3Q6nep//ud/VFJSkrJarap79+7q8ccfV9XV1XWuS0xMVHPnzq03vrKyMvX444+r5ORkFRQUpDp27KjGjRunXnzxReVwOGqvKywsVF/5yldUZGSkioqKUl/5ylfU3r17m7SVsWZLaEO3a7cU3khTvpd79+5VCxcuVLGxscpms6nExES1aNEitWHDhtprmrKV8fXXX1eTJk2qbad3797qv/7rv1RJSUmTYhVti6ZUM8ZahRDXue+++1i1alW9Q7tCCNEayZoDIYQQQtQhyYEQQggh6pDkQAghhBB1yJoDIYQQQtQhIwdCCCGEqEOSAyGEEELUIcmBEEIIIeqQ5EAIIYQQdUhyIIQQQog6JDkQQgghRB2SHAghhBCiDkkOhBBCCFGHJAdCCCGEqEOSAyGEEELUIcmBEEIIIeqQ5EAIIYQQdUhyIIQQQog6JDkQQgghRB2SHAghhBCiDkkOhBBCCFGHJAdCCCGEqEOSAyGEEELUIcmBEEIIIeqQ5EAIIYQQdUhyIIQQQog6JDkQQgghRB2SHAghhBCiDkkOhBBCCFGHJAdCCCGEqEOSAyGEEELUIcmBEEIIIeqQ5EAIIYQQdUhyIIQQQog6JDkQQgghRB0WowMQQgjRPG6lKKx2k1flIr/KTYVLx60UZk0jzGIiLsRMfIiF2GAzZk0zOlzRCklyIIQQrUSpw82hIjs5RdVUOBW6Upg0DV2p2mtqvjZpGmFWjUEdgknrYCMyyGxg5KK10ZS65qdKCCFEwLG7dbZcqiSnyI5bKVBgMWmYAK2ekQGlFDrg0hVoYNY0BnWwMT4hFJtZZpNF4yQ5EEKIAHa2zMkn58spcbgxoWHR6k8IGqKUwqVARxEdZGZGt3B6RFh9GLFoCyQ5EEKIAJVTWM2GCxXoSmHVNEwtWD+gK4Xz6nTD9K5hDIoN9mKkoq2R8SUhhAhAOYXVbDhfga4rglqYGIBnLUKQpqHrig3nK8gprPZSpKItkuRACCECzNkyZ+2IQZBJa9Y0wo1omkaQybNgccOFCs6WOb3Srmh7JDkQQogAYnfrfHK+3OuJQY1rE4R158uxu3Wvti/aBkkOhBAigGy5VEmJw41V835iUEPTNKyaRrHDzZZLlT7pQ7RukhwIIUSAKHW4ySmyY6LlawwaY9I0TGjkFNkpdbh92pdofSQ5EEKIAHHoah0Di5+KGlo0T7XFQ0V2/3QoWg1JDoQQIgC4lSKnqBpUw3UM3vivr/Prr8yu97HXHrqLP3z77mb1qWkaKMgpqvYUVxLiKkkOhBAiABRWu6lwKiymhocNOvVM5srlC7icjjr3f5a9gQvHDzHja480u1+LSaPC6TmrQYgakhwIIUQAyKtyec5EuME18T2T0XU3BedP196nlGLDm6+QNGgkySPGNbtf09U28qtczX6uaLskORBCiACQX+XG1MgOhU49kwEoOHuq9r6Dm9dy+dQx0u9v/qgBeKYWNE0jr0pGDsQXJDkQQogAUOHS65yuWJ+4xN4A5F9NDnRdZ+P/vkafEePpnjakzrVnP9vHT9PT2PTWHxvtW1eKSpfUOxBfkORACCECQFMWBIaERxIZG0/+uZMA5Gz4kLyzJxh2+1cpyM2j6EoRlVWVuNwuPnrtV3TtN7DJ/btkQaK4hsXoAIQQQniOVW6K+J7JFJw9he52s/GtP9BvzBTieqZgRseq61SVlrJ13Xt07NkHt6MaRdPe9C0+rqsgWhcZORBCiAAQZjE1qfBRfGIyBedPs/eT97hy8RxjFt2PxWJD1yxYLRZs6OSsfYdJd30Np91ORXk5JaUl2B32BhMFk6YRapG3A/EFGTkQQogAEBdiRlcKdYM6B+BZlGivquDjP/+atMmzieycSFCQDbfLTLW9ks3/+xrjFy4jvnMCtqAggi0WsNspq6oCk4mg4GBCQkKwWiyAhlIKpRTxIWb/vVgR8CRVFEKIABAfYsGkaTS2LDA+ybNjoaqshAn3PACYCLJaCbLZOH/iOOePHmTk7IWAZ0TAYrEQFRlJdHg4oRYrelUVJYWFFBQUUF5RjtPtRtM04kLks6L4gqaUrEIRQgijuZXiL4evUO7QsZmb9rmtsKgQlI2w8HAAMv75Olv/9UeCw8IAqK4ox2w2kzYhnTu+/z+Ap6aBy+XC6XRidzghJBRXRSldz+5gwa23Eh8f75sXKFoVSQ6EECJAbLtcydbcSoKacCKjy+2ioOAKYaFRWIOCAKgoK6E8/yJREaGYzWb+8/oLxHTqwqRF9xMSHnFdG7pS2NHQPllN5itPc1HTSJ4wgdvvvJM5c+YQEXH9c0T7INMKQggRINI62DBrGq4mfGSrqqpC0yxYrNba+0LDIwmJ7UxQWCQRHTpiDbIRFBxab2IA4DaZsWoa3xjal3++/DIvLlnCwEuX+Ot3v8vUtDS++Y1vsHbtWhwOR73PF22XjBwIIUQA2Xi+nL2F1Vi1ho9tVigK8gsxW0IJDQ2t81hVVRXKXkZMVMQNRx90wKmZGVqRy7SSM3UeKywsZPuOHWTt2MGOc+eojIlh0m23sXDhQkaPHo3JJJ8r2zpJDoQQIoDY3TpvHyuh2OFucHrB4bBTdKWM8PBoLJa6Cwl1Xae89ApRIRZsNlu9fSjAoZmJdlWzLP8gNtXwMsgLFy6wbds2Nu7cycHCQvQuXZh9550sXLiQ/v37Nzr9IVonSQ6EECLAnC1zsvpUKbquCDJdnyCUlJZgt0NkZCRw/ZtzRUU5FncVUZHXTyfUJAYmFHcUHKWHo7RJMSml+Pzzz9m2bRvrd+3iWGUlkSkpzLvzTm6//Xa6d+9+My9VBChJDoQQIgDlFFaz4XwFuqqbICilyMsvwGaLIDg4uN7nupxOqsqLiYkIqTOycG1iML34NIMq828qNpfLxcGDB9m2fTsb9u3jjMtF91GjuO3OO5k/fz4dOnS4qXZF4JDkQAghAlROYTUbLngShJo1CFXVVZSUVBIZGY3J1FDhIkVZaSmhZhdhV7c11qwxaGli8GXV1dXs2bOHrdu3s+mzz8i1WEibNo3b77iDW2+9VdYntFKSHAghRAA7W+Zk3flyih1uTGiUlRSjuy2EN7LN0G6346wqISYyHN1sQUcj2lXNjOLTTZ5KaK7S0lJ27txJ1vbtbDl5krf37aNz164+6Uv4liQHQggR4OxunS2XKtlfUEVZZTUWSxBWk2e6QKtnzYHCUxLZ7qgmyKJhM5sYVJnP+NJzN1x86E15eXmEL1hAaGzs9Q+WlsIzz8ChQ1BcDJMnwze+AbfeCr17Q9eu8Lvf+SVOUT8Z7xFCiABnM5uY1i0c66cfsutfHxGkLCgNdE2hawq3ptfeau7DpOGudnNp+f9y78U9TCs547fEACA+Pp7QkJD6H3zoIZg9Gz74ADIy4OhR2LYNpk+H1aslMQgAkhwIIUQroJRixf/+E9dxF33zOpCUF0WXK+HEVAQTVWUjojqIqCobMRXBdLkSTlJeFJ1PWFn35scc3bHV6PC/kJ0Ne/bAU09BejrMnAlnz4Kuw+bNsGABvPOO0VG2e3LShhBCtAKHDh3iyJEyHnlkAhoawS4LwS4LVDX8nK4JXYhNncl/1v2HMWPG+C/YGzl4EJYtg5/+tO79DocnMdA0uOcemDoVYmIMCVHIyIEQQrQKK1euJDw8hQEDBjTredPSZ/HJ53ZOnz7tm8Caq0sXzwhBRYXn6+pqz7RCUBCEhEBwMIweDYESbz3cSpFX5eJgUTWbLlTw4Zky3jtdyodnyth0oYKDRdXkVblwt+IlfTJyIIQQAc7lcrFq1SeMGvUdzOaGti/Wb8iQIazqMIz169fzwAMP+CjCZpg7F3bs8EwphIV5koLvfx+6dfN8rRTs3w9f+5rRkV6n1OHmUJGdnKJqKpwKXSnPMdvXJAE1X5s0jTCrxqAOwaR1sBEZ1Ly/N6NJciCEEAEuIyODvDwbEyZMaPZzzWYz46bN5513H+fuu8sJv3q8s2HMZnj66evvz8iAZ58Fq9WTQHTqVO/T/+///o+BAwcycOBAv5VurtktklNk94wGKLCYNKy15a3rxqGUp65EuUNna24lO/KqGNTBxviE0CYfx2201hGlEEK0YytWrKRr11H06NHjpp4/efJkTtKTzMxML0fmRZMnw9q1nh0MDz3U4GV5GzbwzfR00idM4De/+Y3Pp0vOljl561gJewurUQqCNM/WUPMNjtXWNA3z1euCNA2lYG9hNW8fK+FsmdOn8XqLJAdCCBHASktL+eijXYwdO/mmPylHRkbSZ9Q83tu4Hbfb7eUI/euRBx/k9UcfZVGHDmx76SXuGj2aBXPn8sYbb1BQUODVvnIKq1l9qpQShxurpmGt55yLxmhXn2fVNIodblafKiWnsNqrcfqCJAdCCBHAPvzwQ6qrOzJ27LgWtTM9fQbb88M4cOCAlyJrAh8syDNrGoMGDeKb3/gGb738Mq888ACTqqt55/HHmT1oEMuWLGHVqlWUl5e3qJ/asy10RdANjs9uKpOmEaRp6Lpiw/mKgE8QZM2BEEIEsOXLV9O//1RiWritr3fv3gQnTWbt+k0MGTLEO8E1pqzMswPBm+crXPOmb7PZGDNmDGPGjOEb5eXs3LmT7O3bef3hh3kuNJSRt9zCwjvuYMqUKVit1iZ3cbbMWXumRX2nYt4sTdMIMoFDV2y4UEF0kJkeEU2Py5+kfLIQQgSos2fPMnLkHdx//28ZN65lIwcA2dnZbPnzd1j1/Hfo3MCCP69KSIARI7zTlq57Si1v2dLopQUFBWzfvp3MHTvYeeEC1bGxTFmwgIULFzJixIgbHgZld+u8dayEEoeboBusK2gJpRQOpYgOMrOsb1RALlKU5EAIIQLUb37zG156aSsvv/w2Nputxe05nU5++tj9/GSsk6VLl3ohwibo3Rv69fPsUmiJoiLYtctTLKkZzp07x7Zt29i4YwcHi4sxde/O7DvuYOHChaSkpFx3/cbz5ewtrK49BdNXdKVwKsXQ2GCmdTN4B0k9JDkQQogApJRizJipdOq0lAcffNBr7a5YsYLKjU/yj9/+wisJR5OYTBAdDZabmMlWyjOVUHWDUpBNoOs6x44dY9u2bWzYvZvjVVXEpKVx6113cdttt9G1a1dKHW7eOFKMUmA1+X6bpFNXaBrcnxIdcHUQJDkQQogAtHv3bm655RF+8IM/k5qa6rV2CwoKeOG/lvD7rw5g6tSpXmu3NXG5XBw4cICt27axft8+zuo6SWPHMu2hH1LZuS82L64zuJGa6YVxnUIZ2znU5/01hyxIFEKIALRy5UqiowfQr18/r7bbsWNHug65hQ/W/4MpU6b4rZBQILFYLAwdOpShQ4dyf1UVu3fvJnvnLi47g7BWVFCtuwgOCcFms9U5EvuN//o6xZcv8P231l7X5msP3YVmNvPw7//V5Dg0TQNdkVNUzahOIZgD6O8i8FZBCCFEO+dwOHjnnU2MHj292eWSm2J6+kwyz5s5evSo19tubUJCQpgwYQL3/+gnRCV0JdgEJpeLiuJiCvLyKCktwe6wo1B06pnMlcsXcDnrrnv4LHsDF44fYsbXHml2/xaTRoVTUVgdWPUnJDkQQogAs379eq5cCWP8+PE+aT81NRV3whjWb9jok/ZbozxrKEozEWy1EhkRQXREBOFBNrDbKbtyhcL8fCI6dUV3uyk4f7r2eUopNrz5CkmDRpI8ovk7SkxX28ivcnnvxXiBJAdCCBFgVqxYRWLiWLp27eqT9jVNY1L6PN7dfYErV674pI/WJt8aiglVO4lgNpsJCQkmKjKS6PBwQi1WYjt1Rdd1Th7cR3lFOS63i4Ob13L51DHS72/+qAF4/i40TSOvSkYOhBBCNKCoqIh16/Yzduxkn/Yzfvw4Llj7smnzZp/201pUmKzo1D/nb7FYCA0NIan/QEwmjbJL53CWV1CUl8fHb/yWXkPH0HPgcAB2vPdPfv/NO/j5zEFs+Pvvm9S3rhSVLt1rr8UbJDkQQogA8t577+FyJTBmzBif9hMSEsqA8bfy7ubduFyBNaRtBLfW+NthaEQkkR3iKMm9SHRUJGd3ZVF07jSjFn4Vl9vzPYyIjWfavd8hdeKMZvXvCrCNg5IcCCFEAFmx4t8MGDCNyMhIn/c1ffp0dhfH8Omnn/q8r0BnVk375B6f2JuCc6fR3W42/+sv9Bk5gc69U2p3faROmE7/cVMJCY9oVv+WANqpAJIcCCFEwPj888/Zvfsy48dP8Et/Xbt2JTZ1Jv9Zn+GX/gJZmO7EROOf3uMTe1Nw4TTb/rOKK5cvMHnpN9HMZsymm99VYtI0Qi2B9XYcWNEIIUQ7tmrVKoKDkxkyZKjf+pw6fSbrjldz5uxZv/UZiOKclehojaYHcT2SqK6sYPP//ZG0STOIT+yN+WYqP16llEIpRXxIYFVIlORACCECgK7rrFjxH0aMmNGsEwRbaujQoZTHDGXD+vV+6zMQxTsrMaEaXJQI4Ha7CY/rAkB1RTnTv/IwLre7RX9fOp4dC3EhgVWTUJIDIYQIANu3b+f8eY0JE3xT26AhZrOZcdNvZfXW45RfcxxyexPrrCLM7cTVwMJEl8tFeXk53VIG8sR/dvPEBzuJSeiOrhSWFowcuHRFmFUjNlhGDoQQQnzJypUr6dhxMMnJffze9+TJkzmhepKVleX3vgOFGcWgyjyA66YWnE4n5RUVmCwWQkJCak9r1HUdXak6Iwdulwunw47u1tHdNX+uv4aBUgo0GNQhOKBKJ4MkB0IIYbiqqireey+bMWOmGXLWQWRkJMmj5vHexu3oemDtt/entMoCzEqvM3pgtzuoqKzEYrUSHBJS5+9Hd+ugaZhNX1y/+f9e54lbhvLpmlW1f9677v16+3MpMGsaaR38dDpmMwTWJIcQQrRDa9eupawsymflkpsiPX0Gb259mwMHDjB48GDD4jBSpNvBoMp89oZ1Qgcc1dVU2+1Yg4IIstmuW42g6+6rixG/eGT6vd9m+r3fbrQvXSl0FEM7BAfccc0gIwdCCGG4FStW0bv3ROLj4w2LoVevXtiSJvHx+vZ93sL40nNEuaqpcutU2+0E2WxXT2e8nlvXsdzEYkSlFE6liA4yMz4hsI5qriHJgRBCGCg3N5fNm48ybtwkQ+PQNI3J02/hg5xCcnNzDY3FSCaHnYo3f4PL4cAaEYk1KKje65RSnuSgmYsRlVI4dIVJ05jRLRybOTDfhgMzKiGEaCf+/e9/A90YNWqU0aEwevRoCsIHsnFj+xw9qKyq4qVf/5ojWevpcWwnZpMJl8lSb+2D+hYjNubaxGB61zB6RPhvy2pzSXIghBAGWr78XQYPTicsLMzoUAgKCmLE5FtZnXkAu91udDh+VVxczHPPPcfFqiruXLqUUUFOBl06jEmpehMEz8JNDbO5aesFdKVwKIXJpDG9WxiDYoO9/hq8SZIDIYQwyGeffcahQ8WMG2fcQsQvmzp1KoeqOrNt2zajQ/Gb3Nxcnn7uOSqCg1m8bBndunUDILH4AmPO7iHMWYXLZMGlmWuTBLeuY7KY0W5QNAmuri/Qv1hjcEdSZMAnBiDJgRBCGGblypWEhaUwcOBAo0OpFRcXR9cht/D+ukzPPvw27tSpUzz17LNY4uO5e+lSOnbsWOfxjpVFTDq5naSis2h4RhGcJgtuaHAxolIKt1LY3ToOpdA0GBobzLK+UQE9lXAt2coohBAGcLlcrFr1CaNGPdyiCnu+MD19Ju+8sJzjx4/Tt29fo8PxmYMHD/LK66/TJTWV2xYsICQkpN7rrLqLgblHSS48w9noLpyJ7ordZMZiC8GhK/RrkiiTpqGUQtM0woNMDOoQTFoHW0BuV7yRwPqJFEKIdiIrK4vLly08+GDgTCnUSE1NZUXCWD5Zt77NJgfbtm3jr//3f/QdMYI58+ZhbUKCFuKqpl/BScIObuWVNRt4+OXfExTbmUqXjkspLFdPV4wPMRMXYiE22BxwlQ+bSpIDIYQwwIoVK0lIGEHPnj2NDuU6JpOJCdPm8O6/NrK0uJiY6GijQ/KqtWvXsvLDDxkyaRLT09PrVDhsisLcXC6f/Zxp/Xv49ZAsf5I1B0II4WdlZWX85z87GDt2qiHlkptiwoQJXLD0YfOmTUaH4jW6rrN8+XJWrVnDuNmzmTFzZrMTA4DcvDzievVqs4kBSHIghBB+99FHH1FV1ZGxY8caHUqDQkNDSRt/K//evBuXy2V0OC3mcrn481/+wvqdO0m//XYmTJjQyD6Dhl3KzaVvAC0i9QVJDoQQws+WL19NSsoUYmNjjQ7lhqZPn86e4mh2795tdCgtUl1dzW9efpm9J08yf9Eihg4ZctNtud1uTl26FFA7THxBkgMhhPCj8+fPs2XLScaNm2h0KI3q1q0bMSnpfLR+s9Gh3LSysjJ+9fzznC0t5Y4lS+jXr1+L2issLORKdbUkB0IIIbxn9erVWCw9GTFihNGhNMnU9Nl8fKyKs2fPGh1Ks+Xn5/PUM89QYjazaNkyevTo0eI28/LyKHG76d+/vxciDFySHAghhJ8opfjXv95j6NB0goMDv0oewLBhwyjvMJT1GzYYHUqznD17lieffRYtNpbFS5d67cTL/Px8ort1IzQ0ME9T9BZJDoQQwk/27dvHiRN2xo+fYHQoTWY2mxkzZT6rtxyjoqLC6HCa5PDhwzz74otE9+rF4iVLiPbiVsxLubn0buNTCiDJgRBC+M2qVauIjExtdUPSU6ZM4aRKJCsry+hQGrVz1y5eevVVug8ezF2LFnn1E76u65y8eLHNrzcASQ6EEMIvnE4nq1atZ8yY9Caf5BcooqKi6D1yHu9v2Hr1NMLAtH7DBl7/+98ZMGECC26/naCgIK+2f6W4mIKKCgYMGODVdgORJAdCCOEHGzZsoKgolPHjA69cclNMT5/B1rxQDhw4YHQo11FKsXr1av75/vuMnjGD2bNn31Rxo8bk5+VR4nLJyIEQQgjvWLFiFd27j6k9Dri16d27N0E9J/Hx+o1Gh1KH2+3mb3/7G2u2bGHarbcyafJkn1WdzMvLIzQ+nsjISJ+0H0gkORBCCB8rLi7mk0/2MW7cFKNDuWmapjElfQ4fHigiNzfX6HAAcDgc/O6VV9hx5Ahz77qLEcOH33TVw6bIzc8nqR1MKYAkB0II4XPvvfceTmcnxowZY3QoLTJ69GgKQlPZFADnLZSXl/OrF17g84ICbl+yhFQfL/JUwMnz5xk4aJBP+wkUkhwIIYSPrVjxb9LSphEVFWV0KC0SFBTEsMm3sTojB7vdblgchYWFPP3ssxTqOouWLSPJDydblpaUkF9e3i4WI4IkB0II4VMnT55k164LjBvXemob3Mi0adM4VNWJ7du3G9L/hQsXePLZZ3FFRXH3smV07tzZL/3m5eVR7HS2i8WIIMmBEEL41KpVqwgOTmbo0KFGh+IVcXFxdBl8Cx+sz0Ip5de+jx8/ztO/+hURPXpw99KlxMTE+K3v/Px8zFFRxMXF+a1PI0lyIIQQPqLrOitW/Ifhw2d4fc+9kabPmEXGWTj++ed+63Pv3r288Nvf0mXAAO5avJjwsDC/9Q2Qm5dHYlqaX/s0kiQHQgjhIzt37uTsWb3V1jZoSGpqKo5Oo/hk3Xq/9JeRkcGrf/kL/caMYeEdd2Cz2fzS77VOX7xIWjuZUgBJDoQQwmdWrlxJbOxg+vTpY3QoXmUymZiUPp93d53jSnGxz/pRSvH+++/zv6tWMWL6dObMmWNIdcnyigouXbnSbtYbgCQHQgjhE9XV1bz3XhZjxkzD5INqfUabMGECF6x9yNi82Sftu91u3n77bd7ftInJ8+YxdZpx38f8q4sR28tOBZDkQAghfOKTTz6hpCSS8ePHGR2KT4SGhpI2/jbe3bQLl8vl1badTiev/eEPZOXkMPuOOxg9erRPixs1Ji8vD1dISKutbnkzLEYHIIQQbdGKFavo1Ws8nTr5Z6udP4WFQVAQLF16C+9U7OJoQQFpqamNP1EpqKyEG9RIqKys5OXf/pbzZWUsuPtuevfu7cXIb05eXh7d+vf3WVnmQCTJgRBCeFleXh4bN37G4sX3GR2KV8XGwpAh8MUpyPHcfvurzW+oqAh274bq6jp3Xyku5qWXXqLUYuGuZcvo0qVLS0P2inOXLzNgxgyjw/ArmVYQQggve/fdd9H1LowaNcroULwmJARGj/b8v8Wio+FLpaQvX77MU888Q3VYGHcHUGJQXV3NuYKCdrUYEWTkQAghvG758n8zaNAthIeHGx2K13TpAiYTeGVk3WSCiAiIioKSEk6ePMmvX3mFqB49uP3OO4mIiPBCJ96Rn59PscPRrhYjgowcCCGEVx0+fJgDB64wfnzbKJdcIyLCs2TA243m5OTwq1//mrh+/Vh0zz0BlRiAZ4qo2mIhKSnJ6FD8SkYOhBDCi1avXk1oaF8GtbHT+3yxFu/zkyd55U9/os/IkcyZOxerJfDekvLy8ujUp48h9RWMJCMHQgjhJW63mxUr1jBq1AwsAfhGF2i27NzJoEmTmD9/fkAmBgDnc3NJbWOJXlME5t+GEEK0QpcuXeJb33qU0aNnERX1xc69y5evW5jfdpSWwjPPwKFDUFwMkyfD/Pnw5JOe4Ya5c+Ghh+p9avLAgcQOGGBoDYMbcTqdnL58mbvaYXIgIwdCCOElnTt35utfX8jgwZH07AlJSTBgAKSnQ0KC0dH5yEMPwezZ8MEHkJEBR4/ChQvw73977lu/Hqqq6n1q7969AzYxAMgvKKCkHS5GBBk5EEIIr2loKkEpGDoU8vLA7fZzUL6UnQ179sBTT3luAGVlEB8PVqvna5PJc2uF8vPyKFOKvn37Gh2K30lyIIQQPqZpYDZ73jMvXTI6Gi86eBCWLYOf/rT+xzMzoWdPMOAURW/IzcsjrlcvrDWJTjvSOtM5IYRoZZRqte+RDevSBTZvhooKz9fV1Z5pBfBkQa+8Ar/4hWHhtdTF3Fz6tcP1BiDJgRBCiJs1d66nbGJ6uue2cCGcOwcOBzz6KDz3nOcghlbI7XZz6uLFdrneAGRaQQghxM0ym+Hpp6+/f/lyOH4cfvhDz9e//z10bl0HUBUWFlJst7e7ssk1JDkQQojmqG/r3rRpnjdAgMOHYeVKSEszNExDLV7subVieXl5FLtcpDbltMk2SKYVhBCiOerbumezwerVsGoVJCZCO31DaUvy8vKI6d6dEK+cNNX6yMiBEEI0VUNb92oOHdi3DwYP9k2tYeFXl/PySG6nixFBkgMhhGi6xrbuffwxzJrl35j8xOHwfpsuI8pGmkwEx8RgusH2RF3XCe7alZkzZ/oxsMAiyYEQQjRVly6eqYPHHvOswq+uhjNnoF8/z+NbtsAPfmBsjD5y+TL06uWdtpRSKF2n8vJl7zTYRNEpKXQcMgRzE+oWPN5Gk7ymkuRACCGaau5c2LHDs20vLAyCguD73/ckB2fOeJKHNlowp7AQTp/21DTS9Zp7FfrVLzRNQ/vSdIpSCqV0TF9+TNO4vHUryuXyR+gAhHfvTqeRI/3WX2snyYEQQjRVQ1v3oE1PKdQ4cMBzbEKnTqBUNYcOHcRicdOzZyLBwfUv3Dtz+iQdtCv0SuyBUgpneTllZ8/iLC31a+yRvXujdB2tlZZy9jdJDoQQwhu+8Q2jI/CLoiLIyTnPyy+/SKdONu6663auXCkBSuq9/tix8+z/6DV+tGwmHTt29G+w17DFxEhi0AzynRJCCNFkR48e5YUXnqFHjwiWLFlMdHTMDa9PTu5NZVhv9u/f76cI6/flKQ9xY5IcCCGEn9TseGytdu/ezSuvvMjAgV1ZvPguwppQGtlkMpMyaCRbD1/Abrf7IUrhDTKtIIQQfqBpUF7u3z5NJoiLg9jYmz81uarKs1Phww83sXr124wdO4DZs2dhNpub3MaAAQNZtTOezw4fZuiQITcXiK/UV/HyySc921UPHfJUv3zkEaOj9DtJDoQQwsd03VMnoKjIf31arTB2LERFXbu7oPk0TdG/P6xde5rp00cyefJkTM3MNMLCwojvPZwd+9YxZPDgwBrif+ghz3qR557zfKMWL4Y//AEsFnj3XXjwQcjP92RZ7YhMKwghhI9VVsLWrf6dVujXDyIiPH82mW7+VvNG/txz93HLLdObnRjUGDJ0KEeKgzh77py3XmLLXVvxMj0dZs6Es2chJAQmTPBcM3Ys5OQYG6cBZORACCGa4Y033mDHjiq+9rWH0bTG3ygrK/0/nQCeQxC9tTjfkyAounQJ5+TJm9uCmJCQgCkujT379pPYo4d3Amuphipe/va3EB7u+XNYmGfqoZ2RkQMhhGgiu93Os8++TnV1J/LzTeTl0ejNiMQAPGdBeZNSEBLSks+TGgMGD2fnqRJKA+XNtksX2LwZKio8X1dXew7Sioz84i+uosLzdTsjyYEQQjTRJ598QnFxOOPHjzc6FEO0dKlASko/Sm092B8ow/Rz58Lo0Z4phfR0WLgQzp2DoUM9pbABtm+HdngAk0wrCCFEE61cuZqkpPEkJCQYHUqrZLFY6ZU2mm0HVzJ2zBgsFoPfgm5U8XLFCliwAKZMaXeLEUFGDoQQokkKCgpYv/4A48ZNMjqUlikthR//GObPh4kTPfPtNSsl//xnWLTIp90PHDiQM/ZIjh075tN+WuyZZzy7Fb73PaMjMYQkB0II0QTvvvsuut6F0aPHGB1Kyzz0EMyeDR98ABkZnjn2rVvB6fTs6/ex6OhoYnoOZ9e+g7TymlBtmiQHQgjRBCtWvMvAgdMJr1nF3ho1tHVPKVi92jOM7geDBg9hf57i8qVLfulPNJ8kB0II0YijR4+yb18+48dPNDqUlqnZurd+/Re3HTtg3DjPqv0pU/wSRmJiT1xRfdnnx/MWXFVVqNZev9qPJDkQQohGrFq1itDQvgxq7avWG9q699FHnlEEP9E0jdTBI9l2LJ/Kykq/9Fl+7lzrP9zCjyQ5EEKIG3C73axY8REjRqRjtVqNDqdlGtq6d+IELF8OS5Z41h384x8+DyUtLY18U2cOHDjg874Arhw5QlV+PgBK11Fud52b2+XC5XL5JZbWQLYyCiHEDWzdupVLl8zcd18bqG3Q0Na99HR49FHPnxct8iQJPmaz2ejRfzTbD7zPyJEjb7osc1Mpl4tz69cTlpBAaOfOmL60jfLwsWOY4+MZNWqUT+NoLWTkQAghbmDVqlXExQ2ld+/eRofiHytW+K2rQYMG83l5GCdOnPBPh7pOxYUL5O/eTe6OHbW389nZvPSjH3Hq1Cn/xNEKSHIghBANqKio4P33tzJ27LTAOkmwjYiLiyOkyyB25xw0NI78ggJKHA4GDhxoaByBRJIDIYRowJo1aygvj2bcuHFGh9Jsvlh7p+veb3TQkOHsPldFYWGh19tuqrzcXMqUok+fPobFEGgkORBCiAYsX76KPn0mEdcKy+eWl+PVrXsmk0ZpqcNr7dVITu5NVVgv9vtxW+OX5eXnE9+7d+tfcOpFkhwIIUQ9Ll++TFbW8VZbLjkr67TXpkJ0XVFd7eLiRe9vOzSZzPQdOIqthy9gt9u93n5TXLh8mb4ypVCHJAdCCFGPd955B03rwciRI40Opdk+/vhjvv3tJ/ngg9243XqL2ysrc/DJJ+d8Mq0AMHDgAC66Y/ns8GGftH8jbreb05cuyXqDL5GtjEII8SVKKf71r3cZOvQ2QkNDjQ6nyZRSrFixgq1b1zF79jiKi8NYseJzOnQIxmxu/iiCUlBZ6aS01OmDaL8QFhZOfPJIdu5fx5DBg/26+LOgoIArdjsDBgzwW5+tgSQHQgjxJQcPHuTIkTIeeWSC0aE0mcvl4o03/srRo5+yYEE6Q4cOvXq/Ii+vyuDoGjdkyFA2r8jg7LlzJPbo4bd+8/PzKXG5SE1N9VufrYFMKwghxJesXLmSiIj+rebTpN1u57e/fZmTJ/eyaNH82sSgNenSJQFTXCp79+X4td+8vDyiu3cnJCTEr/0GOkkOhBDiGk6nk9Wr1zFqVDpms9nocBpVVlbGr371HCUlp1myZCH9+vUzOqSbpDFg8HB2nCymtLTUb71eysujT2s/M8MHJDkQQohrZGRkkJdnY8KEwC+XnJ+fzzPPPIXZXMLSpYvo0SPR6JBaJCUlhRJbd3Jy/DN6oOs6py5elMWI9ZDkQAghrrFy5Sq6dh1F9+7+m/e+GefOneO5554iNlZj6dLFdOrUyeiQWsxisdIrbTTbDp7yyyFIV65coaCiotVMH/mTJAdCCHFVaWkpH320i7FjpwR0ueQjR47w4ovPkpQUxZIli4mOjjY6JK8ZNGgQp6ujOHbsmM/7qlmMKMnB9SQ5EEKIqz744APs9jjGjRtrdCgN2rVrF6+++hKDBnVj0aK7WtVWy6aIjo4muucwdu07hG+qKnwhNy+P0E6diIyM9HFPrY8kB0IIcdWKFe/Qv/9UoqNjjA6lXhs2bODvf/8j48alsmDBAoKCgowOyScGDxlKTp5O7uXLPu0nNy+PXjJqUC9JDoQQAjhz5gzbt59l3LiJRodyHaUU77zzDu+//w9mzBjNLbfc0ip2UtysxMSeOKP6sHffPp/1oZTi1IULDJDFiPWS5EAIIYDVq1djtSYxfPhwo0Opw+128+abfyM7+yPmz5/G5MmTAno9hDdomkb/QSPZdiyfyirfFHAqKSkhr6xMdio0QJIDIUS7p5Ri+fL3GTZsBjabzehwajkcDl599XccPryDu+6ay4gRI4C2nRjUSEtLI9/UmYMHD/qk/bz8fIplMWKDJDkQQrR7u3fv5tQpJ+PHB05tg4qKCl588Xny8z9nyZLb6d+/fZX3DQ4OpnvKaHbkHEXXW3541Jfl5+Vhjopqlcdx+4MkB0KIdm/VqlVERw8kJSXF6FAAKCoq4tlnn8btLmDZskX07JlkdEiGGDx4MMfLwjh58qTX287LzydJRg0aJMmBEKJdczgcrF69kTFjpmMyGf8r8eLFizz77JNERjpZtuxuOnfubHRIhomLiyOky0D27D/g1XYVcPriRdJkvUGDjP+XIIQQBlq3bh3FxeEBMaVw/PhxnnvuKbp3D2fp0ruJiQnMLZX+NGDwcD49V0VhUZHX2qyoqODSlSuyGPEGJDkQQrRrK1asIjFxLF26dDE0jr179/K7373AgAFdWLz4LsLCwg2NJ1D06ZNMRWgSOfv3e63NvNxcip1OWYx4A5IcCCHarcLCQtavz2HcuCmGxpGZmclf//p7Ro/uxx13LAyoHRNGM5nM9Bs0iq2fncPucHilzfz8fNwhIXTt2tUr7bVFkhwIIdqt999/H5crgdGjRxvSv1KK999/n5Ur/860acOZM2dOmy5udLMGDhzIBXdHjhw+7JX28vLy6Nq/f5uvF9ESkhwIIdqt5cv/zcCB0w2pre92u3n77bfZtOl95s2bxLRpUwNiQWQgCgsLJz55JDu8dN7CmUuXGDh4sBdaarvkJ1EI0S4dP36cPXsuM27cBL/37XQ6+eMf/0BOThYLF85m9OgxtJfiRjdr8OAhfHYliHNnz7aonerqas4XFMhixEZIciCEaJdWrVpFcHAyQ4YM8Wu/lZWVvPTSi1y4cIi7714gb1JN1LVrF0wd+7NnX06L2snLy5PFiE0gyYEQot3RdZ0VK/7DyJEzsVqtfuu3uPgKzz77DHb7JZYtW0Tv3r391nfrp5E2eAQ7TxVTWlp6063k5edjt1pJSmqfhaWaSpIDIUS7s23bNi5cMPm1tkFu7mWeeeYpwsKqWbbsbsO3TrZG/funUBLUnZycmx89yMvNpXOfPrK+oxHy3RFCtDurVq2iY8chJCcn+6W/kydP8txzT5GQYGPp0ruJjY31S79tjcVipWfqKLYdPIXb7b6pNs7n5pI6aJCXI2t7JDkQQrQrlZWVvPdeNmPHTvPLVrYDBw7wm988T79+cdxzz2IiIiJ83mdbNnjwIE5XR3L02LFmP9fhcHAmN1fWeTSBJAdCiHZl7dq1lJVFMW7cOJ/3tXXrVl5//XeMGNGLO++8g+DgYJ/32dZFR8cQnTiM3fuaf5RzQUEBJQ6HJAdNIMmBEKJdWbFiNcnJk4iPj/dpP2vWrOEf//grkyYNYv78+Vgs/lv42NYNGjKMfbluLl++3Kzn5eXlUaYUffr08VFkbYckB0KIdiM3N5eMjKOMGzfJZ33ous6//vUvPv54NXPmTGDmzBmy+M3LEhMTcUb1Yd++5p23kJefT3zv3n7dodJayU+sEKLdeOedd4BujBo1yiftu1wu/vSn1/n0040sWDDj6tSFFDfyNpPJRP9Bo9h2LJfKqqomP+/C5cv0k8WITSLJgRCiXVBKsXz5uwwZMoPQ0FCvt19dXc1vfvNrTp/ez6JF8/1eXKm9SUtLI09L4ODBpq09cLvdnL50SYofNZEkB0KIduGzzz7js89KGDvW+wsRS0tL+dWvnqOs7BxLl95J3759vd6HqCs4OJhuKSPZkXMUXdcbvb6goIArdrssRmwiSQ6EEO3CqlWrCA/v7/U3h/z8fJ5++kms1lK+8pXFdO/e3avti4YNHjyE42WhnDp1qtFr8/LzKXG56N+/vx8ia/0kORBCtHkul4uVKz9m1Kh0LBaL19o9e/YMzz77JHFxZpYuvZu4uDivtS0aFx8fT3DCQHY34byF/Lw8Ynr0ICQkxA+RtX7e+1cihBABKjMzk9xcK9/8pvfKJX/22Wf88Y+/o1+/zixceBshId5fxyAaN3DICD5ds4v0oiKiO8RSZgunJDiC0uAI7JYgdM2ESekUDNEZOHgseVUuYoPNmP1QAKs1k+RACNHmrVixkoSEESQmJnqlvR07dvC///tnhg9PZv78ebI1zkB9+iSzd/8gdlg6YO4zEbslCKVpaAp0TUNDodAwjYyhQ5CNt4+VEGbVGNQhmLQONiKDzEa/hICkKaWU0UEIIYSvlJaWMmDAVObM+SVz585tcXvr16/n3Xf/yYQJg67WMJA3F6PoJo3SuBBKI8xomo7VYsGs3GhK1dlAqus6ZRUVhMfEYLFYcekKNDBrGoM62BifEIrNLLPs15KRAyFEm/bRRx9RVdWRsWPHtqgdpRSrV68mK2sNM2eOYeLEiX45m0HUzx5qobhLGG6rGbPSsZdXYQ1yYqpnFEfXdRRgtVgwaRpms4ZSCpeCvYXVnCpzMqNbOD0iZASohqRKQog2bfny1fTvP4UOHTrcdBtut5u//vUvbN26lltvnc6kSZMkMTBQRbSNwsQI3FYT6AqT0jCZrTicrnqvd+s6msmESfviLU/TNKwmDaumUexws/pUKTmF1f56CQFPkgMhRJt17tw5tm491aJyyXa7nd/97rccP76bu+6ax/Dhw70YoWiuimgbJQmhKDTQv6g/abFacSmt3qOcdV3H3MC6EJOmEaRp6Lpiw/kKSRCukmkFIUSbtXr1aiyWnjf9hl5eXs7LL7+E3Z7PPffcTs+ePb0boGgWe6iFks6exEDT664rMJtNYLLgdLowm+uuA3G73ViDghpsV9M0gkzg0BUbLlQQHWRu91MMMnIghGiTPOWS32fYsJk3dVRyYWEhzz77NHCFpUvvksTAYLpJo7hLGGhclxh4aFgtVhxuHf2adfa6ruPWFZZGdpR4EgQNXSnWnS/H7m686mJbJsmBEKJN2rt3LydO2Bk/vvm1Dc6fP8+zzz5JVJSbZcvupnPnzj6IUDRHaVwIbqu5zlTCl1msFhRmXE5n7X2exYgKaxOKX2naF2sQtlyq9FLkrZMkB0KINmnVqlVERaWRkpLSrOcdO3aMF154hh49Ili6dDHR0TE+ilA0lctqojLGBqq+EYNraZitVhwuNzVjB7qug8nU5C2nJk3DhEZOkZ1Sx/XrF9oLSQ6EEG2Ow+Fg9eoNjBmTft38843s2bOHV155kQEDurJ48V2EhYX7MErRVFVRQaBp0EBVnv/7yYP8/gFPDQurxYpbabhdnp0Lf/nBffzjvx9qVn8WDdxKcajI3qK4WzNJDoQQbc6GDRsoKgpl3Limn8C4efNm3njj94wZk8LChbdjs9l8GKFoKgVUxASjaHg6Ia5HMiW5F3E5HWgmE9rVbY2Ht23i8okjTP3qt5rVp3Y1EckpqsbdTusEym4FIUSbs3Llanr0GEu3bt0avVYpxXvvvcfGjR8wffpIJk+ejMkUuJ+boqODsNmaX5VRKaisdFFe7mz84gDispnRLRraDd6k4xJ7o+tuii6cIb5nH6xWK/YqOxvf+iPdUofQZ2Tz151YTBoVTkVhtZv4kPb3Vtn+XrEQotVyK88v67wqF/lVbipcOm6lMGsaYRYTcSFmgp2VrN9wgNtufbLx9txu3n77bfbty2LevCmMGjWShj+fGishIZSxYzsTFtayLXZXrtjJzLxAaWnrSBKcwWbPlIJ+o+QgGYDC86eI79kHs9nM0W0Z5J7+nMX/87ubOvvCBLiUIr/KJcmBEEIEolKHm0NFdnKKqqlwKnSlMGlanS1rNV+7XU7uefWv9LR2xam7sbrr/5TtdDr54x//wNmzB7njjlsYMGCAv15Os0VEWJk6tSsmU8sTl6ioIGbO7ME775xEv8EbbqBwBlsaXYjYsXtvAArOnQJA1xXbV/2VnoNH0bX/YMwmExXFRax+/r85tW8XkXGduPXRn9N72JgG29Q0DU2DvCo3ad58Qa2EJAdCiIBld+tsuVRJTpHdM/erPMO9Vk27Wr647luGUnClqpqIjrGUBrkpV8VEV9qIKw3FrL6YKqisrOR3v3uZsrLz3HPP7fTq1cvPr6x5EhMjrr5ZtTw5MJk0QkIsJCSEcuFChRei8y3donlOWWxoNSIKW1g44TFxFJw7icvl5OCm/1B47hQzv/UTz6gDGh/87inCYzry+DvZnNiznX/98jEe+9+1hEZGNdy3UlS62me9A0kOhBAB6WyZk0/Ol1PicGPCU+JWa+STs1t347A7CDWHYFIaSoOisGrKbU4SisMJc1gpLr7CSy+9hMVSyrJld5GQ0MVPr+jmRUd7d3GkriuiooICOjlQSlFVVUWVw4LSrbhcLpRSKF2hlGf0SCndM/qhFDFdE8k7c4KKsgqy/vk6vUZOomNiP0LDQrFXVvDZlg384O2PCQoOof+4qXRK6svhrRsZPvv2G8bhkgWJQggRGHIKq9lwoQJdKayahqmJn5irq6vRNAtWqxUNDc0z2IDD4uZsx1JCzjh57Znn6dDBxKJFd9OhQ6xvX4iX+OKMJ29MUdwMXXdTWVlFRUU5FRWVVFRUXL2VU15eQXl5OSUlZZSWluJ06kx4aBFJ4wbjqKwGTcNkMqFd/b/JZMFq9XzduVcK+z95h9OfZlCWf4k7/vs3aCaFzWYj98QxgoJDiIr7ophVp6Q+5J3+vNF4Le30gC1JDoQQASWnsJoN5z2JQZCp6UPpCkVVVTVWa2id52homBS4lU5RvIsRtw1nXGIK4eFSw8Cb3G537Rt9eXk5lZWVdd70S0vLKCsrp7S0DLdbx+VSuN0KXdcIDY0kIiKaiIhooqN7kpAQTXS05xbauxO6JYjgKNsNfxY6J/Xl0+pKNv7tN6ROnE1UQg8sFjdmkxlHVQW2L9WssIWFU1VafMPXZNI0Qi2Bu3PFlyQ5EEIEjLNlztoRg+YkBuBZYOh2Q0jI9QfsuJwuKisrsIUFM+COGVjPlkFl/cf7tiqlpfDMM3DoEBQXw+TJ8IMfwN13w4kT8Hnjn4wb43Q6a9/gv/yGX1FRTlmZ55N+eXkFbreO2w0ulwJMhIdHER7egcjIaKKjE+jZ0/OGHxUVRUxMDFFRUURERNywUFVxaDUXtfJG46zZsVBVVsLEpd/C7XYQEeFJCIJCwrBX1G3DXlFOUEhYg+0p5Zm+iA9p/rbRtkCSAyFEQLC7dT45X35TiQFAVVUVJpMVi6XuL3OHw05VVRVWqwWryQwaFHcJI+5kCabWvtbsoYfgG9+A554DXYfFi+HAAVi+3HP/DbhcLoqKCq8Z2i+/+qnf8+fS0nJKSkqprKy++qavcLnAbLYQHh5NeHg00dGxdOyYSHJyNNHRUURHe97wo6OjCQ8P98oCymCnBa0J20u79R/Cz9Z8BkBVZSVOV0VtIavYrj1wVFdRWpBLZMdOAOSd/pwhM29rsD0dz46FuHa4jREkORBCBIgtlyopcbiv2YnQdApFdbUDW1A4X+xgUFRX27HbqwkKsmKzBQEaSge31UxpXCjRua34cJ3sbNizB556ynMDKCsDkwmio2/4VF3XyczcwmuvfYDb7Rnet1pDrn7SjyY6uiNdu/YhNTWq9pN+zTB/SEiIV970m8rmNGNxazjNOmbVeL9KKRxOO6GhwbVJhS00jP7jprH+zVeZ/92fcGLPNi6fPEr/cdMabMelK8KDTMQGy8iBEEIYotThJqfIjommLz68lr3ajlIaQUFXpxSurnR3OB3YbEEEBVmpSRo0PG8glTE2IgqrMbeCrWr1Lpg/eBCWLYOf/rTZ7WmaxqBBo/nWtwbVvvEHarloDY3oymDyIypRqEZHEZxOJ0q5CAmJqHP/rY/+jFW/epynF4wjMq4Ti3/26wa3MSqlQINBHYIxy4JEIYQwxqGrdQyCbvIXcVV1FWazDZPZ7Hnjr6zE7XISEmzDUl91PAWYNCqjg4goqG5Z8C2g624qKiqvWcBXM5fvuZWVlVFSUkbHjkvp0WMEdeo6dOkCq1bBY49BWBhUV8OZM9CvX6P9apqJbt26U23cS2+W6EobheFVKA20RnYWOhx2gqxmLOa6b29h0R2499nXm9SfS4FZ00jrEJgJkz9IciCEMJRbKXKKqkHRYB2DN/7r6xRfvsD331p73WO/f+hOnC6dr/36nyilqKgoR9fdBIcEY7HU/ytOwzOnXBETTHhBtdcLJrtczmsW8F07l+/5v2fVfillZeW1w/o1i/hqVu5HRsYQE9OH7t2jSEjoef1Q/ty5sGMHpKd7koOgIPj+95uUHLQ2VreZ6EobRWHVVw9gqv9vTNfduFwOoqJCb7ovXSl0FEM7BBMZ1D6nFECSAyGEwQqr3VQ4FZYb7Lvv1DOZU/t24nI6sFi/2I3wWfYGLhw7xILHf4PFYqG8vAxQhISENHpUs6YUukXDZTNjtbubEKnCbnfUfqqvrKyoTQDKy8spL69ZuV9KZWUVLpd+9Y0fNM1cu4gvKqoDsbHd6N37i+16NfP64eHh9R76FBdXT60Dsxmefrr+UBct8kw7LFoEv/wlpKQ04fUFtrjSUMptThwWNyZVf4LgsDvQNJ1gW/BN9aGUwqkU0UFmxifcfILRFkhyIIQwVF6Vq7bYUUPieyaj624Kzp+mc1JfwPOLfMObr9Ct/xB6DZtARUU5Jg2CQ4IxmZrwie/q1IIz2Iy7pGZvfkWdT/mVlZ5P+WVl5RQXl1Bd7bhmjz5YLDbCw6OIjIwmMrIDnTv3IiXFs2r/2jd+fy/iY8UK//XlJ2ZlIqE4nLMdS9E1dX2CoBQOh52Q4BvXQ2iIUgqHrjCZNGZ0C8dmbp/1DWpIciCEMFR+lRtTIzsUOvX07GEvOHuqNjk4uHktl08eY+HPX8HtcmG2mAgJCUbTan6pq9q96rW3OqV3FaYgC9n797DjrQ+v2a6nCA4OJSIihrCwKGJiOtO9exQDB167Rz+aqKhogoNv7hOquDlhDiudi8O4HF1xXYLgdLnQlZOQ0Ohmt1ubGGga07uG0SOiZSdftgWSHAghDFXh0q+erthwchCX6Dl1L/9szal7Ohv+9/ckDh5Jl5QhKN3JJ6+9wJmcnVRXlBHbLYnJ9z5KQp8BXxzXo66etGcyoWkmTCYTZrOFpH4D6HVPYp0tezdzxK+vKeWbMsqtTUylJyH7coLgcNixWExYG1hn0hD96lSCyeRJDAbFSsIHkhwIIQzmbsLBNiHhkUTExpN75nPKK8rZt+59ck99zuKnf+hpw+kmvGNnFj/5FyLjOnN863re/9UP+dZf1xAcGn41Ibh+dMKt6XTumkD3kMBexGe3e7c9TfN+m/4UUxlMkMvMpehyHBY36Aqn005kRDA3SjKvpZTCpUDHs8ZgRrdwGTG4RvueVBFCGK6hfeQKhdPlpKKygivFV4jq3J1LJ49TVlrN1uVv0mf0VLr2ScNs0ojuGMfM+79Pl6RkwsPDGTpzAZYgGyW5FzBbLLWH9dTH1ITCOkbLzfXUNvJ2m61ZmMNKUn4UHSqCcblcBIUGY7KF4L46ZVQfpRRupbC7dRxKoWkwNDaYZX2jJDH4EkkOhBCGCrOYrhY+UrjcLiqrKikuKSY/v4DCwmLKyuy43Rbie/aj5PIFzuzKoDT/IuPu/iY2mwWrVcP+pY/BRRfOUFVWTIeE7jfsW0PDrAf+r8GCAjh92vNnXW/ZDTwVlh0Ow16O15iViU7FYbz/4z9Svj+LiCATbgUO3bOGoNqt195q7nMrCA8yMa5TKPenRDNNFh/WS6YVhBCGyc3N5czB49g79KKk3LPnH0yYzVas1nCsFgtmiwVN0+jSO4U9H1ay4W+/of/E2XTo2gObzYau65RV2FHKsyPAaa/m3y/8iPGLHiQ4PLLBvtXV/4IdrWMv+4EDcP48dOrkKWlwM6qq4NIlKG/8HKNW48SJE5w6vJEX0qYxvn8MhdVu8qtc5FW5qXTpuJTCcvV0xfgQM3EhFmKDze228mFTSXIghPCb0tJStm3bRlZWFpmZOzl6tIgOiYO55ze/xGoNIzjYguVqMvBl1566N+6uB7GYISjI6qmIWFWNw27HYjGz6pnHiEnozqSl32o0Hg2NYGfr+TV45YrnJr6QkZFB9+4wYcIETJpGfIiF+BALaUYH1sq1nn8VQohWp7q6ml27dl1NBrazf/95XK4YOnZMISXlbh54IJWU/inkW/WrB+s0PLxbe+qeUpSWlRIcbEbDs8gw2GaloqKKD197Ek3TuO0Hzza6113XFFa3CZurdYwciOtVV1fz6acf89hjt9VbPErcPEkOhBBe43K52L9/P1lZWWRnb2PHjs+prg4nMrIXffvOZunSNFJTU4mLi6vzPGdlZdMP1nG50HATFPRFBTubLZj3fvMTSovy+Mozf8XcyHY2dXWDY3RlcKP9icC1c+dOXK6T3H33b4wOpc2R5EAIcdN0Xefo0aNkZ2eTlbWFLVsOUVYWTHBwN/r0Gc2CBV8nNTWVrl273vCTfLMO1rHbsQWZsVxTHrmsIJeDGz/AbA3ixcXja+9f8uQf6TFgxHVtKM2zSyG6sv0erNMWZGZuYMqUfnTt2tXoUNocSQ6EEM1y5swZsrOzyczMIitrPwUFYDZ3Jjl5FNOn30Fqaio9e/Zs9GyDazX9YB0dt9tBeFhInftjOnXhibX7KCmtIDQsErO54V9tNQsRYyqDsbplSqG1unjxIidPZvHTnz5mdChtkiQHQogbysvLY8uWLWRnZ5ORsZuzZyuBjvTsOYIRI75PWloaycnJBN3sEvqrmnSwjsOB2Uy9fVmtVqwWz7bG0ND6f7UpFLqmCHKZiStt3wfrtHaZmZnExlYwa9Yso0NpkyQ5EELUUVpayvbt28nKyiIjYwdHjxai67F06TKIlJQHuPXWNPr160doqHffXJt6sE54SFC9iYMGBAfbKC2zo+sh1y1Qq0kMNDQSisNvuPhRBDaXy8W2bR/z1a/e0uKkVNRPkgMh2jnPiu9Pr+4o2Ma+fedxuaLp2DGFfv0W88ADaaSkpBAdHe3zWG50sI6rZiGiLaTB5wcF2bCYq3E47AQHf3HdtYlB5+IwwhxSDa8127t3L+Xln3HPPT82OpQ2S5IDIdqZmh0FnkWEW+vsKOjXbxZLlnh2FMTHxxsSX0MH69gdDoKsJiw3WE9g0jSCg4Mor7RjswWjadp1iUFN+6L1ysrKYMSIzvTrF9hnYrRmkhwI0cYppWp3FGRmZrN162eUlgZhs3Wjb9/R3Hbb/aSmptKtW7dGawP4S30H67hdDsIiGn9jt9lsVFY5cDqdWGxWFJ41BgnF4TJi0AYUFhZy6NB6Xn75q0aH0qZJciBEG3T27NmrIwNZZGbuJz9fYTLFk5w8mqlTF5KamkpSUlKzdhT4W83BOvmRleRZywgKs4E1CLfyHApTXx7jOfnZTHBYKC63jqY8iUZcaaisMWgjsrOzCQsr5NZbbzU6lDZNkgMh2oD8/Hy2bNlyNRnYzZkzNTsKhjNs2PdIS0ujT58+rW7xVs3BOn/79Uvc+Y2RhA0cRYUbXHjqIejA1b2PmL74I6Emxa5//4ch3abSuUcfA1+B8CZd18nO/oQFCyYQHh5udDhtmiQHQrRCNTsKPNsLd3DkSAG63oGEhEGkpHydefM8iwi9vaPACEePHqU6L4dbesykb2czhU7IdyrynIpKN7gUWDQINUO8VSPOqhFjCebEhd2s2+ug77clOWgrjhw5QlHRPpYsednoUNo8SQ6EaAXsdju7du26um7As6PA6YwiNrYf/frdxde/nkb//v39sqPA3zIyNjN2SCwpKSloaMQHQXyQ1sjBOmbmz53J5l+soLDwHmJjY/0UrfCljIxN9O0bwogR11e9FN4lyYEQAcjlcpGTk1Nblnj79uNUV0cQEZFEv34zufvu1NodBYGyiNAXysvL+fxwFg//Ym6zz0CYMGE8/ZNWsX79ehYvXuyjCIW/lJeXs3fvOn7+8zva9M98oJDkQIgAcO2OgpozCkpLgwgK6kLfvqO59davkZaWRteuXdvV6XNbt26lW3w1EyaMb/ziLwm2BbNg3mSefvUTFixYgM0m5yi0Ztu2bcNkOsddd91ldCjtgiQHQhjk3Llz1+wo2EdeXs2OglFMmbKAtLQ0evbsiaWREwbbKqUUW7ds5N75Q4iKjLqpNqZPT+eNtz9my5YtTJs2zcsRCn9RSpGZuY7Zs4fRsWNHo8NpF9rnbx0hDFBQUFC7oyAj41POnKkA4khMHMbQod8jNTWVPn36yCfcq06cOIFefZypU793023EdezI3BnDeOvDNUydOlWGo1up06dPc+HCDl566edGh9JuSHIghI+UlZXV2VFw+HD+1R0FA0lJ+Tpz56aSkpJCWFiY0aEGpM2bNzNyQDRpaTdeetiYWbNmsvz95zh06BADBgzwUnTCnzIzM+nSxcWUKVOMDqXdkORAiPqUlsIzz8ChQ1BcDJMnw5NPwttvwwcfgNsN//oXWOtW3FNKcfz4cR577Ifs3XsWpzOaDh36kpJyJ/ffn0pqan+io2OMeU2tSFVVJUcPZXL/f6dj0lq2xqJfv75MGtWddevWSnLQCtntdnbuXMt3vnNbQBftamskORCiPg89BN/4Bjz3HOg6LF4MK1fCkSOwYsUNn3r6dBm6PqPd7CjwhW3btpMQU86kSRNb3JaGxtw5M1n7+N+4dOkSCQkJXohQ+MuuXbuw24+zePFzRofSrrSfZc9CNFV2NuzZA089BenpMHMmnD0LdjtUVsJdd8FLLzX49IEDh/Gtb32bqVOn0qlTJ0kMbsKWrI3MnTGIGC+NsowZM4bB/UJZv369V9oT/pOVtYlJk3qTmJhodCjtiiQHQnzZwYOwbBmsX//FbccOuHLF8/jKlZ5k4dChep6sSTLQQqdPn6a6/DDTp03xWptWi4UF86ZzOGcdlZWVXmtX+FZu7mWOH89gyZK7jQ6l3ZHkQIgv69IFNm+GigrP19XVcPQoRETA2LGe+8aMgRMnDAuxLcvIyGBY/3AGDRro1XanTp1Cj/gKMjIyvNqu8J2MjExiYsqYM2eO0aG0O5IciHbN4XCg63rdO+fOhdGjPVMK6emwcCGcOwcjRnjWHAAcPgzduvk/4DbObrdzcP8mbp0zGbPJu4vPoqOiuXX2aLZmrcHtdnu1beF9brebbds+4a670mV7rwEkORDtisPhYOvWrTz//PPMnbuAf/7zvevfKMxmePpp2LbNM6Xw0UeeJGHgQHC54I47oKoKhg0z5kW0YTt37iQ+soRJkyb5pP1Zs2YSYT3L3r17fdK+8J6cnBxKSw+yZMkSo0Npl2S3gmjT3G43Bw4cuFprIJsdO45TVRVGWFgiKSnpJCePxWRqxj+DX/7Sd8EKsrI2cNu0NDrG+qYKXs/EnkyfkMyGDWvl8J4Al5m5mSFDOra4zoW4OZIciDalps6ApyxxNtnZhygpsRIUlECfPqOZN+9e0tJS6datOyaTia5dQdYPBobz589TXnSQ6dO/6dN+5s6ZxQcb/sCZM2dkBXyAKi6+woED63j+eTkwyyiSHIhW7/z587VliTMz93H5sguTKZ5evUYyadKtpKWlkpTUq92eUdBabN68mUF9Qxg6dKhP+xk2bBgj0qL45JOPefDBb/i0L3FzsrO3YLPlcvvttxsdSrslvy1Fq1NYWMiWLVuuThV8yqlTZSgVS2LicAYN+i733JPW5DMKXC7vxqaU99tsD5xOJzl7N/HE9yZgMfv215LZZObWeTP40dMfUFKymKiomzvUSfiGUors7HXceus4IiMjjQ6n3ZLkQAS88vLy2jMKMjN3cOhQLrregc6dB5KSch+zZ3vOKAgPD2922wUFkJzsvVg1DfLzvddee7Fr1y5iw4qYPHmKX/qbMmUyff/+bzZu3CifTgPM0aNHyc/fw9KlzxsdSrsmyYEIOA6Hg08//ZQtW7aQkbGVvXvP4nBEEhPTh5SUhXzta56yxDExLa+eV1DgucXGer6+2fUHSnn+X1oKly61OKx2JytrE7On9qNzp05+6S8sNIzb5k7k139dy7x587B+6YwMYZzMzAySksyMGTPG6FDaNUkOhOHcbjcHDx6ss6OgsjKUsLBE+vWbxqJFaaSlpRIf7/1SxErBzp3Qsyd07gzBwTeXINjtcPkynD7tOZNJNN3ly5e5kruX9OkP+LXfGTNm8Oa/NrJz507Gjx/v175F/SorK9m9+2Mef/wOqTRqMEkOhN8ppfj888+vThNkkZ198OqOgi706TOaOXO+QlpaGt27e3YU+Jrb7Sl2KAUPjbF582YGJNsYPny4X/vtkpDALdMGsHrjR4wbN07ejALA9u3bgbMsWrTI6FDaPUkODOZWisJqN3lVLvKr3FS4dNxKYdY0wiwm4kLMxIdYiA02Y27Fv7wuXLhAdnb21dGBvXV2FEycOJ+0tDR69ZIdBe2Ny+Vi7+5N/ORb47Fa/D+0P3vWTFZ/9DLHjx+nb9++fu9f1JWVtYH09AF08tP0kmiY/CY2SKnDzaEiOzlF1VQ4FbpSmDQNvWbyGmq/NmkaYVaNQR2CSetgIzIo8M80Lyoqqt1RsHnzTk6fLkfXY+nRYyiDBn2Xu+9OpW/fvlIWtZ3bs2cPUcF5TJky2ZD+BwwYwNih8XzyyceSHBjs7NmznDmzhaefftzoUASSHPid3a2z5VIlOUV23EqBAotJw6rVnOZXd3RAKdCBcofO1txKduRVMaiDjfEJodjMgVP9uqKionZHQUbG9mt2FAwgJeVrzJrVn/79+9/UjgLRdmVmbiJ9Qm+6dulqSP8mzcT8uTPY+PN/UVBwDx07+qYyo2hcRkYGnTs7mDZtmtGhCCQ58KuzZU4+OV9OicONCY0gTUMz3XiqQNM0zIDZrKGUwqVgb2E1p8qczOgWTo8IY1ZZOxwOdu/eXbujYM+eMzgckURHJ5OScjv33efZUdChQwdD4hOBLz8/n/zznzLzsXsNjWPChAmkJq1iw4YNLF4sFfmM4HQ62bHjY77xjbmycyRASHLgJzmF1Wy4UIGuFFZNw3QT6wc0TcOqga6g2OFm9alSpncNY1BssA8irsvtdnPo0KGriwiz2bbtKFVVYYSGJtKv31TuuiuVtLQ0OnXy/o4C0TZlZGSQ0svCqFGjDI3DFmRjwbwpPP3KWhYsWCBTXQbYvXs3VVVHueceObskUEhy4Ac5hdVsOO9JDIJMWovfPE2aRhDg0BUbzlcAeD1BUEpx4sQJsrKyrp5RcJDiYgtWa8LVHQVLSU1No0ePHn7ZUSDaFrfbze5dG/nhg2OxBQUZHQ7p6dN54+21ZGdnM336dKPDaXcyMzcxdmwPevXqZXQo4ipJDnzsbJmzdsTAG4lBDU3TCDJdTRAuVBAdZG7xFMPFixfJyspiy5YtbN68h8uXXWhaHL16jWTChHmkpqbSu3dv2VEgWmz//v2EWS4xefJDRocCQMfYjsybOYy/v7+GqVOnSsLrR/n5+Rw5spHXXpNzLgKJ/Jb3Ibtb55Pz5V5PDGrUJghKse58Ocv6RjVrkeKVK1fq7Cg4daoMXe9Ajx7DGDjwOyxe7NlREBzs+2kL0b5kZmxi6thEEnv0MDqUWrNmzeRf7z3HoUOHGDhwoNHhtBuZmZlERZUwb948o0MR15DkwIe2XKqkxOG+ZieC92mahhXPGoQtlyqZ1q3h3QAVFRXs2LGjzo4CtzuGTp3SSEm5l5kz+9O/f6rsKBA+VVRUxKWzO5n97XuMDqWOvn37Mnl0d9avWyPJgZ+43W62bv2EO+6YSkhIiNHhiGtIcuAjpQ43OUV2TNzc4sPmMGkaJgU5RXZGxIfU1kFwOp3s3r376iLCrezefQaHI4KoqGT691/Avfd6koHYmoMFhPCDzMxMkrvD6NGjjQ6lDg2NuXNmsibzb1y8eJEuXboYHVKbd/DgQYqLc1iy5I9GhyK+RJIDHzl0tY5BUAOJwRv/9XWKL1/g+2+tve6x1x66C81s5uHf/6vJ/Vk0z/TChsNnuLRlLVlZW9i27SiVlaGEhHSnX78p3HVXKqmpaXTu3Fl2FAhDuN1udu7YwGP3jiYkOPA+KY4ePYahKctZv349X/3qV40Op83LzMwgLS2KQYMGGR2K+BJJDnzArRQ5RdWgaLCOQaeeyZzatxOX04HF+sVq7c+yN3Dh+CG+9qu/NKEnhcvtxuFw4HA4UCYL2wvL+Mdzm+mVNIJbbllC//6p9OjRA7M58Ksqirbv4MGDBHOByZO/ZnQo9bJaLNw6dzo/e3EdFRV3EBYWZnRIbVZpaSn793/CM8/cJR9WApAkBz5QWO2mwqmw3KDAUXzPZHTdTcH503RO8pRtVUqx4c1XSBo0kuQR4+p9nlv/Ihmw253ougJMWMxBWIIsxHRO4IXX3iJMyV5tEXgyMzczcVQXevVKMjqUBk2bNpW//u8HZGRkMGfOHKPDabO2bNmC1XqJhQsXGh2KqIfs1/GBvCqX50yEG1zTqWcyAAVnT9Xed3DzWi6fOkb6/Y/U3qcrnWp7NaVlpRQUFJCfX0RJSSUOh4bVGkZYWDRRUR0Ij4jAZrOhmUw4g9V1/QlhtOLiYs6d3M6cWVPQCNxPilGRUdx6yxi2Za/BLedv+4RSiuzs9cybN4qYmBijwxH1kJEDH8ivcmNqZIdCXGJvz7VXkwNd19n4v6/RZ8QEEvoNoKy8jA9/+ySf79qCy15NZFwCk5Z9h35jp2G1WNDq2YetXf2VWx3khiqfvDQhblp2djZJXVyMG1f/qFggmTVrJm+veoI9e/YwcuRIo8Npcz7//HMuX97F0qVPGx2KaIAkBz5Q4dKvnq7YcHIQEh5JZGw8+edOApCz4UPyzp5g/vefoKSkAqVMjJh/L7Me+hnBoWFcOn6I//vvr9N76BiCIqMbbFehcJt0774gIVpI13V2bNvAt+4ZRWhIqNHhNCqxRyLTJySzfuPHkhz4QEZGBj16wPjx440ORTRAphV8wK2aNqwf3zOZgrOn0N1uNr71B1LHTyeqaxJmUxBRUVF075dGaHgEJpMJTdNwuZyUFeY22q6uybSCCCxHjhzBqp8x7GjmmzF3ziyqruzh9OnTRofSplRVVbF798csXXq7VKIMYPI34wPmJq68jU9MpuD8afZ+8h5XLp5j2n3fwel0Y7FaqRl1+OjVX/LMbUP566OLSBo8mviejZ85b1KBO58r2qfNmzcxblgn+vTpY3QoTTZ06DBGDIhm3bpPjA6lTdm5cycu10k5ATPASXLgA2EWU5MKH3XqmYy9qoKP//xrBkyZTYeuiYCG9ZqzC+Z85+f8+J1PWfbsG/QaNr7RLT8aGmZd/lpF4CgrK+PUsS3cMmtyQC9E/DKzycSt89I5dXQjxcXFRofTZmRlbWTatP5SZCrAybuID8SFmNGVQjUyvRCf5NmxUFVWwvT7vovd4cBksmD60vkIJrOZpCFjOLVvG8d3ZjTYnrr6X7BDahqIwLFlyxYSOzta5fzy5MmT6dNdZ9OmTUaH0iacP3+ekyezWLLkbqNDEY2Q5MAH4kMsmDSNxpYF9kgdwtMbPuPJdQfo2C0Rh8OJxRJEQwsZdZebK5fO3bBNDY1gp6wzFYFBKcXWLRuYP2sYEeERRofTbGGhYSyYO4FPt6/B6XQaHU6rl5mZSceOlcyaNcvoUEQjJDnwgdhgM2FWDZfe9IWBbt2Ny6XXHodcXV7KgU0f4qiqwO1y8VnmWk7n7KDHgBENtqFrCotbw+aSkQMRGI4fP47mOMm0qVOMDuWmzZgxg9jwPHbs2GF0KK2ay+Vi+/aPufvuW7BaW3a8vPA9+YjpA2ZNY1CHYLbmVqKUalJpUIfDAZhqkwM0jb1rV7Hm90+CUsR06cHtP3qBzr1T6n2+wpOIRFcGt6p5XdG2ZWRsZszgDqSk1P9z2xokdE5gzrSBrNzwEePHN77uR9Rv7949VFQc5p57fmJ0KKIJJDnwkbQONnbkVeFSYG3C7xKHw4HZbK3d2hMcFsFXf/Vmk/tTmmeXQnSllE0WgaGiooJjn2XyjZ/NxqS17kHK2bNnsuqj33Ds2DH69etndDitUmZmBiNHdqFv38Z3XAnjte5/sQEsMsjMoA42dNTVgkg3orDbnVgsNzfUVrMQMbrShtUtUwoiMGzbto1uHauYMGGC0aG02IABAxg7NJ716z42OpRWqbCwkEOH1rNsmWxfbC1k5MCHxieEcqrMSbHDTRA0OBzpcrvRdfXFlEIzKBS6pghymYkrDfzKc6J9UEqxJXsDS+cMIjoq2uhwWkxD49Z5M9n4s3+Sn38PcXFxRodkqNBQ6NYNoqOhKXWMCgp03n33KUaPHurz2IR3SHLgQzaziRndwll9qhSHrggy1Z8geNYbmJudHNQkBhoaCcXhmJUMBInAcPLkSVyVx5g+7VGjQ/Ga8ePHk9ZrJRs2bODuu9vvVryoKBg3zpMUaJrn1hhPMtW+E6rWRt5NfKxHhJXpXcMwaRoOvf7aB3a7HYvF2qyFTtcmBp2LwwhzyOpfETgyMjIYMSCatLQBRofiNbYgGwvmTSFn98dUV1cbHY5hUlM9iUFNciDaJkkO/GBQbDDTu4VhMmk4VN01CAqFw+Fq1nqDLycGMZXBvghbiJtSVVXFkYMZzJs9EXMbq52fnp5Ol9hStmzJNjoUQ5hMEBvbtKkE0brJX7GfDIoN5o6kSKKDzDiVwnl1FMHpdKKU1qQphZqkoGaNQY+CSEkMRMDZvn07naLLmDRpktGheF1sh1jmzRhK5uY16Hr7O/3UYpHRgvZCkgM/6hFhZVnfKIbGBqNp4FAKh1thtgRhNtf/V1GzE8Gt6Z7RAgUdKoJJyo+SqQQRkLZkb2LujIF0iOlgdCg+MWvWTII5ycGDB40ORQifkQWJfmYzm5jWLZwR8SEcKrKz9uAprGEx6CbQriYCNbSr92hoWN0moiuDZbuiCGhnz56hqvQQ06d+2+hQfKZP3z7MnNKHbVs3MmzYoCY9R9c9tzattBSeeQYOHYLiYpg8GRYuhCeeAKVgwgT40Y+MjlI0kSQHBokMMjMoQrH461/jrvt+zZCJI6gOcuM2eUYITMpzumKww0yw04LNZZbKhyLgbd6cwZCUcAYPHmx0KN4VbIOQIDCb0YAnXn6+2U2Ul8PJk3DmjPfDCwgPPQTf+AY895wnE1q82POi33/f8/iiRVBWBhGt74yN9kiSAwPt2LGDqsow+nXtTXRVMFQZHZEQN89ut3No/2Z++YNJmE1taHQrxAZhIZ5Pvy0QFgaDBnnm7E+f9k5oASM7G/bsgaee8tzAkwjUrFx0u6FTJwgJMS5G0SySHBgoKyuLmJg+dO7c2ehQhGixXbt2Eht+hcmT29hCxJCrJclbuBKv5um9e7fB5ODgQVi2DH760+sf+/e/4cUXYcoUz4pG0SrIgkQDbdq0jf79R8lBLqJNyMrcyC3T+hPXsQ0Vu6nZ0O9FoaEQFOTVJo3XpQts3gwVFZ6vq6vh6FHPn2+/HbKyIDcXDh82LETRPJIcGCQ/P5/Dh/NJTU01OhQhWuz8+fOUFh4gffoUo0PxLh/l7W2uTsDcuTB6NKSne24LF8K5c+BweB43mSA8HIJl63VrIWM8BtmyZQu6HivJgWgTMjIyGNw3hGHDhhkdijCC2QxPP339/R98AG++6VmgOGYMJCX5PTRxcyQ5MEhmZiZduw4mOjra6FCEaBGn00nO3k384tEJWMzt6FdKfVv3fvEL+M53oKAApk+Hb33L6CiNNX++5yZanbY2uNUqKKXYtGkXKSlDjA5FiBbbvXs3HUILmTx5stGh+NdDD8Hs2Z5PxxkZnjn2NWtgxAhYvRpycqCw0OgohbgpkhwY4PTp01y44CAtLc3oUIRosazMjcyY3JfOndrRrptrt+6lp8PMmXD2LJw6Bf37e67p0wf27TM0TCFuVjsaAwwcmZmZaFoc/fr1MzoUIVokN/cyhZf2MGP6140Oxb8a2rq3Zg1s2wbjx8OOHZ59i21Im6/yKGrJyIEBMjOz6NVrFCFSEES0cps3Z5CWHMTIkSOMDsW/Gtq6N3OmZyph8WLP8YUdOxoapre5XFBZaXQUwh8kOfAzt9tNZmYO/fsPNDoUIVrE5XKx99ON3HrLOKzNOHK8TWho657Z7CkfvHw5WK0wfLjRkXrdqVNGRyD8QaYV/OzAgQOUlAQxYICsNxCt2969e4mw5TFlyhSjQ/G/hrbuXbgAjzzi2df/4INtslzwyZOeao+9eknZgrZMkgM/y8rKIiioC0lJvYwORYgWyczcRPr4JLp17WZ0KIGja1fPToU27sQJz81m8+RBn3/+OX/+84/5y19+wtChQ40OT3iBTCv4WWZmNv36jcEiNcZFK5afn0/e+U+ZNXOq0aEIA9ntUFUFH364Hqu1kCFDhhgdkvASSQ78qKqqim3bjpOaOsDoUIRokaysLFJ6mhk1apTRoQiDVVZWsnv3x3zlK3fKOTFtiCQHfrRr1y7s9kgpmSxaNbfbzc7t67ltzhhsQTajw/GtFh7T3BCXyyfNGmLbtq1o2jnuuusuo0MRXiTJgR9lZmYSFdWbrl27Gh2KEDctJyeHcOul9lERUVfgdnstSVDKU2m5LSUHWVkbmTFjIPHx8UaHIrxIkgM/ysjYTkqKHNEsWrfMjE1MHdODnok9jQ7FPyqqPP9vYYKg654m2tKpxWfOnOHs2a0sW7bE6FCEl8mqOD8pKiriwIFL3HuvTCmI1uvKlStcOLODnzx8t9Gh+I/DBSXlYAsCi9mzj68RLreLc+cvYwvpQHh4BLoOV654KiyXlvohZj/JzMwkIcHJ1KmyMLWtkeTAT7Zs2YLbHUNqqtQ3EK1XZmYmyd0Uo0ePMToU/3K5wVXV5MstwIdvv83f/l3IL/7nRUymtjdI63A42L59DQ89NFd2X7VBbe8nNkBlZWXRufNAOnToYHQoQtwUXdfZuX0Dt90ymtA2WNzH22bNnEmIdooDBw4YHYpP7N69G7v9OPfcc4/RoQgfkHTPTzZv3kX//vcbHYYQddhsEBHhKWTTmNOnzzJ1YjxzbrsVrFd/dbi8t1ivrenTJ5kpYxLZsH4tgwcPNjocr8vM3MS4cT1JSkoyOhThA5Ic+MGZM2c4fbqCuXNlSkEEBrMZhg2DTp2aNIUOwOjRPVm8+EunECoFdieUy2k8X6ahMXfOTD7a/FcuXrxIly5djA7Ja3Jzczl6dBPf+943jQ5F+IhMK/hBdnY20JGUlBSjQxECgIEDm5cYNEjTwGaFMCmyX59Ro0YxpH8Y69atMzoUr8rKyiIqqoS5c+caHYrwEUkO/CAzM4ukpJGEhoYaHYoQmM2eE4e9tqNW0zwr+cV1LGYLC+ZN58iBdZSXlxsdjle43W62bv2Eu+6aLsfOt2GSHPiYrutkZOyjf/9BRociBOA5Sc9s9nKjJpMXs422ZerUqfTsVEVmZobRoXiF52TZA7IQsY2T5MDHPvvsM4qKzKSlyXoDERjkPdy/IiMiWTB3LFuz1uB2u40Op8WysjIYMCCagQMHGh2K8CFJDnwsMzMTqzWB3r17Gx2KEMIgM2fOJMp2nt27dxsdSouUlJSQk7OOr3xlkVR6beMkOfCxrKwt9OkzGqvVanQoQjSutBR+/GOYPx8mToSf/hSqq2HZMli4EB57zOgIW6Ue3XswY1I/Nm1cY3QoLbJlSzZW6yUWLlxodCjCxyQ58CGHw8HWrUfliGbRejz0EMyeDR98ABkZcPSo5/+jRsE774DFAkeOGB1lqzTnlllUF+/n1KlTRodyU5RSZGWtZ9680URFRRkdjvAxSQ586NNPP6WyMlTWG4jWITsb9uyBp56C9HSYOdNzGMC5c1B5tY5BRQVERhobZys1ZMgQRg3qwCeffGx0KDfl88+Pk5e3m6VL5ZCl9kCSAx/KysoiPDyJbt26GR2KEI07eNAzfbB+/Re3HTtg6VLP/ydN8qxmbEPFfPzJbDJx67x0zhzfTHHxFaPDabaMjEwSEzXGjRtndCjCDyQ58KGMjK2kpIxqk4euiDaoSxfYvNkzOgCetQZHj8KKFXDrrZCZCR06wKefGhpmazZp0iT6JSo2btxkdCjNUlVVyaefrmXp0tvl91k7IX/LPlJaWsrevedIS5P1BqKVmDsXRo/2TCmkp3sWIJ47B7oOMTGea6KjoaTE0DBbs9CQUG6bM4HdO9bidDqNDqfJduzYia6fZvHixUaHIvxEzlbwka1bt+JyxZCammp0KEI0jdkMTz99/f0lJfDNb8Jbb0FUFDzyiP9ja0NmzJjB3/6xge3btzNx4kSjw2mSrKyNTJ+eSkJCgtGhCD+R5MBHsrKyiI9PJS4uzuhQhGiZqCj417+MjqLN6NypM3PSB7P8k4+YMGFCwNcLOH/+PKdOZfHEE/9ldCjCj2RawUc2bdpBSspwo8MQQgSg2bNmYnYe5ejRo0aH0qiMjAzi4qqYMWOG0aEIP5LkwAcuXrzIiRMlpKXJlIIQ4nppaamMG9aZ9esCe1uj0+lk+/aPufvuOVLIrZ2R5MAHsrKy0PVY+veX5EAEHrsdlPJyo0r5oNG2S0Nj/tyZXDqTTX5+vtHhNGjv3r1UVh6RQ5baIUkOfCArK4vExOGEh4cbHYoQ13E64coVzyYEr1AKHC4vNdZ+jBs3jgHJVtavX290KA3KzNzEqFFd6dOnj9GhCD+T5MDLlFJs3ryH/v0HGx2KEA3at8+TJIAnSai5OZ1u3C73FyMBjd0AdAUVlYa9ltbKFhTEgnlTOLD3E6qqqowO5zoFBQUcPryBZctk+2J7JMmBlx09epS8PCUlk0VAq6iAjRs91ZJPnoTTp+HgwTKW/3MtBRcuQrWj8VuVHUor4EqpJ0EQzTZ9ejpdOpSwZcsWo0O5jqfC6xXmz59vdCjCALKV0cuysrIwmzvLMJwIeC4XXLjguQG89da7BNvXc/es0VAReJ9k26LYDh2YP3M4b/z7I6ZNmxYw1QfdbjdbtnzCwoWTCQsLMzocYYDA+ElsQzIzs0lOHkVQUJDRoQjRZA6HgwP7NjH/lglYzPKZwZ9mzZpFiHaKAwcOGB1KrcOHD3PlSo4sRGzHJDnwIqfTSXb2IVJTBxodihDNsmvXLjqGX2HSpElGh9LuJCf3ZsrYRNavW2N0KLUyMzNISQlj2LBhRociDCLJgRft3buXigo5olm0PpmZG5k9NYVO8Z2MDqXd0dCYe8ssSvJ2caFmjsdAZWVl7N37McuW3Rnw1RuF70hy4EVZWVmEhHSnR48eRociRJNdvHiRkvz9pE+fYnQo7daoUSMZ2j+cdevWGR0KW7duxWK5yJ133ml0KMJAkhx40ebNW0hJGYPZbDY6FCGaLCMjg0F9gxk2TMp9G8VitnDbvOkcPbie8vJyw+JQSpGdvYFbbhlGhw4dDItDGE+SAy8pKytj9+7TpKbKlIJoPZxOJ3s/3chtcyZgtchCRCNNnTqVpIQqMjIyDIvh5MmTXLiwnaVLlxgWgwgMkhx4yfbt23E6o2W9gWhV9uzZQ0xYIZMmTTY6lHYvMiKC224Zy7bsNbhcxlSczMzMoFs3vdUcJS18R5IDL8nKyiI2th/x8fFGhyJEk2VmbmTmpGS6JCQYHYoAZs6cSXTwBXbv3u33vu12O7t2fcLSpQtkalRIcuAtmzdvJyVlhKzuFa1Gbm4uhRd3M2O6jBoEih7de5A+sS+bNq71e987d+7E6fycxYulXLKQ5MArcnNzOXq0SKYURKuSkZFB/15WRo4caXQo4hpz58zCXrKfkydP+rXfzMyNTJrUh+7du/u1XxGYJDnwguzsbHQ9ltRUOaJZtA4ul4vduzZx25zxBFmlmmcgGTx4CKMGdWDduk/81ufFixc5cSKTZcukIqLwkOTAC7KysujWbQiRkZFGhyJEk+zfv59I22WmTJEphUBjNpm4dd4MzhzfTHHxFb/0mZWVRYcO5cyePdsv/YnAJ8lBCyml2LTpU1JThxodihBNlpGxienjkujeTYaQA9GkSRPpl6jYsGGjz/tyuVxs3bqWxYtnyZkwopYkBy104sQJLl1yyZSCaDUKCwvJPbeTmTOmGB2KaEBoSCi3zZnInp0f43Q6fdrX/v37KS//TA5ZEnVIctBCWVlZmEzx9OvXz+hQhGiSzMwM+vTQGD16lNGhiBuYMWMGcRH5bN++3af9ZGZuZtiwePr37+/TfkTrIslBC2VkZNK79yhsNpvRoQjRKLfbzc7tG1kwZwzBtmCjwxE30LlTJ+akD2LThv+glPJJH1euXOHgwXUsWybbF0Vdkhy0gMvlIjv7EP37yxHNonU4cOAAoeaLTJkyxehQRBPMnjUTs+sYR44c8Un7WVlZhIYWctttt/mkfdF6SXLQAvv376e01Cb1DUSrkZmxiSljutGzZ0+jQxFNkJqayvjhnVm/7mOvt63rOlu2rGPBgvFERER4vX3Rukly0AJZWVkEB3cjKSnJ6FCEaFRx8RXOn97OrBmT0ZBKnq2Bhsb8uTPJPZdNXl6eV9s+cuQIBQV7ZSGiqJckBy1i5lvfupfERDPdulHn1rUrxMQYHZ8QX8jKyqZ3Vxg7dqzRoYhmGDt2HAOSg1i/fr1X283MzKB37yBGjZKFqeJ6ckZrC3zve99t9JrqatixA0pL/RCQEA3QdZ3t2zbwyLKRhIaEGh2OaAZbUBC3zZ3Kk79bR9XttxMSEtLiNisqKtiz52N+9rM75TwYUS8ZOfCxoCAYMwbk358w0meffYZNnWXy5ClGhyJuQnr6dLrGlpCdne2V9rZt24amnePOO+/0Snui7ZHkwMdMJrDZIDbW6EhEe5aRsZlxwzqRnNzb6FDETegQ04F5M4aTnbkGXddb3F5W1gZmzRoiR8yLBkly4AdKQViY0VGI9qq0tJQzn29l7i1TZSFiKzZ79ixCtFPk5OS0qJ3Tp09z7tw2liy520uRibZIkgMh2rjs7GwSOzsZN2680aGIFujduzdTx/Zkw/o1LWonMzOThAQnU6dO9VJkoi2S5ECINkwpxfatG7l11jDCZfiqVdPQmDtnJiV5n3L+/PmbasPhcLBjx1qWLJmPxSLr0UXDJDloSGkp/PjHMH8+TJwIP/0pXLkCs2ZBcnLda3/yE1iwAH73O0NCFaIhR48eRXOeYurUKQZHIrxh5MiRDEsNZ926dTf1/E8//RS7/Th33y1TCuLGJDloyEMPwezZ8MEHkJEBR4/CgQOwfDkMG/bFdfv3g8UC777reTw/37CQhfiyjIzNjB0SS0pKitGhCC+wmC3cNm86xw6up7y8vNnPz8raxPjxSVIhUzRKkoP6ZGfDnj3w1FOQng4zZ8LZs56tB9HRda/dswcmTPD8eexYaOFiISG8pby8nM8PZzFn9hRZiNiGTJkylaQu1WzevLlZz8vNzeXo0U0sXSqHLInGyaRTfQ4ehGXLPFMJjSkthfBwz5/DwqTakQgYW7dupXunaiZOnGB0KMKLIiMiuO2Wcbz69hpmz56N2WLGbnVTbXVRbXXjNunomsKkNMy6iWCnmWCnhawt2URHlzJ37lyjX4JoBWTkoD5dusDmzVBR4fm6utozrVCfyEioGd6rqPB8LYTBlFJs3bKR+TOHEhkhP5NtzaxZM+nUuZKc8hN83ukKp+JKuBhdzpWwakpC7JQFOygJsXMlrJqL0eWciiumy51pLP3Z4zhMVqPDF62AJAf1mTsXRo/2TCmkp8PChXDuXP3XDh0KW7Z4/rx9Owwa5L84hWjAiRMn0KuPM23qFKNDEV5m1xXHw7ow5clfYu4TgdOsoykwKc0zWqBMtbea+9xONyHRoYQNHM8bR4rZeL4cu7vlxZRE2yXTCvUxm+Hpp+t/bNEiz7TDokXwy1/CkCGwYoVnt8KUKRAX58dAhajf5s2bGTkwhtTUVKNDEV50tlrxyRU3JW6wWq1Ul5RjCbWg3WBbooaGw24HZSfYHIZLwd7Cak6VOZnRLZweETKSIK4nyUFzrVhx/X3PPOP/OIRoQFVVJUcPZXL/f6dj0mRwsK3IKdfZUKyjA1ZAs1iwW03Y7fYb1izQdR2n005kZAiapmHVQFdQ7HCz+lQp07uGMSg22G+vQ7QO8ptDiDZm27btJMSUM2nSRKNDEV5SmxgoCAJMGmiAzWbD7Xbc8LwFh8OBhk5w8BcJgEnTCNI0dF2x4XwFOYXVvn8RolWR5ECINmZL1kbmzRxETHSM0aEILzhbrb5IDLS6J7zabEFYzGC32xt4tsLhsGMLtl43iqRpGkEmDV0pNlyo4GyZ03cvQrQ6khz4gaZBVZXRUYj24PTp09jLj8hCxDbCrnvWGOhcnxiAZz1BsC0Ip9OOUuq657tcbnTdSWhIaL3tX5sgrJNFiuIakhz4mFLgckFBgdGRiPYgIyODYanhDBo00OhQhBdsKdE9iw+5PjGoYbPZMGs6TofjusccdjtmM1iDGl506FmHoFHscLPlUqWXIhetnSQHTeRyua5m4TT5Bp7/79r1xddC+Irdbufg/k3Mv2USZpPZ6HBEC5W6FDkVChOeNQYNMZtM2GwW7A478MXogVIKh9NOSEhwoxUyTZqGCY2cIjulDrd3XoBo1WS3QhNUVVXxyitvMmTIHHr0SGzy8yorITfXM3IghK/t2LGD+MgSJk2aZHQowgsOVSrceBYgNsZmC6aquhyX04XF6hklcDgcgJuQkJAm9WfRwKEUh4rsjO1c/zSEaD8kOWiCjRs38sILq3nhhUU0uO5HCINlZ2/ktmlpdIztaHQoooXcSpFToYOChnajvvHDByi+fJHv/+9HWC0WgoKubmu0Wvnzd+9CV4qvvvDnJo8iaZpnj2NOUTWjOoVgbmgeQ/z/9u48Ks77vvf4+3lmYxcCAUIChGTEgFAk2dZibRYSQrajuG4cR3Yc5zq1E9e52eq4SdM0rZvNyb09ubm9OUmapb69zU1O0jbNaW9ybxpHMQK0SwxaLWtDCzCIfRtme57nd/8YhDUSIIRBMzDfl4/OkWd55gsHzXz4Ld9fQpBphQmoq6sjL6+C7OzsWJcixKiam5sZ7D7J9u2VsS5FTIGuMPjMyG/zY8krLqHnWgtGOLLWIMmVhGmFeLP+dbznT7F+1/MTHjW4zq5r+MKKroBMLSQ6CQcT8MYbhygvvz/WZQgxppqaGla6U1i1alWsSxFToD2ssBj/DTp3UQmWZdLZfBkAp9OBXYc3fvxtCpfdR/Gq1bhcrjt6XZ3IWoUOv8yFJjoJB7dx9epVmpoGqKioiHUpQowqHA5zovEN/uCRTdhtMlM4G3SEIwsRxxvZzysuAaDzahMQ2dZ48fAeOi6fY937PzKhhYg30zQNTdNo98vIQaKTd5LbqK+vB3IoKyuLdSlCjOrw4cNkpXSzZcuWWJcipojPhNttcMpZdA8AHVcuApE2yfU/+3uKV64l372M5ORkvrRzddRzwkE/D7/wp2za9UdjXtdSiiFDtlclOgkHt7FnTy3FxfeTmpoa61KEGFVd7e95eKubvNy8WJcipoipiOxKHOcX/+S0dDKycui42kTYMPD89t9ov3yBD7z4OVJSXNhtdl759ZGRx/d3tfM3T1WxbHP1bV/fGKWhkkgsMq0wDsuyqK1tpLx8ZaxLEWJUXq+XnvZGtldVxroUMYVsGuMGA4UiFA6RVVCM9+I5enq6qfnJ91m6bgul960jIyPjlucc+92vKFy2kqz8gtu+vl12KiQ8CQfjOHPmDJ2dmhx7K+LWnj17WF7i4v77ZcHsbJJqu/XN2bIsgsEgA4ODdPf00Nffz9yCRfR4r3LpSB39HW088sefweV0jbrWoPH1f+feHY/d9rV1TSPFLh8NiU5+AsZRW1uL3T6fpUuXxroUIW5hGAaNR9/gsXdvxGEfuz2umHlyHBoWEDYN/AE//QP99PT20D84gGGZJKekkJWdTXHZCsJBP7/7+7/lXZUPM39x6ajXa7v4Fp3Nl1m+5aFxX1cphVKK3GTpsJnoZM3BOGpr61m69AEcDnnjFfGnoaGBjKR2KisrY12KmCLBUJBTp05x6OwlgvdVY4SDWKaJ0+kkNT0dp9MZdbpi7uLIjgX/QB9VH/7kmNdtfP3/UL5hK8lpt0433MgismMhJ1k+GhKd/ASMIRQKsW/fGR555AOxLkWIUdXWvkH15ntYkL8g1qWId6Cnt5fGxkY8Hg91B/fT0t5ORk4OVSseJDktg2SHbcwtiUXLVvG13afHvb5lWRzb/Ssee+mV29ZiWIo0p052kowcJDoJB2M4evQoPl8KFRXLY12KELdob2+no/kI1S89G+tSxB1SKK5evYrH4+Hw0aMc8jTQ2d/HEncpDz3xODt27GDJkiXsbxti37Wh2+5auJ2LDQcwDYOlazaPX5dSoMGKrCRpnSwkHIylrq6O1NRFFBYWxroUIW5RW1tL2RI7a9eujXUpYgLChsFbb53B4/Gw7+BBTp8/x1A4xH3r1vLHL7/Etm3bmDt3btRzKrJcHGz3YyhwvIPP6sbf/Tsrtj6CzT7+272hwKZpVGTdWVdFMTtJOBjDnj37KC+vRtdlzaaIL6ZpcvTw7/mzFzbgck7kzD4RC4O+QY4dO0aDx0P9gf1c8XqxpybzYGUlX/nYC6xfv37c9UwZThsrslx4ugJYKrKLYDKe+Pw3bvsYSyksFPdmJZHhlCkFIeFgVP39/TQ0XOHpp6Vlsog/x44dI9XuZcuWF2NdirhJ27U2GhoaONrQwP4jh7nW082C4kVUPVTNKzt2UF5eHjn9cII25qfQNBCmN2TihDt67kQppQgrRabTxsZ8OapZREg4GMX+/fsxjLlynoKIS7V73qBqwyKKCotiXUrCMy2T8+fP4/E0cuDwIY6/eZo+/xDvuncVH3zxBbZv305e3uQ7V7psOtUFafyiqZ+QpXDqUxsQlFKELIWua1QXpOGyyUipiJBwMIra2lpycsrJycmJdSlCROnq6sJ75RA7Pi67aGLFH/Bz4sRJGhs91O3fT1PzVUy7zobNm/n8V77E5s2b7/io5PEUpTuoWpjK7mbflAaEkWCgaVQtTKUoXbZsi7dJOBhFTc1Byso+GOsyhLhFbW0tJYWwbt26WJeSULq6u/B4PDQ0eKg/dABvVydZeXlsrdrGSzv+klWrVk3r+qQV2UkA7G7xEVIKB5NfgwCRNQZhFRkxqFqYOnJ9Ia6TcHATr9fL+fN9bNsmUwoivpimyaGDv+czH15HctLU/WYaM7oGLic47OOfTXwnlALDhEAIrMmfLGgpi8uXL+PxeDh05AhHjjXS4xukZFk5jz3zNNXV1RQV3d1pnRXZSWQ6bbzePEhvyERXYNfubBRBKYWhwCKyxqC6IE1GDMSoJBzcpK6uDsvKory8PNalCBHl5MmTJGstVFaOfdzujKHrkJn2diiYyoV2Djsku6BvMBIUJigUDnH69Gk8Hg97Dx7gbNNFApbJmvXr+dQXPk9lZeWoBxrdTUXpDp4pncNe7xDHu4OElAJLYdc1dEYPCkopLCINjtAi2xXvzUpiY36KrDEQY5JwcJO6ujqKiu4jPT091qUIEaW2toYH1y1k8eLFsS7lnUtxRQLBdDTb0bTICEJKEvT7xn1oX38fx44d42hDA3sPHqC5/RrJczLYsnUrz730adasWRN37dNdNp1tBWmszk3mVHeQ490BfGGFoRSaFpkyuE7XNJRSaJpGmlNnRVYSFVku2a4obkvCwQ2UUtTUNLBy5adiXYoQUXp7e7l68QCfe/59Y7bSnVEcjukJBtdpWmQE4SYKRUtLKx6PhyNHj3Cg4Sidfb0UldzD9sceZceOHZSUlEzLlsGpluG0sX5+CmvzkukKmHT4Ddr9JkOGhaEU9uHTFXOTbeQk28lOsknnQzFhEg5ucO7cOa5ds2QLo4g79fX1LFlgsmHDhliXMjX0u/AhpWmgRU6vPHv2LB6Ph/2HDnHy7Bl8oRAr7r+P5z71Caqqqpg3b9701zNNbJpGbrKd3GQ78s4lpoqEgxvU1dVhs+VRWjr6sadCxIJlWRzY9zs+/vQaUpKlSc2d+MGPfsQbtXu43NqK5nKwubKSv3ruWTZu3IjLJW2ChRiLhIMb7NlTR0nJOpzSklbEkTNnzuBUV6isfDrWpUy//n549VU4dQp6e2HLFnj5ZXjqKbhwAc6fjzzu0CH48pcjowM7d8KLo3eL/I8D+9iwrZIv7NjB8uXLZ8R0gRDxQMLBsHA4zN69p6mqel+sSxEiSk3NG2y4L4+lS5fGupTp9+KL8MIL8I1vRLYiPvkknDgBP/955PbrFi2CX/4ysnbhiSfg2WdhlMZDv/jlv97F4oWYPWQfy7Bjx44xMJAk6w1EXBkYGKDp7F4eeahydixEHE99PTQ0wFe/Ctu3w44dcOXK8LbHzOjH5uVFggFE7pcD0oSYUjJyMKy2tpakpAIWLVoU61KEGLF3714WzQ+xceMsWYg4npMn4Zln4ItfnPhzamuhuBhk/YAQU0ri9rA9e/ZSVvYANpvs/xXxQSnFvr27efSh+0hPS4C+GwsWQE0N+IZ7EwQC8NZbYz/e64VvfxteeeWulCdEIpFwAPh8Po4cucSyZTKlIOLHuXPn0EIX2ba1Mtal3B07d8K6dZEphe3b4fHH4erV0R8bCsGnPx1Zm5CaenfrFCIByLQCcODAAUKhDJYvl3Ag4kdNzRs8sDKLsrKyWJdyd9hs8LWvjX7frl2RaYdduyK7FI4dg3Pn4HOfi9z/ne/A/Pl3r1YhZjkJB0T6G2RlucnNnfy560JMJZ/Px7k363jxrx5B12bPAJ+3zUtDg4fqp564sy3D//RP0f9fVhbZySCEmBYSDoCamgOUlT0he6BF3Ni/fz8F8/xs2rQp1qW8I6Zlcu7ceRobPew7eJATZ95kIOhn+5OyZViIeJbw4aC9vZ033+zkIx9ZHutShAAiCxH31u/mgztXMidjTqzLuWNDfj8nT57A4/FQf2A/F5uvgsPB+s2b+MKHvsKmTZukO6EQcS7hw8HevXvliGYRVy5evIgxdJaqrZ+OdSkT1tnVSWNjI0eOHmXf4UN4OzvIzp/P1qoqPrPjFVauXIkuvQiEmDESPhzU1tZSULCKOXNm3m9oYmZRKIIOk4DDIOAwMXULS1PoSsNm6SSFbSSF7dTW1bJ6eSYVFfE7mmUpi0uXLuHxeDh4+DANJ47TO+RjacUy/vBDH6S6uprCwsJYlymEmKSEDgeRI5qPUl7+sViXImaxsM2kNyVIb0oAw6ZQKDQ0FGrkMSP/r8D93AOUqBJ8lkZGHP2yHQqHOHXqNB6Ph70H9nPuchNBZbF2wwY+9YXPU1lZSUZGRqzLFEJMgYQOB01NTbS0hHjf+5bFuhQxC5maRUfGEL0pQSwtEgR0pXH9P25qh6yAUDhMalY6PUnzeO2ayYoUjY1zdFx344jjUfT29XLs2HEaGo5Sd+AALR3tpGRmsLWqio/86UusWbMGuz2h30aEmJUS+l91bW0tup6L2+2OdSlilvE5w3jnDhKymWhoI6FgPBoaoUCAZJeGS9MwFHh8iqagSXWmjaKk6Q8ICkVLSwsej4fDR45ysOEInf19FJcuZfvjj7Fjxw7uuece2dkjxCyX4OGgjiVL1pCUlBTrUsQs0pMSoC3Th0JNKBRcZ5oGShm4XKloGjgAS0GvAb/oNKnK1FmRNvXzDIZpcPbsWRoaGth38CCnz59lMBjk3rVreP5PPkVVVRXZ2dlT/rpCiPiVsOHANE3q6k6yZcsfxLoUMYtMNhgABIMhHHYNu90xcpuugVNBSMHuXgtgSgKCb8jH8ePHaWhooP7AAS57W9GTXDy4tZJXPvocGzZskO2GQiSwhA0Hx48fp6/PIUc0iynjc4YnHQyUUhjhIOlprluepWng5O2AkGnXJjXFcK39Gh5PI0cbItsNr3V3M7+okG3bq/iLHTuoqKiQ6QIhBJDA4aCurg6Xq4DFixfHuhQxC5iahXfu4KSCAUA4FELXFa4xWgqPBATg9V6TZ3Jtt12kaFoWFy9exONp4ODhw3hOnaRvyEfFqpU89dHnqa6uZr6cRyCEGEXChoM9e/bidssRzWJqdGQMEbKZkwoGAKFQCJfTPm6jIE0Dx/AahL19Ftvm3vqzGwgGOHXqFB6Ph7r9+7hw5QqmTeeBTRv53JdeYfPmzaTKKYZCiNtIyHDg9/s5ePAcjz/+kViXImaB630M3t6ieGdM08Sywrhct//Q1jXQFRwfUqxOV2TYNbp7umlsbIysHzh4kJbOdubm5lC5bRuf/OIXuPfeeyUECyHuSEKGg0OHDhEMZsh6AzElrvcx0NXoweB///nz9F5r4ROv/eaW+374yfejgA994wc4HI5bnzwKOxA0Lf7p8Jtc/PXPOHyske7BAUrKy9j5gV1UV1dTXFw8+S9ICJHwEjIc1NXVkZlZQn5+fqxLETOcQtGbEgAYc9QgZ1EJl44fwgiHsDveXlNwZt9uvOdP8d4v/HeSkpzjjjkowDDChMNhQqEwOBxcsqfTo8PH/+yzbN26VVqACyGmTEKGg5qa/ZSVPSYrs8U7FnSYGLaxRw0gEg6UZdLdconc4lIgsjthz4+/TVHF/SxetRrnKAsRLaUIh8MY4TDBcAjTtNB0DafTidPpJGVBAZ/65t+Sm5yQ/4yFENMojjq33x3d3d2cOOFl2TJpmSzeuYDDiDojYTQ5i0oA6LzaNHLb6drf0H7pLOuffAGX045Nj6wJMC2TQDDAwOAAPb099A/0EzTCuFwu5s7NZF52NhnpGbgcDpSCDr8xfV+cECJhJdyvHPX19VhWtqw3EFMi4DBvuxAxp+geALqGw4FlWdT+5LssuW8j+aUV2O02vv8n/4nmM8fRhkNC4bJVPPPqd3E5nej6rYsJNU1D06DdbyI/yUKIqZZw4aCuro78/Hcxd+7cWJciZgFTt4ZHDsYOB0lpGaRl5dLZfBHTNDj2u3+n48oFqj72F4CJb2gI0zR45BN/wf0P/yFOp3NCux4spRgyrKn7YoQQYljChYOamsOUlT0f6zLELHH9tMUbKaWwLAvTNIe3KZpkLlhEW9NZ+nq7qPvpd7lnzUYKy9w4HA5cLhdOp4uU5GRczjtrWWyo8ac0hBBiMhJqzcHly5e5fHmI5cuXx7oUMQsYhoHf58eyLAJ+Pz7fIP39ffT1dTMw0MPQUB/hsA9dCzN/8RL62q5ytWEPA51t7PzYZ5mbOZe01DQcw2cp/N/v/hdefe9GXvvs87RdfGtCNdhlUa0QYhok1MhBXV0dmiZHNIs7YxgG165do6WlZeSP13uBa9fOs/GP/oBVjz6EEQ5gt+skJdmx25Ox2+3Y7XZ0LZK/C0srOPKrn7P7tf/BuyofZv7i0qjXeOiFl8lddA+6zcb+X/6E//X5P+ZP/uFXuFLSxqxL1zRS7AmV74UQd0lChYPa2jqKi+8nJSUl1qWIOGSa5igh4CLXrp3HNHvRdR/z5rkoLy9g9eoS3O73M6f8fs45UnClp467NTZ3cWTHgn+gj6oPf/KW+wvLV4z8/cGnnufo//tXrp4+TsnqDaNeTymFUorcZOl8KISYegkTDizLYs+eRjZs+LNYlxI30tJgwQJITY307Z8KhgHt7ZE/VpyulTNNk87ODpqbW2hubqalpYW2tkt4vWdHQkBWlp2ysgJ27lxKael7cbvduN1usrKyoq7V7je4cLYPCxjvY7po2Sq+tvv0hGvUdX3cLZIWkR0LOdLjQAgxDRLmneXUqVP09Nilv8Gw/Hy4/364vp5tqsKBUrBoUSQcHD4c24BgWRYdHR20traOhACvtwmv9yyG0YOu+8jMtFFWVsBDD5Xgdj9GaWkpbrebefPmTeg1spNspDo0BkMWNtvkvon+wX5azpykeOVqNDQO/NtPGRroo6DsXWM+x7AUaU6d7CQZORBCTL2ECQd1dXU4HPmUlJTEupSY0zRYuTLy93EOAZz0tQFycmDhQrh6dWqvPxrLsujq6qK5uZnW1lZaWlpobY2EgHC4G00bZM4cHbd7AVVVJbjdO3G73ZSWlpKbm/uOOmXaNI0VWUnsuzaEUmpS17IMg9/+6Ft0Nl9Ct9nILynn2Vf/juS0jFEfr5QCDVZkJWGTBYlCiGmQMOGgpqaO0tIHsNsT5kseU1YWTPCMn3ckL29qw4FSiq6uruH1AM20tLTi9UamA4LBTjRtkPR0KCtbSGXlPbjdD41MB+Tl5U1bu+yKLBcH2/0YChyTeInUzCz+89/984Qfb6hIKKnIurNtj0IIMVEJ8UkZDAY5cOAsjz76bKxLiQujtPGfcpoGrkl+diml6O7uvmlh4GVaW98aCQFpaQq3ewGbNi3B7a4aCQH5+fl3/cyMDKeNFVkuPF0BLBXZRTBdLKWwUNyblUSGU6YUhBDTIyHCweHDh/H706RlcpxRStHX10tzcyQANDc34/Vewes9i9/fjqYNkpJi4nYvYMOGJZSWVo6EgAULFqBP9ZzIO7AxP4WmgTC9IRMnTEtAUUoRVopMp42N+bLjRggxfRIiHNTX15ORsYSFCxfGupSEFAkBfTctDLxMS8tb+P0daNogSUlhli6dz9q1S3C7N46sCSgsLIyrEDAWl02nuiCNXzT1E7IUTn1qA4JSipCl0HWN6oI0XLb4/54IIWauhAgHe/bsx+1+eEZ8yMRcfz+8+iqcOgW9vbBlC7z8Mjz1FFy4AOfPRx7X2wtPPhl92006Otr5+te/T2vrW/h8bWjaIC5XiJKSPO67bwkf+MD6kZGAwsJCbLaZPUxelO6gamEqu5t9UxoQRoKBplG1MJWi9LuwYEQIkdBmfTjo6+ujsbGZZ56RKYUJefFFeOEF+MY3IvsQn3wSTpyAn/88cvt1qam33nYTw+hi5cpWdu1aPRICioqKZvWi0BXZSQDsbvERUgoH72wNgjU8laDrkWBw/fpCCDGdZvy7tKkUXQGTdr9Bh9/EZ1iYSmHTNFLtOt6zb5FZuJJlFdLf4Lbq66GhAb761cgfgIGByH7HzMzoxzoct952k4qKcr73ve9NS6nxbEV2EplOG683D9IbMtEV2LU7G0VQSmEosIisMaguSJMRAyHEXTNjw0F/yORUd5Dj3QF8YYWlIsOu1g2n1OmaRjCtkA9868v0OHTU0BCZQy4c5swevp42J0/CM8/AF78Y60pmvKJ0B8+UzmGvd4jj3UFCSoGlsOsaOqMHBaUUFpEGR2iR7Yr3ZiWxMT9F1hgIIe6qGRcOgqY18oZrKgUK7LqGQ9OG33Cj33T7BwewOVIJ2yw60ofoSvOTOeQipz8Fm0q8N1y/f4i2tj4g/9Y7FyyAf/kXeOmlyLRBIACXL4McVDUpLpvOtoI0VucmRwVZQyk0jVuC7PUmSmlOnRVZSVRkuWS7ohAiJmZUOLgyEOa3zYP0hUx0NJyahqaPPVRrWiaGqXC5bNhUpFe90qA7NcCgK0x+bxqpodk5VBsIBIY7BbYO9wq4itd7ju7uyzz66Gre856v3fqknTvh4EHYvj0SDpxO+MxnJBy8QxlOG+vnp7A2L5mugEmH36DdbzJkWBhKYR8+XTE32UZOsp3sJJt0PhRCxJSmlBr7dJc4crwrwO4WH5ZSODRtQou8/AE/fX1DzJkzF017e5RAobA0hYbG/N5U5g7N3EVewWBwOABEOgZGQsB5urqa0DQfuu6jqGguZWWFlJVFFgWuWbOGoqKiO3uhXbsi0w7Ll8OXvwxlZaPfJoQQYsabEeHgeFeA3c2RYODUtQkv7Orr6yUU1klPv7VH/UwLCKFQ6IZRgBZaW5tpbT1PZ2cTmjaIpg1SUDCH8vIiyspKR3YHlJSUyBHVQggh7kjcTytcGQiPjBjcSTAARTAUxuFIG/VeDQ1dgaUp2jJ9OA1bXEwxhMNhvF7vDa2Dm/F6L9DefmEkBCxYkE55eSFbtpTidm+htLSU0tJSUlNTY12+EEKIWSCuw0HQtPht8+AkggGEDQPLAsc4e+pvDAjezEEWd8y5a4sUw+EwbW1to4YAGEDTBpk/P5Xy8kI2bSrF7d4wEgLS09PvSo1CCCESU1yHg73eIfpC5g07ESYuFAoBNmy3abhzPSCE7CYdGUPM7xt9pGGyDMMYCQGtrS00N7eMhADL6kPXfeTlpeB2L2T9+lLc7qdHWgdnZIx+ZK8QQggxneI2HPSHTI53B9GZ2OLDm4VCIex2x4RChYaGBvSmBMkeTJ5UHwTDMGhvb6elpZnm5sguAa/3Im1t50ZCwLx5LsrLC1i7dilu966REJB5m2ZCQgghxN0Ut+Hg1HAfA+cYH+6vffZ5etta+MyPf3PLfd958f0Yhsmz3/zphF9PG55e6E0JkjMw9gI+0zSHQ8DbJwm2tTXR1nYO0+xF131kZTkoKytg586llJY+PrI4MCsra8L1CCGEELESl+HAVIrj3QFQjNnHIK+4hKbGQxjhEHaHc+T20/W7aT17isf+/Jvjrje4WWTsQNGbEmDeQDKWadHZ2TkSACInCUZCgGH0oOs+MjNtlJUt5OGHl+J2/yGlpZFdAvPmzXun3wIhhBAiZuIyHHQFTHzhSKvZseQWl2BZJp3Nl5i/uBSItJ/d/Q/fpnD5vSxa+cDETvlTCsuyMC0LU1mENfjWD7/JmcN7R0JARoZOWdlCqqtLcLvfMzIdkJOTM6XH8gohhBDxIC7DQbvfGGl2NJa84hIAOq80jYSDkzW/oa3pLLu+/B3sdifc+HylsJSFaVqYpollmpiWiWkagAVEWtompaWxYUcWTz/67pHpgNzcXAkBQgghEkZchoMOv4l+mx0KOYvuiTz2ShMAlmXx+3/8LiWrN5JXUoGmaQQCAQ784n/S8OufEfANkDl/IU/89bdxpaRit9twOm3Y7S7sdjt2ux2brhOyYMN7n2TrQukZIIQQIjHFZTjwGdbwoTRjh4PktAwysnPpuHoRgOO7f0X7lQu893NfRdd1QiEfx/7jFzR56vnQf/0Bc+cvpLv5Enn5ebhcSWNe21IWQ4Y1DV+VEEIIMTPEZTgwJ9jRObe4hM4rTVimye9//D2WbayiqHwlhmmgTBPPr37GR7/1j2QvjJwjkOZePqHrGvHfUVoIIYSYNnF5ZvFET6TLXVRCZ/MlPL/9N3par1L1R58EwG6zM9jdSTjg51Tdb/n6+zbzrWffzeFf//OErmuX9QVCCCESWFyOHKTa9Qk1PsorLiHo9/EfP/xvLK98eGRhIsBAVzsB3wCdVy/xpz99na6Wy7z28nPkFC6meMXqMa+pDx+fK4QQQiSquPwUzEm2YSnF7Q6MzF0c2bHgH+ij6sOfjLrP7oycsrj1Qx/D4Upi/hI379r6CG8drB3zemr4NXOT77xDohBCCDFbxOXIQW6yHV3TsIDxPqaLlq3ia7tPj3rfvIJF2G5qn3y77YjW8GNykuPy2yKEEELcFXE5cpCdZCPVoWFYk18Y6ExOYfmDO6j5yQ8wwiHaL1/gRM1vcK97cMznGJYi1aGRnSQjB0IIIRKXpm43dh8j+9uG2HdtCOckTmS8zj/Yzy//5i85f3QfKRmZbHn6o6x5z65RH6uUIqQUG/JSWD9/7LMVhBBCiNkubsNBf8jktTO9KAWOcdooT5WwFemQ+FxZJhlOGTkQQgiRuOJyWgEgw2ljRZYLCzXcEGn6WEphoViR5ZJgIIQQIuHFbTgA2JifQqbTRngCOxcmSylFWCkynTY25st0ghBCCBHX4cBl06kuSEPXNELW1AcEpRQhS6FrGtUFabhscf3tEEIIIe6KuP80LEp3ULUwdcoDwo3BoGphKkXpjim5rhBCCDHTzYgN/SuyIw2Ndrf4CCmFAybUQXEs1vBUgq5HgsH16wshhBAijncrjObKQJjXmwfpDZnoaNi12zc2upFSCkOBRWSNQXVBmowYCCGEEDeZUeEAIGha7PUOcbw7GDm9UYFd19AZPSgopbCINDhCixzqtCLLxcb8FFljIIQQQoxixoWD6/pDJqe6gxzvDuALR9YiaJoWte1R17SR21MdGiuykqiQ7YpCCCHEuGZsOLjOVIqugEmH36DdbzJkWBhKYR8+XTE32UZOsp3sJNuEj4IWQgghEtmMDwdCCCGEmFoy6S6EEEKIKBIOhBBCCBFFwoEQQgghokg4EEIIIUQUCQdCCCGEiCLhQAghhBBRJBwIIYQQIoqEAyGEEEJEkXAghBBCiCgSDoQQQggRRcKBEEIIIaJIOBBCCCFEFAkHQgghhIgi4UAIIYQQUSQcCCGEECKKhAMhhBBCRJFwIIQQQogoEg6EEEIIEUXCgRBCCCGiSDgQQgghRBQJB0IIIYSIIuFACCGEEFEkHAghhBAiioQDIYQQQkSRcCCEEEKIKBIOhBBCCBFFwoEQQgghokg4EEIIIUQUCQdCCCGEiCLhQAghhBBRJBwIIYQQIoqEAyGEEEJEkXAghBBCiCgSDoQQQggRRcKBEEIIIaL8fwb1Qsw7LQifAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " - The complex has 8 0-cells.\n", - " - The 0-cells have features dimension 1\n", - " - The complex has 13 1-cells.\n", - " - The 1-cells have features dimension 1\n", - " - The complex has 6 2-cells.\n", - " - The 2-cells have features dimension 1\n", - "\n" - ] - } - ], - "source": [ - "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", - "describe_data(lifted_dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create and Run a Cell NN Model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section a simple model is created to test that the used lifting works as intended. In this case the model uses the `x_0`, `x_1`, `x_2` which are the features of the nodes, edges and cells respectively. It also uses the `adjacency_1`, `incidence_1` and `incidence_2` matrices so the lifting should make sure to add them to the data." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Model configuration for cell CWN:\n", - "\n", - "{'in_channels_0': None,\n", - " 'in_channels_1': None,\n", - " 'in_channels_2': None,\n", - " 'hidden_channels': 32,\n", - " 'out_channels': None,\n", - " 'n_layers': 2}\n" - ] - } - ], - "source": [ - "from modules.models.cell.cwn import CWNModel\n", - "\n", - "model_type = \"cell\"\n", - "model_id = \"cwn\"\n", - "model_config = load_model_config(model_type, model_id)\n", - "\n", - "model = CWNModel(model_config, dataset_config)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "y_hat = model(lifted_dataset.get(0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If everything is correct the cell above should execute without errors. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "venv_topox", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Graph-to-Cell Cycle Lifting Tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "This notebook shows how to import a dataset, with the desired lifting, and how to run a neural network using the loaded data.\n", + "\n", + "The notebook is divided into sections:\n", + "\n", + "- [Loading the dataset](#loading-the-dataset) loads the config files for the data and the desired tranformation, createsa a dataset object and visualizes it.\n", + "- [Loading and applying the lifting](#loading-and-applying-the-lifting) defines a simple neural network to test that the lifting creates the expected incidence matrices.\n", + "- [Create and run a simplicial nn model](#create-and-run-a-simplicial-nn-model) simply runs a forward pass of the model to check that everything is working as expected.\n", + "\n", + "***\n", + "***\n", + "\n", + "Note that for simplicity the notebook is setup to use a simple graph. However, there is a set of available datasets that you can play with.\n", + "\n", + "To switch to one of the available datasets, simply change the *dataset_name* variable in [Dataset config](#dataset-config) to one of the following names:\n", + "\n", + "* cocitation_cora\n", + "* cocitation_citeseer\n", + "* cocitation_pubmed\n", + "* MUTAG\n", + "* NCI1\n", + "* NCI109\n", + "* PROTEINS_TU\n", + "* AQSOL\n", + "* ZINC\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports and utilities" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# With this cell any imported module is reloaded before each cell execution\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "from modules.data.load.loaders import GraphLoader\n", + "from modules.data.preprocess.preprocessor import PreProcessor\n", + "from modules.utils.utils import (\n", + " describe_data,\n", + " load_dataset_config,\n", + " load_model_config,\n", + " load_transform_config,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we just need to spicify the name of the available dataset that we want to load. First, the dataset config is read from the corresponding yaml file (located at `/configs/datasets/` directory), and then the data is loaded via the implemented `Loaders`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset configuration for manual_dataset:\n", + "\n", + "{'data_domain': 'graph',\n", + " 'data_type': 'toy_dataset',\n", + " 'data_name': 'manual',\n", + " 'data_dir': 'datasets/graph/toy_dataset',\n", + " 'num_features': 1,\n", + " 'num_classes': 2,\n", + " 'task': 'classification',\n", + " 'loss_type': 'cross_entropy',\n", + " 'monitor_metric': 'accuracy',\n", + " 'task_level': 'node'}\n" + ] + } + ], + "source": [ + "dataset_name = \"manual_dataset\"\n", + "dataset_config = load_dataset_config(dataset_name)\n", + "loader = GraphLoader(dataset_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then access to the data through the `load()`method:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset only contains 1 sample:\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - Graph with 8 vertices and 13 edges.\n", + " - Features dimensions: [1, 0]\n", + " - There are 0 isolated nodes.\n", + "\n" + ] + } + ], + "source": [ + "dataset = loader.load()\n", + "describe_data(dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading and Applying the Lifting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we will instantiate the lifting we want to apply to the data. For this example the cycle lifting was chosen. The algorithm finds a cycle base for the graph and creates a cell for each cycle in said base. This is a connectivity based deterministic lifting that preserves the initial connectivity of the graph. [[1]](https://arxiv.org/abs/2309.01632) combine two heuristics to design an algorithm that selects cycle basis in $O(m \\log m)$ time, where $m$ is the number of edges of the graph.\n", + "\n", + "***\n", + "[[1]](https://arxiv.org/abs/2309.01632) Hoppe, J., & Schaub, M. T. (2024). Representing Edge Flows on Graphs via Sparse Cell\n", + "Complexes. In Learning on Graphs Conference (pp. 1-1). PMLR.\n", + "***\n", + "For cell complexes creating a lifting involves creating a `CellComplex` object from topomodelx and adding cells to it using the method `add_cells_from`. The `CellComplex` class then takes care of creating all the needed matrices.\n", + "\n", + "Similarly to before, we can specify the transformation we want to apply through its type and id --the correxponding config files located at `/configs/transforms`. \n", + "\n", + "Note that the *tranform_config* dictionary generated below can contain a sequence of tranforms if it is needed.\n", + "\n", + "This can also be used to explore liftings from one topological domain to another, for example using two liftings it is possible to achieve a sequence such as: graph -> cell complex -> hypergraph. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Transform configuration for graph2cell/cycle_lifting:\n", + "\n", + "{'transform_type': 'lifting',\n", + " 'transform_name': 'CellCycleLifting',\n", + " 'max_cell_length': None,\n", + " 'preserve_edge_attr': False,\n", + " 'feature_lifting': 'ProjectionSum'}\n" + ] + } + ], + "source": [ + "# Define transformation type and id\n", + "transform_type = \"liftings\"\n", + "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", + "transform_id = \"graph2cell/cycle_lifting\"\n", + "\n", + "# Read yaml file\n", + "transform_config = {\n", + " \"lifting\": load_transform_config(transform_type, transform_id)\n", + " # other transforms (e.g. data manipulations, feature liftings) can be added here\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We than apply the transform via our `PreProcesor`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transform parameters are the same, using existing data_dir: /challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/1820307683\n", + "\n", + "Dataset only contains 1 sample:\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - The complex has 8 0-cells.\n", + " - The 0-cells have features dimension 1\n", + " - The complex has 13 1-cells.\n", + " - The 1-cells have features dimension 1\n", + " - The complex has 6 2-cells.\n", + " - The 2-cells have features dimension 1\n", + "\n" + ] + } + ], + "source": [ + "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", + "describe_data(lifted_dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create and Run a Cell NN Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section a simple model is created to test that the used lifting works as intended. In this case the model uses the `x_0`, `x_1`, `x_2` which are the features of the nodes, edges and cells respectively. It also uses the `adjacency_1`, `incidence_1` and `incidence_2` matrices so the lifting should make sure to add them to the data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Model configuration for cell CWN:\n", + "\n", + "{'in_channels_0': None,\n", + " 'in_channels_1': None,\n", + " 'in_channels_2': None,\n", + " 'hidden_channels': 32,\n", + " 'out_channels': None,\n", + " 'n_layers': 2}\n" + ] + } + ], + "source": [ + "from modules.models.cell.cwn import CWNModel\n", + "\n", + "model_type = \"cell\"\n", + "model_id = \"cwn\"\n", + "model_config = load_model_config(model_type, model_id)\n", + "\n", + "model = CWNModel(model_config, dataset_config)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "y_hat = model(lifted_dataset.get(0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If everything is correct the cell above should execute without errors. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv_topox", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorials/graph2hypergraph/knn_lifting.ipynb b/tutorials/graph2hypergraph/knn_lifting.ipynb index 40bf15b9..290b4ec0 100644 --- a/tutorials/graph2hypergraph/knn_lifting.ipynb +++ b/tutorials/graph2hypergraph/knn_lifting.ipynb @@ -1,347 +1,347 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Graph-to-Hypergraph KNN Lifting Tutorial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "***\n", - "This notebook shows how to import a dataset, with the desired lifting, and how to run a neural network using the loaded data.\n", - "\n", - "The notebook is divided into sections:\n", - "\n", - "- [Loading the dataset](#loading-the-dataset) loads the config files for the data and the desired tranformation, createsa a dataset object and visualizes it.\n", - "- [Loading and applying the lifting](#loading-and-applying-the-lifting) defines a simple neural network to test that the lifting creates the expected incidence matrices.\n", - "- [Create and run a simplicial nn model](#create-and-run-a-simplicial-nn-model) simply runs a forward pass of the model to check that everything is working as expected.\n", - "\n", - "***\n", - "***\n", - "\n", - "Note that for simplicity the notebook is setup to use a simple graph. However, there is a set of available datasets that you can play with.\n", - "\n", - "To switch to one of the available datasets, simply change the *dataset_name* variable in [Dataset config](#dataset-config) to one of the following names:\n", - "\n", - "* cocitation_cora\n", - "* cocitation_citeseer\n", - "* cocitation_pubmed\n", - "* MUTAG\n", - "* NCI1\n", - "* NCI109\n", - "* PROTEINS_TU\n", - "* AQSOL\n", - "* ZINC\n", - "***" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Imports and utilities" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# With this cell any imported module is reloaded before each cell execution\n", - "%load_ext autoreload\n", - "%autoreload 2\n", - "from modules.data.load.loaders import GraphLoader\n", - "from modules.data.preprocess.preprocessor import PreProcessor\n", - "from modules.utils.utils import (\n", - " describe_data,\n", - " load_dataset_config,\n", - " load_model_config,\n", - " load_transform_config,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading the Dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we just need to spicify the name of the available dataset that we want to load. First, the dataset config is read from the corresponding yaml file (located at `/configs/datasets/` directory), and then the data is loaded via the implemented `Loaders`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset configuration for manual_dataset:\n", - "\n", - "{'data_domain': 'graph',\n", - " 'data_type': 'toy_dataset',\n", - " 'data_name': 'manual',\n", - " 'data_dir': 'datasets/graph/toy_dataset',\n", - " 'num_features': 1,\n", - " 'num_classes': 2,\n", - " 'task': 'classification',\n", - " 'loss_type': 'cross_entropy',\n", - " 'monitor_metric': 'accuracy',\n", - " 'task_level': 'node'}\n" - ] - } - ], - "source": [ - "dataset_name = \"manual_dataset\"\n", - "dataset_config = load_dataset_config(dataset_name)\n", - "loader = GraphLoader(dataset_config)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can then access to the data through the `load()`method:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset only contains 1 sample:\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " - Graph with 8 vertices and 13 edges.\n", - " - Features dimensions: [1, 0]\n", - " - There are 0 isolated nodes.\n", - "\n" - ] - } - ], - "source": [ - "dataset = loader.load()\n", - "describe_data(dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading and Applying the Lifting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section we will instantiate the lifting we want to apply to the data. For this example the knn lifting was chosen. The algorithm takes the k nearest neighbors for each node and creates a hyperedge with them. The lifting is deterministic and creates a hypergraph with the same number of hyperedges as the number of nodes, and all the hyperedges have the same number of nodes in them. This lifting is based on the initial features of the nodes. The computational complexity of the algorithm is $O(nd+kn)$ [[1]](https://pubmed.ncbi.nlm.nih.gov/33211654/) where $n$ is the number of nodes in the graph, $d$ is the dimension of the feature space and $k$ is fixed.\n", - "\n", - "***\n", - "[[1]](https://pubmed.ncbi.nlm.nih.gov/33211654/) Gao, Y., Zhang, Z., Lin, H., Zhao, X., Du, S., & Zou, C. (2020). Hypergraph learning: Methods and\n", - "practices. IEEE Transactions on Pattern Analysis and Machine Intelligence, 44(5), 2548-2566.\n", - "***\n", - "\n", - "For hypergraphs creating a lifting involves creating the `incidence_hyperedges` matrix.\n", - "\n", - "Similarly to before, we can specify the transformation we want to apply through its type and id --the correxponding config files located at `/configs/transforms`. \n", - "\n", - "Note that the *tranform_config* dictionary generated below can contain a sequence of tranforms if it is needed.\n", - "\n", - "This can also be used to explore liftings from one topological domain to another, for example using two liftings it is possible to achieve a sequence such as: graph -> simplicial complex -> hypergraph. " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Transform configuration for graph2hypergraph/knn_lifting:\n", - "\n", - "{'transform_type': 'lifting',\n", - " 'transform_name': 'HypergraphKNNLifting',\n", - " 'k_value': 3,\n", - " 'loop': True,\n", - " 'feature_lifting': 'ProjectionSum'}\n" - ] - } - ], - "source": [ - "# Define transformation type and id\n", - "transform_type = \"liftings\"\n", - "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", - "transform_id = \"graph2hypergraph/knn_lifting\"\n", - "\n", - "# Read yaml file\n", - "transform_config = {\n", - " \"lifting\": load_transform_config(transform_type, transform_id)\n", - " # other transforms (e.g. data manipulations, feature liftings) can be added here\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We than apply the transform via our `PreProcesor`:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transform parameters are the same, using existing data_dir: /Users/leone/Desktop/PhD-S/projects/challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/557134810\n", - "\n", - "Dataset only contains 1 sample:\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAIeCAYAAAAveKxoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACeFUlEQVR4nO3deZxbZb348U+W2dvpvu8LUAqUpUChBdpOQWRxRRFFKOAFlEXxouh1Q7wKAi6oyPbDDUS9AirKJtApiy20ZS2IhdJOd9rSFmg7nclMkuf3x/SkJ5ksZz/Pc/J8Xi9fL5lOk3ybSfKd5LyTmBBCoNPpdDqdTre3eNgXQKfT6XQ6nVzp5UCn0+l0Ol1eejnQ6XQ6nU6Xl14OdDqdTqfT5aWXA51Op9PpdHnp5UCn0+l0Ol1eejnQ6XQ6nU6Xl14OdDqdTqfT5aWXA51Op9PpdHlV1XKwZs0aYrEYv/3tb/O+/uijj3LYYYdRX19PLBbjvffe8+0yPPnkk8RiMZ588knfziOIjH/LH/3oR2FflEgVlZ8PXenmzJnDwQcfHJnzkbXx48dz3nnnhX0xlC0yy8Fvf/tbYrEYzz//vK2/t337ds4880waGhr45S9/yd13301TUxPXXnstf/vb3/y5sDZqa2vjsssuY//996exsZHGxkamTp3KpZdeyvLly8O+eIG0adMmvvvd7/Lyyy+HfVF0VZyd+wT9M6tTvWTYFyDIxo0bR0dHBzU1NbmvLVu2jF27dvG///u/nHjiibmvX3vttXziE5/gox/9aAiXtKcHH3yQT33qUySTSc4++2wOPfRQ4vE4K1as4C9/+Qu33norbW1tjBs3LrTLGESbNm3immuuYfz48Rx22GFhXxxdlWbnPkH/zOpUr6qWg1gsRn19fd7Xtm7dCkD//v1DuESlW7VqFWeddRbjxo1jwYIFjBgxIu/Pr7/+em655Rbi8fJP/rS3t9PU1OTnRdVFsCB/bjo7O6mtra34s6yrjvR9lhxV1a2x8JiDOXPmMH/+fACOOuooYrEY5513HrFYjPb2dn73u98Ri8VyXzfauHEjF1xwAcOGDaOuro6DDjqIX//6173Ob8OGDXz0ox+lqamJoUOH8uUvf5lUKmXpst5www20t7fzm9/8ptdiAJBMJvniF7/ImDFjcl8777zz6NOnD6tWreLUU0+lb9++nH322QA888wzfPKTn2Ts2LHU1dUxZswYvvzlL9PR0ZF3usZprF69mpNPPpmmpiZGjhzJ9773PUp9gOcdd9zBpEmTqKur46ijjmLZsmWWZrTSk08+yVFHHQXA+eefn7s+zMeN3HvvvUyfPp2GhgYGDx7MZz/7WTZu3Oh6LnPjx4/n9NNP51//+hdHH3009fX1TJw4kbvuuqvX965evZpPfvKTDBw4kMbGRo455hgeeuihXt9n5+djyZIlfPCDH6Rfv340NjYye/ZsFi1alPc9u3bt4oorrmD8+PHU1dUxdOhQTjrpJF588cWys333u98lFovx+uuv85nPfIYBAwZw3HHH5f7897//fe7fd+DAgZx11lmsX78+7zSM17dfeOEFZs6cSUNDAxMmTOC2227L+z7jmIo//elPfOtb32LUqFE0Njayc+dOz+e0clrG7G+99RbnnXce/fv3p1+/fpx//vns2bMn932V7hMKZ6z0Mwvw+uuvM3fuXBobGxk1ahQ33HBDr9NKpVJcffXVTJ48OXe7veqqqyzfj1Q6n927d9PU1MSXvvSlXn9vw4YNJBIJrrvuOmDfS7dPP/00F198MYMGDaK5uZlzzz2Xd999t9fff+SRRzj++ONpamqib9++nHbaafz73//O+55y91nZbJabbrqJgw46iPr6eoYNG8bFF1/c67yEEHz/+99n9OjRNDY2Mnfu3F7nY7R8+XJmz55NQ0MDo0eP5vvf/z6/+c1viMVirFmzxvbl37x5M+effz6jR4+mrq6OESNG8JGPfKTXaSmZiEi/+c1vBCCWLVtW8nva2toEIH7zm98IIYR47LHHxEUXXSQA8b3vfU/cfffdYvHixeLuu+8WdXV14vjjjxd333137utCCLF582YxevRoMWbMGPG9731P3HrrreLDH/6wAMRPf/rT3Hnt2bNH7L///qK+vl5cddVV4qabbhLTp08X06ZNE4BYuHBh2XlGjhwpJk+ebOvfYP78+aKurk5MmjRJzJ8/X9x2223irrvuEkIIcfnll4tTTz1VXHvtteL2228Xn/vc50QikRCf+MQnep1GfX292G+//cQ555wjbr75ZnH66acLQHz729/u9W95+OGHi8mTJ4vrr79e3HDDDWLw4MFi9OjRoqury9ZlL9XmzZvF9773PQGIiy66KHd9rFq1Sgix73o/6qijxE9/+lPx9a9/XTQ0NIjx48eLd9991/ZcpRo3bpw44IADxLBhw8Q3vvENcfPNN4sjjjhCxGIx8dprr+Vd3mHDhom+ffuKb37zm+InP/mJOPTQQ0U8Hhd/+ctfct9n5+djwYIFora2Vhx77LHixz/+sfjpT38qpk2bJmpra8WSJUty3/eZz3xG1NbWiv/+7/8Wd955p7j++uvFhz70IfH73/++7GxXX321AMTUqVPFRz7yEXHLLbeIX/7yl0IIIb7//e+LWCwmPvWpT4lbbrlFXHPNNWLw4MG9/n1nz54tRo4cKYYOHSouu+wy8fOf/1wcd9xxAhC/+tWvct+3cOHC3Hkddthh4ic/+Ym47rrrRHt7u6dzWj0tY/bDDz9cfPzjHxe33HKL+K//+i8BiKuuuir3feXuEwqr9DNr/FuNGTNGfOlLXxK33HKLaGlpEYB4+OGHc6eTyWTEBz7wAdHY2CiuuOIKcfvtt4vLLrtMJJNJ8ZGPfKTsdWrnfM4++2wxbNgwkU6n8/7+DTfcIGKxmFi7dq0QYt9t7ZBDDhHHH3+8+PnPfy4uvfRSEY/HxQknnCCy2Wzu7951110iFouJD37wg+IXv/iFuP7668X48eNF//79RVtbW+77yt1n/dd//ZdIJpPiwgsvFLfddpv42te+JpqamsRRRx2Vd//yrW99SwDi1FNPFTfffLO44IILxMiRI8XgwYPF/Pnzc9+3YcMGMXDgQDFo0CBxzTXXiB/96EdiypQp4tBDDxVA3uWyevlnzpwp+vXrJ771rW+JO++8U1x77bVi7ty54qmnnqp4/cheVS8H5f5eU1NT3g+W0ec+9zkxYsQIsW3btryvn3XWWaJfv35iz549QgghbrrpJgGIP//5z7nvaW9vF5MnT664HLz//vsCEB/96Ed7/dm7774r3nnnndz/jPMToueGBoivf/3rvf6e+fuMrrvuurwbv/k0Lr/88tzXstmsOO2000Rtba145513hBD7/i0HDRokduzYkfveBx54QADiH//4R8n57LZs2bJe15sQQnR1dYmhQ4eKgw8+WHR0dOS+/uCDDwpAfOc737E9V6nGjRsnAPH000/nvrZ161ZRV1cnrrzyytzXrrjiCgGIZ555Jve1Xbt2iQkTJojx48eLTCYjhLD+85HNZsV+++0nTj755Lw73z179ogJEyaIk046Kfe1fv36iUsvvbTsHMUyHiA//elP5319zZo1IpFIiB/84Ad5X3/11VdFMpnM+/rs2bMFIH784x/nvpZKpcRhhx0mhg4dmrszN5aDiRMn5v1MejmnndMyZr/gggvyTuNjH/uYGDRoUN7XSt0nFKvUz6wQ+/6tjAdBIXr+rYYPHy7OOOOM3NfuvvtuEY/H836WhBDitttuE4BYtGhR2ctg9Xz++c9/CkA88sgjeX9/2rRpYvbs2bn/Nu4rp0+fnvfgfMMNNwhAPPDAA0KInp/3/v37iwsvvDDv9DZv3iz69euX9/VS91nPPPOMAMQ999yT9/VHH3007+tbt24VtbW14rTTTsu7rr/xjW8IIO/6uvzyy0UsFhMvvfRS7mvbt28XAwcOzFsOrF7+d999VwDixhtvFFGsql5WcJsQgvvvv58PfehDCCHYtm1b7n8nn3wy77//fu6pzYcffpgRI0bwiU98Ivf3Gxsbueiiiyqej/EUa58+fXr92Zw5cxgyZEjuf7/85S97fc8XvvCFXl9raGjI/f/29na2bdvGzJkzEULw0ksv9fr+yy67LPf/Y7EYl112GV1dXTzxxBN53/epT32KAQMG5P77+OOPB3qeWve7559/nq1bt3LJJZfkHUty2mmnMWXKlKJP5Vudq1hTp07NzQcwZMgQDjjggLxZH374YY4++ui8p+X79OnDRRddxJo1a3j99ddz32fl5+Pll19m5cqVfOYzn2H79u25n7f29nbmzZvH008/TTabBXqOm1myZAmbNm2qOEuxPv/5z+f991/+8hey2Sxnnnlm3s/68OHD2W+//Vi4cGHe9yeTSS6++OLcf9fW1nLxxRezdetWXnjhhbzvnT9/ft7PpJdz2jmtUrMff/zxbN++PXdb9Lo+ffrw2c9+NvfftbW1HH300Xk/S/feey8HHnggU6ZMyfv3b2lpAej17+/0fE488URGjhzJPffck/vaa6+9xvLly/P+rtFFF12Ud1D3F77wBZLJJA8//DAAjz/+OO+99x6f/vSn8y53IpFgxowZRS934X3WvffeS79+/TjppJPyTmP69On06dMndxpPPPEEXV1dXH755cRisdzfv+KKK3qdx6OPPsqxxx6bd4DowIEDcy9jGFm9/A0NDdTW1vLkk08WfVlF9arqgES3vfPOO7z33nvccccd3HHHHUW/xzjAce3atUyePDnvBxbggAMOqHg+ffv2BXpeDyzs9ttvZ9euXWzZsqXoDTeZTDJ69OheX1+3bh3f+c53+Pvf/97rB/n999/P++94PM7EiRPzvrb//vsD9HotbezYsXn/bSwK5W4smUyGd955J+9rAwcOpLa2tuTfKdbatWuB4v+mU6ZM4V//+lfe1+zMVazCWaFnXvOsa9euZcaMGb2+78ADD8z9+cEHH2z552PlypUAuWNjivX+++8zYMAAbrjhBubPn8+YMWOYPn06p556Kueee26vmUs1YcKEXucthGC//fYr+v3mBwiAkSNH9jqQzPzve8wxx5Q9L/BmTjunZVTu57i5ubnk6Tht9OjRva77AQMG5PHklStX8p///IchQ4YUPQ3jvsbt+cTjcc4++2xuvfVW9uzZQ2NjI/fccw/19fV88pOf7HWahT8Pffr0YcSIEbnbkPHvbywxhRX+exa7z1q5ciXvv/8+Q4cOLXoa5vvZYpdpyJAhedev8b3HHntsr9OaPHlyr/O2cvnr6uq4/vrrufLKKxk2bBjHHHMMp59+Oueeey7Dhw8v+ndVSi8HNjJ+2/jsZz9b8o5n2rRprs+nX79+jBgxgtdee63XnxkPPKUezOrq6nod9Z3JZDjppJPYsWMHX/va15gyZQpNTU1s3LiR8847r9dvUXZKJBJFvy7KHOS3fv36Xg8OCxcuZM6cOY4vRxA5mdVtxnVz4403liRxxjNMZ555Jscffzx//etfeeyxx7jxxhu5/vrr+ctf/sIpp5xS8bzMv8kb5x2LxXjkkUeKzl7smS2rFTsv8GZOO6dlFPR1a+X8stkshxxyCD/5yU+Kfq/5YGQ35wNw7rnncuONN/K3v/2NT3/60/zhD3/g9NNPp1+/fhXPozDj3//uu+8u+iCZTOY/7BS7z8pmswwdOjTv2QxzpRYmL7Jz+a+44go+9KEP8be//Y1//vOffPvb3+a6666jtbWVww8/3LfLGER6OShR4bYNPT+Qffv2JZPJ5L0nQrHGjRvHa6+9hhAi77TeeOMNS+d/2mmnceedd7J06VKOPvpoexe+oFdffZU333yT3/3ud5x77rm5rz/++ONFvz+bzbJ69ercb30Ab775JtBz1L7bhg8f3uu8Dz300JLfX+y6AHLv7/DGG2/02vLfeOONXu//4PdcxmUqdh2vWLEi7zJb/fmYNGkS0PPbSqWfOYARI0ZwySWXcMkll7B161aOOOIIfvCDH1haDgqbNGkSQggmTJiQ929Wqk2bNvViaFb/fb2c0+5pWa3Uz6Hb7y3VpEmTeOWVV5g3b54np1eugw8+mMMPP5x77rmH0aNHs27dOn7xi18U/d6VK1cyd+7c3H/v3r2bt99+m1NPPTV3uQGGDh3q+N9/0qRJPPHEE8yaNavXImnOuD2tXLky7xmyd955p9ezl+PGjeOtt97qdRqFX7N7+SdNmsSVV17JlVdeycqVKznssMP48Y9/zO9///uKf1fm9DEHJWpqaur1NsqJRIIzzjiD+++/v+hv9eanyk899VQ2bdrEfffdl/vanj17Sr4cUdhVV11FY2MjF1xwAVu2bOn153Z+ozF+ezD/HSEEP/vZz0r+nZtvvjnve2+++WZqamqYN2+e5fMtVX19PSeeeGLe/wqfAjRnPNgUXh9HHnkkQ4cO5bbbbsujXY888gj/+c9/OO2003qdlp9zQc/1vnTpUp599tnc19rb27njjjsYP348U6dOzX2flZ+P6dOnM2nSJH70ox8VfZnJ+JnLZDK9Xh4aOnQoI0eOtMXezH384x8nkUhwzTXX9Pp5E0Kwffv2vK+l02luv/323H93dXVx++23M2TIEKZPn172vLyc0+pp2a3YfUK574XeP7N2OvPMM9m4cSP/7//9v15/1tHRQXt7u+PTLtY555zDY489xk033cSgQYNKLpR33HEH3d3duf++9dZbSafTue8/+eSTaW5u5tprr837PiMr//5nnnkmmUyG//3f/+31Z+l0OvfveuKJJ1JTU8MvfvGLvJ/Rm266qdffO/nkk3n22Wfz3rVyx44dvZ6dsHr59+zZQ2dnZ96fTZo0ib59+zq+zclU5J45+PWvf82jjz7a6+vFHG+5pk+fzhNPPMFPfvITRo4cyYQJE5gxYwY//OEPWbhwITNmzODCCy9k6tSp7NixgxdffJEnnniCHTt2AHDhhRdy8803c+655/LCCy8wYsQI7r77bhobGy2d/3777ccf/vAHPv3pT3PAAQfk3iFRCEFbWxt/+MMfiMfjRY8vKGzKlClMmjSJr3zlK2zcuJHm5mbuv//+kscF1NfX8+ijjzJ//nxmzJjBI488wkMPPcQ3vvENX5/OK9WkSZPo378/t912G3379qWpqYkZM2YwYcIErr/+es4//3xmz57Npz/9abZs2cLPfvYzxo8fz5e//OXA5/r617/OH//4R0455RS++MUvMnDgQH73u9/R1tbG/fffn3v61OrPRzwe58477+SUU07hoIMO4vzzz2fUqFFs3LiRhQsX0tzczD/+8Q927drF6NGj+cQnPsGhhx5Knz59eOKJJ1i2bBk//vGPHc0yadIkvv/97/M///M/rFmzho9+9KP07duXtrY2/vrXv3LRRRfxla98Jff9I0eO5Prrr2fNmjXsv//+/N///R8vv/wyd9xxR6/jEwrzck6rp2W3UvcJpf7tSv3MWu2cc87hz3/+M5///OdZuHAhs2bNIpPJsGLFCv785z/zz3/+kyOPPNL2HKX6zGc+w1VXXcVf//pXvvCFL5S8zrq6upg3bx5nnnkmb7zxBrfccgvHHXccH/7wh4GeZ2xuvfVWzjnnHI444gjOOusshgwZwrp163jooYeYNWtW3pJerNmzZ3PxxRdz3XXX8fLLL/OBD3yAmpoaVq5cyb333svPfvYzPvGJTzBkyBC+8pWvcN1113H66adz6qmn8tJLL/HII48wePDgvNO86qqr+P3vf89JJ53E5ZdfTlNTE3feeSdjx45lx44duWdnrF7+N998M/fvMHXqVJLJJH/961/ZsmULZ511lgfXSMgFaiN8zGA2pf63fv16W5RxxYoV4oQTThANDQ29SMyWLVvEpZdeKsaMGSNqamrE8OHDxbx588Qdd9yRdxpr164VH/7wh0VjY6MYPHiw+NKXvpSjOJXe58DorbfeEl/4whfE5MmTRX19vWhoaBBTpkwRn//858XLL7+c973z588XTU1NRU/n9ddfFyeeeKLo06ePGDx4sLjwwgvFK6+80uvfwziNVatW5Yz1sGHDxNVXX51jeELso4zFGA8grr76akvzWe2BBx4QU6dOFclkstdl/r//+z9x+OGHi7q6OjFw4EBx9tlniw0bNuT9fatzlWrcuHHitNNO6/X12bNn53EvIYRYtWqV+MQnPiH69+8v6uvrxdFHHy0efPDBXn/Xzs/HSy+9JD7+8Y+LQYMGibq6OjFu3Dhx5plnigULFggheojaV7/6VXHooYeKvn37iqamJnHooYeKW265peJsBucrxTnvv/9+cdxxx4mmpibR1NQkpkyZIi699FLxxhtv5P07HHTQQeL5558Xxx57rKivrxfjxo0TN998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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " - Hypergraph with 8 vertices and 8 hyperedges.\n", - " - The nodes have feature dimensions 1.\n", - " - The hyperedges have feature dimensions 1.\n", - "\n" - ] - } - ], - "source": [ - "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", - "describe_data(lifted_dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create and Run a Simplicial NN Model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section a simple model is created to test that the used lifting works as intended. In this case the model uses the `incidence_hyperedges` matrix so the lifting should make sure to add it to the data." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Model configuration for hypergraph UNIGCN:\n", - "\n", - "{'in_channels': None,\n", - " 'hidden_channels': 32,\n", - " 'out_channels': None,\n", - " 'n_layers': 2}\n" - ] - } - ], - "source": [ - "from modules.models.hypergraph.unigcn import UniGCNModel\n", - "\n", - "model_type = \"hypergraph\"\n", - "model_id = \"unigcn\"\n", - "model_config = load_model_config(model_type, model_id)\n", - "\n", - "model = UniGCNModel(model_config, dataset_config)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "y_hat = model(lifted_dataset.get(0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If everything is correct the cell above should execute without errors. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "venv_topox", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Graph-to-Hypergraph KNN Lifting Tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "This notebook shows how to import a dataset, with the desired lifting, and how to run a neural network using the loaded data.\n", + "\n", + "The notebook is divided into sections:\n", + "\n", + "- [Loading the dataset](#loading-the-dataset) loads the config files for the data and the desired tranformation, createsa a dataset object and visualizes it.\n", + "- [Loading and applying the lifting](#loading-and-applying-the-lifting) defines a simple neural network to test that the lifting creates the expected incidence matrices.\n", + "- [Create and run a simplicial nn model](#create-and-run-a-simplicial-nn-model) simply runs a forward pass of the model to check that everything is working as expected.\n", + "\n", + "***\n", + "***\n", + "\n", + "Note that for simplicity the notebook is setup to use a simple graph. However, there is a set of available datasets that you can play with.\n", + "\n", + "To switch to one of the available datasets, simply change the *dataset_name* variable in [Dataset config](#dataset-config) to one of the following names:\n", + "\n", + "* cocitation_cora\n", + "* cocitation_citeseer\n", + "* cocitation_pubmed\n", + "* MUTAG\n", + "* NCI1\n", + "* NCI109\n", + "* PROTEINS_TU\n", + "* AQSOL\n", + "* ZINC\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports and utilities" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# With this cell any imported module is reloaded before each cell execution\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "from modules.data.load.loaders import GraphLoader\n", + "from modules.data.preprocess.preprocessor import PreProcessor\n", + "from modules.utils.utils import (\n", + " describe_data,\n", + " load_dataset_config,\n", + " load_model_config,\n", + " load_transform_config,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we just need to spicify the name of the available dataset that we want to load. First, the dataset config is read from the corresponding yaml file (located at `/configs/datasets/` directory), and then the data is loaded via the implemented `Loaders`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset configuration for manual_dataset:\n", + "\n", + "{'data_domain': 'graph',\n", + " 'data_type': 'toy_dataset',\n", + " 'data_name': 'manual',\n", + " 'data_dir': 'datasets/graph/toy_dataset',\n", + " 'num_features': 1,\n", + " 'num_classes': 2,\n", + " 'task': 'classification',\n", + " 'loss_type': 'cross_entropy',\n", + " 'monitor_metric': 'accuracy',\n", + " 'task_level': 'node'}\n" + ] + } + ], + "source": [ + "dataset_name = \"manual_dataset\"\n", + "dataset_config = load_dataset_config(dataset_name)\n", + "loader = GraphLoader(dataset_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then access to the data through the `load()`method:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset only contains 1 sample:\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - Graph with 8 vertices and 13 edges.\n", + " - Features dimensions: [1, 0]\n", + " - There are 0 isolated nodes.\n", + "\n" + ] + } + ], + "source": [ + "dataset = loader.load()\n", + "describe_data(dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading and Applying the Lifting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we will instantiate the lifting we want to apply to the data. For this example the knn lifting was chosen. The algorithm takes the k nearest neighbors for each node and creates a hyperedge with them. The lifting is deterministic and creates a hypergraph with the same number of hyperedges as the number of nodes, and all the hyperedges have the same number of nodes in them. This lifting is based on the initial features of the nodes. The computational complexity of the algorithm is $O(nd+kn)$ [[1]](https://pubmed.ncbi.nlm.nih.gov/33211654/) where $n$ is the number of nodes in the graph, $d$ is the dimension of the feature space and $k$ is fixed.\n", + "\n", + "***\n", + "[[1]](https://pubmed.ncbi.nlm.nih.gov/33211654/) Gao, Y., Zhang, Z., Lin, H., Zhao, X., Du, S., & Zou, C. (2020). Hypergraph learning: Methods and\n", + "practices. IEEE Transactions on Pattern Analysis and Machine Intelligence, 44(5), 2548-2566.\n", + "***\n", + "\n", + "For hypergraphs creating a lifting involves creating the `incidence_hyperedges` matrix.\n", + "\n", + "Similarly to before, we can specify the transformation we want to apply through its type and id --the correxponding config files located at `/configs/transforms`. \n", + "\n", + "Note that the *tranform_config* dictionary generated below can contain a sequence of tranforms if it is needed.\n", + "\n", + "This can also be used to explore liftings from one topological domain to another, for example using two liftings it is possible to achieve a sequence such as: graph -> simplicial complex -> hypergraph. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Transform configuration for graph2hypergraph/knn_lifting:\n", + "\n", + "{'transform_type': 'lifting',\n", + " 'transform_name': 'HypergraphKNNLifting',\n", + " 'k_value': 3,\n", + " 'loop': True,\n", + " 'feature_lifting': 'ProjectionSum'}\n" + ] + } + ], + "source": [ + "# Define transformation type and id\n", + "transform_type = \"liftings\"\n", + "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", + "transform_id = \"graph2hypergraph/knn_lifting\"\n", + "\n", + "# Read yaml file\n", + "transform_config = {\n", + " \"lifting\": load_transform_config(transform_type, transform_id)\n", + " # other transforms (e.g. data manipulations, feature liftings) can be added here\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We than apply the transform via our `PreProcesor`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transform parameters are the same, using existing data_dir: /Users/leone/Desktop/PhD-S/projects/challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/557134810\n", + "\n", + "Dataset only contains 1 sample:\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAIeCAYAAAAveKxoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACeFUlEQVR4nO3deZxbZb348U+W2dvpvu8LUAqUpUChBdpOQWRxRRFFKOAFlEXxouh1Q7wKAi6oyPbDDUS9AirKJtApiy20ZS2IhdJOd9rSFmg7nclMkuf3x/SkJ5ksZz/Pc/J8Xi9fL5lOk3ybSfKd5LyTmBBCoNPpdDqdTre3eNgXQKfT6XQ6nVzp5UCn0+l0Ol1eejnQ6XQ6nU6Xl14OdDqdTqfT5aWXA51Op9PpdHnp5UCn0+l0Ol1eejnQ6XQ6nU6Xl14OdDqdTqfT5aWXA51Op9PpdHlV1XKwZs0aYrEYv/3tb/O+/uijj3LYYYdRX19PLBbjvffe8+0yPPnkk8RiMZ588knfziOIjH/LH/3oR2FflEgVlZ8PXenmzJnDwQcfHJnzkbXx48dz3nnnhX0xlC0yy8Fvf/tbYrEYzz//vK2/t337ds4880waGhr45S9/yd13301TUxPXXnstf/vb3/y5sDZqa2vjsssuY//996exsZHGxkamTp3KpZdeyvLly8O+eIG0adMmvvvd7/Lyyy+HfVF0VZyd+wT9M6tTvWTYFyDIxo0bR0dHBzU1NbmvLVu2jF27dvG///u/nHjiibmvX3vttXziE5/gox/9aAiXtKcHH3yQT33qUySTSc4++2wOPfRQ4vE4K1as4C9/+Qu33norbW1tjBs3LrTLGESbNm3immuuYfz48Rx22GFhXxxdlWbnPkH/zOpUr6qWg1gsRn19fd7Xtm7dCkD//v1DuESlW7VqFWeddRbjxo1jwYIFjBgxIu/Pr7/+em655Rbi8fJP/rS3t9PU1OTnRdVFsCB/bjo7O6mtra34s6yrjvR9lhxV1a2x8JiDOXPmMH/+fACOOuooYrEY5513HrFYjPb2dn73u98Ri8VyXzfauHEjF1xwAcOGDaOuro6DDjqIX//6173Ob8OGDXz0ox+lqamJoUOH8uUvf5lUKmXpst5www20t7fzm9/8ptdiAJBMJvniF7/ImDFjcl8777zz6NOnD6tWreLUU0+lb9++nH322QA888wzfPKTn2Ts2LHU1dUxZswYvvzlL9PR0ZF3usZprF69mpNPPpmmpiZGjhzJ9773PUp9gOcdd9zBpEmTqKur46ijjmLZsmWWZrTSk08+yVFHHQXA+eefn7s+zMeN3HvvvUyfPp2GhgYGDx7MZz/7WTZu3Oh6LnPjx4/n9NNP51//+hdHH3009fX1TJw4kbvuuqvX965evZpPfvKTDBw4kMbGRo455hgeeuihXt9n5+djyZIlfPCDH6Rfv340NjYye/ZsFi1alPc9u3bt4oorrmD8+PHU1dUxdOhQTjrpJF588cWys333u98lFovx+uuv85nPfIYBAwZw3HHH5f7897//fe7fd+DAgZx11lmsX78+7zSM17dfeOEFZs6cSUNDAxMmTOC2227L+z7jmIo//elPfOtb32LUqFE0Njayc+dOz+e0clrG7G+99RbnnXce/fv3p1+/fpx//vns2bMn932V7hMKZ6z0Mwvw+uuvM3fuXBobGxk1ahQ33HBDr9NKpVJcffXVTJ48OXe7veqqqyzfj1Q6n927d9PU1MSXvvSlXn9vw4YNJBIJrrvuOmDfS7dPP/00F198MYMGDaK5uZlzzz2Xd999t9fff+SRRzj++ONpamqib9++nHbaafz73//O+55y91nZbJabbrqJgw46iPr6eoYNG8bFF1/c67yEEHz/+99n9OjRNDY2Mnfu3F7nY7R8+XJmz55NQ0MDo0eP5vvf/z6/+c1viMVirFmzxvbl37x5M+effz6jR4+mrq6OESNG8JGPfKTXaSmZiEi/+c1vBCCWLVtW8nva2toEIH7zm98IIYR47LHHxEUXXSQA8b3vfU/cfffdYvHixeLuu+8WdXV14vjjjxd333137utCCLF582YxevRoMWbMGPG9731P3HrrreLDH/6wAMRPf/rT3Hnt2bNH7L///qK+vl5cddVV4qabbhLTp08X06ZNE4BYuHBh2XlGjhwpJk+ebOvfYP78+aKurk5MmjRJzJ8/X9x2223irrvuEkIIcfnll4tTTz1VXHvtteL2228Xn/vc50QikRCf+MQnep1GfX292G+//cQ555wjbr75ZnH66acLQHz729/u9W95+OGHi8mTJ4vrr79e3HDDDWLw4MFi9OjRoqury9ZlL9XmzZvF9773PQGIiy66KHd9rFq1Sgix73o/6qijxE9/+lPx9a9/XTQ0NIjx48eLd9991/ZcpRo3bpw44IADxLBhw8Q3vvENcfPNN4sjjjhCxGIx8dprr+Vd3mHDhom+ffuKb37zm+InP/mJOPTQQ0U8Hhd/+ctfct9n5+djwYIFora2Vhx77LHixz/+sfjpT38qpk2bJmpra8WSJUty3/eZz3xG1NbWiv/+7/8Wd955p7j++uvFhz70IfH73/++7GxXX321AMTUqVPFRz7yEXHLLbeIX/7yl0IIIb7//e+LWCwmPvWpT4lbbrlFXHPNNWLw4MG9/n1nz54tRo4cKYYOHSouu+wy8fOf/1wcd9xxAhC/+tWvct+3cOHC3Hkddthh4ic/+Ym47rrrRHt7u6dzWj0tY/bDDz9cfPzjHxe33HKL+K//+i8BiKuuuir3feXuEwqr9DNr/FuNGTNGfOlLXxK33HKLaGlpEYB4+OGHc6eTyWTEBz7wAdHY2CiuuOIKcfvtt4vLLrtMJJNJ8ZGPfKTsdWrnfM4++2wxbNgwkU6n8/7+DTfcIGKxmFi7dq0QYt9t7ZBDDhHHH3+8+PnPfy4uvfRSEY/HxQknnCCy2Wzu7951110iFouJD37wg+IXv/iFuP7668X48eNF//79RVtbW+77yt1n/dd//ZdIJpPiwgsvFLfddpv42te+JpqamsRRRx2Vd//yrW99SwDi1FNPFTfffLO44IILxMiRI8XgwYPF/Pnzc9+3YcMGMXDgQDFo0CBxzTXXiB/96EdiypQp4tBDDxVA3uWyevlnzpwp+vXrJ771rW+JO++8U1x77bVi7ty54qmnnqp4/cheVS8H5f5eU1NT3g+W0ec+9zkxYsQIsW3btryvn3XWWaJfv35iz549QgghbrrpJgGIP//5z7nvaW9vF5MnT664HLz//vsCEB/96Ed7/dm7774r3nnnndz/jPMToueGBoivf/3rvf6e+fuMrrvuurwbv/k0Lr/88tzXstmsOO2000Rtba145513hBD7/i0HDRokduzYkfveBx54QADiH//4R8n57LZs2bJe15sQQnR1dYmhQ4eKgw8+WHR0dOS+/uCDDwpAfOc737E9V6nGjRsnAPH000/nvrZ161ZRV1cnrrzyytzXrrjiCgGIZ555Jve1Xbt2iQkTJojx48eLTCYjhLD+85HNZsV+++0nTj755Lw73z179ogJEyaIk046Kfe1fv36iUsvvbTsHMUyHiA//elP5319zZo1IpFIiB/84Ad5X3/11VdFMpnM+/rs2bMFIH784x/nvpZKpcRhhx0mhg4dmrszN5aDiRMn5v1MejmnndMyZr/gggvyTuNjH/uYGDRoUN7XSt0nFKvUz6wQ+/6tjAdBIXr+rYYPHy7OOOOM3NfuvvtuEY/H836WhBDitttuE4BYtGhR2ctg9Xz++c9/CkA88sgjeX9/2rRpYvbs2bn/Nu4rp0+fnvfgfMMNNwhAPPDAA0KInp/3/v37iwsvvDDv9DZv3iz69euX9/VS91nPPPOMAMQ999yT9/VHH3007+tbt24VtbW14rTTTsu7rr/xjW8IIO/6uvzyy0UsFhMvvfRS7mvbt28XAwcOzFsOrF7+d999VwDixhtvFFGsql5WcJsQgvvvv58PfehDCCHYtm1b7n8nn3wy77//fu6pzYcffpgRI0bwiU98Ivf3Gxsbueiiiyqej/EUa58+fXr92Zw5cxgyZEjuf7/85S97fc8XvvCFXl9raGjI/f/29na2bdvGzJkzEULw0ksv9fr+yy67LPf/Y7EYl112GV1dXTzxxBN53/epT32KAQMG5P77+OOPB3qeWve7559/nq1bt3LJJZfkHUty2mmnMWXKlKJP5Vudq1hTp07NzQcwZMgQDjjggLxZH374YY4++ui8p+X79OnDRRddxJo1a3j99ddz32fl5+Pll19m5cqVfOYzn2H79u25n7f29nbmzZvH008/TTabBXqOm1myZAmbNm2qOEuxPv/5z+f991/+8hey2Sxnnnlm3s/68OHD2W+//Vi4cGHe9yeTSS6++OLcf9fW1nLxxRezdetWXnjhhbzvnT9/ft7PpJdz2jmtUrMff/zxbN++PXdb9Lo+ffrw2c9+NvfftbW1HH300Xk/S/feey8HHnggU6ZMyfv3b2lpAej17+/0fE488URGjhzJPffck/vaa6+9xvLly/P+rtFFF12Ud1D3F77wBZLJJA8//DAAjz/+OO+99x6f/vSn8y53IpFgxowZRS934X3WvffeS79+/TjppJPyTmP69On06dMndxpPPPEEXV1dXH755cRisdzfv+KKK3qdx6OPPsqxxx6bd4DowIEDcy9jGFm9/A0NDdTW1vLkk08WfVlF9arqgES3vfPOO7z33nvccccd3HHHHUW/xzjAce3atUyePDnvBxbggAMOqHg+ffv2BXpeDyzs9ttvZ9euXWzZsqXoDTeZTDJ69OheX1+3bh3f+c53+Pvf/97rB/n999/P++94PM7EiRPzvrb//vsD9HotbezYsXn/bSwK5W4smUyGd955J+9rAwcOpLa2tuTfKdbatWuB4v+mU6ZM4V//+lfe1+zMVazCWaFnXvOsa9euZcaMGb2+78ADD8z9+cEHH2z552PlypUAuWNjivX+++8zYMAAbrjhBubPn8+YMWOYPn06p556Kueee26vmUs1YcKEXucthGC//fYr+v3mBwiAkSNH9jqQzPzve8wxx5Q9L/BmTjunZVTu57i5ubnk6Tht9OjRva77AQMG5PHklStX8p///IchQ4YUPQ3jvsbt+cTjcc4++2xuvfVW9uzZQ2NjI/fccw/19fV88pOf7HWahT8Pffr0YcSIEbnbkPHvbywxhRX+exa7z1q5ciXvv/8+Q4cOLXoa5vvZYpdpyJAhedev8b3HHntsr9OaPHlyr/O2cvnr6uq4/vrrufLKKxk2bBjHHHMMp59+Oueeey7Dhw8v+ndVSi8HNjJ+2/jsZz9b8o5n2rRprs+nX79+jBgxgtdee63XnxkPPKUezOrq6nod9Z3JZDjppJPYsWMHX/va15gyZQpNTU1s3LiR8847r9dvUXZKJBJFvy7KHOS3fv36Xg8OCxcuZM6cOY4vRxA5mdVtxnVz4403liRxxjNMZ555Jscffzx//etfeeyxx7jxxhu5/vrr+ctf/sIpp5xS8bzMv8kb5x2LxXjkkUeKzl7smS2rFTsv8GZOO6dlFPR1a+X8stkshxxyCD/5yU+Kfq/5YGQ35wNw7rnncuONN/K3v/2NT3/60/zhD3/g9NNPp1+/fhXPozDj3//uu+8u+iCZTOY/7BS7z8pmswwdOjTv2QxzpRYmL7Jz+a+44go+9KEP8be//Y1//vOffPvb3+a6666jtbWVww8/3LfLGER6OShR4bYNPT+Qffv2JZPJ5L0nQrHGjRvHa6+9hhAi77TeeOMNS+d/2mmnceedd7J06VKOPvpoexe+oFdffZU333yT3/3ud5x77rm5rz/++ONFvz+bzbJ69ercb30Ab775JtBz1L7bhg8f3uu8Dz300JLfX+y6AHLv7/DGG2/02vLfeOONXu//4PdcxmUqdh2vWLEi7zJb/fmYNGkS0PPbSqWfOYARI0ZwySWXcMkll7B161aOOOIIfvCDH1haDgqbNGkSQggmTJiQ929Wqk2bNvViaFb/fb2c0+5pWa3Uz6Hb7y3VpEmTeOWVV5g3b54np1eugw8+mMMPP5x77rmH0aNHs27dOn7xi18U/d6VK1cyd+7c3H/v3r2bt99+m1NPPTV3uQGGDh3q+N9/0qRJPPHEE8yaNavXImnOuD2tXLky7xmyd955p9ezl+PGjeOtt97qdRqFX7N7+SdNmsSVV17JlVdeycqVKznssMP48Y9/zO9///uKf1fm9DEHJWpqaur1NsqJRIIzzjiD+++/v+hv9eanyk899VQ2bdrEfffdl/vanj17Sr4cUdhVV11FY2MjF1xwAVu2bOn153Z+ozF+ezD/HSEEP/vZz0r+nZtvvjnve2+++WZqamqYN2+e5fMtVX19PSeeeGLe/wqfAjRnPNgUXh9HHnkkQ4cO5bbbbsujXY888gj/+c9/OO2003qdlp9zQc/1vnTpUp599tnc19rb27njjjsYP348U6dOzX2flZ+P6dOnM2nSJH70ox8VfZnJ+JnLZDK9Xh4aOnQoI0eOtMXezH384x8nkUhwzTXX9Pp5E0Kwffv2vK+l02luv/323H93dXVx++23M2TIEKZPn172vLyc0+pp2a3YfUK574XeP7N2OvPMM9m4cSP/7//9v15/1tHRQXt7u+PTLtY555zDY489xk033cSgQYNKLpR33HEH3d3duf++9dZbSafTue8/+eSTaW5u5tprr837PiMr//5nnnkmmUyG//3f/+31Z+l0OvfveuKJJ1JTU8MvfvGLvJ/Rm266qdffO/nkk3n22Wfz3rVyx44dvZ6dsHr59+zZQ2dnZ96fTZo0ib59+zq+zclU5J45+PWvf82jjz7a6+vFHG+5pk+fzhNPPMFPfvITRo4cyYQJE5gxYwY//OEPWbhwITNmzODCCy9k6tSp7NixgxdffJEnnniCHTt2AHDhhRdy8803c+655/LCCy8wYsQI7r77bhobGy2d/3777ccf/vAHPv3pT3PAAQfk3iFRCEFbWxt/+MMfiMfjRY8vKGzKlClMmjSJr3zlK2zcuJHm5mbuv//+kscF1NfX8+ijjzJ//nxmzJjBI488wkMPPcQ3vvENX5/OK9WkSZPo378/t912G3379qWpqYkZM2YwYcIErr/+es4//3xmz57Npz/9abZs2cLPfvYzxo8fz5e//OXA5/r617/OH//4R0455RS++MUvMnDgQH73u9/R1tbG/fffn3v61OrPRzwe58477+SUU07hoIMO4vzzz2fUqFFs3LiRhQsX0tzczD/+8Q927drF6NGj+cQnPsGhhx5Knz59eOKJJ1i2bBk//vGPHc0yadIkvv/97/M///M/rFmzho9+9KP07duXtrY2/vrXv3LRRRfxla98Jff9I0eO5Prrr2fNmjXsv//+/N///R8vv/wyd9xxR6/jEwrzck6rp2W3UvcJpf7tSv3MWu2cc87hz3/+M5///OdZuHAhs2bNIpPJsGLFCv785z/zz3/+kyOPPNL2HKX6zGc+w1VXXcVf//pXvvCFL5S8zrq6upg3bx5nnnkmb7zxBrfccgvHHXccH/7wh4GeZ2xuvfVWzjnnHI444gjOOusshgwZwrp163jooYeYNWtW3pJerNmzZ3PxxRdz3XXX8fLLL/OBD3yAmpoaVq5cyb333svPfvYzPvGJTzBkyBC+8pWvcN1113H66adz6qmn8tJLL/HII48wePDgvNO86qqr+P3vf89JJ53E5ZdfTlNTE3feeSdjx45lx44duWdnrF7+N998M/fvMHXqVJLJJH/961/ZsmULZ511lgfXSMgFaiN8zGA2pf63fv16W5RxxYoV4oQTThANDQ29SMyWLVvEpZdeKsaMGSNqamrE8OHDxbx588Qdd9yRdxpr164VH/7wh0VjY6MYPHiw+NKXvpSjOJXe58DorbfeEl/4whfE5MmTRX19vWhoaBBTpkwRn//858XLL7+c973z588XTU1NRU/n9ddfFyeeeKLo06ePGDx4sLjwwgvFK6+80uvfwziNVatW5Yz1sGHDxNVXX51jeELso4zFGA8grr76akvzWe2BBx4QU6dOFclkstdl/r//+z9x+OGHi7q6OjFw4EBx9tlniw0bNuT9fatzlWrcuHHitNNO6/X12bNn53EvIYRYtWqV+MQnPiH69+8v6uvrxdFHHy0efPDBXn/Xzs/HSy+9JD7+8Y+LQYMGibq6OjFu3Dhx5plnigULFggheojaV7/6VXHooYeKvn37iqamJnHooYeKW265peJsBucrxTnvv/9+cdxxx4mmpibR1NQkpkyZIi699FLxxhtv5P07HHTQQeL5558Xxx57rKivrxfjxo0TN998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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - Hypergraph with 8 vertices and 8 hyperedges.\n", + " - The nodes have feature dimensions 1.\n", + " - The hyperedges have feature dimensions 1.\n", + "\n" + ] + } + ], + "source": [ + "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", + "describe_data(lifted_dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create and Run a Simplicial NN Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section a simple model is created to test that the used lifting works as intended. In this case the model uses the `incidence_hyperedges` matrix so the lifting should make sure to add it to the data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Model configuration for hypergraph UNIGCN:\n", + "\n", + "{'in_channels': None,\n", + " 'hidden_channels': 32,\n", + " 'out_channels': None,\n", + " 'n_layers': 2}\n" + ] + } + ], + "source": [ + "from modules.models.hypergraph.unigcn import UniGCNModel\n", + "\n", + "model_type = \"hypergraph\"\n", + "model_id = \"unigcn\"\n", + "model_config = load_model_config(model_type, model_id)\n", + "\n", + "model = UniGCNModel(model_config, dataset_config)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "y_hat = model(lifted_dataset.get(0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If everything is correct the cell above should execute without errors. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv_topox", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorials/graph2simplicial/clique_lifting.ipynb b/tutorials/graph2simplicial/clique_lifting.ipynb index 4d551516..1ffb65d3 100644 --- a/tutorials/graph2simplicial/clique_lifting.ipynb +++ b/tutorials/graph2simplicial/clique_lifting.ipynb @@ -53,6 +53,9 @@ "outputs": [], "source": [ "# With this cell any imported module is reloaded before each cell execution\n", + "\n", + "import sys\n", + "\n", "%load_ext autoreload\n", "%autoreload 2\n", "from modules.data.load.loaders import GraphLoader\n", @@ -67,21 +70,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'data' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[14], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdata\u001b[49m\n", - "\u001b[0;31mNameError\u001b[0m: name 'data' is not defined" - ] - } - ], + "outputs": [], "source": [] }, { @@ -100,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -138,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -149,17 +140,9 @@ "Dataset only contains 1 sample:\n" ] }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Processing...\n", - "Done!\n" - ] - }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -211,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -252,21 +235,22 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Transform parameters are the same, using existing data_dir: /Users/leone/Desktop/PhD-S/projects/challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/2744620725\n", + "In init\n", + "Transform parameters are the same, using existing data_dir: /mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/2744620725\n", "\n", "Dataset only contains 1 sample:\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAIeCAYAAAAveKxoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACmk0lEQVR4nOzdd3hU17Xw4d+ZqlEvSHSE6FUSHYNEFSXGBbAN2HHcYjtO4hLbSa7j5KbYju3ky01PfJOb6yQ3waa64SKKKBLFYJsiuumiqiJUp579/TFIRkZCAo10RtJ6n2ce0OjMPmuk0Zw1u6ytKaUUQgghhBCXmYwOQAghhBDBRZIDIYQQQtQhyYEQQggh6pDkQAghhBB1SHIghBBCiDokORBCCCFEHZIcCCGEEKIOSQ6EEEIIUYckB0IIIYSoQ5KDNujkyZNomsY//vGPOvdnZmaSmppKSEgImqZRWlraYjFs3LgRTdPYuHFji52jNdT8LH/1q1+16nkfeOABevfu3eRjw8PDWzagJvrpT3+KpmlGh1FHQ38PbVnv3r154IEHjA7jutT3ewjG14toGkkOgsw//vEPNE3j008/va7HFRcXs2DBAhwOB3/605/417/+RVhYGC+//DLvvPNOywR7HU6cOMHjjz/OgAEDCA0NJTQ0lCFDhvDtb3+b3Nxco8MzXFVVFT/96U/bfLIVzA4dOsT3v/99UlNTiYiIoGvXrsyZM+e6/9aCydNPP83IkSOJjY0lNDSUwYMH89Of/pSKigqjQxNtnMXoAMT1S0xMpLq6GqvVWnvfJ598Qnl5OS+++CIZGRm197/88svceeedzJ0714BI/d5//30WLlyIxWLhq1/9KikpKZhMJg4dOsRbb73Fa6+9xokTJ0hMTDQsxtb2P//zP+i6Xvt1VVUVP/vZzwCYMmWKQVG1b3/729/43//9X+644w6+9a1vcenSJf7yl78wfvx4MjMz6/zdtBWffPIJ6enpPPjgg4SEhLBr1y5effVV1q1bR3Z2NiaTfP4TN0aSgzZI0zRCQkLq3FdQUABAdHS0ARE17NixYyxatIjExESysrLo2rVrne//4he/4M9//nOjb2KVlZWEhYW1ZKit6srErqNSSuF0OnE4HK1yvrvvvpuf/vSndYZoHnroodpP220xOdi8efNV9/Xt25fvfve77Nixg/HjxxsQlWgPJK1sg748tjdlyhTuv/9+AMaMGYOmaTzwwANomkZlZSX//Oc/0TSt9v4aZ8+e5aGHHqJz587Y7XaGDh3K66+/ftX5zpw5w9y5cwkLCyMhIYGnn34al8vVpFh/+ctfUllZyd///verEgMAi8XCk08+Sc+ePWvvqxljP3bsGDfffDMRERF89atfBSAnJ4e77rqLXr16Ybfb6dmzJ08//TTV1dV12q1p4/jx48yaNYuwsDC6devGCy+8QEMbkf71r3+lb9++2O12xowZwyeffHLN51ZaWorZbOb3v/997X1FRUWYTCbi4uLqnOeb3/wmXbp0qRNfzZyDkydPEh8fD8DPfvaz2t/VT3/60zrnO3v2LHPnziU8PJz4+Hi++93v4vP5rhljjY8++ojJkycTERFBZGQkY8aM4Y033qhzzPLlyxk1ahQOh4NOnTpx7733cvbs2Ubb9nq9vPjii7U/u969e/P8889f9Rrp3bs3t9xyC6tXr2b06NE4HA7+8pe/AP6f5Xe+8x169uyJ3W6nX79+/OIXv6jTu1Jz3AMPPEBUVBTR0dHcf//9TZ5bM2rUqKvmbsTFxZGens7BgwcbffypU6f41re+xcCBA3E4HMTFxXHXXXdx8uTJOsfVDA1u2bKFZ555hvj4eMLCwpg3bx6FhYV1jlVK8dJLL9GjRw9CQ0OZOnUq+/fvb9LzaUjN66qpP5dDhw6xYMEC4uPjcTgcDBw4kB/+8Id1jmnqe0VTrF27lrS0NKKjowkPD2fgwIE8//zzN9SWaDnSc9AO/PCHP2TgwIH89a9/5YUXXiApKYm+ffuSkZHBww8/zNixY3n00UcB/6cKgPz8fMaPH4+maTz++OPEx8fz0Ucf8fWvf52ysjK+853vAFBdXc306dPJy8vjySefpFu3bvzrX/9i/fr1TYrt/fffp1+/fowbN+66npPX62XWrFmkpaXxq1/9itDQUMB/AauqquKb3/wmcXFx7Nixgz/84Q+cOXOG5cuX12nD5/Mxe/Zsxo8fzy9/+UsyMzP5yU9+gtfr5YUXXqhz7BtvvEF5eTnf+MY30DSNX/7yl8yfP5/jx483+Ck/OjqaYcOGkZ2dzZNPPgn4P8lpmkZJSQkHDhxg6NChgD+pSU9Pr7ed+Ph4XnvtNb75zW8yb9485s+fD0BycnKd5zJr1izGjRvHr371K9atW8d//dd/0bdvX775zW9e82f5j3/8g4ceeoihQ4fygx/8gOjoaHbt2kVmZib33HNP7TEPPvggY8aM4ZVXXiE/P5/f/e53bNmyhV27dl2zR+rhhx/mn//8J3feeSfPPvss27dv55VXXuHgwYO8/fbbdY49fPgwd999N9/4xjd45JFHGDhwIFVVVUyePJmzZ8/yjW98g169erF161Z+8IMfcP78eX77298C/gvp7bffzubNm3nssccYPHgwb7/9dm1ifKMuXLhAp06dGj3uk08+YevWrSxatIgePXpw8uRJXnvtNaZMmcKBAwdqX6M1nnjiCWJiYvjJT37CyZMn+e1vf8vjjz/O0qVLa4/58Y9/zEsvvcTNN9/MzTffzM6dO5k5cyZut7vJ8Xu9XkpLS3G73ezbt48f/ehHREREMHbs2EYfm5ubS3p6OlarlUcffZTevXtz7NgxVq1axc9//nOg6e8VTbF//35uueUWkpOTeeGFF7Db7Rw9epQtW7Y0uQ3RSpQIKn//+98VoD755JMGjzlx4oQC1N///vdGHxcWFqbuv//+q9r4+te/rrp27aqKiorq3L9o0SIVFRWlqqqqlFJK/fa3v1WAWrZsWe0xlZWVql+/fgpQGzZsaDDOS5cuKUDNnTv3qu9dvHhRFRYW1t5qzqeUUvfff78C1HPPPXfV4648rsYrr7yiNE1Tp06duqqNJ554ovY+XdfVnDlzlM1mU4WFhUqpL36WcXFxqqSkpPbYd999VwFq1apVDT4/pZT69re/rTp37lz79TPPPKMmTZqkEhIS1GuvvaaUUqq4uFhpmqZ+97vf1YkvMTGx9uvCwkIFqJ/85CdXnaPmubzwwgt17h8xYoQaNWrUNeMrLS1VERERaty4caq6urrO93RdV0op5Xa7VUJCgho2bFidY95//30FqB//+Me19/3kJz9RV75t7N69WwHq4YcfrtP2d7/7XQWo9evX196XmJioAJWZmVnn2BdffFGFhYWpzz//vM79zz33nDKbzSovL08ppdQ777yjAPXLX/6y9hiv16vS09Ov+ntoquzsbKVpmvrP//zPRo+t77W3bds2Baj/+7//q72v5m8xIyOj9meslFJPP/20MpvNqrS0VCmlVEFBgbLZbGrOnDl1jnv++ecVUO/fbX1qYqi5DRw48Jp/l1eaNGmSioiIqPO3o5SqE09T3yvqe1/68uvlN7/5jQJq//5E8JJhhQ5IKcXKlSu59dZbUUpRVFRUe5s1axaXLl1i586dAHz44Yd07dqVO++8s/bxoaGhtT0R11JWVgZQ7zK8KVOmEB8fX3v705/+dNUx9X0ivnJ8urKykqKiIiZMmIBSil27dl11/OOPP177/5pPPm63m3Xr1tU5buHChcTExNR+XfMp//jx49d8junp6eTn53P48GHA30MwadIk0tPTycnJAfy9CUqpBnsOmuqxxx676tyNxbd27VrKy8t57rnnrpqnUrPE7NNPP6WgoIBvfetbdY6ZM2cOgwYN4oMPPmiw/Q8//BCAZ555ps79zz77LMBVj01KSmLWrFl17lu+fDnp6enExMTUeS1mZGTg8/nIzs6uPZfFYqnzujCbzTzxxBPX/Bk0pKCggHvuuYekpCS+//3vN3r8la89j8dDcXEx/fr1Izo6uvbv5UqPPvponWV86enp+Hw+Tp06BcC6detwu9088cQTdY67nk/iAEOGDGHt2rW88847fP/73ycsLKxJqxUKCwvJzs7moYceolevXnW+VxPP9bxXNEVND9S777571ZCRCC4yrNABFRYWUlpayl//+lf++te/1ntMzQTHU6dO0a9fv6vWKg8cOLDR80RERADU+0b1l7/8hfLycvLz87n33nuv+r7FYqFHjx5X3Z+Xl8ePf/xj3nvvPS5evFjne5cuXarztclkok+fPnXuGzBgAMBV48RffnOsSRS+fI4vq7ng5+Tk0KNHD3bt2sVLL71EfHx8be2EnJwcIiMjSUlJuWZb1xISElI7L+HKGBuL79ixYwAMGzaswWNqLlb1/U4HDRpU76S3Kx9rMpno169fnfu7dOlCdHR0bds1kpKSrmrjyJEj5ObmXvX8alz5WuzatetVyWZTXotfVllZyS233EJ5eTmbN29uUh2J6upqXnnlFf7+979z9uzZOnNKvvzag8ZfUzU/m/79+9c5Lj4+vk6i2pjIyMjayZS33347b7zxBrfffjs7d+4kJSUFt9tNSUnJVeeoSSyv9dq4nveKpli4cCF/+9vfePjhh3nuueeYPn068+fP584775SVFUFGkoMOqCZjv/feexscr71yvPtGRUVF0bVrV/bt23fV92rmIHz5Il3Dbrdf9Wbh8/mYMWMGJSUl/Md//AeDBg0iLCyMs2fP8sADDzTrk4jZbK73ftXA5MUa3bp1IykpiezsbHr37o1Siptuuon4+HieeuopTp06RU5ODhMmTGjWm19D8QWLpha6qW9lgq7rzJgxo8FP7zUJXaC43W7mz59Pbm4uq1evvubF8UpPPPEEf//73/nOd77DTTfdRFRUFJqmsWjRonpfezf6mmqu+fPn87WvfY0lS5aQkpLC1q1bmTp1ap1jTpw40aS2Av1e4XA4yM7OZsOGDXzwwQdkZmaydOlSpk2bxpo1a4L+dd6RSHLQztX3ph0fH09ERAQ+n6/R5VuJiYns27cPpVSdtmq60RszZ84c/va3v7Fjx44mTZC6lr179/L555/zz3/+k/vuu6/2/rVr19Z7vK7rHD9+vM7F5fPPPwdocnXCpkhPTyc7O5ukpKTaAjspKSlERUWRmZnJzp07a2sYNKSlqsjVTEDdt2/fVZ/ua9TUlzh8+DDTpk2r873Dhw9fs/5EYmIiuq5z5MgRBg8eXHt/fn4+paWlTapd0bdvXyoqKpr0WszKyqKioqLOJ/2mvhbB/5q47777yMrKYtmyZUyePLnJj12xYgX3338///Vf/1V7n9PpvOFKpDU/myNHjtTp4SosLGy0R+haXC4Xuq7X9makpKRc9TfSpUuX2qXB9SXvNa7nvaKpTCYT06dPZ/r06fz617/m5Zdf5oc//CEbNmxok8tJ2yvpx2nnwsLCrnrzMpvN3HHHHaxcubLeN4Yrl1vdfPPNnDt3jhUrVtTeV1VV1WAX45d9//vfJzQ0lIceeoj8/Pyrvn89n6JqPlVc+RilFL/73e8afMwf//jHOsf+8Y9/xGq1Mn369CaftzHp6emcPHmSpUuX1g4zmEwmJkyYwK9//Ws8Hk+j8w1qZroHuuT1zJkziYiI4JVXXsHpdNb5Xs3PcfTo0SQkJPDf//3fdZYffvTRRxw8eJA5c+Y02P7NN98MULuioMavf/1rgGs+tsaCBQvYtm0bq1evvup7paWleL3e2nN5vV5ee+212u/7fD7+8Ic/NHqOGk888QRLly7lz3/+c+2qkKYym81XvV7/8Ic/NHk56ZdlZGRgtVr5wx/+UKfdL/8sG1JaWorH47nq/r/97W+A//cK/uGMjIyMOreaYapJkybx+uuvk5eXV6eNmniu572iKb48vAGQmpoK0OTl0aJ1SM9BkHr99dfJzMy86v6nnnrqutoZNWoU69at49e//nVtF/i4ceN49dVX2bBhA+PGjeORRx5hyJAhlJSUsHPnTtatW1f7R/zII4/wxz/+kfvuu4/PPvuMrl278q9//euqZVsN6d+/P2+88QZ33303AwcOrK2QqJTixIkTvPHGG5hMpnrnF3zZoEGDagu8nD17lsjISFauXNngp6yQkBAyMzO5//77GTduHB999BEffPABzz//fIPj2zei5sJ/+PBhXn755dr7J02axEcffVRbN+FaHA4HQ4YMYenSpQwYMIDY2FiGDRvW5C7vhkRGRvKb3/yGhx9+mDFjxnDPPfcQExPDnj17qKqq4p///CdWq5Vf/OIXPPjgg0yePJm77767dilj7969efrppxtsPyUlhfvvv5+//vWvlJaWMnnyZHbs2ME///lP5s6de1V3dn2+973v8d5773HLLbfwwAMPMGrUKCorK9m7dy8rVqzg5MmTdOrUiVtvvZWJEyfy3HPPcfLkSYYMGcJbb71V73h/fX7729/y5z//mZtuuonQ0FD+/e9/1/n+vHnzrllo65ZbbuFf//oXUVFRDBkyhG3btrFu3Tri4uKadP4vq6lV8corr3DLLbdw8803s2vXLj766KMmLa3cuHEjTz75JHfeeSf9+/fH7XaTk5PDW2+9xejRo+udy/Nlv//970lLS2PkyJE8+uijJCUlcfLkST744AN2794N0OT3iqZ44YUXyM7OZs6cOSQmJlJQUMCf//xnevToQVpaWpPbEa2gdRdHiMbULINq6Hb69OnrWsp46NAhNWnSJOVwOK5aHpWfn6++/e1vq549eyqr1aq6dOmipk+frv7617/WaePUqVPqtttuU6GhoapTp07qqaeeUpmZmY0uZbzS0aNH1Te/+U3Vr18/FRISohwOhxo0aJB67LHH1O7du+sce//996uwsLB62zlw4IDKyMhQ4eHhqlOnTuqRRx5Re/bsuernUdPGsWPH1MyZM1VoaKjq3Lmz+slPfqJ8Pl/tcTU/y//3//7fVeeigaWF9UlISFCAys/Pr71v8+bNClDp6elXHf/lpYxKKbV161Y1atQoZbPZ6py7oZ/Hl5eJXct7772nJkyYoBwOh4qMjFRjx45Vb775Zp1jli5dqkaMGKHsdruKjY1VX/3qV9WZM2caPafH41E/+9nPVFJSkrJarapnz57qBz/4gXI6nXWOS0xMVHPmzKk3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", + "image/png": "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0bdvX775zW9e82f5j3/8g4ceeoihQ4fygx/8gOjoaHbt2kVmZib33HNP7TEPPvggY8aM4ZVXXiE/P5/f/e53bNmyhV27dl2zR+rhhx/mn//8J3feeSfPPvss27dv55VXXuHgwYO8/fbbdY49fPgwd999N9/4xjd45JFHGDhwIFVVVUyePJmzZ8/yjW98g169erF161Z+8IMfcP78eX77298C/gvp7bffzubNm3nssccYPHgwb7/9dm1ifKMuXLhAp06dGj3uk08+YevWrSxatIgePXpw8uRJXnvtNaZMmcKBAwdqX6M1nnjiCWJiYvjJT37CyZMn+e1vf8vjjz/O0qVLa4/58Y9/zEsvvcTNN9/MzTffzM6dO5k5cyZut7vJ8Xu9XkpLS3G73ezbt48f/ehHREREMHbs2EYfm5ubS3p6OlarlUcffZTevXtz7NgxVq1axc9//nOg6e8VTbF//35uueUWkpOTeeGFF7Db7Rw9epQtW7Y0uQ3RSpQIKn//+98VoD755JMGjzlx4oQC1N///vdGHxcWFqbuv//+q9r4+te/rrp27aqKiorq3L9o0SIVFRWlqqqqlFJK/fa3v1WAWrZsWe0xlZWVql+/fgpQGzZsaDDOS5cuKUDNnTv3qu9dvHhRFRYW1t5qzqeUUvfff78C1HPPPXfV4648rsYrr7yiNE1Tp06duqqNJ554ovY+XdfVnDlzlM1mU4WFhUqpL36WcXFxqqSkpPbYd999VwFq1apVDT4/pZT69re/rTp37lz79TPPPKMmTZqkEhIS1GuvvaaUUqq4uFhpmqZ+97vf1YkvMTGx9uvCwkIFqJ/85CdXnaPmubzwwgt17h8xYoQaNWrUNeMrLS1VERERaty4caq6urrO93RdV0op5Xa7VUJCgho2bFidY95//30FqB//+Me19/3kJz9RV75t7N69WwHq4YcfrtP2d7/7XQWo9evX196XmJioAJWZmVnn2BdffFGFhYWpzz//vM79zz33nDKbzSovL08ppdQ777yjAPXLX/6y9hiv16vS09Ov+ntoquzsbKVpmvrP//zPRo+t77W3bds2Baj/+7//q72v5m8xIyOj9meslFJPP/20MpvNqrS0VCmlVEFBgbLZbGrOnDl1jnv++ecVUO/fbX1qYqi5DRw48Jp/l1eaNGmSioiIqPO3o5SqE09T3yvqe1/68uvlN7/5jQJq//5E8JJhhQ5IKcXKlSu59dZbUUpRVFRUe5s1axaXLl1i586dAHz44Yd07dqVO++8s/bxoaGhtT0R11JWVgZQ7zK8KVOmEB8fX3v705/+dNUx9X0ivnJ8urKykqKiIiZMmIBSil27dl11/OOPP177/5pPPm63m3Xr1tU5buHChcTExNR+XfMp//jx49d8junp6eTn53P48GHA30MwadIk0tPTycnJAfy9CUqpBnsOmuqxxx676tyNxbd27VrKy8t57rnnrpqnUrPE7NNPP6WgoIBvfetbdY6ZM2cOgwYN4oMPPmiw/Q8//BCAZ555ps79zz77LMBVj01KSmLWrFl17lu+fDnp6enExMTUeS1mZGTg8/nIzs6uPZfFYqnzujCbzTzxxBPX/Bk0pKCggHvuuYekpCS+//3vN3r8la89j8dDcXEx/fr1Izo6uvbv5UqPPvponWV86enp+Hw+Tp06BcC6detwu9088cQTdY67nk/iAEOGDGHt2rW88847fP/73ycsLKxJqxUKCwvJzs7moYceolevXnW+VxPP9bxXNEVND9S777571ZCRCC4yrNABFRYWUlpayl//+lf++te/1ntMzQTHU6dO0a9fv6vWKg8cOLDR80RERADU+0b1l7/8hfLycvLz87n33nuv+r7FYqFHjx5X3Z+Xl8ePf/xj3nvvPS5evFjne5cuXarztclkok+fPnXuGzBgAMBV48RffnOsSRS+fI4vq7ng5+Tk0KNHD3bt2sVLL71EfHx8be2EnJwcIiMjSUlJuWZb1xISElI7L+HKGBuL79ixYwAMGzaswWNqLlb1/U4HDRpU76S3Kx9rMpno169fnfu7dOlCdHR0bds1kpKSrmrjyJEj5ObmXvX8alz5WuzatetVyWZTXotfVllZyS233EJ5eTmbN29uUh2J6upqXnnlFf7+979z9uzZOnNKvvzag8ZfUzU/m/79+9c5Lj4+vk6i2pjIyMjayZS33347b7zxBrfffjs7d+4kJSUFt9tNSUnJVeeoSSyv9dq4nveKpli4cCF/+9vfePjhh3nuueeYPn068+fP584775SVFUFGkoMOqCZjv/feexscr71yvPtGRUVF0bVrV/bt23fV92rmIHz5Il3Dbrdf9Wbh8/mYMWMGJSUl/Md//AeDBg0iLCyMs2fP8sADDzTrk4jZbK73ftXA5MUa3bp1IykpiezsbHr37o1Siptuuon4+HieeuopTp06RU5ODhMmTGjWm19D8QWLpha6qW9lgq7rzJgxo8FP7zUJXaC43W7mz59Pbm4uq1evvubF8UpPPPEEf//73/nOd77DTTfdRFRUFJqmsWjRonpfezf6mmqu+fPn87WvfY0lS5aQkpLC1q1bmTp1ap1jTpw40aS2Av1e4XA4yM7OZsOGDXzwwQdkZmaydOlSpk2bxpo1a4L+dd6RSHLQztX3ph0fH09ERAQ+n6/R5VuJiYns27cPpVSdtmq60RszZ84c/va3v7Fjx44mTZC6lr179/L555/zz3/+k/vuu6/2/rVr19Z7vK7rHD9+vM7F5fPPPwdocnXCpkhPTyc7O5ukpKTaAjspKSlERUWRmZnJzp07a2sYNKSlqsjVTEDdt2/fVZ/ua9TUlzh8+DDTpk2r873Dhw9fs/5EYmIiuq5z5MgRBg8eXHt/fn4+paWlTapd0bdvXyoqKpr0WszKyqKioqLOJ/2mvhbB/5q47777yMrKYtmyZUyePLnJj12xYgX3338///Vf/1V7n9PpvOFKpDU/myNHjtTp4SosLGy0R+haXC4Xuq7X9makpKRc9TfSpUuX2qXB9SXvNa7nvaKpTCYT06dPZ/r06fz617/m5Zdf5oc//CEbNmxok8tJ2yvpx2nnwsLCrnrzMpvN3HHHHaxcubLeN4Yrl1vdfPPNnDt3jhUrVtTeV1VV1WAX45d9//vfJzQ0lIceeoj8/Pyrvn89n6JqPlVc+RilFL/73e8afMwf//jHOsf+8Y9/xGq1Mn369CaftzHp6emcPHmSpUuX1g4zmEwmJkyYwK9//Ws8Hk+j8w1qZroHuuT1zJkziYiI4JVXXsHpdNb5Xs3PcfTo0SQkJPDf//3fdZYffvTRRxw8eJA5c+Y02P7NN98MULuioMavf/1rgGs+tsaCBQvYtm0bq1evvup7paWleL3e2nN5vV5ee+212u/7fD7+8Ic/NHqOGk888QRLly7lz3/+c+2qkKYym81XvV7/8Ic/NHk56ZdlZGRgtVr5wx/+UKfdL/8sG1JaWorH47nq/r/97W+A//cK/uGMjIyMOreaYapJkybx+uuvk5eXV6eNmniu572iKb48vAGQmpoK0OTl0aJ1SM9BkHr99dfJzMy86v6nnnrqutoZNWoU69at49e//nVtF/i4ceN49dVX2bBhA+PGjeORRx5hyJAhlJSUsHPnTtatW1f7R/zII4/wxz/+kfvuu4/PPvuMrl278q9//euqZVsN6d+/P2+88QZ33303AwcOrK2QqJTixIkTvPHGG5hMpnrnF3zZoEGDagu8nD17lsjISFauXNngp6yQkBAyMzO5//77GTduHB999BEffPABzz//fIPj2zei5sJ/+PBhXn755dr7J02axEcffVRbN+FaHA4HQ4YMYenSpQwYMIDY2FiGDRvW5C7vhkRGRvKb3/yGhx9+mDFjxnDPPfcQExPDnj17qKqq4p///CdWq5Vf/OIXPPjgg0yePJm77767dilj7969efrppxtsPyUlhfvvv5+//vWvlJaWMnnyZHbs2ME///lP5s6de1V3dn2+973v8d5773HLLbfwwAMPMGrUKCorK9m7dy8rVqzg5MmTdOrUiVtvvZWJEyfy3HPPcfLkSYYMGcJbb71V73h/fX7729/y5z//mZtuuonQ0FD+/e9/1/n+vHnzrllo65ZbbuFf//oXUVFRDBkyhG3btrFu3Tri4uKadP4vq6lV8corr3DLLbdw8803s2vXLj766KMmLa3cuHEjTz75JHfeeSf9+/fH7XaTk5PDW2+9xejRo+udy/Nlv//970lLS2PkyJE8+uijJCUlcfLkST744AN2794N0OT3iqZ44YUXyM7OZs6cOSQmJlJQUMCf//xnevToQVpaWpPbEa2gdRdHiMbULINq6Hb69OnrWsp46NAhNWnSJOVwOK5aHpWfn6++/e1vq549eyqr1aq6dOmipk+frv7617/WaePUqVPqtttuU6GhoapTp07qqaeeUpmZmY0uZbzS0aNH1Te/+U3Vr18/FRISohwOhxo0aJB67LHH1O7du+sce//996uwsLB62zlw4IDKyMhQ4eHhqlOnTuqRRx5Re/bsuernUdPGsWPH1MyZM1VoaKjq3Lmz+slPfqJ8Pl/tcTU/y//3//7fVeeigaWF9UlISFCAys/Pr71v8+bNClDp6elXHf/lpYxKKbV161Y1atQoZbPZ6py7oZ/Hl5eJXct7772nJkyYoBwOh4qMjFRjx45Vb775Zp1jli5dqkaMGKHsdruKjY1VX/3qV9WZM2caPafH41E/+9nPVFJSkrJarapnz57qBz/4gXI6nXWOS0xMVHPmzKk3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", "text/plain": [ "
" ] @@ -311,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -343,11 +327,32 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.],\n", + " [0., 1.]], grad_fn=)\n" + ] + } + ], "source": [ - "y_hat = model(lifted_dataset.get(0))" + "y_hat = model(lifted_dataset.get(0))\n", + "print(y_hat)" ] }, { From 4bae6244c485e66c5783245a7ea2bab702dc8469 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 5 Jul 2024 23:09:19 -0400 Subject: [PATCH 02/19] Made a basic setup for the submission --- .../weighted_clique_lifting.ipynb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb index e69de29b..709d82cf 100644 --- a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb +++ b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb @@ -0,0 +1,18 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 64262466816b081137c96a7963a8129792939f77 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 6 Jul 2024 09:48:14 -0400 Subject: [PATCH 03/19] Added a template for adding the new dataset, need to confirm details with the Dr. --- configs/datasets/NewDataset.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 configs/datasets/NewDataset.yaml diff --git a/configs/datasets/NewDataset.yaml b/configs/datasets/NewDataset.yaml new file mode 100644 index 00000000..17f73a3f --- /dev/null +++ b/configs/datasets/NewDataset.yaml @@ -0,0 +1,10 @@ +data_domain: graph +data_type: Transactions +data_name: AragonNetwork +data_dir: datasets/${data_domain}/${data_type} + +num_features: 1 +num_classes: 1 +task: classification +loss_type: cross_entropy +task_level: graph \ No newline at end of file From a12d306bb0d8dbfc9ab4feb43de5477c296672ac Mon Sep 17 00:00:00 2001 From: root Date: Sat, 6 Jul 2024 09:55:39 -0400 Subject: [PATCH 04/19] Fixed an issue with a print statement --- modules/transforms/liftings/lifting.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/transforms/liftings/lifting.py b/modules/transforms/liftings/lifting.py index 969ab7e9..341f9b09 100644 --- a/modules/transforms/liftings/lifting.py +++ b/modules/transforms/liftings/lifting.py @@ -58,7 +58,6 @@ def forward(self, data: torch_geometric.data.Data) -> torch_geometric.data.Data: torch_geometric.data.Data The lifted data. """ - print("In forward") initial_data = data.to_dict() lifted_topology = self.lift_topology(data) lifted_topology = self.feature_lifting(lifted_topology) From 3ed05e4b3635df6365528e8bb7af8d5360a52c1c Mon Sep 17 00:00:00 2001 From: root Date: Thu, 11 Jul 2024 21:56:50 -0400 Subject: [PATCH 05/19] Updating --- .../{NewDataset.yaml => Ethereum.yaml} | 4 +- .../weighted_clique_lifting.yaml | 6 + modules/data/load/loaders.py | 11 + modules/transforms/data_transform.py | 5 + .../digraph2simplicial/clique_lifting.py | 0 .../weighted_clique_lifting.py | 183 +++++ modules/utils/utils.py | 1 + .../weighted_clique_lifting.ipynb | 216 +++++- tutorials/graph2cell/cycle_lifting.ipynb | 702 +++++++++--------- .../graph2simplicial/clique_lifting.ipynb | 105 +-- 10 files changed, 833 insertions(+), 400 deletions(-) rename configs/datasets/{NewDataset.yaml => Ethereum.yaml} (78%) create mode 100644 configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml delete mode 100644 modules/transforms/liftings/digraph2simplicial/clique_lifting.py create mode 100644 modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py diff --git a/configs/datasets/NewDataset.yaml b/configs/datasets/Ethereum.yaml similarity index 78% rename from configs/datasets/NewDataset.yaml rename to configs/datasets/Ethereum.yaml index 17f73a3f..77e38200 100644 --- a/configs/datasets/NewDataset.yaml +++ b/configs/datasets/Ethereum.yaml @@ -1,10 +1,10 @@ data_domain: graph data_type: Transactions -data_name: AragonNetwork +data_name: EthereumTokenNetwork data_dir: datasets/${data_domain}/${data_type} num_features: 1 -num_classes: 1 +num_classes: 5 task: classification loss_type: cross_entropy task_level: graph \ No newline at end of file diff --git a/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml b/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml new file mode 100644 index 00000000..36f9f181 --- /dev/null +++ b/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml @@ -0,0 +1,6 @@ +transform_type: 'lifting' +transform_name: "WeightedSimplicialCliqueLifting" +complex_dim: 3 +preserve_edge_attr: False +signed: True +feature_lifting: ProjectionSum diff --git a/modules/data/load/loaders.py b/modules/data/load/loaders.py index 394ede25..19bd63b0 100755 --- a/modules/data/load/loaders.py +++ b/modules/data/load/loaders.py @@ -2,6 +2,7 @@ import numpy as np import rootutils +import torch import torch_geometric from omegaconf import DictConfig @@ -104,6 +105,16 @@ def load(self) -> torch_geometric.data.Dataset: dataset = datasets[0] + datasets[1] + datasets[2] dataset = ConcatToGeometricDataset(dataset) + elif self.parameters.data_name in ["EthereumTokenNetwork"]: + root_folder = rootutils.find_root() + root_data_dir = os.path.join(root_folder, self.parameters["data_dir"]) + data_path = os.path.join(root_data_dir, "OurDatasets/graph_data.pt") + + with open(data_path, "rb") as f: + dataset = torch.load(f) + + dataset = CustomDataset([dataset], self.data_dir) + elif self.parameters.data_name in ["manual"]: data = load_manual_graph() dataset = CustomDataset([data], self.data_dir) diff --git a/modules/transforms/data_transform.py b/modules/transforms/data_transform.py index 3ac9b805..aac65ecf 100755 --- a/modules/transforms/data_transform.py +++ b/modules/transforms/data_transform.py @@ -8,6 +8,9 @@ OneHotDegreeFeatures, ) from modules.transforms.feature_liftings.feature_liftings import ProjectionSum +from modules.transforms.liftings.digraph2simplicial.weighted_clique_lifting import ( + WeightedCliqueLifting, +) from modules.transforms.liftings.graph2cell.cycle_lifting import CellCycleLifting from modules.transforms.liftings.graph2hypergraph.knn_lifting import ( HypergraphKNNLifting, @@ -23,6 +26,8 @@ "SimplicialCliqueLifting": SimplicialCliqueLifting, # Graph -> Cell Complex "CellCycleLifting": CellCycleLifting, + # Digraph -> Simplicial Complex + "WeightedSimplicialCliqueLifting": WeightedCliqueLifting, # Feature Liftings "ProjectionSum": ProjectionSum, # Data Manipulations diff --git a/modules/transforms/liftings/digraph2simplicial/clique_lifting.py b/modules/transforms/liftings/digraph2simplicial/clique_lifting.py deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py b/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py new file mode 100644 index 00000000..eb3c9e19 --- /dev/null +++ b/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py @@ -0,0 +1,183 @@ +from itertools import combinations +from math import e, isinf, isnan, sqrt + +import networkx as nx +import numpy as np +import pandas as pd +import torch +import torch_geometric +from toponetx.classes import SimplicialComplex + +from modules.transforms.liftings.graph2simplicial.base import Graph2SimplicialLifting + + +# Check the name +class WeightedCliqueLifting(Graph2SimplicialLifting): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def lift_topology(self, data: torch_geometric.data.Data) -> dict: + graph = self._generate_graph_from_data(data) + + self.run(graph) + + simplicial_complex = SimplicialComplex(graph) + + cliques = nx.find_cliques(graph) + simplices = [set() for _ in range(2, self.complex_dim + 1)] + + for clique in cliques: + for i in range(2, self.complex_dim + 1): + for c in combinations(clique, i + 1): + simplices[i - 2].add(tuple(c)) + + for set_k_simplices in simplices: + simplicial_complex.add_simplices_from(list(set_k_simplices)) + + return self._get_lifted_topology(simplicial_complex, graph) + + def _generate_graph_from_data(self, data: torch_geometric.data.Data) -> nx.DiGraph: + r"""Generates a NetworkX graph from the input data object. + Overloaded for our purposes of using a directed graph + Parameters + ---------- + data : torch_geometric.data.Data + The input data. + + Returns + ------- + nx.Graph + The generated NetworkX graph. + """ + DiG = nx.DiGraph() + + for i in range(data["num_edges"]): + name1 = data["edge_index"][0][i] # this will retirn the string name + if not DiG.has_node(name1): + DiG.add_node( + name1, + integer_label=int(data["integer_label"][data["edge_index"][0][i]]), + ) + + name2 = data["edge_index"][1][i] + if not DiG.has_node(name2): + DiG.add_node( + name2, + integer_label=int(data["integer_label"][data["edge_index"][1][i]]), + ) + + DiG.add_edge(name1, name2, w=float(data["x"][i])) + return DiG + + # Summation for weighted FRC + def summation(self, v_name, v_weight, e_weight, target, G): + frc_sum = 0 + + # since some nodes are undirected I will store seen nodes in a hashmap for instant lookup to see if it has already been traversed + seen = set() + + # G.in_edges('node')'s formatting: tuple -> ('connecting_node', 'node') + for v1, v2 in G.in_edges(target): + if v_name is not v1 and v1 not in seen: + frc_sum += v_weight / (sqrt(e_weight * G[v1][target]["w"])) + seen.add(v1) + + # G.out_edges('node')'s formatting: tuple -> ('node', 'connecting_node') + for v1, v2 in G.out_edges(target): + if v_name is not v2 and v2 not in seen: + frc_sum += v_weight / (sqrt(e_weight * G[target][v2]["w"])) + seen.add(v2) + + return frc_sum + + # Weighted FRC builder -> return a hashmap where keys are a tuple of nodes and values are the edge's frc calculation + def formanRicciCurvature(self, G, wHashmap): + return_map = {} + + for v1, v2 in G.edges(): + # account for the weight of edges that aren't don't have incoming edges (they're not in the hashmap) + target_edge_weight = G[v1][v2]["w"] + if v1 in wHashmap: + v1_weight = wHashmap[v1] + else: + v1_weight = 0 + + if v2 in wHashmap: + v2_weight = wHashmap[v2] + else: + v2_weight = 0 + + # this formula has been taken from Jost Juergen's research papers + frc = target_edge_weight * ( + (v1_weight / target_edge_weight) + + (v2_weight / target_edge_weight) + - self.summation(v2, v1_weight, target_edge_weight, v1, G) + - self.summation(v1, v2_weight, target_edge_weight, v2, G) + ) + + # the caluclation throws a division by 0 so im using a try/except + # the e-308 numbers is the smallest number that can fit in a float64 + + try: + distance_metric = 1 / (e**frc) + if isinf(distance_metric): + distance_metric = 2.2250738585072014e-308 + except: + distance_metric = 2.2250738585072014e-308 + + if distance_metric < 2.2250738585072014e-308: + distance_metric = 2.2250738585072014e-308 + + if (v2, v1) not in return_map: + return_map[(v1, v2)] = distance_metric + else: + return_map[(v2, v1)] = distance_metric + + return return_map + + # Normalization formula + def formula(self, curr, max, min): + return 1 / (1 + (9 * ((curr - min) / (max - min)))) + + # Filtration function. Only keep edges that are below threshold. + def removeEdges(self, graph_obj, threshold): + graph_copy = graph_obj.copy() + temp = set() + + for edge1, edge2 in graph_copy.edges(): + if graph_copy.has_edge(edge1, edge2): + if graph_copy[edge1][edge2]["distance"] > (threshold): + temp.add((edge1, edge2)) + + for e1, e2 in temp: + graph_copy.remove_edge(e1, e2) + + return graph_copy + + def run(self, graph): + weight_hashmap = {} + for v1, v2 in graph.edges(): + if v2 not in weight_hashmap: + weight_hashmap[v2] = graph[v1][v2]["w"] + else: + weight_hashmap[v2] = weight_hashmap[v2] + graph[v1][v2]["w"] + + temp_map = self.formanRicciCurvature(graph, weight_hashmap) + + # iterate through the hashmap -> each key is a pair of nodes + # update the ['distance'] attribute to be the hashmap value + # The try catch is incase the tuples got reversed. + dist_arr = [] + for e1, e2 in graph.edges: + try: + graph[e1][e2]["distance"] = temp_map[(e1, e2)] + dist_arr.append(temp_map[(e1, e2)]) + + except: + graph[e1][e2]["distance"] = temp_map[(e2, e1)] + dist_arr.append(temp_map[(e2, e1)]) + + # Filter the graph. + G_copy = self.removeEdges(graph, np.percentile(dist_arr, 50)) + + return G_copy diff --git a/modules/utils/utils.py b/modules/utils/utils.py index b860153a..4ca8c872 100644 --- a/modules/utils/utils.py +++ b/modules/utils/utils.py @@ -107,6 +107,7 @@ def describe_data(dataset: torch_geometric.data.Dataset, idx_sample: int = 0): # assert isinstance( # dataset, torch_geometric.data.Dataset # ), "Data object must be a PyG Dataset object." + num_samples = len(dataset) if num_samples == 1: print(f"\nDataset only contains {num_samples} sample:") diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb index 709d82cf..6d4aa43a 100644 --- a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb +++ b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb @@ -1,16 +1,228 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Imports and Utilities" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "from modules.data.load.loaders import GraphLoader\n", + "from modules.data.preprocess.preprocessor import PreProcessor\n", + "from modules.utils.utils import (\n", + " describe_data,\n", + " load_dataset_config,\n", + " load_model_config,\n", + " load_transform_config,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Loading the Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset configuration for Ethereum:\n", + "\n", + "{'data_domain': 'graph',\n", + " 'data_type': 'Transactions',\n", + " 'data_name': 'EthereumTokenNetwork',\n", + " 'data_dir': 'datasets/graph/Transactions',\n", + " 'num_features': 1,\n", + " 'num_classes': 5,\n", + " 'task': 'classification',\n", + " 'loss_type': 'cross_entropy',\n", + " 'task_level': 'graph'}\n" + ] + } + ], + "source": [ + "dataset_name = \"Ethereum\"\n", + "dataset_config = load_dataset_config(dataset_name) # This just wont work right now\n", + "loader = GraphLoader(dataset_config) # we implement ours at line 106 of loaders.py" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset only contains 1 sample:\n", + " - Graph with 75137 vertices and 132885 edges.\n", + " - Features dimensions: [1, 0]\n", + " - There are 57748 isolated nodes.\n", + "\n" + ] + } + ], + "source": [ + "dataset = loader.load()\n", + "describe_data(dataset, 1) # This should work" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load and Apply Lifting" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Transform configuration for digraph2simplicial/weighted_clique_lifting:\n", + "\n", + "{'transform_type': 'lifting',\n", + " 'transform_name': 'WeightedSimplicialCliqueLifting',\n", + " 'complex_dim': 3,\n", + " 'preserve_edge_attr': False,\n", + " 'signed': True,\n", + " 'feature_lifting': 'ProjectionSum'}\n" + ] + } + ], + "source": [ + "# Define transformation type and id\n", + "transform_type = \"liftings\"\n", + "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", + "transform_id = \"digraph2simplicial/weighted_clique_lifting\"\n", + "\n", + "# Read yaml file\n", + "transform_config = {\"lifting\": load_transform_config(transform_type, transform_id)}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing...\n" + ] + }, + { + "ename": "KeyError", + "evalue": "(tensor(0), tensor(1))", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# This likely wont work\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m lifted_dataset \u001b[38;5;241m=\u001b[39m \u001b[43mPreProcessor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransform_config\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloader\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_dir\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m describe_data(lifted_dataset)\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:32\u001b[0m, in \u001b[0;36mPreProcessor.__init__\u001b[0;34m(self, data_list, transforms_config, data_dir, **kwargs)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m data_list\n\u001b[1;32m 31\u001b[0m pre_transform \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minstantiate_pre_transform(data_dir, transforms_config)\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprocessed_data_dir\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave_transform_parameters()\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mload(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_paths[\u001b[38;5;241m0\u001b[39m])\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/data/in_memory_dataset.py:81\u001b[0m, in \u001b[0;36mInMemoryDataset.__init__\u001b[0;34m(self, root, transform, pre_transform, pre_filter, log, force_reload)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 73\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 74\u001b[0m root: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 79\u001b[0m force_reload: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 80\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 81\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_filter\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 82\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_reload\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data: Optional[BaseData] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mslices: Optional[Dict[\u001b[38;5;28mstr\u001b[39m, Tensor]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/data/dataset.py:115\u001b[0m, in \u001b[0;36mDataset.__init__\u001b[0;34m(self, root, transform, pre_transform, pre_filter, log, force_reload)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_download()\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhas_process:\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/data/dataset.py:260\u001b[0m, in \u001b[0;36mDataset._process\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mProcessing...\u001b[39m\u001b[38;5;124m'\u001b[39m, file\u001b[38;5;241m=\u001b[39msys\u001b[38;5;241m.\u001b[39mstderr)\n\u001b[1;32m 259\u001b[0m fs\u001b[38;5;241m.\u001b[39mmakedirs(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_dir, exist_ok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m--> 260\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprocess\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 262\u001b[0m path \u001b[38;5;241m=\u001b[39m osp\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_dir, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpre_transform.pt\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 263\u001b[0m fs\u001b[38;5;241m.\u001b[39mtorch_save(_repr(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpre_transform), path)\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:131\u001b[0m, in \u001b[0;36mPreProcessor.process\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprocess\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 130\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Process the data.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 131\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m \u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpre_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43md\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43md\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_list\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mslices \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcollate(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list)\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# Reset cache.\u001b[39;00m\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:131\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprocess\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 130\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Process the data.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 131\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpre_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43md\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m d \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list]\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mslices \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcollate(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list)\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# Reset cache.\u001b[39;00m\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/base_transform.py:32\u001b[0m, in \u001b[0;36mBaseTransform.__call__\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;66;03m# Shallow-copy the data so that we prevent in-place data modification.\u001b[39;00m\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mforward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/compose.py:24\u001b[0m, in \u001b[0;36mCompose.forward\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 22\u001b[0m data \u001b[38;5;241m=\u001b[39m [transform(d) \u001b[38;5;28;01mfor\u001b[39;00m d \u001b[38;5;129;01min\u001b[39;00m data]\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 24\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/base_transform.py:32\u001b[0m, in \u001b[0;36mBaseTransform.__call__\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;66;03m# Shallow-copy the data so that we prevent in-place data modification.\u001b[39;00m\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mforward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/data_transform.py:76\u001b[0m, in \u001b[0;36mDataTransform.forward\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: torch_geometric\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mData) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mData:\n\u001b[1;32m 64\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Forward pass of the lifting.\u001b[39;00m\n\u001b[1;32m 65\u001b[0m \n\u001b[1;32m 66\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m The lifted data.\u001b[39;00m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 76\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/base_transform.py:32\u001b[0m, in \u001b[0;36mBaseTransform.__call__\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;66;03m# Shallow-copy the data so that we prevent in-place data modification.\u001b[39;00m\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mforward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/lifting.py:62\u001b[0m, in \u001b[0;36mAbstractLifting.forward\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Applies the full lifting (topology + features) to the input data.\u001b[39;00m\n\u001b[1;32m 50\u001b[0m \n\u001b[1;32m 51\u001b[0m \u001b[38;5;124;03mParameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;124;03m The lifted data.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 61\u001b[0m initial_data \u001b[38;5;241m=\u001b[39m data\u001b[38;5;241m.\u001b[39mto_dict()\n\u001b[0;32m---> 62\u001b[0m lifted_topology \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlift_topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 63\u001b[0m lifted_topology \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfeature_lifting(lifted_topology)\n\u001b[1;32m 64\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m torch_geometric\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mData(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39minitial_data, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mlifted_topology)\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py:33\u001b[0m, in \u001b[0;36mWeightedCliqueLifting.lift_topology\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun(graph)\n\u001b[1;32m 29\u001b[0m simplicial_complex \u001b[38;5;241m=\u001b[39m SimplicialComplex(graph)\n\u001b[0;32m---> 33\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_lifted_topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43msimplicial_complex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgraph\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/graph2simplicial/base.py:44\u001b[0m, in \u001b[0;36mGraph2SimplicialLifting._get_lifted_topology\u001b[0;34m(self, simplicial_complex, graph)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_lifted_topology\u001b[39m(\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28mself\u001b[39m, simplicial_complex: SimplicialComplex, graph: nx\u001b[38;5;241m.\u001b[39mGraph\n\u001b[1;32m 28\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m:\n\u001b[1;32m 29\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Returns the lifted topology.\u001b[39;00m\n\u001b[1;32m 30\u001b[0m \n\u001b[1;32m 31\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;124;03m The lifted topology.\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 44\u001b[0m lifted_topology \u001b[38;5;241m=\u001b[39m \u001b[43mget_complex_connectivity\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[43m \u001b[49m\u001b[43msimplicial_complex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcomplex_dim\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msigned\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msigned\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 47\u001b[0m lifted_topology[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx_0\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mstack(\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28mlist\u001b[39m(simplicial_complex\u001b[38;5;241m.\u001b[39mget_simplex_attributes(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfeatures\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;241m0\u001b[39m)\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 49\u001b[0m )\n\u001b[1;32m 50\u001b[0m \u001b[38;5;66;03m# If new edges have been added during the lifting process, we discard the edge attributes\u001b[39;00m\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/utils/utils.py:47\u001b[0m, in \u001b[0;36mget_complex_connectivity\u001b[0;34m(complex, max_rank, signed)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m connectivity_info \u001b[38;5;129;01min\u001b[39;00m [\n\u001b[1;32m 39\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mincidence\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 40\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdown_laplacian\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhodge_laplacian\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 44\u001b[0m ]:\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 46\u001b[0m connectivity[\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mconnectivity_info\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrank_idx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m from_sparse(\n\u001b[0;32m---> 47\u001b[0m \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mcomplex\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mconnectivity_info\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m_matrix\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 48\u001b[0m \u001b[43m \u001b[49m\u001b[43mrank\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrank_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msigned\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msigned\u001b[49m\n\u001b[1;32m 49\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m )\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m: \u001b[38;5;66;03m# noqa: PERF203\u001b[39;00m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m connectivity_info \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mincidence\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/toponetx/classes/simplicial_complex.py:1163\u001b[0m, in \u001b[0;36mSimplicialComplex.up_laplacian_matrix\u001b[0;34m(self, rank, signed, weight, index)\u001b[0m\n\u001b[1;32m 1160\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`weight` is not supported in this version\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1162\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m rank \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdim \u001b[38;5;129;01mand\u001b[39;00m rank \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m-> 1163\u001b[0m row, col, B_next \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mincidence_matrix\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1164\u001b[0m \u001b[43m \u001b[49m\u001b[43mrank\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\n\u001b[1;32m 1165\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1166\u001b[0m L_up \u001b[38;5;241m=\u001b[39m B_next \u001b[38;5;241m@\u001b[39m B_next\u001b[38;5;241m.\u001b[39mtranspose()\n\u001b[1;32m 1167\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/toponetx/classes/simplicial_complex.py:877\u001b[0m, in \u001b[0;36mSimplicialComplex.incidence_matrix\u001b[0;34m(self, rank, signed, weight, index)\u001b[0m\n\u001b[1;32m 875\u001b[0m values\u001b[38;5;241m.\u001b[39mappend((\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m) \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m i)\n\u001b[1;32m 876\u001b[0m face \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mfrozenset\u001b[39m(simplex)\u001b[38;5;241m.\u001b[39mdifference({left_out})\n\u001b[0;32m--> 877\u001b[0m idx_faces\u001b[38;5;241m.\u001b[39mappend(\u001b[43msimplex_dict_d_minus_1\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mtuple\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43msorted\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mface\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m)\n\u001b[1;32m 878\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(values) \u001b[38;5;241m==\u001b[39m (rank \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m) \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mlen\u001b[39m(simplex_dict_d)\n\u001b[1;32m 879\u001b[0m boundary \u001b[38;5;241m=\u001b[39m csr_matrix(\n\u001b[1;32m 880\u001b[0m (values, (idx_faces, idx_simplices)),\n\u001b[1;32m 881\u001b[0m dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mfloat32,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 885\u001b[0m ),\n\u001b[1;32m 886\u001b[0m )\n", + "\u001b[0;31mKeyError\u001b[0m: (tensor(0), tensor(1))" + ] + } + ], + "source": [ + "# This likely wont work\n", + "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", + "describe_data(lifted_dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create and Run the Simplicial NN Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from modules.models.simplicial.san import SANModel\n", + "\n", + "model_type = \"simplicial\"\n", + "model_id = \"san\"\n", + "model_config = load_model_config(model_type, model_id) # I need to look at this\n", + "\n", + "model = SANModel(model_config, dataset_config)" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Verify this works for one pass then actually create a full model if we want to\n", + "y_hat = model(lifted_dataset.get(0))\n", + "print(y_hat)" + ] } ], "metadata": { + "kernelspec": { + "display_name": "topox", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" } }, "nbformat": 4, diff --git a/tutorials/graph2cell/cycle_lifting.ipynb b/tutorials/graph2cell/cycle_lifting.ipynb index 75042165..fe7834de 100644 --- a/tutorials/graph2cell/cycle_lifting.ipynb +++ b/tutorials/graph2cell/cycle_lifting.ipynb @@ -1,351 +1,351 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Graph-to-Cell Cycle Lifting Tutorial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "***\n", - "This notebook shows how to import a dataset, with the desired lifting, and how to run a neural network using the loaded data.\n", - "\n", - "The notebook is divided into sections:\n", - "\n", - "- [Loading the dataset](#loading-the-dataset) loads the config files for the data and the desired tranformation, createsa a dataset object and visualizes it.\n", - "- [Loading and applying the lifting](#loading-and-applying-the-lifting) defines a simple neural network to test that the lifting creates the expected incidence matrices.\n", - "- [Create and run a simplicial nn model](#create-and-run-a-simplicial-nn-model) simply runs a forward pass of the model to check that everything is working as expected.\n", - "\n", - "***\n", - "***\n", - "\n", - "Note that for simplicity the notebook is setup to use a simple graph. However, there is a set of available datasets that you can play with.\n", - "\n", - "To switch to one of the available datasets, simply change the *dataset_name* variable in [Dataset config](#dataset-config) to one of the following names:\n", - "\n", - "* cocitation_cora\n", - "* cocitation_citeseer\n", - "* cocitation_pubmed\n", - "* MUTAG\n", - "* NCI1\n", - "* NCI109\n", - "* PROTEINS_TU\n", - "* AQSOL\n", - "* ZINC\n", - "***" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Imports and utilities" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# With this cell any imported module is reloaded before each cell execution\n", - "%load_ext autoreload\n", - "%autoreload 2\n", - "from modules.data.load.loaders import GraphLoader\n", - "from modules.data.preprocess.preprocessor import PreProcessor\n", - "from modules.utils.utils import (\n", - " describe_data,\n", - " load_dataset_config,\n", - " load_model_config,\n", - " load_transform_config,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading the dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we just need to spicify the name of the available dataset that we want to load. First, the dataset config is read from the corresponding yaml file (located at `/configs/datasets/` directory), and then the data is loaded via the implemented `Loaders`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset configuration for manual_dataset:\n", - "\n", - "{'data_domain': 'graph',\n", - " 'data_type': 'toy_dataset',\n", - " 'data_name': 'manual',\n", - " 'data_dir': 'datasets/graph/toy_dataset',\n", - " 'num_features': 1,\n", - " 'num_classes': 2,\n", - " 'task': 'classification',\n", - " 'loss_type': 'cross_entropy',\n", - " 'monitor_metric': 'accuracy',\n", - " 'task_level': 'node'}\n" - ] - } - ], - "source": [ - "dataset_name = \"manual_dataset\"\n", - "dataset_config = load_dataset_config(dataset_name)\n", - "loader = GraphLoader(dataset_config)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can then access to the data through the `load()`method:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset only contains 1 sample:\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " - Graph with 8 vertices and 13 edges.\n", - " - Features dimensions: [1, 0]\n", - " - There are 0 isolated nodes.\n", - "\n" - ] - } - ], - "source": [ - "dataset = loader.load()\n", - "describe_data(dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading and Applying the Lifting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section we will instantiate the lifting we want to apply to the data. For this example the cycle lifting was chosen. The algorithm finds a cycle base for the graph and creates a cell for each cycle in said base. This is a connectivity based deterministic lifting that preserves the initial connectivity of the graph. [[1]](https://arxiv.org/abs/2309.01632) combine two heuristics to design an algorithm that selects cycle basis in $O(m \\log m)$ time, where $m$ is the number of edges of the graph.\n", - "\n", - "***\n", - "[[1]](https://arxiv.org/abs/2309.01632) Hoppe, J., & Schaub, M. T. (2024). Representing Edge Flows on Graphs via Sparse Cell\n", - "Complexes. In Learning on Graphs Conference (pp. 1-1). PMLR.\n", - "***\n", - "For cell complexes creating a lifting involves creating a `CellComplex` object from topomodelx and adding cells to it using the method `add_cells_from`. The `CellComplex` class then takes care of creating all the needed matrices.\n", - "\n", - "Similarly to before, we can specify the transformation we want to apply through its type and id --the correxponding config files located at `/configs/transforms`. \n", - "\n", - "Note that the *tranform_config* dictionary generated below can contain a sequence of tranforms if it is needed.\n", - "\n", - "This can also be used to explore liftings from one topological domain to another, for example using two liftings it is possible to achieve a sequence such as: graph -> cell complex -> hypergraph. " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Transform configuration for graph2cell/cycle_lifting:\n", - "\n", - "{'transform_type': 'lifting',\n", - " 'transform_name': 'CellCycleLifting',\n", - " 'max_cell_length': None,\n", - " 'preserve_edge_attr': False,\n", - " 'feature_lifting': 'ProjectionSum'}\n" - ] - } - ], - "source": [ - "# Define transformation type and id\n", - "transform_type = \"liftings\"\n", - "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", - "transform_id = \"graph2cell/cycle_lifting\"\n", - "\n", - "# Read yaml file\n", - "transform_config = {\n", - " \"lifting\": load_transform_config(transform_type, transform_id)\n", - " # other transforms (e.g. data manipulations, feature liftings) can be added here\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We than apply the transform via our `PreProcesor`:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transform parameters are the same, using existing data_dir: /challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/1820307683\n", - "\n", - "Dataset only contains 1 sample:\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " - The complex has 8 0-cells.\n", - " - The 0-cells have features dimension 1\n", - " - The complex has 13 1-cells.\n", - " - The 1-cells have features dimension 1\n", - " - The complex has 6 2-cells.\n", - " - The 2-cells have features dimension 1\n", - "\n" - ] - } - ], - "source": [ - "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", - "describe_data(lifted_dataset)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create and Run a Cell NN Model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section a simple model is created to test that the used lifting works as intended. In this case the model uses the `x_0`, `x_1`, `x_2` which are the features of the nodes, edges and cells respectively. It also uses the `adjacency_1`, `incidence_1` and `incidence_2` matrices so the lifting should make sure to add them to the data." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Model configuration for cell CWN:\n", - "\n", - "{'in_channels_0': None,\n", - " 'in_channels_1': None,\n", - " 'in_channels_2': None,\n", - " 'hidden_channels': 32,\n", - " 'out_channels': None,\n", - " 'n_layers': 2}\n" - ] - } - ], - "source": [ - "from modules.models.cell.cwn import CWNModel\n", - "\n", - "model_type = \"cell\"\n", - "model_id = \"cwn\"\n", - "model_config = load_model_config(model_type, model_id)\n", - "\n", - "model = CWNModel(model_config, dataset_config)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "y_hat = model(lifted_dataset.get(0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If everything is correct the cell above should execute without errors. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "venv_topox", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Graph-to-Cell Cycle Lifting Tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "This notebook shows how to import a dataset, with the desired lifting, and how to run a neural network using the loaded data.\n", + "\n", + "The notebook is divided into sections:\n", + "\n", + "- [Loading the dataset](#loading-the-dataset) loads the config files for the data and the desired tranformation, createsa a dataset object and visualizes it.\n", + "- [Loading and applying the lifting](#loading-and-applying-the-lifting) defines a simple neural network to test that the lifting creates the expected incidence matrices.\n", + "- [Create and run a simplicial nn model](#create-and-run-a-simplicial-nn-model) simply runs a forward pass of the model to check that everything is working as expected.\n", + "\n", + "***\n", + "***\n", + "\n", + "Note that for simplicity the notebook is setup to use a simple graph. However, there is a set of available datasets that you can play with.\n", + "\n", + "To switch to one of the available datasets, simply change the *dataset_name* variable in [Dataset config](#dataset-config) to one of the following names:\n", + "\n", + "* cocitation_cora\n", + "* cocitation_citeseer\n", + "* cocitation_pubmed\n", + "* MUTAG\n", + "* NCI1\n", + "* NCI109\n", + "* PROTEINS_TU\n", + "* AQSOL\n", + "* ZINC\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports and utilities" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# With this cell any imported module is reloaded before each cell execution\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "from modules.data.load.loaders import GraphLoader\n", + "from modules.data.preprocess.preprocessor import PreProcessor\n", + "from modules.utils.utils import (\n", + " describe_data,\n", + " load_dataset_config,\n", + " load_model_config,\n", + " load_transform_config,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we just need to spicify the name of the available dataset that we want to load. First, the dataset config is read from the corresponding yaml file (located at `/configs/datasets/` directory), and then the data is loaded via the implemented `Loaders`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset configuration for manual_dataset:\n", + "\n", + "{'data_domain': 'graph',\n", + " 'data_type': 'toy_dataset',\n", + " 'data_name': 'manual',\n", + " 'data_dir': 'datasets/graph/toy_dataset',\n", + " 'num_features': 1,\n", + " 'num_classes': 2,\n", + " 'task': 'classification',\n", + " 'loss_type': 'cross_entropy',\n", + " 'monitor_metric': 'accuracy',\n", + " 'task_level': 'node'}\n" + ] + } + ], + "source": [ + "dataset_name = \"manual_dataset\"\n", + "dataset_config = load_dataset_config(dataset_name)\n", + "loader = GraphLoader(dataset_config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then access to the data through the `load()`method:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset only contains 1 sample:\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - Graph with 8 vertices and 13 edges.\n", + " - Features dimensions: [1, 0]\n", + " - There are 0 isolated nodes.\n", + "\n" + ] + } + ], + "source": [ + "dataset = loader.load()\n", + "describe_data(dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading and Applying the Lifting" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we will instantiate the lifting we want to apply to the data. For this example the cycle lifting was chosen. The algorithm finds a cycle base for the graph and creates a cell for each cycle in said base. This is a connectivity based deterministic lifting that preserves the initial connectivity of the graph. [[1]](https://arxiv.org/abs/2309.01632) combine two heuristics to design an algorithm that selects cycle basis in $O(m \\log m)$ time, where $m$ is the number of edges of the graph.\n", + "\n", + "***\n", + "[[1]](https://arxiv.org/abs/2309.01632) Hoppe, J., & Schaub, M. T. (2024). Representing Edge Flows on Graphs via Sparse Cell\n", + "Complexes. In Learning on Graphs Conference (pp. 1-1). PMLR.\n", + "***\n", + "For cell complexes creating a lifting involves creating a `CellComplex` object from topomodelx and adding cells to it using the method `add_cells_from`. The `CellComplex` class then takes care of creating all the needed matrices.\n", + "\n", + "Similarly to before, we can specify the transformation we want to apply through its type and id --the correxponding config files located at `/configs/transforms`. \n", + "\n", + "Note that the *tranform_config* dictionary generated below can contain a sequence of tranforms if it is needed.\n", + "\n", + "This can also be used to explore liftings from one topological domain to another, for example using two liftings it is possible to achieve a sequence such as: graph -> cell complex -> hypergraph. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Transform configuration for graph2cell/cycle_lifting:\n", + "\n", + "{'transform_type': 'lifting',\n", + " 'transform_name': 'CellCycleLifting',\n", + " 'max_cell_length': None,\n", + " 'preserve_edge_attr': False,\n", + " 'feature_lifting': 'ProjectionSum'}\n" + ] + } + ], + "source": [ + "# Define transformation type and id\n", + "transform_type = \"liftings\"\n", + "# If the transform is a topological lifting, it should include both the type of the lifting and the identifier\n", + "transform_id = \"graph2cell/cycle_lifting\"\n", + "\n", + "# Read yaml file\n", + "transform_config = {\n", + " \"lifting\": load_transform_config(transform_type, transform_id)\n", + " # other transforms (e.g. data manipulations, feature liftings) can be added here\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We than apply the transform via our `PreProcesor`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transform parameters are the same, using existing data_dir: /challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/1820307683\n", + "\n", + "Dataset only contains 1 sample:\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " - The complex has 8 0-cells.\n", + " - The 0-cells have features dimension 1\n", + " - The complex has 13 1-cells.\n", + " - The 1-cells have features dimension 1\n", + " - The complex has 6 2-cells.\n", + " - The 2-cells have features dimension 1\n", + "\n" + ] + } + ], + "source": [ + "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", + "describe_data(lifted_dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create and Run a Cell NN Model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section a simple model is created to test that the used lifting works as intended. In this case the model uses the `x_0`, `x_1`, `x_2` which are the features of the nodes, edges and cells respectively. It also uses the `adjacency_1`, `incidence_1` and `incidence_2` matrices so the lifting should make sure to add them to the data." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Model configuration for cell CWN:\n", + "\n", + "{'in_channels_0': None,\n", + " 'in_channels_1': None,\n", + " 'in_channels_2': None,\n", + " 'hidden_channels': 32,\n", + " 'out_channels': None,\n", + " 'n_layers': 2}\n" + ] + } + ], + "source": [ + "from modules.models.cell.cwn import CWNModel\n", + "\n", + "model_type = \"cell\"\n", + "model_id = \"cwn\"\n", + "model_config = load_model_config(model_type, model_id)\n", + "\n", + "model = CWNModel(model_config, dataset_config)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "y_hat = model(lifted_dataset.get(0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If everything is correct the cell above should execute without errors. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv_topox", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorials/graph2simplicial/clique_lifting.ipynb b/tutorials/graph2simplicial/clique_lifting.ipynb index 1ffb65d3..b9ef34f5 100644 --- a/tutorials/graph2simplicial/clique_lifting.ipynb +++ b/tutorials/graph2simplicial/clique_lifting.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -99,23 +99,22 @@ "output_type": "stream", "text": [ "\n", - "Dataset configuration for manual_dataset:\n", + "Dataset configuration for AQSOL:\n", "\n", "{'data_domain': 'graph',\n", - " 'data_type': 'toy_dataset',\n", - " 'data_name': 'manual',\n", - " 'data_dir': 'datasets/graph/toy_dataset',\n", + " 'data_type': 'AQSOL',\n", + " 'data_name': 'AQSOL',\n", + " 'data_dir': 'datasets/graph/AQSOL',\n", " 'num_features': 1,\n", - " 'num_classes': 2,\n", + " 'num_classes': 1,\n", " 'task': 'classification',\n", " 'loss_type': 'cross_entropy',\n", - " 'monitor_metric': 'accuracy',\n", - " 'task_level': 'node'}\n" + " 'task_level': 'graph'}\n" ] } ], "source": [ - "dataset_name = \"manual_dataset\"\n", + "dataset_name = \"AQSOL\"\n", "dataset_config = load_dataset_config(dataset_name)\n", "loader = GraphLoader(dataset_config)" ] @@ -129,20 +128,32 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading https://www.dropbox.com/s/lzu9lmukwov12kt/aqsol_graph_raw.zip?dl=1\n", + "Extracting /mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/datasets/graph/AQSOL/aqsol_graph_raw.zip\n", + "Processing...\n", + "Done!\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "\n", - "Dataset only contains 1 sample:\n" + "Dataset contains 9833 samples.\n", + "\n", + "Providing more details about sample 0/9833:\n" ] }, { "data": { - "image/png": "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", + "image/png": "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xXC73YntZWVlu3xuqp/LKaecwssvv8xVV13FvvvuS2ZmJrZts3LlygFdX1+FpQbysxFCJJOeAyF24dhjj6WqqqrPgj7//Oc/2bx5M8cee+yQzj9nzhxs26aqqipp+wcffDCk8/Xlz3/+M0ceeSS/+c1vOO200zj66KNZvnw5zc3NQzrfscceSygUGlSNh77s2LGDiooKrrnmGq6//npOOOEEVqxY0e/U0Pfffz/p8QcffIBt2xQXFw/7eoSY7CQ4EGIXrrrqKvx+PxdffHGvaXVNTU2sWrWKjIwMrrrqqiGd/7Of/SwA99xzT9L2u+66a2gX3AfTNHt9Wn7kkUeora0d0vm++tWvUlhYyJVXXsl7773Xa/9gPpl3fbrv+Zw77rijz+fcfffdSY+7fl6f+9znBtyuECI1GVYQYhf23HNPfve733HmmWeyzz77cMEFF1BSUsLmzZv5zW9+Q0NDA3/4wx+Skt4GY//99+ekk07ijjvuoLGxMTGVseuGO9R1GHo69thjueGGGzjvvPNYsmQJ//3vf3nooYf6/XTen9zcXB577DGOO+44Pv3pT3PaaadxwAEH4Ha72bJlC4888giQesy/p+zsbA477DB++MMfEovFmDVrFmvWrOnVm9JdVVUVxx9/PCtXruSVV17hwQcf5IwzzuDTn/70kF6PEGInCQ6EGICTTz6Z+fPnc8sttyQCgry8PI488ki+853vsGjRomGd/4EHHmD69On84Q9/4LHHHmP58uU8/PDD7LXXXvh8vrS8hu985zsEg0F+//vf8/DDD/OZz3yGp556imuuuWbI5zzkkEN46623uP3223nqqad4+OGHsW2bWbNmsWzZMn75y1/2WR+ip9///vdcdtll3H333WitOfroo3n66af7rL/w8MMP873vfY9rrrkGl8vF1772NX70ox8N+bUIIXZSWrJyhBiT3njjDfbbbz8efPBBzjzzzN19OWPG97//fa6//nrq6+uZNm3a7r4cISYkyTkQYgxItRDTHXfcgWEYHHbYYbvhioQQk5kMKwgxBvzwhz/ktdde48gjj8TlcvH000/z9NNPc9FFF/GpT31qd1+eEGKSkeBAiDFgyZIlPPfcc/zgBz+gvb2d2bNn8/3vf5/vfve7u/vShBCTkOQcCCGEECKJ5BwIIYQQIokEB0IIIYRIIsGBEEIIIZJIcCCE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", "text/plain": [ "
" ] @@ -154,9 +165,9 @@ "name": "stdout", "output_type": "stream", "text": [ - " - Graph with 8 vertices and 13 edges.\n", - " - Features dimensions: [1, 0]\n", - " - There are 0 isolated nodes.\n", + " - Graph with 23 vertices and 42 edges.\n", + " - Features dimensions: [1, 1]\n", + " - There are 1 isolated nodes.\n", "\n" ] } @@ -194,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -235,22 +246,23 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "In init\n", - "Transform parameters are the same, using existing data_dir: /mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/datasets/graph/toy_dataset/manual/lifting/2744620725\n", + "Transform parameters are the same, using existing data_dir: /mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/datasets/graph/AQSOL/AQSOL/lifting/2744620725\n", "\n", - "Dataset only contains 1 sample:\n" + "Dataset contains 9833 samples.\n", + "\n", + "Providing more details about sample 0/9833:\n" ] }, { "data": { - "image/png": "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0bdvX775zW9e82f5j3/8g4ceeoihQ4fygx/8gOjoaHbt2kVmZib33HNP7TEPPvggY8aM4ZVXXiE/P5/f/e53bNmyhV27dl2zR+rhhx/mn//8J3feeSfPPvss27dv55VXXuHgwYO8/fbbdY49fPgwd999N9/4xjd45JFHGDhwIFVVVUyePJmzZ8/yjW98g169erF161Z+8IMfcP78eX77298C/gvp7bffzubNm3nssccYPHgwb7/9dm1ifKMuXLhAp06dGj3uk08+YevWrSxatIgePXpw8uRJXnvtNaZMmcKBAwdqX6M1nnjiCWJiYvjJT37CyZMn+e1vf8vjjz/O0qVLa4/58Y9/zEsvvcTNN9/MzTffzM6dO5k5cyZut7vJ8Xu9XkpLS3G73ezbt48f/ehHREREMHbs2EYfm5ubS3p6OlarlUcffZTevXtz7NgxVq1axc9//nOg6e8VTbF//35uueUWkpOTeeGFF7Db7Rw9epQtW7Y0uQ3RSpQIKn//+98VoD755JMGjzlx4oQC1N///vdGHxcWFqbuv//+q9r4+te/rrp27aqKiorq3L9o0SIVFRWlqqqqlFJK/fa3v1WAWrZsWe0xlZWVql+/fgpQGzZsaDDOS5cuKUDNnTv3qu9dvHhRFRYW1t5qzqeUUvfff78C1HPPPXfV4648rsYrr7yiNE1Tp06duqqNJ554ovY+XdfVnDlzlM1mU4WFhUqpL36WcXFxqqSkpPbYd999VwFq1apVDT4/pZT69re/rTp37lz79TPPPKMmTZqkEhIS1GuvvaaUUqq4uFhpmqZ+97vf1YkvMTGx9uvCwkIFqJ/85CdXnaPmubzwwgt17h8xYoQaNWrUNeMrLS1VERERaty4caq6urrO93RdV0op5Xa7VUJCgho2bFidY95//30FqB//+Me19/3kJz9RV75t7N69WwHq4YcfrtP2d7/7XQWo9evX196XmJioAJWZmVnn2BdffFGFhYWpzz//vM79zz33nDKbzSovL08ppdQ777yjAPXLX/6y9hiv16vS09Ov+ntoquzsbKVpmvrP//zPRo+t77W3bds2Baj/+7//q72v5m8xIyOj9meslFJPP/20MpvNqrS0VCmlVEFBgbLZbGrOnDl1jnv++ecVUO/fbX1qYqi5DRw48Jp/l1eaNGmSioiIqPO3o5SqE09T3yvqe1/68uvlN7/5jQJq//5E8JJhhQ5IKcXKlSu59dZbUUpRVFRUe5s1axaXLl1i586dAHz44Yd07dqVO++8s/bxoaGhtT0R11JWVgZQ7zK8KVOmEB8fX3v705/+dNUx9X0ivnJ8urKykqKiIiZMmIBSil27dl11/OOPP177/5pPPm63m3Xr1tU5buHChcTExNR+XfMp//jx49d8junp6eTn53P48GHA30MwadIk0tPTycnJAfy9CUqpBnsOmuqxxx676tyNxbd27VrKy8t57rnnrpqnUrPE7NNPP6WgoIBvfetbdY6ZM2cOgwYN4oMPPmiw/Q8//BCAZ555ps79zz77LMBVj01KSmLWrFl17lu+fDnp6enExMTUeS1mZGTg8/nIzs6uPZfFYqnzujCbzTzxxBPX/Bk0pKCggHvuuYekpCS+//3vN3r8la89j8dDcXEx/fr1Izo6uvbv5UqPPvponWV86enp+Hw+Tp06BcC6detwu9088cQTdY67nk/iAEOGDGHt2rW88847fP/73ycsLKxJqxUKCwvJzs7moYceolevXnW+VxPP9bxXNEVND9S777571ZCRCC4yrNABFRYWUlpayl//+lf++te/1ntMzQTHU6dO0a9fv6vWKg8cOLDR80RERADU+0b1l7/8hfLycvLz87n33nuv+r7FYqFHjx5X3Z+Xl8ePf/xj3nvvPS5evFjne5cuXarztclkok+fPnXuGzBgAMBV48RffnOsSRS+fI4vq7ng5+Tk0KNHD3bt2sVLL71EfHx8be2EnJwcIiMjSUlJuWZb1xISElI7L+HKGBuL79ixYwAMGzaswWNqLlb1/U4HDRpU76S3Kx9rMpno169fnfu7dOlCdHR0bds1kpKSrmrjyJEj5ObmXvX8alz5WuzatetVyWZTXotfVllZyS233EJ5eTmbN29uUh2J6upqXnnlFf7+979z9uzZOnNKvvzag8ZfUzU/m/79+9c5Lj4+vk6i2pjIyMjayZS33347b7zxBrfffjs7d+4kJSUFt9tNSUnJVeeoSSyv9dq4nveKpli4cCF/+9vfePjhh3nuueeYPn068+fP584775SVFUFGkoMOqCZjv/feexscr71yvPtGRUVF0bVrV/bt23fV92rmIHz5Il3Dbrdf9Wbh8/mYMWMGJSUl/Md//AeDBg0iLCyMs2fP8sADDzTrk4jZbK73ftXA5MUa3bp1IykpiezsbHr37o1Siptuuon4+HieeuopTp06RU5ODhMmTGjWm19D8QWLpha6qW9lgq7rzJgxo8FP7zUJXaC43W7mz59Pbm4uq1evvubF8UpPPPEEf//73/nOd77DTTfdRFRUFJqmsWjRonpfezf6mmqu+fPn87WvfY0lS5aQkpLC1q1bmTp1ap1jTpw40aS2Av1e4XA4yM7OZsOGDXzwwQdkZmaydOlSpk2bxpo1a4L+dd6RSHLQztX3ph0fH09ERAQ+n6/R5VuJiYns27cPpVSdtmq60RszZ84c/va3v7Fjx44mTZC6lr179/L555/zz3/+k/vuu6/2/rVr19Z7vK7rHD9+vM7F5fPPPwdocnXCpkhPTyc7O5ukpKTaAjspKSlERUWRmZnJzp07a2sYNKSlqsjVTEDdt2/fVZ/ua9TUlzh8+DDTpk2r873Dhw9fs/5EYmIiuq5z5MgRBg8eXHt/fn4+paWlTapd0bdvXyoqKpr0WszKyqKioqLOJ/2mvhbB/5q47777yMrKYtmyZUyePLnJj12xYgX3338///Vf/1V7n9PpvOFKpDU/myNHjtTp4SosLGy0R+haXC4Xuq7X9makpKRc9TfSpUuX2qXB9SXvNa7nvaKpTCYT06dPZ/r06fz617/m5Zdf5oc//CEbNmxok8tJ2yvpx2nnwsLCrnrzMpvN3HHHHaxcubLeN4Yrl1vdfPPNnDt3jhUrVtTeV1VV1WAX45d9//vfJzQ0lIceeoj8/Pyrvn89n6JqPlVc+RilFL/73e8afMwf//jHOsf+8Y9/xGq1Mn369CaftzHp6emcPHmSpUuX1g4zmEwmJkyYwK9//Ws8Hk+j8w1qZroHuuT1zJkziYiI4JVXXsHpdNb5Xs3PcfTo0SQkJPDf//3fdZYffvTRRxw8eJA5c+Y02P7NN98MULuioMavf/1rgGs+tsaCBQvYtm0bq1evvup7paWleL3e2nN5vV5ee+212u/7fD7+8Ic/NHqOGk888QRLly7lz3/+c+2qkKYym81XvV7/8Ic/NHk56ZdlZGRgtVr5wx/+UKfdL/8sG1JaWorH47nq/r/97W+A//cK/uGMjIyMOreaYapJkybx+uuvk5eXV6eNmniu572iKb48vAGQmpoK0OTl0aJ1SM9BkHr99dfJzMy86v6nnnrqutoZNWoU69at49e//nVtF/i4ceN49dVX2bBhA+PGjeORRx5hyJAhlJSUsHPnTtatW1f7R/zII4/wxz/+kfvuu4/PPvuMrl278q9//euqZVsN6d+/P2+88QZ33303AwcOrK2QqJTixIkTvPHGG5hMpnrnF3zZoEGDagu8nD17lsjISFauXNngp6yQkBAyMzO5//77GTduHB999BEffPABzz//fIPj2zei5sJ/+PBhXn755dr7J02axEcffVRbN+FaHA4HQ4YMYenSpQwYMIDY2FiGDRvW5C7vhkRGRvKb3/yGhx9+mDFjxnDPPfcQExPDnj17qKqq4p///CdWq5Vf/OIXPPjgg0yePJm77767dilj7969efrppxtsPyUlhfvvv5+//vWvlJaWMnnyZHbs2ME///lP5s6de1V3dn2+973v8d5773HLLbfwwAMPMGrUKCorK9m7dy8rVqzg5MmTdOrUiVtvvZWJEyfy3HPPcfLkSYYMGcJbb71V73h/fX7729/y5z//mZtuuonQ0FD+/e9/1/n+vHnzrllo65ZbbuFf//oXUVFRDBkyhG3btrFu3Tri4uKadP4vq6lV8corr3DLLbdw8803s2vXLj766KMmLa3cuHEjTz75JHfeeSf9+/fH7XaTk5PDW2+9xejRo+udy/Nlv//970lLS2PkyJE8+uijJCUlcfLkST744AN2794N0OT3iqZ44YUXyM7OZs6cOSQmJlJQUMCf//xnevToQVpaWpPbEa2gdRdHiMbULINq6Hb69OnrWsp46NAhNWnSJOVwOK5aHpWfn6++/e1vq549eyqr1aq6dOmipk+frv7617/WaePUqVPqtttuU6GhoapTp07qqaeeUpmZmY0uZbzS0aNH1Te/+U3Vr18/FRISohwOhxo0aJB67LHH1O7du+sce//996uwsLB62zlw4IDKyMhQ4eHhqlOnTuqRRx5Re/bsuernUdPGsWPH1MyZM1VoaKjq3Lmz+slPfqJ8Pl/tcTU/y//3//7fVeeigaWF9UlISFCAys/Pr71v8+bNClDp6elXHf/lpYxKKbV161Y1atQoZbPZ6py7oZ/Hl5eJXct7772nJkyYoBwOh4qMjFRjx45Vb775Zp1jli5dqkaMGKHsdruKjY1VX/3qV9WZM2caPafH41E/+9nPVFJSkrJarapnz57qBz/4gXI6nXWOS0xMVHPmzKk3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", + "image/png": "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wauvvsovf/lL9tprLy6++OJuf5cPPfQQ5557LjNnzuRHP/oRWVlZrF27lhUrVnDGGWckjjnnnHM44IADuO2229i2bRu/+c1vWL16NWvXru22R+r888/n4Ycf5uSTT+bqq69mzZo13HbbbXz88cc8/fTTScdu2LCB008/nYsuuogLLriAadOm0drayuGHH05VVRUXXXQRkyZN4q233uJHP/oRW7Zs4de//jVg30i/9a1vsWrVKpYtW8Y+++zD008/nQiM+2vr1q2MGzeux+Peffdd3nrrLU477TQKCgrYtGkT9957L0cccQQfffRR4jUad/nllzN27FhuuOEGNm3axK9//Wsuu+wyHnvsscQxP/nJT7j55ps57rjjOO6443jvvfc4+uijiUQivb7+WCxGQ0MDkUiEdevWcf3115ORkcGBBx7Y42PLysqYP38+LpeLCy+8kMLCQjZu3Mhzzz3HLbfcAvT+vaI31q9fz/HHH09xcTE33XQTHo+Hzz//nNWrV/f6HGIX0WJI+dOf/qQB/e6773Z5THl5uQb0n/70px4f5/f79dKlSzuc47zzztMTJkzQtbW1SdtPO+00PWbMGN3a2qq11vrXv/61BvTjjz+eOCYQCOiioiIN6Ndff73L62xsbNSAPuGEEzrs2759u66pqUl8xdvTWuulS5dqQF977bUdHtf+uLjbbrtNK6X0l19+2eEcl19+eWKbZVl60aJF2u1265qaGq31jt9lTk6Orq+vTxz77LPPakA/99xzXT4/rbW+9NJLdX5+fuLnq666Sh922GE6Ly9P33vvvVprrevq6rRSSv/mN79Jur7Jkycnfq6pqdGAvuGGGzq0EX8uN910U9L2/fffX8+ePbvb62toaNAZGRn6oIMO0sFgMGmfZVlaa60jkYjOy8vTs2bNSjrm+eef14D+yU9+kth2ww036PZvG++//74G9Pnnn5907u9///sa0K+99lpi2+TJkzWgV6xYkXTsz372M+33+/Wnn36atP3aa6/VDodDV1RUaK21fuaZZzSgf/7znyeOicViev78+R3+HnrrjTfe0Eop/f/+3//r8djOXntvv/22BvQjjzyS2Bb/W1ywYEHid6y11ldeeaV2OBy6oaFBa611dXW1drvdetGiRUnH/fjHP9ZAp3+3nYlfQ/xr2rRp3f5dtnfYYYfpjIyMpL8drXXS9fT2vaKz96WdXy+/+tWvNJD4+xNDlwwrjEJaa5566im++c1vorWmtrY28XXMMcfQ2NjIe++9B8A///lPJkyYwMknn5x4fFpaWqInojtNTU0AnU7DO+KII8jNzU183X333R2O6ewTcfvx6UAgQG1tLXPnzkVrzdq1azscf9lllyW+j3/yiUQivPrqq0nHnXrqqYwdOzbxc/xT/hdffNHtc5w/fz7btm1jw4YNgN1DcNhhhzF//nzefPNNwO5N0Fp32XPQW8uWLevQdk/X98orr9Dc3My1117bIU8lPsXsP//5D9XV1VxyySVJxyxatIjp06fzwgsvdHn+f/7znwBcddVVSduvvvpqgA6PnTJlCsccc0zStieeeIL58+czduzYpNfiggULME2TN954I9GW0+lMel04HA4uv/zybn8HXamuruaMM85gypQp/OAHP+jx+PavvWg0Sl1dHUVFRWRlZSX+Xtq78MILk6bxzZ8/H9M0+fLLLwF49dVXiUQiXH755UnH9eWTOMCMGTN45ZVXeOaZZ/jBD36A3+/v1WyFmpoa3njjDc4991wmTZqUtC9+PX15r+iNeA/Us88+22HISAwtMqwwCtXU1NDQ0MB9993Hfffd1+kx8QTHL7/8kqKiog5zladNm9ZjOxkZGQCdvlH94Q9/oLm5mW3btnHmmWd22O90OikoKOiwvaKigp/85Cf84x//YPv27Un7Ghsbk342DIOvfe1rSdumTp0K0GGceOc3x3igsHMbO4vf8N98800KCgpYu3YtN998M7m5uYnaCW+++SaZmZnsu+++3Z6rO16vN5GX0P4ae7q+jRs3AjBr1qwuj4nfrDr7N50+fXqnSW/tH2sYBkVFRUnbx48fT1ZWVuLccVOmTOlwjs8++4yysrIOzy+u/WtxwoQJHYLN3rwWdxYIBDj++ONpbm5m1apVvaojEQwGue222/jTn/5EVVVVUk7Jzq896Pk1Ff/d7L333knH5ebmJgWqPcnMzEwkU37rW9/i0Ucf5Vvf+hbvvfce++67L5FIhPr6+g5txAPL7l4bfXmv6I1TTz2VBx54gPPPP59rr72WkpISTjrpJE4++WSZWTHESHAwCsUj9jPPPLPL8dr24939NWbMGCZMmMC6des67IvnIOx8k47zeDwd3ixM02ThwoXU19fzwx/+kOnTp+P3+6mqquLss88e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", "text/plain": [ "
" ] @@ -262,14 +274,9 @@ "name": "stdout", "output_type": "stream", "text": [ - " - The complex has 8 0-cells.\n", - " - The 0-cells have features dimension 1\n", - " - The complex has 13 1-cells.\n", - " - The 1-cells have features dimension 1\n", - " - The complex has 6 2-cells.\n", - " - The 2-cells have features dimension 1\n", - " - The complex has 1 3-cells.\n", - " - The 3-cells have features dimension 1\n", + " - Graph with 23 vertices and 21 edges.\n", + " - Features dimensions: [1, 1]\n", + " - There are 1 isolated nodes.\n", "\n" ] } @@ -295,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -327,26 +334,34 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.],\n", - " [0., 1.]], grad_fn=)\n" + "tensor([[0.4222],\n", + " [0.4288],\n", + " [0.4187],\n", + " [0.4160],\n", + " [0.4157],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4155],\n", + " [0.4138],\n", + " [0.4065],\n", + " [0.3935],\n", + " [0.4672],\n", + " [0.4156],\n", + " [0.4156],\n", + " [0.4156]], grad_fn=)\n" ] } ], From b76a033dd090b530981850251984cdd575a35fa9 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 22:19:45 -0400 Subject: [PATCH 06/19] Updating all files for team member --- .../weighted_clique_lifting.yaml | 2 +- modules/data/load/loaders.py | 2 + .../weighted_clique_lifting.py | 46 ++++---- .../liftings/graph2simplicial/base.py | 3 + .../weighted_clique_lifting.ipynb | 107 ++---------------- 5 files changed, 37 insertions(+), 123 deletions(-) diff --git a/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml b/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml index 36f9f181..5f1e6b57 100644 --- a/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml +++ b/configs/transforms/liftings/digraph2simplicial/weighted_clique_lifting.yaml @@ -1,6 +1,6 @@ transform_type: 'lifting' transform_name: "WeightedSimplicialCliqueLifting" complex_dim: 3 -preserve_edge_attr: False +preserve_edge_attr: True signed: True feature_lifting: ProjectionSum diff --git a/modules/data/load/loaders.py b/modules/data/load/loaders.py index 19bd63b0..d563b4e8 100755 --- a/modules/data/load/loaders.py +++ b/modules/data/load/loaders.py @@ -105,12 +105,14 @@ def load(self) -> torch_geometric.data.Dataset: dataset = datasets[0] + datasets[1] + datasets[2] dataset = ConcatToGeometricDataset(dataset) + # Our custom dataset, can also work with other Ethereum Token Networks elif self.parameters.data_name in ["EthereumTokenNetwork"]: root_folder = rootutils.find_root() root_data_dir = os.path.join(root_folder, self.parameters["data_dir"]) data_path = os.path.join(root_data_dir, "OurDatasets/graph_data.pt") with open(data_path, "rb") as f: + print(data_path) dataset = torch.load(f) dataset = CustomDataset([dataset], self.data_dir) diff --git a/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py b/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py index eb3c9e19..251c4b98 100644 --- a/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py +++ b/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py @@ -1,17 +1,14 @@ from itertools import combinations -from math import e, isinf, isnan, sqrt +from math import e, isinf, sqrt import networkx as nx import numpy as np -import pandas as pd -import torch import torch_geometric from toponetx.classes import SimplicialComplex from modules.transforms.liftings.graph2simplicial.base import Graph2SimplicialLifting -# Check the name class WeightedCliqueLifting(Graph2SimplicialLifting): def __init__(self, **kwargs): super().__init__(**kwargs) @@ -19,9 +16,11 @@ def __init__(self, **kwargs): def lift_topology(self, data: torch_geometric.data.Data) -> dict: graph = self._generate_graph_from_data(data) - self.run(graph) + graph = self.run(graph) - simplicial_complex = SimplicialComplex(graph) + graph = graph.to_undirected() + + simplicial_complex = SimplicialComplex(simplices=graph) cliques = nx.find_cliques(graph) simplices = [set() for _ in range(2, self.complex_dim + 1)] @@ -49,25 +48,20 @@ def _generate_graph_from_data(self, data: torch_geometric.data.Data) -> nx.DiGra nx.Graph The generated NetworkX graph. """ - DiG = nx.DiGraph() - - for i in range(data["num_edges"]): - name1 = data["edge_index"][0][i] # this will retirn the string name - if not DiG.has_node(name1): - DiG.add_node( - name1, - integer_label=int(data["integer_label"][data["edge_index"][0][i]]), - ) - - name2 = data["edge_index"][1][i] - if not DiG.has_node(name2): - DiG.add_node( - name2, - integer_label=int(data["integer_label"][data["edge_index"][1][i]]), - ) - - DiG.add_edge(name1, name2, w=float(data["x"][i])) - return DiG + G = torch_geometric.utils.to_networkx(data) + G.clear_edges() + + for node in G.nodes(): + G.nodes[node]["features"] = data["features"][int(node)] + + for i in range(int(data["num_edges"])): + G.add_edge( + int(data["edge_index"][0][i]), + int(data["edge_index"][1][i]), + w=float(data["x"][i]), + ) + + return G # Summation for weighted FRC def summation(self, v_name, v_weight, e_weight, target, G): @@ -178,6 +172,6 @@ def run(self, graph): dist_arr.append(temp_map[(e2, e1)]) # Filter the graph. - G_copy = self.removeEdges(graph, np.percentile(dist_arr, 50)) + G_copy = self.removeEdges(graph, np.percentile(dist_arr, 90)) return G_copy diff --git a/modules/transforms/liftings/graph2simplicial/base.py b/modules/transforms/liftings/graph2simplicial/base.py index b40cf9a8..40e28834 100755 --- a/modules/transforms/liftings/graph2simplicial/base.py +++ b/modules/transforms/liftings/graph2simplicial/base.py @@ -44,9 +44,11 @@ def _get_lifted_topology( lifted_topology = get_complex_connectivity( simplicial_complex, self.complex_dim, signed=self.signed ) + lifted_topology["x_0"] = torch.stack( list(simplicial_complex.get_simplex_attributes("features", 0).values()) ) + # If new edges have been added during the lifting process, we discard the edge attributes if self.contains_edge_attr and simplicial_complex.shape[1] == ( graph.number_of_edges() @@ -54,4 +56,5 @@ def _get_lifted_topology( lifted_topology["x_1"] = torch.stack( list(simplicial_complex.get_simplex_attributes("features", 1).values()) ) + return lifted_topology diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb index 6d4aa43a..c9315c34 100644 --- a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb +++ b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -36,55 +36,23 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset configuration for Ethereum:\n", - "\n", - "{'data_domain': 'graph',\n", - " 'data_type': 'Transactions',\n", - " 'data_name': 'EthereumTokenNetwork',\n", - " 'data_dir': 'datasets/graph/Transactions',\n", - " 'num_features': 1,\n", - " 'num_classes': 5,\n", - " 'task': 'classification',\n", - " 'loss_type': 'cross_entropy',\n", - " 'task_level': 'graph'}\n" - ] - } - ], + "outputs": [], "source": [ "dataset_name = \"Ethereum\"\n", - "dataset_config = load_dataset_config(dataset_name) # This just wont work right now\n", - "loader = GraphLoader(dataset_config) # we implement ours at line 106 of loaders.py" + "dataset_config = load_dataset_config(dataset_name)\n", + "loader = GraphLoader(dataset_config)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset only contains 1 sample:\n", - " - Graph with 75137 vertices and 132885 edges.\n", - " - Features dimensions: [1, 0]\n", - " - There are 57748 isolated nodes.\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "dataset = loader.load()\n", - "describe_data(dataset, 1) # This should work" + "describe_data(dataset, 1)" ] }, { @@ -96,25 +64,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Transform configuration for digraph2simplicial/weighted_clique_lifting:\n", - "\n", - "{'transform_type': 'lifting',\n", - " 'transform_name': 'WeightedSimplicialCliqueLifting',\n", - " 'complex_dim': 3,\n", - " 'preserve_edge_attr': False,\n", - " 'signed': True,\n", - " 'feature_lifting': 'ProjectionSum'}\n" - ] - } - ], + "outputs": [], "source": [ "# Define transformation type and id\n", "transform_type = \"liftings\"\n", @@ -129,45 +81,8 @@ "cell_type": "code", "execution_count": 5, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Processing...\n" - ] - }, - { - "ename": "KeyError", - "evalue": "(tensor(0), tensor(1))", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# This likely wont work\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m lifted_dataset \u001b[38;5;241m=\u001b[39m \u001b[43mPreProcessor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransform_config\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloader\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_dir\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m describe_data(lifted_dataset)\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:32\u001b[0m, in \u001b[0;36mPreProcessor.__init__\u001b[0;34m(self, data_list, transforms_config, data_dir, **kwargs)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m data_list\n\u001b[1;32m 31\u001b[0m pre_transform \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minstantiate_pre_transform(data_dir, transforms_config)\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprocessed_data_dir\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave_transform_parameters()\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mload(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_paths[\u001b[38;5;241m0\u001b[39m])\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/data/in_memory_dataset.py:81\u001b[0m, in \u001b[0;36mInMemoryDataset.__init__\u001b[0;34m(self, root, transform, pre_transform, pre_filter, log, force_reload)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 73\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 74\u001b[0m root: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 79\u001b[0m force_reload: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 80\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 81\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_transform\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpre_filter\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 82\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_reload\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data: Optional[BaseData] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mslices: Optional[Dict[\u001b[38;5;28mstr\u001b[39m, Tensor]] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/data/dataset.py:115\u001b[0m, in \u001b[0;36mDataset.__init__\u001b[0;34m(self, root, transform, pre_transform, pre_filter, log, force_reload)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_download()\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhas_process:\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/data/dataset.py:260\u001b[0m, in \u001b[0;36mDataset._process\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mProcessing...\u001b[39m\u001b[38;5;124m'\u001b[39m, file\u001b[38;5;241m=\u001b[39msys\u001b[38;5;241m.\u001b[39mstderr)\n\u001b[1;32m 259\u001b[0m fs\u001b[38;5;241m.\u001b[39mmakedirs(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_dir, exist_ok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m--> 260\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprocess\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 262\u001b[0m path \u001b[38;5;241m=\u001b[39m osp\u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_dir, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpre_transform.pt\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 263\u001b[0m fs\u001b[38;5;241m.\u001b[39mtorch_save(_repr(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpre_transform), path)\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:131\u001b[0m, in \u001b[0;36mPreProcessor.process\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprocess\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 130\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Process the data.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 131\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m \u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpre_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43md\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43md\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_list\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mslices \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcollate(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list)\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# Reset cache.\u001b[39;00m\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:131\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 129\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mprocess\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 130\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Process the data.\"\"\"\u001b[39;00m\n\u001b[0;32m--> 131\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpre_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43md\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m d \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list]\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mslices \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcollate(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list)\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_data_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# Reset cache.\u001b[39;00m\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/base_transform.py:32\u001b[0m, in \u001b[0;36mBaseTransform.__call__\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;66;03m# Shallow-copy the data so that we prevent in-place data modification.\u001b[39;00m\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mforward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/compose.py:24\u001b[0m, in \u001b[0;36mCompose.forward\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 22\u001b[0m data \u001b[38;5;241m=\u001b[39m [transform(d) \u001b[38;5;28;01mfor\u001b[39;00m d \u001b[38;5;129;01min\u001b[39;00m data]\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 24\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/base_transform.py:32\u001b[0m, in \u001b[0;36mBaseTransform.__call__\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;66;03m# Shallow-copy the data so that we prevent in-place data modification.\u001b[39;00m\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mforward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/data_transform.py:76\u001b[0m, in \u001b[0;36mDataTransform.forward\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: torch_geometric\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mData) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mData:\n\u001b[1;32m 64\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Forward pass of the lifting.\u001b[39;00m\n\u001b[1;32m 65\u001b[0m \n\u001b[1;32m 66\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m The lifted data.\u001b[39;00m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 76\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/torch_geometric/transforms/base_transform.py:32\u001b[0m, in \u001b[0;36mBaseTransform.__call__\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, data: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 31\u001b[0m \u001b[38;5;66;03m# Shallow-copy the data so that we prevent in-place data modification.\u001b[39;00m\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mforward\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/lifting.py:62\u001b[0m, in \u001b[0;36mAbstractLifting.forward\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Applies the full lifting (topology + features) to the input data.\u001b[39;00m\n\u001b[1;32m 50\u001b[0m \n\u001b[1;32m 51\u001b[0m \u001b[38;5;124;03mParameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;124;03m The lifted data.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 61\u001b[0m initial_data \u001b[38;5;241m=\u001b[39m data\u001b[38;5;241m.\u001b[39mto_dict()\n\u001b[0;32m---> 62\u001b[0m lifted_topology \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlift_topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 63\u001b[0m lifted_topology \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfeature_lifting(lifted_topology)\n\u001b[1;32m 64\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m torch_geometric\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mData(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39minitial_data, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mlifted_topology)\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py:33\u001b[0m, in \u001b[0;36mWeightedCliqueLifting.lift_topology\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrun(graph)\n\u001b[1;32m 29\u001b[0m simplicial_complex \u001b[38;5;241m=\u001b[39m SimplicialComplex(graph)\n\u001b[0;32m---> 33\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_lifted_topology\u001b[49m\u001b[43m(\u001b[49m\u001b[43msimplicial_complex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgraph\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/graph2simplicial/base.py:44\u001b[0m, in \u001b[0;36mGraph2SimplicialLifting._get_lifted_topology\u001b[0;34m(self, simplicial_complex, graph)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_lifted_topology\u001b[39m(\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28mself\u001b[39m, simplicial_complex: SimplicialComplex, graph: nx\u001b[38;5;241m.\u001b[39mGraph\n\u001b[1;32m 28\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mdict\u001b[39m:\n\u001b[1;32m 29\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Returns the lifted topology.\u001b[39;00m\n\u001b[1;32m 30\u001b[0m \n\u001b[1;32m 31\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;124;03m The lifted topology.\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 44\u001b[0m lifted_topology \u001b[38;5;241m=\u001b[39m \u001b[43mget_complex_connectivity\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[43m \u001b[49m\u001b[43msimplicial_complex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcomplex_dim\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msigned\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msigned\u001b[49m\n\u001b[1;32m 46\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 47\u001b[0m lifted_topology[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mx_0\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mstack(\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28mlist\u001b[39m(simplicial_complex\u001b[38;5;241m.\u001b[39mget_simplex_attributes(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfeatures\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;241m0\u001b[39m)\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 49\u001b[0m )\n\u001b[1;32m 50\u001b[0m \u001b[38;5;66;03m# If new edges have been added during the lifting process, we discard the edge attributes\u001b[39;00m\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/utils/utils.py:47\u001b[0m, in \u001b[0;36mget_complex_connectivity\u001b[0;34m(complex, max_rank, signed)\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m connectivity_info \u001b[38;5;129;01min\u001b[39;00m [\n\u001b[1;32m 39\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mincidence\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 40\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdown_laplacian\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhodge_laplacian\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 44\u001b[0m ]:\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 46\u001b[0m connectivity[\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mconnectivity_info\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrank_idx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m from_sparse(\n\u001b[0;32m---> 47\u001b[0m \u001b[38;5;28;43mgetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mcomplex\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mconnectivity_info\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m_matrix\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 48\u001b[0m \u001b[43m \u001b[49m\u001b[43mrank\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrank_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msigned\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msigned\u001b[49m\n\u001b[1;32m 49\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m )\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m: \u001b[38;5;66;03m# noqa: PERF203\u001b[39;00m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m connectivity_info \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mincidence\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/toponetx/classes/simplicial_complex.py:1163\u001b[0m, in \u001b[0;36mSimplicialComplex.up_laplacian_matrix\u001b[0;34m(self, rank, signed, weight, index)\u001b[0m\n\u001b[1;32m 1160\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`weight` is not supported in this version\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 1162\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m rank \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdim \u001b[38;5;129;01mand\u001b[39;00m rank \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m-> 1163\u001b[0m row, col, B_next \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mincidence_matrix\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1164\u001b[0m \u001b[43m \u001b[49m\u001b[43mrank\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\n\u001b[1;32m 1165\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1166\u001b[0m L_up \u001b[38;5;241m=\u001b[39m B_next \u001b[38;5;241m@\u001b[39m B_next\u001b[38;5;241m.\u001b[39mtranspose()\n\u001b[1;32m 1167\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", - "File \u001b[0;32m~/anaconda3/envs/topox/lib/python3.11/site-packages/toponetx/classes/simplicial_complex.py:877\u001b[0m, in \u001b[0;36mSimplicialComplex.incidence_matrix\u001b[0;34m(self, rank, signed, weight, index)\u001b[0m\n\u001b[1;32m 875\u001b[0m values\u001b[38;5;241m.\u001b[39mappend((\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m) \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m i)\n\u001b[1;32m 876\u001b[0m face \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mfrozenset\u001b[39m(simplex)\u001b[38;5;241m.\u001b[39mdifference({left_out})\n\u001b[0;32m--> 877\u001b[0m idx_faces\u001b[38;5;241m.\u001b[39mappend(\u001b[43msimplex_dict_d_minus_1\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mtuple\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43msorted\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mface\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m)\n\u001b[1;32m 878\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(values) \u001b[38;5;241m==\u001b[39m (rank \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m) \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mlen\u001b[39m(simplex_dict_d)\n\u001b[1;32m 879\u001b[0m boundary \u001b[38;5;241m=\u001b[39m csr_matrix(\n\u001b[1;32m 880\u001b[0m (values, (idx_faces, idx_simplices)),\n\u001b[1;32m 881\u001b[0m dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mfloat32,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 885\u001b[0m ),\n\u001b[1;32m 886\u001b[0m )\n", - "\u001b[0;31mKeyError\u001b[0m: (tensor(0), tensor(1))" - ] - } - ], + "outputs": [], "source": [ - "# This likely wont work\n", "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", "describe_data(lifted_dataset)" ] From fef7efc6af7b868177fbe70bf78c348dd56ac42e Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 22:34:28 -0400 Subject: [PATCH 07/19] Updated loaders to rename dataset pt object --- modules/data/load/loaders.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/data/load/loaders.py b/modules/data/load/loaders.py index d563b4e8..0ba213a3 100755 --- a/modules/data/load/loaders.py +++ b/modules/data/load/loaders.py @@ -109,7 +109,9 @@ def load(self) -> torch_geometric.data.Dataset: elif self.parameters.data_name in ["EthereumTokenNetwork"]: root_folder = rootutils.find_root() root_data_dir = os.path.join(root_folder, self.parameters["data_dir"]) - data_path = os.path.join(root_data_dir, "OurDatasets/graph_data.pt") + data_path = os.path.join( + root_data_dir, "OurDatasets/EthereumTokenNetwork.pt" + ) with open(data_path, "rb") as f: print(data_path) From 57922a2d70a8f19cc8abe1b17ad4dc877772489b Mon Sep 17 00:00:00 2001 From: RBuck8339 <101837795+RBuck8339@users.noreply.github.com> Date: Fri, 12 Jul 2024 22:43:22 -0400 Subject: [PATCH 08/19] Create delme --- datasets/Transactions/delme | 1 + 1 file changed, 1 insertion(+) create mode 100644 datasets/Transactions/delme diff --git a/datasets/Transactions/delme b/datasets/Transactions/delme new file mode 100644 index 00000000..3b18e512 --- /dev/null +++ b/datasets/Transactions/delme @@ -0,0 +1 @@ +hello world From d9220b2c45715efcc4c0eedc94522f2b3d8529db Mon Sep 17 00:00:00 2001 From: RBuck8339 <101837795+RBuck8339@users.noreply.github.com> Date: Fri, 12 Jul 2024 22:43:55 -0400 Subject: [PATCH 09/19] Added dataset --- datasets/Transactions/EthereumTokenNetwork.pt | Bin 0 -> 1973032 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 datasets/Transactions/EthereumTokenNetwork.pt diff --git a/datasets/Transactions/EthereumTokenNetwork.pt b/datasets/Transactions/EthereumTokenNetwork.pt new file mode 100644 index 0000000000000000000000000000000000000000..1d8efb13e41bb092bc79abc1d1efb5e847b19ce8 GIT binary patch literal 1973032 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

eF~StFl_KhR$V8cUji5PoAY~2kYpwgXieF8J=r? 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

v<@n>awC=P&^~HNQ`}3&hY168oFY=E; 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 literal 0 HcmV?d00001 From 01c9398a247efa8f75f8deaba8ca33abab025f2e Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 22:49:14 -0400 Subject: [PATCH 10/19] Updated loader --- configs/datasets/Ethereum.yaml | 2 +- modules/data/load/loaders.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/configs/datasets/Ethereum.yaml b/configs/datasets/Ethereum.yaml index 77e38200..c3f5fd55 100644 --- a/configs/datasets/Ethereum.yaml +++ b/configs/datasets/Ethereum.yaml @@ -1,7 +1,7 @@ data_domain: graph data_type: Transactions data_name: EthereumTokenNetwork -data_dir: datasets/${data_domain}/${data_type} +data_dir: datasets/${data_type}/EthereumTokenNetwork num_features: 1 num_classes: 5 diff --git a/modules/data/load/loaders.py b/modules/data/load/loaders.py index 0ba213a3..635b7c35 100755 --- a/modules/data/load/loaders.py +++ b/modules/data/load/loaders.py @@ -109,12 +109,9 @@ def load(self) -> torch_geometric.data.Dataset: elif self.parameters.data_name in ["EthereumTokenNetwork"]: root_folder = rootutils.find_root() root_data_dir = os.path.join(root_folder, self.parameters["data_dir"]) - data_path = os.path.join( - root_data_dir, "OurDatasets/EthereumTokenNetwork.pt" - ) + data_path = os.path.join(root_data_dir, "EthereumTokenNetwork.pt") with open(data_path, "rb") as f: - print(data_path) dataset = torch.load(f) dataset = CustomDataset([dataset], self.data_dir) From e23d56a324b14caff9dfb4be4fd7c7862a68e794 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 22:53:25 -0400 Subject: [PATCH 11/19] Updated loaders : --- .../weighted_clique_lifting.ipynb | 63 ++++++++++++++++--- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb index c9315c34..211d3ae6 100644 --- a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb +++ b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -36,9 +36,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dataset configuration for Ethereum:\n", + "\n", + "{'data_domain': 'graph',\n", + " 'data_type': 'Transactions',\n", + " 'data_name': 'EthereumTokenNetwork',\n", + " 'data_dir': 'datasets/Transactions/EthereumTokenNetwork',\n", + " 'num_features': 1,\n", + " 'num_classes': 5,\n", + " 'task': 'classification',\n", + " 'loss_type': 'cross_entropy',\n", + " 'task_level': 'graph'}\n" + ] + } + ], "source": [ "dataset_name = \"Ethereum\"\n", "dataset_config = load_dataset_config(dataset_name)\n", @@ -47,9 +66,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/datasets/Transactions/EthereumTokenNetwork/EthereumTokenNetwork.pt\n", + "\n", + "Dataset only contains 1 sample:\n", + " - Graph with 47052 vertices and 79722 edges.\n", + " - Features dimensions: [1, 0]\n", + " - There are 32686 isolated nodes.\n", + "\n" + ] + } + ], "source": [ "dataset = loader.load()\n", "describe_data(dataset, 1)" @@ -64,9 +97,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Transform configuration for digraph2simplicial/weighted_clique_lifting:\n", + "\n", + "{'transform_type': 'lifting',\n", + " 'transform_name': 'WeightedSimplicialCliqueLifting',\n", + " 'complex_dim': 3,\n", + " 'preserve_edge_attr': True,\n", + " 'signed': True,\n", + " 'feature_lifting': 'ProjectionSum'}\n" + ] + } + ], "source": [ "# Define transformation type and id\n", "transform_type = \"liftings\"\n", From 2ac4f9160dc6fc92442e96988e2abb9fb0c151a0 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 23:37:58 -0400 Subject: [PATCH 12/19] Final Commit --- README.md | 55 +++++++++++++++++++ configs/datasets/Ethereum.yaml | 3 +- .../weighted_clique_lifting.py | 19 +++++-- .../weighted_clique_lifting.ipynb | 48 ++++++++++++---- 4 files changed, 108 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ab3eca37..2ec76e60 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,58 @@ +## WeightedCliqueLifting +WeightedCliqueLifting is a Python class for lifting a weighted-directed graph into a simplicial complex. This transformation is useful in topological data analysis, where higher-order interactions are represented by simplicial complexes. + +# A Note: +We were unable to fully run our lifting as the Jupyter Notebook kernel would crash while verifying the simplicial complex due to a lack of sufficient memory on any of our systems. The weighted-directed graph is too large for us to run, but we hope someone else can. We have faith that our lifting from a weighted-directed graph into a simplicial complex works but would greatly appreciate it if this could be tested and we could receive feedback. Our code is commented in detail for you to work with. + +# Table of Contents + +1. Usage +2. Our New Dataset +3. Our Methods + +# Usage + +To use the WeightedCliqueLifting class, you need to instantiate it and call the lift_topology method with a torch_geometric.data.Data object. +```Python +import torch_geometric +from modules.transforms.liftings.graph2simplicial.base import Graph2SimplicialLifting +from your_module import WeightedCliqueLifting + +# Instantiate the class +lifting = WeightedCliqueLifting(complex_dim=3) + +# Assume `data` is a torch_geometric.data.Data object +lifted_topology = lifting.lift_topology(data) +``` +Please follow the tutorial in tutorials/digraph2simplicial/weighted_clique_lifting.ipynb for an example. + +# Our New Dataset: +We have added a new dataset for our lifting. This dataset is an Ethereum Token Network exchange graph for September 30, 2023. + +The dataset has the following attributes: +- edge_index: The indexes for all edges in the graph +- num_nodes : The number of nodes in the graph +- num_edges: the number of edges in the graph +- features: The node labels for the graph depending on what the node identifies with in the network (assets: 0, derivatives: 1, dex: 2, lending: 3, unknown: 4). Note: most are unknown, there are few nodes not labeled 4 +- x: The edge weights used in our calculations explained below. The edge weights are pre-normalized for your convenience. Normalization formula taken from Dissecting Ethereum Blockchain Analytics: What We Learn from Topology and Geometry of Ethereum Graph + +The dataset is stored in datasets/Transactions/EthereumTokenNetwork/EthereumTokenNetwork.pt + +# Our Methods: +To perform our topological lifting from a weighted-directed graph to a simplicial complex we follow the following steps: + +1. Import our dataset from torch_geometric and make it into a directed networkx graph object +2. Create a weight hashmap for the graph +3. Calculate the Forman-Ricci Curvature for the edges +4. Update the edge distances using the Forman-Ricci Curvature +5. Remove edges based on the given percentile value in the dataset config file +6. Identify cliques in the graph +7. Create a simplicial complex using the cliques + + +# Who We Are: +Submission Completed by Cuneyt Akcora, Ronan Buck, Vedant Patel, Guneet Uberoi from The University of Central Florida. + # ICML Topological Deep Learning Challenge 2024: Beyond the Graph Domain Official repository for the Topological Deep Learning Challenge 2024, jointly organized by [TAG-DS](https://www.tagds.com) & PyT-Team and hosted by the [Geometry-grounded Representation Learning and Generative Modeling (GRaM) Workshop](https://gram-workshop.github.io) at ICML 2024. diff --git a/configs/datasets/Ethereum.yaml b/configs/datasets/Ethereum.yaml index c3f5fd55..1657de5f 100644 --- a/configs/datasets/Ethereum.yaml +++ b/configs/datasets/Ethereum.yaml @@ -7,4 +7,5 @@ num_features: 1 num_classes: 5 task: classification loss_type: cross_entropy -task_level: graph \ No newline at end of file +task_level: graph +percentile: 0.9 # A configurable percentile threshold for filtering out edges in the graph (0.9 means keep 90% of edges) \ No newline at end of file diff --git a/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py b/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py index 251c4b98..e15b66d7 100644 --- a/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py +++ b/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py @@ -12,6 +12,7 @@ class WeightedCliqueLifting(Graph2SimplicialLifting): def __init__(self, **kwargs): super().__init__(**kwargs) + self.percentile = kwargs.get("percentile", 0.9) def lift_topology(self, data: torch_geometric.data.Data) -> dict: graph = self._generate_graph_from_data(data) @@ -63,11 +64,10 @@ def _generate_graph_from_data(self, data: torch_geometric.data.Data) -> nx.DiGra return G - # Summation for weighted FRC + # The forman ricci curvature calculation is depended on the type of graph. + # The summation for this code is based off of the directed forman ricci curvate formula. def summation(self, v_name, v_weight, e_weight, target, G): frc_sum = 0 - - # since some nodes are undirected I will store seen nodes in a hashmap for instant lookup to see if it has already been traversed seen = set() # G.in_edges('node')'s formatting: tuple -> ('connecting_node', 'node') @@ -109,8 +109,10 @@ def formanRicciCurvature(self, G, wHashmap): - self.summation(v1, v2_weight, target_edge_weight, v2, G) ) - # the caluclation throws a division by 0 so im using a try/except + # the calculation throws a division by 0 because of how small it gets. # the e-308 numbers is the smallest number that can fit in a float64 + # torch geometric cannot hold store numbers that dont fit in anything larger than a float64 + # Since some FRC values can be negative, they are passed into 1/(e ** frc ) so they are all positive values try: distance_metric = 1 / (e**frc) @@ -129,7 +131,10 @@ def formanRicciCurvature(self, G, wHashmap): return return_map - # Normalization formula + # Normalization formula is from: + # Dissecting Ethereum Blockchain Analytics: What We Learn from + # Topology and Geometry of Ethereum Graph + # the data has been pre-normalized in our PyTorch Geometric object using this formula. def formula(self, curr, max, min): return 1 / (1 + (9 * ((curr - min) / (max - min)))) @@ -138,11 +143,13 @@ def removeEdges(self, graph_obj, threshold): graph_copy = graph_obj.copy() temp = set() + # Save the edges that are larger than the distance threshold so they can be removed. for edge1, edge2 in graph_copy.edges(): if graph_copy.has_edge(edge1, edge2): if graph_copy[edge1][edge2]["distance"] > (threshold): temp.add((edge1, edge2)) + # you cannot iterate through a networkx dict and remove simultaneously for e1, e2 in temp: graph_copy.remove_edge(e1, e2) @@ -172,6 +179,6 @@ def run(self, graph): dist_arr.append(temp_map[(e2, e1)]) # Filter the graph. - G_copy = self.removeEdges(graph, np.percentile(dist_arr, 90)) + G_copy = self.removeEdges(graph, np.percentile(dist_arr, self.percentile)) return G_copy diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb index 211d3ae6..855aeb59 100644 --- a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb +++ b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb @@ -9,9 +9,18 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "import sys\n", "\n", @@ -36,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -54,32 +63,34 @@ " 'num_classes': 5,\n", " 'task': 'classification',\n", " 'loss_type': 'cross_entropy',\n", - " 'task_level': 'graph'}\n" + " 'task_level': 'graph',\n", + " 'percentile': 0.9}\n" ] } ], "source": [ "dataset_name = \"Ethereum\"\n", "dataset_config = load_dataset_config(dataset_name)\n", + "print(dataset_config)\n", "loader = GraphLoader(dataset_config)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/datasets/Transactions/EthereumTokenNetwork/EthereumTokenNetwork.pt\n", "\n", "Dataset only contains 1 sample:\n", " - Graph with 47052 vertices and 79722 edges.\n", " - Features dimensions: [1, 0]\n", " - There are 32686 isolated nodes.\n", - "\n" + "\n", + "Data(x=[79722], edge_index=[2, 79722], features=[47052], num_nodes=47052, num_edges=79722)\n" ] } ], @@ -97,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -128,9 +139,26 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'percentile' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[9], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m lifted_dataset \u001b[38;5;241m=\u001b[39m \u001b[43mPreProcessor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransform_config\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloader\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_dir\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m describe_data(lifted_dataset)\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:31\u001b[0m, in \u001b[0;36mPreProcessor.__init__\u001b[0;34m(self, data_list, transforms_config, data_dir, **kwargs)\u001b[0m\n\u001b[1;32m 29\u001b[0m data_list \u001b[38;5;241m=\u001b[39m [data_list]\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m data_list\n\u001b[0;32m---> 31\u001b[0m pre_transform \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minstantiate_pre_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata_dir\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransforms_config\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_data_dir, \u001b[38;5;28;01mNone\u001b[39;00m, pre_transform, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave_transform_parameters()\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:75\u001b[0m, in \u001b[0;36mPreProcessor.instantiate_pre_transform\u001b[0;34m(self, data_dir, transforms_config)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minstantiate_pre_transform\u001b[39m(\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m, data_dir, transforms_config\n\u001b[1;32m 60\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose:\n\u001b[1;32m 61\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Instantiate the pre-transforms.\u001b[39;00m\n\u001b[1;32m 62\u001b[0m \n\u001b[1;32m 63\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[38;5;124;03m Pre-transform object.\u001b[39;00m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 75\u001b[0m pre_transforms_dict \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\n\u001b[1;32m 76\u001b[0m \u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mDataTransform\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtransforms_config\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 77\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 78\u001b[0m pre_transforms \u001b[38;5;241m=\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose(\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28mlist\u001b[39m(pre_transforms_dict\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 80\u001b[0m )\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_processed_data_dir(pre_transforms_dict, data_dir, transforms_config)\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:76\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minstantiate_pre_transform\u001b[39m(\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m, data_dir, transforms_config\n\u001b[1;32m 60\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose:\n\u001b[1;32m 61\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Instantiate the pre-transforms.\u001b[39;00m\n\u001b[1;32m 62\u001b[0m \n\u001b[1;32m 63\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[38;5;124;03m Pre-transform object.\u001b[39;00m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 75\u001b[0m pre_transforms_dict \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m---> 76\u001b[0m key: \u001b[43mDataTransform\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m key, value \u001b[38;5;129;01min\u001b[39;00m transforms_config\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 77\u001b[0m }\n\u001b[1;32m 78\u001b[0m pre_transforms \u001b[38;5;241m=\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose(\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28mlist\u001b[39m(pre_transforms_dict\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 80\u001b[0m )\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_processed_data_dir(pre_transforms_dict, data_dir, transforms_config)\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/data_transform.py:60\u001b[0m, in \u001b[0;36mDataTransform.__init__\u001b[0;34m(self, transform_name, **kwargs)\u001b[0m\n\u001b[1;32m 56\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtransform_name\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m transform_name\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparameters \u001b[38;5;241m=\u001b[39m kwargs\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransform \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m---> 60\u001b[0m \u001b[43mTRANSFORMS\u001b[49m\u001b[43m[\u001b[49m\u001b[43mtransform_name\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m transform_name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 61\u001b[0m )\n", + "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py:15\u001b[0m, in \u001b[0;36mWeightedCliqueLifting.__init__\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpercentile \u001b[38;5;241m=\u001b[39m \u001b[43mpercentile\u001b[49m\n", + "\u001b[0;31mNameError\u001b[0m: name 'percentile' is not defined" + ] + } + ], "source": [ "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", "describe_data(lifted_dataset)" From d46d41cd1c0efd396f855d8e1cdd51ef75b3ce25 Mon Sep 17 00:00:00 2001 From: RBuck8339 <101837795+RBuck8339@users.noreply.github.com> Date: Fri, 12 Jul 2024 23:39:35 -0400 Subject: [PATCH 13/19] Delete datasets/Transactions/delme --- datasets/Transactions/delme | 1 - 1 file changed, 1 deletion(-) delete mode 100644 datasets/Transactions/delme diff --git a/datasets/Transactions/delme b/datasets/Transactions/delme deleted file mode 100644 index 3b18e512..00000000 --- a/datasets/Transactions/delme +++ /dev/null @@ -1 +0,0 @@ -hello world From 163b5d521cd579cbc9b5ddc967f06ede9af67258 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 23:45:40 -0400 Subject: [PATCH 14/19] Fixed issue --- configs/datasets/Ethereum.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/datasets/Ethereum.yaml b/configs/datasets/Ethereum.yaml index 1657de5f..ac905875 100644 --- a/configs/datasets/Ethereum.yaml +++ b/configs/datasets/Ethereum.yaml @@ -1,7 +1,7 @@ data_domain: graph data_type: Transactions data_name: EthereumTokenNetwork -data_dir: datasets/${data_type}/EthereumTokenNetwork +data_dir: datasets/${data_type} num_features: 1 num_classes: 5 From 4fce3b27e500ad008db52a5f1a6e490e166aaf48 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 12 Jul 2024 23:47:05 -0400 Subject: [PATCH 15/19] Fixed issue --- .../weighted_clique_lifting.ipynb | 97 ++----------------- 1 file changed, 10 insertions(+), 87 deletions(-) diff --git a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb index 855aeb59..c9315c34 100644 --- a/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb +++ b/tutorials/digraph2simplicial/weighted_clique_lifting.ipynb @@ -9,18 +9,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "\n", @@ -45,55 +36,20 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset configuration for Ethereum:\n", - "\n", - "{'data_domain': 'graph',\n", - " 'data_type': 'Transactions',\n", - " 'data_name': 'EthereumTokenNetwork',\n", - " 'data_dir': 'datasets/Transactions/EthereumTokenNetwork',\n", - " 'num_features': 1,\n", - " 'num_classes': 5,\n", - " 'task': 'classification',\n", - " 'loss_type': 'cross_entropy',\n", - " 'task_level': 'graph',\n", - " 'percentile': 0.9}\n" - ] - } - ], + "outputs": [], "source": [ "dataset_name = \"Ethereum\"\n", "dataset_config = load_dataset_config(dataset_name)\n", - "print(dataset_config)\n", "loader = GraphLoader(dataset_config)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Dataset only contains 1 sample:\n", - " - Graph with 47052 vertices and 79722 edges.\n", - " - Features dimensions: [1, 0]\n", - " - There are 32686 isolated nodes.\n", - "\n", - "Data(x=[79722], edge_index=[2, 79722], features=[47052], num_nodes=47052, num_edges=79722)\n" - ] - } - ], + "outputs": [], "source": [ "dataset = loader.load()\n", "describe_data(dataset, 1)" @@ -108,25 +64,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Transform configuration for digraph2simplicial/weighted_clique_lifting:\n", - "\n", - "{'transform_type': 'lifting',\n", - " 'transform_name': 'WeightedSimplicialCliqueLifting',\n", - " 'complex_dim': 3,\n", - " 'preserve_edge_attr': True,\n", - " 'signed': True,\n", - " 'feature_lifting': 'ProjectionSum'}\n" - ] - } - ], + "outputs": [], "source": [ "# Define transformation type and id\n", "transform_type = \"liftings\"\n", @@ -139,26 +79,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'percentile' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[9], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m lifted_dataset \u001b[38;5;241m=\u001b[39m \u001b[43mPreProcessor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransform_config\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloader\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata_dir\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m describe_data(lifted_dataset)\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:31\u001b[0m, in \u001b[0;36mPreProcessor.__init__\u001b[0;34m(self, data_list, transforms_config, data_dir, **kwargs)\u001b[0m\n\u001b[1;32m 29\u001b[0m data_list \u001b[38;5;241m=\u001b[39m [data_list]\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata_list \u001b[38;5;241m=\u001b[39m data_list\n\u001b[0;32m---> 31\u001b[0m pre_transform \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minstantiate_pre_transform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata_dir\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransforms_config\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocessed_data_dir, \u001b[38;5;28;01mNone\u001b[39;00m, pre_transform, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave_transform_parameters()\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:75\u001b[0m, in \u001b[0;36mPreProcessor.instantiate_pre_transform\u001b[0;34m(self, data_dir, transforms_config)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minstantiate_pre_transform\u001b[39m(\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m, data_dir, transforms_config\n\u001b[1;32m 60\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose:\n\u001b[1;32m 61\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Instantiate the pre-transforms.\u001b[39;00m\n\u001b[1;32m 62\u001b[0m \n\u001b[1;32m 63\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[38;5;124;03m Pre-transform object.\u001b[39;00m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 75\u001b[0m pre_transforms_dict \u001b[38;5;241m=\u001b[39m \u001b[43m{\u001b[49m\n\u001b[1;32m 76\u001b[0m \u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mDataTransform\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtransforms_config\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 77\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\n\u001b[1;32m 78\u001b[0m pre_transforms \u001b[38;5;241m=\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose(\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28mlist\u001b[39m(pre_transforms_dict\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 80\u001b[0m )\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_processed_data_dir(pre_transforms_dict, data_dir, transforms_config)\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/data/preprocess/preprocessor.py:76\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minstantiate_pre_transform\u001b[39m(\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m, data_dir, transforms_config\n\u001b[1;32m 60\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose:\n\u001b[1;32m 61\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Instantiate the pre-transforms.\u001b[39;00m\n\u001b[1;32m 62\u001b[0m \n\u001b[1;32m 63\u001b[0m \u001b[38;5;124;03m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[38;5;124;03m Pre-transform object.\u001b[39;00m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 75\u001b[0m pre_transforms_dict \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m---> 76\u001b[0m key: \u001b[43mDataTransform\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m key, value \u001b[38;5;129;01min\u001b[39;00m transforms_config\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 77\u001b[0m }\n\u001b[1;32m 78\u001b[0m pre_transforms \u001b[38;5;241m=\u001b[39m torch_geometric\u001b[38;5;241m.\u001b[39mtransforms\u001b[38;5;241m.\u001b[39mCompose(\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28mlist\u001b[39m(pre_transforms_dict\u001b[38;5;241m.\u001b[39mvalues())\n\u001b[1;32m 80\u001b[0m )\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_processed_data_dir(pre_transforms_dict, data_dir, transforms_config)\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/data_transform.py:60\u001b[0m, in \u001b[0;36mDataTransform.__init__\u001b[0;34m(self, transform_name, **kwargs)\u001b[0m\n\u001b[1;32m 56\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtransform_name\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m transform_name\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mparameters \u001b[38;5;241m=\u001b[39m kwargs\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransform \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m---> 60\u001b[0m \u001b[43mTRANSFORMS\u001b[49m\u001b[43m[\u001b[49m\u001b[43mtransform_name\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m transform_name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 61\u001b[0m )\n", - "File \u001b[0;32m/mnt/c/Users/ronan/Downloads/GitHub/challenge-icml-2024/modules/transforms/liftings/digraph2simplicial/weighted_clique_lifting.py:15\u001b[0m, in \u001b[0;36mWeightedCliqueLifting.__init__\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpercentile \u001b[38;5;241m=\u001b[39m \u001b[43mpercentile\u001b[49m\n", - "\u001b[0;31mNameError\u001b[0m: name 'percentile' is not defined" - ] - } - ], + "outputs": [], "source": [ "lifted_dataset = PreProcessor(dataset, transform_config, loader.data_dir)\n", "describe_data(lifted_dataset)" From fc3a8356387a3659cd716dccd680464fcc5c7199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20G=C3=BCrcan=20Ak=C3=A7ora?= Date: Mon, 15 Jul 2024 11:05:44 +0300 Subject: [PATCH 16/19] Update README.md --- README.md | 75 +++---------------------------------------------------- 1 file changed, 3 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 2ec76e60..893ce4f2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ## WeightedCliqueLifting -WeightedCliqueLifting is a Python class for lifting a weighted-directed graph into a simplicial complex. This transformation is useful in topological data analysis, where higher-order interactions are represented by simplicial complexes. +WeightedCliqueLifting is a Python class for lifting a weighted-directed graph into a simplicial complex by using [Ricci Curvature](https://en.wikipedia.org/wiki/Ricci_curvature) information on the graph edges. This transformation is useful in topological data analysis, where higher-order interactions are represented by simplicial complexes. # A Note: We were unable to fully run our lifting as the Jupyter Notebook kernel would crash while verifying the simplicial complex due to a lack of sufficient memory on any of our systems. The weighted-directed graph is too large for us to run, but we hope someone else can. We have faith that our lifting from a weighted-directed graph into a simplicial complex works but would greatly appreciate it if this could be tested and we could receive feedback. Our code is commented in detail for you to work with. @@ -56,77 +56,8 @@ Submission Completed by Cuneyt Akcora, Ronan Buck, Vedant Patel, Guneet Uberoi f # ICML Topological Deep Learning Challenge 2024: Beyond the Graph Domain Official repository for the Topological Deep Learning Challenge 2024, jointly organized by [TAG-DS](https://www.tagds.com) & PyT-Team and hosted by the [Geometry-grounded Representation Learning and Generative Modeling (GRaM) Workshop](https://gram-workshop.github.io) at ICML 2024. -## Relevant Information -- The deadline is **July 12th, 2024 (Anywhere on Earth)**. Participants are welcome to modify their submissions until this time. -- Please, check out the [main webpage of the challenge](https://pyt-team.github.io/packs/challenge.html) for the full description of the competition (motivation, submission requirements, evaluation, etc.) - -## Brief Description -The main purpose of the challenge is to further expand the current scope and impact of Topological Deep Learning (TDL), enabling the exploration of its applicability in new contexts and scenarios. To do so, we propose participants to design and implement lifting mappings between different data structures and topological domains (point-clouds, graphs, hypergraphs, simplicial/cell/combinatorial complexes), potentially bridging the gap between TDL and all kinds of existing datasets. - - -## General Guidelines -Everyone can participate and participation is free --only principal PyT-Team developers are excluded. It is sufficient to: -- Send a valid Pull Request (i.e. passing all tests) before the deadline. -- Respect Submission Requirements (see below). - -Teams are accepted, and there is no restriction on the number of team members. An acceptable Pull Request automatically subscribes a participant/team to the challenge. - -We encourage participants to start submitting their Pull Request early on, as this helps addressing potential issues with the code. Moreover, earlier Pull Requests will be given priority consideration in the case of multiple submissions of similar quality implementing the same lifting. - -A Pull Request should contain no more than one lifting. However, there is no restriction on the number of submissions (Pull Requests) per participant/team. - -## Basic Setup -To develop on your machine, here are some tips. - -First, we recommend using Python 3.11.3, which is the python version used to run the unit-tests. - -For example, create a conda environment: - ```bash - conda create -n topox python=3.11.3 - conda activate topox - ``` - -Then: - -1. Clone a copy of tmx from source: - - ```bash - git clone git@github.com:pyt-team/challenge-icml-2024.git - cd challenge-icml-2024 - ``` - -2. Install tmx in editable mode: - - ```bash - pip install -e '.[all]' - ``` - **Notes:** - - Requires pip >= 21.3. Refer: [PEP 660](https://peps.python.org/pep-0660/). - - On Windows, use `pip install -e .[all]` instead (without quotes around `[all]`). - -4. Install torch, torch-scatter, torch-sparse with or without CUDA depending on your needs. - - ```bash - pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/${CUDA} - pip install torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-2.0.1+${CUDA}.html - pip install torch-cluster -f https://data.pyg.org/whl/torch-2.0.0+${CUDA}.html - ``` - - where `${CUDA}` should be replaced by either `cpu`, `cu102`, `cu113`, or `cu115` depending on your PyTorch installation (`torch.version.cuda`). - -5. Ensure that you have a working tmx installation by running the entire test suite with - - ```bash - pytest - ``` - - In case an error occurs, please first check if all sub-packages ([`torch-scatter`](https://github.com/rusty1s/pytorch_scatter), [`torch-sparse`](https://github.com/rusty1s/pytorch_sparse), [`torch-cluster`](https://github.com/rusty1s/pytorch_cluster) and [`torch-spline-conv`](https://github.com/rusty1s/pytorch_spline_conv)) are on its latest reported version. - -6. Install pre-commit hooks: - - ```bash - pre-commit install - ``` + + ## Questions From c7209cb09b0434bfa51e3783944357e797fa5bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20G=C3=BCrcan=20Ak=C3=A7ora?= Date: Mon, 15 Jul 2024 11:06:03 +0300 Subject: [PATCH 17/19] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 893ce4f2..5c9f0f01 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,7 @@ ## WeightedCliqueLifting WeightedCliqueLifting is a Python class for lifting a weighted-directed graph into a simplicial complex by using [Ricci Curvature](https://en.wikipedia.org/wiki/Ricci_curvature) information on the graph edges. This transformation is useful in topological data analysis, where higher-order interactions are represented by simplicial complexes. -# A Note: -We were unable to fully run our lifting as the Jupyter Notebook kernel would crash while verifying the simplicial complex due to a lack of sufficient memory on any of our systems. The weighted-directed graph is too large for us to run, but we hope someone else can. We have faith that our lifting from a weighted-directed graph into a simplicial complex works but would greatly appreciate it if this could be tested and we could receive feedback. Our code is commented in detail for you to work with. - -# Table of Contents + # Table of Contents 1. Usage 2. Our New Dataset From 687a2593b2e04a5ade1959b41e4cb34156442b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20G=C3=BCrcan=20Ak=C3=A7ora?= Date: Mon, 15 Jul 2024 11:07:46 +0300 Subject: [PATCH 18/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c9f0f01..1dafa7b6 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ To perform our topological lifting from a weighted-directed graph to a simplicia # Who We Are: -Submission Completed by Cuneyt Akcora, Ronan Buck, Vedant Patel, Guneet Uberoi from The University of Central Florida. +Submission Completed by Ronan Buck, Vedant Patel, Guneet Uberoi from The University of Central Florida under the supervision of [Cuneyt Gurcan Akcora](https://cakcora.github.io/). # ICML Topological Deep Learning Challenge 2024: Beyond the Graph Domain Official repository for the Topological Deep Learning Challenge 2024, jointly organized by [TAG-DS](https://www.tagds.com) & PyT-Team and hosted by the [Geometry-grounded Representation Learning and Generative Modeling (GRaM) Workshop](https://gram-workshop.github.io) at ICML 2024. From 6d42636093a9199041d473629f26f370e8fb6246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20G=C3=BCrcan=20Ak=C3=A7ora?= Date: Mon, 15 Jul 2024 11:10:59 +0300 Subject: [PATCH 19/19] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 1dafa7b6..be251310 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,7 @@ To perform our topological lifting from a weighted-directed graph to a simplicia # Who We Are: Submission Completed by Ronan Buck, Vedant Patel, Guneet Uberoi from The University of Central Florida under the supervision of [Cuneyt Gurcan Akcora](https://cakcora.github.io/). -# ICML Topological Deep Learning Challenge 2024: Beyond the Graph Domain -Official repository for the Topological Deep Learning Challenge 2024, jointly organized by [TAG-DS](https://www.tagds.com) & PyT-Team and hosted by the [Geometry-grounded Representation Learning and Generative Modeling (GRaM) Workshop](https://gram-workshop.github.io) at ICML 2024. +Please reach us at Vedant Patel , Ronan Buck and Guneet Uberoi .