Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
vapavlo committed May 21, 2024
2 parents e7e13bc + 2351fb7 commit f29adb2
Showing 176 changed files with 6,699 additions and 3,575 deletions.
18 changes: 0 additions & 18 deletions .devcontainer/devcontainer.json

This file was deleted.

129 changes: 0 additions & 129 deletions .devcontainer/pyproject.toml

This file was deleted.

3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/logs
/datasets/graph
.ruff_cache
25 changes: 10 additions & 15 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -15,21 +15,16 @@ repos:
- id: check-added-large-files
args:
- --maxkb=2048
# - id: trailing-whitespace
- id: requirements-txt-fixer

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.4
hooks:
- id: ruff
#types_or: [ python, pyi, jupyter ]
#types_or: [ python, pyi ]
args: [ --fix ]
- id: ruff-format
#types_or: [ python, pyi, jupyter ]
#types_or: [ python, pyi ]
# - repo: https://github.com/astral-sh/ruff-pre-commit
# rev: v0.4.4
# hooks:
# - id: ruff
# args: [ --fix ]
# - id: ruff-format

- repo: https://github.com/numpy/numpydoc
rev: v1.6.0
hooks:
- id: numpydoc-validation
# - repo: https://github.com/numpy/numpydoc
# rev: v1.6.0
# hooks:
# - id: numpydoc-validation
9 changes: 5 additions & 4 deletions .devcontainer/Dockerfile → Dockerfile
100755 → 100644
Original file line number Diff line number Diff line change
@@ -7,10 +7,11 @@ COPY . .
RUN pip install --upgrade pip

RUN pip install -e '.[all]'
RUN pip install --no-dependencies git+https://github.com/pyt-team/TopoNetX.git
RUN pip install --no-dependencies git+https://github.com/pyt-team/TopoModelX.git
RUN pip install git+https://github.com/pyt-team/TopoNetX.git
RUN pip install git+https://github.com/pyt-team/TopoModelX.git
RUN pip install git+https://github.com/pyt-team/TopoEmbedX.git

RUN pip install torch_geometric==2.4.0
RUN pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/cu115
RUN pip install torch-scatter torch-sparse -f https://data.pyg.org/whl/torch-2.0.1+cu115.html
RUN pip install torch-cluster -f https://data.pyg.org/whl/torch-2.0.0+cu115.html
RUN pip install lightning>=2.0.0
RUN pip install numpy pre-commit jupyterlab notebook ipykernel
11 changes: 11 additions & 0 deletions conda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# #!/bin/bash

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

~/miniconda3/bin/conda init bash

#conda create -n topox python=3.11.3
#conda activate topox
3 changes: 2 additions & 1 deletion configs/dataset/MUTAG.yaml
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@ parameters:
num_features:
- 7 # initial node features
- 4 # initial edge features

num_classes: 2
task: classification
loss_type: cross_entropy
@@ -26,7 +27,7 @@ parameters:
train_prop: 0.5 # for "random" strategy splitting

# Lifting parameters
max_dim_if_lifted: 2
max_dim_if_lifted: 3 # This is the maximum dimension of the simplicial complex in the dataset
preserve_edge_attr_if_lifted: False

# Dataloader parameters
2 changes: 1 addition & 1 deletion configs/dataset/PROTEINS_TU.yaml
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ parameters:
monitor_metric: accuracy
task_level: graph
data_seed: 9
split_type: k-fold #'k-fold' # either "k-fold" or "random" strategies
split_type: random #'k-fold' # either "k-fold" or "random" strategies
k: 10 # for "k-fold" Cross-Validation
train_prop: 0.5 # for "random" strategy splitting

10 changes: 7 additions & 3 deletions configs/dataset/ZINC.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
_target_: topobenchmarkx.io.load.loaders.GraphLoader

# USE python train.py dataset.transforms.one_hot_node_degree_features.degrees_fields=x to run this config

defaults:
- transforms/data_manipulations: node_feat_to_float
- transforms/data_manipulations: node_degrees
- transforms/[email protected]_hot_node_degree_features: one_hot_node_degree_features
- transforms: ${get_default_transform:graph,${model}}

# Data definition
@@ -13,14 +16,15 @@ parameters:
data_split_dir: ${paths.data_dir}data_splits/${dataset.parameters.data_name}

# Dataset parameters
num_features: 1 # here basically I specify the initial num features in mutang at x aka x_0
num_features: 21 # torch_geometric ZINC dataset has 21 atom types
max_node_degree: 20 # Use it to one_hot encode node degrees. Additional parameter to run dataset.transforms.one_hot_node_degree_features.degrees_fields=x
num_classes: 1
task: regression
loss_type: mse
monitor_metric: mae
task_level: graph
data_seed: 0
split_type: 'fixed' # either k-fold or test
split_type: 'fixed' # ZINC accept only <fixed> split
#k: 10 # for k-Fold Cross-Validation

# Dataloader parameters
2 changes: 1 addition & 1 deletion configs/dataset/coauthorship_citeseer.yaml
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ parameters:
monitor_metric: accuracy
task_level: node
data_seed: 0
split_type: k-fold #'k-fold' # either k-fold or test
split_type: random #'k-fold' # either k-fold or test
k: 10 # for k-Fold Cross-Validation

# Dataloader parameters
2 changes: 1 addition & 1 deletion configs/dataset/coauthorship_cora.yaml
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ parameters:
monitor_metric: accuracy
task_level: node
data_seed: 0
split_type: k-fold #'k-fold' # either k-fold or test
split_type: random #'k-fold' # either k-fold or test
k: 10 # for k-Fold Cross-Validation

# Dataloader parameters
2 changes: 1 addition & 1 deletion configs/dataset/manual_dataset.yaml
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ parameters:
monitor_metric: accuracy
task_level: node
data_seed: 0
split_type: k-fold #'k-fold' # either k-fold or test
split_type: random #'k-fold' # either k-fold or test
k: 10 # for k-Fold Cross-Validation

# Dataloader parameters
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
_target_: topobenchmarkx.transforms.data_transform.DataTransform
transform_name: "NodeDegrees"
transform_type: "data manipulation"
selected_fields: ["edge_index", "incidence"] #"incidence"
selected_fields: ["edge_index"] # "incidence"

Original file line number Diff line number Diff line change
@@ -4,5 +4,5 @@ transform_type: "data manipulation"

degrees_fields: "node_degrees"
features_fields: "x"
max_degrees: ${dataset.parameters.max_node_degree}
max_degree: ${dataset.parameters.max_node_degree}

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
_target_: topobenchmarkx.transforms.data_transform.DataTransform
transform_type: 'lifting'
transform_name: "CellCyclesLifting"
k_value: 1
complex_dim: ${oc.select:dataset.parameters.max_dim_if_lifted,3}
max_cell_length: 6
max_cell_length: 10
preserve_edge_attr: ${oc.select:dataset.parameters.preserve_edge_attr_if_lifted,False}
2 changes: 1 addition & 1 deletion configs/dataset/us_country_demos.yaml
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ parameters:
num_features: 6
num_classes: 1
task: regression
task_variable: 'Election' # options: ['Election', 'MedianIncome', 'MigraRate', 'BirthRate', 'DeathRate', 'BachelorRate', 'UnemploymentRate']
task_variable: 'MedianIncome' # options: ['Election', 'MedianIncome', 'MigraRate', 'BirthRate', 'DeathRate', 'BachelorRate', 'UnemploymentRate']
force_reload: True
loss_type: mse
monitor_metric: mae
2 changes: 1 addition & 1 deletion configs/logger/wandb.yaml
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@ wandb:
offline: False
id: null # pass correct id to resume experiment!
anonymous: null # enable anonymous logging
project: "topox_10fold_sweep"
project: "None"
log_model: False # upload lightning ckpts
prefix: "" # a string to put at the beginning of metric keys
# entity: "" # set to name of your wandb team
Empty file removed configs/loss/default.yaml
Empty file.
31 changes: 19 additions & 12 deletions configs/model/cell/can.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: can
model_domain: cell

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
out_channels: 128
proj_dropout: 0.0
selected_dimensions:
- 0
- 1
@@ -17,30 +22,32 @@ backbone:
heads: 1 # For now we stuck to out_channels//heads, keep heads = 1
concat: True
skip_connection: True
n_layers: 1
n_layers: 4
att_lift: False

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.CANWrapper
_target_: topobenchmarkx.models.wrappers.CANWrapper
_partial_: true
wrapper_name: CANWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
in_channels: ${parameter_multiplication:${model.backbone.out_channels},${model.backbone.heads}}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
pooling_type: sum
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

28 changes: 17 additions & 11 deletions configs/model/cell/cwn_dcm.yaml → configs/model/cell/cccn.yaml
Original file line number Diff line number Diff line change
@@ -1,41 +1,47 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: cwn_dcm
model_domain: cell

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0
proj_dropout: 0.
selected_dimensions:
- 0
- 1

backbone:
_target_: custom_models.cell.cwn_dcm.CWNDCM
_target_: custom_models.cell.cccn.CCCN
in_channels: ${model.feature_encoder.out_channels}
n_layers: 1
n_layers: 4
dropout: 0.0

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.CWNDCMWrapper
_target_: topobenchmarkx.models.wrappers.CCCNWrapper
_partial_: true
wrapper_name: CCCNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

23 changes: 15 additions & 8 deletions configs/model/cell/ccxn.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: ccxn
model_domain: cell

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0

backbone:
_target_: topomodelx.nn.cell.ccxn.CCXN
@@ -17,26 +22,28 @@ backbone_additional_params:
hidden_channels: ${model.feature_encoder.out_channels}

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.CCXNWrapper
_target_: topobenchmarkx.models.wrappers.CCXNWrapper
_partial_: true
wrapper_name: CCXNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

27 changes: 16 additions & 11 deletions configs/model/cell/cwn.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: cwn
model_domain: cell

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
out_channels: 64
proj_dropout: 0.0

backbone:
@@ -12,30 +16,31 @@ backbone:
in_channels_1: ${model.feature_encoder.out_channels}
in_channels_2: ${model.feature_encoder.out_channels}
hid_channels: ${model.feature_encoder.out_channels}
n_layers: 1
n_layers: 4

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.CWNWrapper
_target_: topobenchmarkx.models.wrappers.CWNWrapper
_partial_: true
wrapper_name: CWNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}


readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: NoReadOut # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

24 changes: 15 additions & 9 deletions configs/model/graph/gat.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: gat
model_domain: graph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}}
out_channels: 32
proj_dropout: 0.0

backbone:
_target_: torch_geometric.nn.models.GAT
@@ -17,27 +22,28 @@ backbone:
concat: true

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.GNNWrapper
_target_: topobenchmarkx.models.wrappers.GNNWrapper
_partial_: true
wrapper_name: GNNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum


loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

25 changes: 16 additions & 9 deletions configs/model/graph/gcn.yaml
Original file line number Diff line number Diff line change
@@ -1,39 +1,46 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: gcn
model_domain: graph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 64
proj_dropout: 0.0

backbone:
_target_: torch_geometric.nn.models.GCN
in_channels: ${model.feature_encoder.out_channels}
hidden_channels: ${model.feature_encoder.out_channels}
num_layers: 1
num_layers: 2
dropout: 0.0
act: relu

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.GNNWrapper
_target_: topobenchmarkx.models.wrappers.GNNWrapper
_partial_: true
wrapper_name: GNNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

24 changes: 15 additions & 9 deletions configs/model/graph/gin.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: gin
model_domain: graph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0

backbone:
_target_: torch_geometric.nn.models.GIN
@@ -14,27 +19,28 @@ backbone:
act: relu

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.GNNWrapper
_target_: topobenchmarkx.models.wrappers.GNNWrapper
_partial_: true
wrapper_name: GNNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum


loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

21 changes: 13 additions & 8 deletions configs/model/hypergraph/alldeepset.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: alldeepset
model_domain: hypergraph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0

backbone:
_target_: topomodelx.nn.hypergraph.allset.AllSet
@@ -24,26 +27,28 @@ backbone:
#num_features: ${model.backbone.hidden_channels}

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.HypergraphWrapper
_target_: topobenchmarkx.models.wrappers.HypergraphWrapper
_partial_: true
wrapper_name: HypergraphWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: None # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: NoReadOut # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: None
num_cell_dimensions: None

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

26 changes: 15 additions & 11 deletions configs/model/hypergraph/allsettransformer.yaml
Original file line number Diff line number Diff line change
@@ -1,44 +1,48 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: allsettransformer
model_domain: hypergraph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
out_channels: 128
proj_dropout: 0.0

backbone:
_target_: topomodelx.nn.hypergraph.allset_transformer.AllSetTransformer
in_channels: ${model.feature_encoder.out_channels}
hidden_channels: ${model.feature_encoder.out_channels}
n_layers: 1
n_layers: 4
heads: 4
dropout: 0.
mlp_num_layers: 1
mlp_dropout: 0.

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.HypergraphWrapper
_target_: topobenchmarkx.models.wrappers.HypergraphWrapper
_partial_: true
wrapper_name: HypergraphWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: None # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: NoReadOut # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: None
num_cell_dimensions: None

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum


loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

28 changes: 16 additions & 12 deletions configs/model/hypergraph/edgnn.yaml
Original file line number Diff line number Diff line change
@@ -1,45 +1,49 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: edgnn
model_domain: hypergraph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
out_channels: 128
proj_dropout: 0.0

backbone:
_target_: custom_models.hypergraph.edgnn.EDGNN
num_features: ${model.feature_encoder.out_channels} # ${dataset.parameters.num_features}
input_dropout: 0.2
dropout: 0.2
input_dropout: 0.
dropout: 0.
activation: relu
MLP_num_layers: 0
MLP_num_layers: 1
All_num_layers: 1
edconv_type: EquivSet
aggregate: 'add'

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.HypergraphWrapper
_target_: topobenchmarkx.models.wrappers.HypergraphWrapper
_partial_: true
wrapper_name: HypergraphWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: None # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: NoReadOut # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown, NoReadOut
hidden_dim: None
num_cell_dimensions: None

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

26 changes: 19 additions & 7 deletions configs/model/hypergraph/unignn.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: unignn2
model_domain: hypergraph

feature_encoder:
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0

backbone:
_target_: topomodelx.nn.hypergraph.unigcn.UniGCN
@@ -7,26 +17,28 @@ backbone:
n_layers: 1

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.HypergraphWrapper
_target_: topobenchmarkx.models.wrappers.HypergraphWrapper
_partial_: true
wrapper_name: HypergraphWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: None # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: NoReadOut # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: None
num_cell_dimensions: None

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

31 changes: 18 additions & 13 deletions configs/model/hypergraph/unignn2.yaml
Original file line number Diff line number Diff line change
@@ -1,43 +1,48 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: unignn2
model_domain: hypergraph

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
out_channels: 128
proj_dropout: 0.0

backbone:
_target_: topomodelx.nn.hypergraph.unigcnii.UniGCNII
in_channels: ${model.feature_encoder.out_channels} # ${dataset.parameters.num_features}
in_channels: ${model.feature_encoder.out_channels}
hidden_channels: ${model.feature_encoder.out_channels}
n_layers: 1
n_layers: 4
alpha: 0.5
beta: 0.5
input_drop: 0.2
layer_drop: 0.2
input_drop: 0.0
layer_drop: 0.0

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.HypergraphWrapper
_target_: topobenchmarkx.models.wrappers.HypergraphWrapper
_partial_: true
wrapper_name: HypergraphWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: None # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: NoReadOut # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: None
num_cell_dimensions: None

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

24 changes: 15 additions & 9 deletions configs/model/simplicial/san.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: san
model_domain: simplicial

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 64
proj_dropout: 0.0
selected_dimensions:
- 0
- 1
@@ -18,27 +23,28 @@ backbone:
epsilon_harmonic: 1e-1

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.SANWrapper
_target_: topobenchmarkx.models.wrappers.SANWrapper
_partial_: true
wrapper_name: SANWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum


loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

25 changes: 16 additions & 9 deletions configs/model/simplicial/sccn.yaml
Original file line number Diff line number Diff line change
@@ -1,38 +1,45 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: sccnn
model_domain: simplicial

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} # ${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0

backbone:
_target_: topomodelx.nn.simplicial.sccn.SCCN
channels: ${model.feature_encoder.out_channels}
max_rank: 1
max_rank: 2
n_layers: 1
update_func: "sigmoid"

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.SCCNNWrapper
_target_: topobenchmarkx.models.wrappers.SCCNWrapper
_partial_: true
wrapper_name: SCCNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.in_channels}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

23 changes: 15 additions & 8 deletions configs/model/simplicial/sccnn.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: sccnn
model_domain: simplicial

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0
selected_dimensions:
- 0
- 1
@@ -26,27 +31,29 @@ backbone:
n_layers: 1

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.SCCNNWrapper
_target_: topobenchmarkx.models.wrappers.SCCNNWrapper
_partial_: true
wrapper_name: SCCNNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum


loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

26 changes: 16 additions & 10 deletions configs/model/simplicial/sccnn_custom.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

model_name: sccnn_custom
model_domain: simplicial

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 64
out_channels: 32
proj_dropout: 0.0
selected_dimensions:
- 0
- 1
- 2


backbone:
_target_: custom_models.simplicial.sccnn.SCCNNCusctom
in_channels_all:
@@ -27,26 +31,28 @@ backbone:
n_layers: 1

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.SCCNNWrapper
_target_: topobenchmarkx.models.wrappers.SCCNNWrapper
_partial_: true
wrapper_name: SCCNNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

23 changes: 15 additions & 8 deletions configs/model/simplicial/scn.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
_target_: topobenchmarkx.models.network_module.NetworkModule
_target_: topobenchmarkx.models.TopologicalNetworkModule

mdoel_name: scn
model_domain: simplicial

feature_encoder:
_target_: topobenchmarkx.models.encoders.default_encoders.BaseFeatureEncoder
_target_: topobenchmarkx.models.encoders.${model.feature_encoder.encoder_name}
encoder_name: AllCellFeatureEncoder
in_channels: ${infer_in_channels:${dataset}} #${dataset.parameters.num_features}
out_channels: 32
proj_dropout: 0.0
selected_dimensions:
- 0
- 1
@@ -17,26 +22,28 @@ backbone:
n_layers: 1

backbone_wrapper:
_target_: topobenchmarkx.models.wrappers.default_wrapper.SCNWrapper
_target_: topobenchmarkx.models.wrappers.SCNWrapper
_partial_: true
wrapper_name: SCNWrapper
out_channels: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

readout:
_target_: topobenchmarkx.models.readouts.readout.AbstractReadOut
readout_name: PropagateSignalDown # Use <None> in case readout is not needed
_target_: topobenchmarkx.models.readouts.${model.readout.readout_name}
readout_name: PropagateSignalDown # Use <NoReadOut> in case readout is not needed Options: PropagateSignalDown
hidden_dim: ${model.feature_encoder.out_channels}
num_cell_dimensions: ${infere_list_length:${model.feature_encoder.selected_dimensions}}

head_model:
_target_: topobenchmarkx.models.head_model.models.DefaultHead
task_level: ${dataset.parameters.task_level}
_target_: topobenchmarkx.models.head_models.${model.head_model.head_model_name}
head_model_name: ZeroCellModel
in_channels: ${model.feature_encoder.out_channels}
out_channels: ${dataset.parameters.num_classes}
task_level: ${dataset.parameters.task_level}
pooling_type: sum

loss:
_target_: topobenchmarkx.models.losses.loss.DefaultLoss
_target_: topobenchmarkx.models.losses.DefaultLoss
task: ${dataset.parameters.task}
loss_type: ${dataset.parameters.loss_type}

4 changes: 2 additions & 2 deletions configs/train.yaml
Original file line number Diff line number Diff line change
@@ -4,8 +4,8 @@
# order of defaults determines the order in which configs override each other
defaults:
- _self_
- dataset: PROTEINS_TU #us_country_demos
- model: hypergraph/allsettransformer #hypergraph/unignn2 #allsettransformer
- dataset: MUTAG # us_country_demos
- model: cell/can #hypergraph/unignn2 #allsettransformer
- evaluator: default
- callbacks: default
- logger: wandb # set logger here or use command line (e.g. `python train.py logger=tensorboard`)
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ def forward(self, xe, Lu, Ld):
return z_h + z_s + z_i


class CWNDCM(nn.Module):
class CCCN(nn.Module):
def __init__(self, in_channels, n_layers=2, dropout=0.0, last_act=False):
super().__init__()
self.d = dropout
39 changes: 21 additions & 18 deletions custom_models/cell/cin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
"""CWN class."""

import torch
import torch.nn.functional as F
from topomodelx.nn.cell.cwn_layer import CWNLayer
import torch.nn as nn
import torch.nn.functional as F
from topomodelx.base.conv import Conv
from torch_geometric.nn.models import MLP

@@ -65,7 +64,8 @@ def forward(
neighborhood_2_to_1,
neighborhood_0_to_1,
):
"""Forward computation through projection, convolutions, linear layers and average pooling.
"""Forward computation through projection, convolutions, linear layers
and average pooling.
Parameters
----------
@@ -192,15 +192,21 @@ def __init__(
self.conv_1_to_1 = (
conv_1_to_1
if conv_1_to_1 is not None
else _CWNDefaultFirstConv(in_channels_1, in_channels_2, out_channels)
else _CWNDefaultFirstConv(
in_channels_1, in_channels_2, out_channels
)
)
self.conv_0_to_1 = (
conv_0_to_1
if conv_0_to_1 is not None
else _CWNDefaultSecondConv(in_channels_0, in_channels_1, out_channels)
else _CWNDefaultSecondConv(
in_channels_0, in_channels_1, out_channels
)
)
self.aggregate_fn = (
aggregate_fn if aggregate_fn is not None else _CWNDefaultAggregate()
aggregate_fn
if aggregate_fn is not None
else _CWNDefaultAggregate()
)
self.update_fn = (
update_fn
@@ -325,11 +331,10 @@ def forward(


class _CWNDefaultFirstConv(nn.Module):
r"""
Default implementation of the first convolutional step in CWNLayer.
r"""Default implementation of the first convolutional step in CWNLayer.
The self.forward method of this module must be treated as
a protocol for the first convolutional step in CWN layer.
The self.forward method of this module must be treated as a protocol for
the first convolutional step in CWN layer.
"""

def __init__(
@@ -383,11 +388,10 @@ def forward(self, x_1, x_2, neighborhood_1_to_1, neighborhood_2_to_1):


class _CWNDefaultSecondConv(nn.Module):
r"""
Default implementation of the second convolutional step in CWNLayer.
r"""Default implementation of the second convolutional step in CWNLayer.
The self.forward method of this module must be treated as
a protocol for the second convolutional step in CWN layer.
The self.forward method of this module must be treated as a protocol for
the second convolutional step in CWN layer.
"""

def __init__(self, in_channels_0, out_channels) -> None:
@@ -417,11 +421,10 @@ def forward(self, x_0, neighborhood_0_to_1):


class _CWNDefaultAggregate(nn.Module):
r"""
Default implementation of an aggregation step in CWNLayer.
r"""Default implementation of an aggregation step in CWNLayer.
The self.forward method of this module must be treated as
a protocol for the aggregation step in CWN layer.
The self.forward method of this module must be treated as a protocol for
the aggregation step in CWN layer.
"""

def __init__(self) -> None:
39 changes: 28 additions & 11 deletions custom_models/hypergraph/edgnn.py
Original file line number Diff line number Diff line change
@@ -46,7 +46,9 @@ def __init__(
self.lins.append(nn.Linear(in_channels, hidden_channels))
self.normalizations.append(nn.BatchNorm1d(hidden_channels))
for _ in range(num_layers - 2):
self.lins.append(nn.Linear(hidden_channels, hidden_channels))
self.lins.append(
nn.Linear(hidden_channels, hidden_channels)
)
self.normalizations.append(nn.BatchNorm1d(hidden_channels))
self.lins.append(nn.Linear(hidden_channels, out_channels))
elif Normalization == "ln":
@@ -65,7 +67,9 @@ def __init__(
self.lins.append(nn.Linear(in_channels, hidden_channels))
self.normalizations.append(nn.LayerNorm(hidden_channels))
for _ in range(num_layers - 2):
self.lins.append(nn.Linear(hidden_channels, hidden_channels))
self.lins.append(
nn.Linear(hidden_channels, hidden_channels)
)
self.normalizations.append(nn.LayerNorm(hidden_channels))
self.lins.append(nn.Linear(hidden_channels, out_channels))
else:
@@ -78,7 +82,9 @@ def __init__(
self.lins.append(nn.Linear(in_channels, hidden_channels))
self.normalizations.append(nn.Identity())
for _ in range(num_layers - 2):
self.lins.append(nn.Linear(hidden_channels, hidden_channels))
self.lins.append(
nn.Linear(hidden_channels, hidden_channels)
)
self.normalizations.append(nn.Identity())
self.lins.append(nn.Linear(hidden_channels, out_channels))

@@ -88,7 +94,7 @@ def reset_parameters(self):
for lin in self.lins:
lin.reset_parameters()
for normalization in self.normalizations:
if not (normalization.__class__.__name__ == "Identity"):
if normalization.__class__.__name__ != "Identity":
normalization.reset_parameters()

def forward(self, x):
@@ -245,7 +251,9 @@ def forward(self, X, vertex, edges, X0):


class JumpLinkConv(nn.Module):
def __init__(self, in_features, out_features, mlp_layers=2, aggr="add", alpha=0.5):
def __init__(
self, in_features, out_features, mlp_layers=2, aggr="add", alpha=0.5
):
super().__init__()
self.W = MLP(
in_features,
@@ -339,7 +347,10 @@ def forward(self, X, vertex, edges, X0):
) # [E, C], reduce is 'mean' here as default

deg_e = torch_scatter.scatter(
torch.ones(Xve.shape[0], device=Xve.device), edges, dim=-2, reduce="sum"
torch.ones(Xve.shape[0], device=Xve.device),
edges,
dim=-2,
reduce="sum",
)
Xe = torch.cat([Xe, torch.log(deg_e)[..., None]], -1)

@@ -350,7 +361,10 @@ def forward(self, X, vertex, edges, X0):
) # [N, C]

deg_v = torch_scatter.scatter(
torch.ones(Xev.shape[0], device=Xev.device), vertex, dim=-2, reduce="sum"
torch.ones(Xev.shape[0], device=Xev.device),
vertex,
dim=-2,
reduce="sum",
)
X = self.W3(torch.cat([Xv, X, X0, torch.log(deg_v)[..., None]], -1))

@@ -374,7 +388,7 @@ def __init__(
normalization="None",
AllSet_input_norm=False,
):
"""EDGNN
"""EDGNN.
Args:
num_features (int): number of input features
@@ -390,7 +404,6 @@ def __init__(
aggregate (str, optional): aggregation method. Defaults to 'add'.
normalization (str, optional): normalization method. Defaults to 'None'.
AllSet_input_norm (bool, optional): whether to normalize input features. Defaults to False.
"""
super().__init__()
act = {"Id": nn.Identity(), "relu": nn.ReLU(), "prelu": nn.PReLU()}
@@ -402,8 +415,12 @@ def __init__(
self.hidden_channels = self.in_channels

self.mlp1_layers = MLP_num_layers
self.mlp2_layers = MLP_num_layers if MLP2_num_layers < 0 else MLP2_num_layers
self.mlp3_layers = MLP_num_layers if MLP3_num_layers < 0 else MLP3_num_layers
self.mlp2_layers = (
MLP_num_layers if MLP2_num_layers < 0 else MLP2_num_layers
)
self.mlp3_layers = (
MLP_num_layers if MLP3_num_layers < 0 else MLP3_num_layers
)
self.nlayer = All_num_layers
self.edconv_type = edconv_type

76 changes: 51 additions & 25 deletions custom_models/simplicial/sccnn.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
"""SCCNN implementation for complex classification."""

import torch
from topomodelx.nn.simplicial.sccnn_layer import SCCNNLayer
from torch.nn.parameter import Parameter



class SCCNNCusctom(torch.nn.Module):
"""SCCNN implementation for complex classification.
@@ -28,7 +26,6 @@ class SCCNNCusctom(torch.nn.Module):
Update function for the simplicial complex convolution.
n_layers: int
Number of layers.
"""

def __init__(
@@ -44,9 +41,15 @@ def __init__(
super().__init__()
# first layer
# we use an MLP to map the features on simplices of different dimensions to the same dimension
self.in_linear_0 = torch.nn.Linear(in_channels_all[0], hidden_channels_all[0])
self.in_linear_1 = torch.nn.Linear(in_channels_all[1], hidden_channels_all[1])
self.in_linear_2 = torch.nn.Linear(in_channels_all[2], hidden_channels_all[2])
self.in_linear_0 = torch.nn.Linear(
in_channels_all[0], hidden_channels_all[0]
)
self.in_linear_1 = torch.nn.Linear(
in_channels_all[1], hidden_channels_all[1]
)
self.in_linear_2 = torch.nn.Linear(
in_channels_all[2], hidden_channels_all[2]
)

self.layers = torch.nn.ModuleList(
SCCNNLayer(
@@ -100,6 +103,7 @@ def forward(self, x_all, laplacian_all, incidence_all):
# Layer
"""Simplicial Complex Convolutional Neural Network Layer."""


class SCCNNLayer(torch.nn.Module):
r"""Layer of a Simplicial Complex Convolutional Neural Network.
@@ -215,7 +219,9 @@ def __init__(

self.weight_0 = Parameter(
torch.Tensor(
self.in_channels_0, self.out_channels_0, 1 + conv_order + 1 + conv_order
self.in_channels_0,
self.out_channels_0,
1 + conv_order + 1 + conv_order,
)
)

@@ -326,7 +332,9 @@ def chebyshev_conv(self, conv_operator, conv_order, x):
Output tensor. x[:, :, k] = (conv_operator@....@conv_operator) @ x.
"""
num_simplices, num_channels = x.shape
X = torch.empty(size=(num_simplices, num_channels, conv_order)).to(x.device)
X = torch.empty(size=(num_simplices, num_channels, conv_order)).to(
x.device
)

if self.aggr_norm:
X[:, :, 0] = torch.mm(conv_operator, x)
@@ -388,7 +396,9 @@ def forward(self, x_all, laplacian_all, incidence_all):
x_0, x_1, x_2 = x_all

if self.sc_order == 2:
laplacian_0, laplacian_down_1, laplacian_up_1, laplacian_2 = laplacian_all
laplacian_0, laplacian_down_1, laplacian_up_1, laplacian_2 = (
laplacian_all
)
elif self.sc_order > 2:
(
laplacian_0,
@@ -407,7 +417,6 @@ def forward(self, x_all, laplacian_all, incidence_all):
# torch.eye(num_edges).to(x_0.device),
# torch.eye(num_triangles).to(x_0.device),
# )

"""
Convolution in the node space
"""
@@ -429,7 +438,9 @@ def forward(self, x_all, laplacian_all, incidence_all):
x_1_to_0_laplacian = self.chebyshev_conv(
laplacian_0, self.conv_order, x_1_to_0_upper
)
x_1_to_0 = torch.cat([x_1_to_0_upper.unsqueeze(2), x_1_to_0_laplacian], dim=2)
x_1_to_0 = torch.cat(
[x_1_to_0_upper.unsqueeze(2), x_1_to_0_laplacian], dim=2
)
# -------------------

x_0_all = torch.cat((x_0_to_0, x_1_to_0), 2)
@@ -460,13 +471,19 @@ def forward(self, x_all, laplacian_all, incidence_all):
x_0_1_lower = torch.mm(b1.T, x_0)

# Calculate lowwer chebyshev_conv
x_0_1_down = self.chebyshev_conv(laplacian_down_1, self.conv_order, x_0_1_lower)
x_0_1_down = self.chebyshev_conv(
laplacian_down_1, self.conv_order, x_0_1_lower
)

# Calculate upper chebyshev_conv (Note: in case of signed incidence should be always zero)
x_0_1_up = self.chebyshev_conv(laplacian_up_1, self.conv_order, x_0_1_lower)
x_0_1_up = self.chebyshev_conv(
laplacian_up_1, self.conv_order, x_0_1_lower
)

# Concatenate output of filters
x_0_to_1 = torch.cat([x_0_1_lower.unsqueeze(2), x_0_1_down, x_0_1_up], dim=2)
x_0_to_1 = torch.cat(
[x_0_1_lower.unsqueeze(2), x_0_1_down, x_0_1_up], dim=2
)
# -------------------

# x_2_to_1 = torch.mm(b2, x_2)
@@ -477,20 +494,23 @@ def forward(self, x_all, laplacian_all, incidence_all):
x_2_1_upper = torch.mm(b2, x_2)

# Calculate lowwer chebyshev_conv (Note: In case of signed incidence should be always zero)
x_2_1_down = self.chebyshev_conv(laplacian_down_1, self.conv_order, x_2_1_upper)
x_2_1_down = self.chebyshev_conv(
laplacian_down_1, self.conv_order, x_2_1_upper
)

# Calculate upper chebyshev_conv
x_2_1_up = self.chebyshev_conv(laplacian_up_1, self.conv_order, x_2_1_upper)
x_2_1_up = self.chebyshev_conv(
laplacian_up_1, self.conv_order, x_2_1_upper
)

x_2_to_1 = torch.cat([x_2_1_upper.unsqueeze(2), x_2_1_down, x_2_1_up], dim=2)
x_2_to_1 = torch.cat(
[x_2_1_upper.unsqueeze(2), x_2_1_down, x_2_1_up], dim=2
)

# -------------------
x_1_all = torch.cat((x_0_to_1, x_1_to_1, x_2_to_1), 2)

"""
convolution in the face (triangle) space, depending on the SC order,
the exact form maybe a little different
"""
"""Convolution in the face (triangle) space, depending on the SC order,
the exact form maybe a little different."""
# -------------------Logic to obtain update for 2-cells --------
# x_identity_2 = torch.unsqueeze(identity_2 @ x_2, 2)

@@ -516,10 +536,16 @@ def forward(self, x_all, laplacian_all, incidence_all):
# x_1_to_2 = torch.cat((x_1_to_2_identity, x_1_to_2), 2)

x_1_2_lower = torch.mm(b2.T, x_1)
x_1_2_down = self.chebyshev_conv(laplacian_down_2, self.conv_order, x_1_2_lower)
x_1_2_down = self.chebyshev_conv(laplacian_up_2, self.conv_order, x_1_2_lower)
x_1_2_down = self.chebyshev_conv(
laplacian_down_2, self.conv_order, x_1_2_lower
)
x_1_2_down = self.chebyshev_conv(
laplacian_up_2, self.conv_order, x_1_2_lower
)

x_1_to_2 = torch.cat([x_1_2_lower.unsqueeze(2), x_1_2_down, x_1_2_down], dim=2)
x_1_to_2 = torch.cat(
[x_1_2_lower.unsqueeze(2), x_1_2_down, x_1_2_down], dim=2
)

# That is my code, but to execute this part we need to have simplices order of k+1 in this case order of 3
# x_3_2_upper = x_1_to_2 = torch.mm(b2, x_3)
34 changes: 0 additions & 34 deletions env.bash

This file was deleted.

20 changes: 20 additions & 0 deletions env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash -l

pip install --upgrade pip
pip install -e '.[all]'

pip install --no-dependencies git+https://github.com/pyt-team/TopoNetX.git
pip install --no-dependencies git+https://github.com/pyt-team/TopoModelX.git
pip install --no-dependencies git+https://github.com/pyt-team/TopoEmbedX.git

# Note that not all combinations of torch and CUDA are available
# See https://github.com/pyg-team/pyg-lib to check the configuration that works for you
TORCH="2.3.0" # available options: 1.12.0, 1.13.0, 2.0.0, 2.1.0, 2.2.0, or 2.3.0
CUDA="cu121" # if available, select the CUDA version suitable for your system
# available options: cpu, cu102, cu113, cu116, cu117, cu118, or cu121
pip install torch==${TORCH} --extra-index-url https://download.pytorch.org/whl/${CUDA}
pip install lightning torch_geometric==2.4.0
pip install pyg-lib torch-scatter torch-sparse torch-cluster -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html
pytest

pre-commit install
10 changes: 10 additions & 0 deletions format_and_lint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh

# Run ruff to check for issues and fix them
ruff check . --fix

# Run docformatter to reformat docstrings and comments
docformatter --in-place --recursive --wrap-summaries 79 --wrap-descriptions 79 .

# Run black to format the code
black .
147 changes: 147 additions & 0 deletions hp_scripts/main_exp/cellular/CAN.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=cell/can \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2,3,4 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=cell/can \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun
done

# # ----Graph regression dataset----
# # Train on ZINC dataset
# python train.py \
# dataset=ZINC \
# seed=42,3,5,23,150 \
# model=cell/can \
# model.optimizer.lr=0.01,0.001 \
# model.optimizer.weight_decay=0 \
# model.feature_encoder.out_channels=32,64,128 \
# model.backbone.n_layers=2,4 \
# model.feature_encoder.proj_dropout=0.25,0.5 \
# dataset.parameters.batch_size=128,256 \
# dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
# dataset.parameters.data_seed=0 \
# dataset.transforms.graph2cell_lifting.max_cell_length=10 \
# model.readout.readout_name="NoReadOut,PropagateSignalDown" \
# logger.wandb.project=TopoBenchmarkX_Cellular \
# trainer.max_epochs=500 \
# trainer.min_epochs=50 \
# callbacks.early_stopping.min_delta=0.005 \
# trainer.check_val_every_n_epoch=5 \
# callbacks.early_stopping.patience=10 \
# tags="[MainExperiment]" \
# --multirun

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=cell/can \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=32,64 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Cellular \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/can \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

# ----Heterophilic datasets----

datasets=( roman_empire minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/can \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=1 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done
147 changes: 147 additions & 0 deletions hp_scripts/main_exp/cellular/CCCN.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=cell/cccn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2,3,4 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=cell/cccn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun
done

# # ----Graph regression dataset----
# # Train on ZINC dataset
# python train.py \
# dataset=ZINC \
# seed=42,3,5,23,150 \
# model=cell/cccn \
# model.optimizer.lr=0.01,0.001 \
# model.optimizer.weight_decay=0 \
# model.feature_encoder.out_channels=32,64,128 \
# model.backbone.n_layers=2,4 \
# model.feature_encoder.proj_dropout=0.25,0.5 \
# dataset.parameters.batch_size=128,256 \
# dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
# dataset.parameters.data_seed=0 \
# dataset.transforms.graph2cell_lifting.max_cell_length=10 \
# model.readout.readout_name="NoReadOut,PropagateSignalDown" \
# logger.wandb.project=TopoBenchmarkX_Cellular \
# trainer.max_epochs=500 \
# trainer.min_epochs=50 \
# callbacks.early_stopping.min_delta=0.005 \
# trainer.check_val_every_n_epoch=5 \
# callbacks.early_stopping.patience=10 \
# tags="[MainExperiment]" \
# --multirun

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=cell/cccn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=32,64 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Cellular \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/cccn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

# ----Heterophilic datasets----

datasets=( roman_empire minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/cccn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=1 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done
147 changes: 147 additions & 0 deletions hp_scripts/main_exp/cellular/CCXN.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=cell/ccxn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2,3,4 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=cell/ccxn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun
done

# # ----Graph regression dataset----
# # Train on ZINC dataset
# python train.py \
# dataset=ZINC \
# seed=42,3,5,23,150 \
# model=cell/ccxn \
# model.optimizer.lr=0.01,0.001 \
# model.optimizer.weight_decay=0 \
# model.feature_encoder.out_channels=32,64,128 \
# model.backbone.n_layers=2,4 \
# model.feature_encoder.proj_dropout=0.25,0.5 \
# dataset.parameters.batch_size=128,256 \
# dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
# dataset.parameters.data_seed=0 \
# dataset.transforms.graph2cell_lifting.max_cell_length=10 \
# model.readout.readout_name="NoReadOut,PropagateSignalDown" \
# logger.wandb.project=TopoBenchmarkX_Cellular \
# trainer.max_epochs=500 \
# trainer.min_epochs=50 \
# callbacks.early_stopping.min_delta=0.005 \
# trainer.check_val_every_n_epoch=5 \
# callbacks.early_stopping.patience=10 \
# tags="[MainExperiment]" \
# --multirun

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=cell/ccxn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=32,64 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Cellular \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/ccxn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

# ----Heterophilic datasets----

datasets=( roman_empire minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/ccxn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=1 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done
147 changes: 147 additions & 0 deletions hp_scripts/main_exp/cellular/CWN.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=cell/cwn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2,3,4 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=cell/cwn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers=1,2 \
model.optimizer.lr="0.01,0.001" \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Cellular \
tags="[MainExperiment]" \
--multirun
done

# # ----Graph regression dataset----
# # Train on ZINC dataset
# python train.py \
# dataset=ZINC \
# seed=42,3,5,23,150 \
# model=cell/cwn \
# model.optimizer.lr=0.01,0.001 \
# model.optimizer.weight_decay=0 \
# model.feature_encoder.out_channels=32,64,128 \
# model.backbone.n_layers=2,4 \
# model.feature_encoder.proj_dropout=0.25,0.5 \
# dataset.parameters.batch_size=128,256 \
# dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
# dataset.parameters.data_seed=0 \
# dataset.transforms.graph2cell_lifting.max_cell_length=10 \
# model.readout.readout_name="NoReadOut,PropagateSignalDown" \
# logger.wandb.project=TopoBenchmarkX_Cellular \
# trainer.max_epochs=500 \
# trainer.min_epochs=50 \
# callbacks.early_stopping.min_delta=0.005 \
# trainer.check_val_every_n_epoch=5 \
# callbacks.early_stopping.patience=10 \
# tags="[MainExperiment]" \
# --multirun

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=cell/cwn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=32,64 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Cellular \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/cwn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

# ----Heterophilic datasets----

datasets=( roman_empire minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=cell/cwn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.batch_size=1 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done
103 changes: 103 additions & 0 deletions hp_scripts/main_exp/cellular/left_out.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# ----Graph regression dataset----
# Train on ZINC dataset

# CWN
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=cell/cwn \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun

# CCXN
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=cell/ccxn \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun

# CCCN
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=cell/cccn \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun


# CAN

python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=cell/can \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
dataset.transforms.graph2cell_lifting.max_cell_length=10 \
model.readout.readout_name="NoReadOut,PropagateSignalDown" \
logger.wandb.project=TopoBenchmarkX_Cellular \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun


# REDDIT BINARY for all
136 changes: 136 additions & 0 deletions hp_scripts/main_exp/graph/gat.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=graph/gat \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout="0,0.25,0.5" \
model.backbone.num_layers="1,2,3,4" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Graph \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=graph/gat \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout="0,0.25,0.5" \
model.backbone.num_layers="1,2" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Graph \
tags="[MainExperiment]" \
--multirun
done

# ----Graph regression dataset----
# Train on ZINC dataset
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=graph/gat \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun

# ----Heterophilic datasets----

datasets=( roman_empire amazon_ratings tolokers questions minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=graph/gat \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=graph/gat \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=32,64 \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Graph \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'REDDIT-BINARY' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=graph/gat \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

136 changes: 136 additions & 0 deletions hp_scripts/main_exp/graph/gcn.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=graph/gcn \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout="0,0.25,0.5" \
model.backbone.num_layers="1,2,3,4" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Graph \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=graph/gcn \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout="0,0.25,0.5" \
model.backbone.num_layers="1,2" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Graph \
tags="[MainExperiment]" \
--multirun
done

# ----Graph regression dataset----
# Train on ZINC dataset
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=graph/gcn \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun

# ----Heterophilic datasets----

datasets=( roman_empire amazon_ratings tolokers questions minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=graph/gcn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=1 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=graph/gcn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=32,64 \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Graph \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'REDDIT-BINARY' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=graph/gcn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

136 changes: 136 additions & 0 deletions hp_scripts/main_exp/graph/gin.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=graph/gin \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout="0,0.25,0.5" \
model.backbone.num_layers="1,2,3,4" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Graph \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=graph/gin \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout="0,0.25,0.5" \
model.backbone.num_layers="1,2" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Graph \
tags="[MainExperiment]" \
--multirun
done

# ----Graph regression dataset----
# Train on ZINC dataset
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=graph/gin \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun

# ----Heterophilic datasets----

datasets=( roman_empire amazon_ratings tolokers questions minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=graph/gin \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=graph/gin \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=32,64 \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Graph \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'REDDIT-BINARY' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=graph/gin \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Graph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

136 changes: 136 additions & 0 deletions hp_scripts/main_exp/hypergraph/allsettransformer.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=hypergraph/allsettransformer \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers="1,2,3,4" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=hypergraph/allsettransformer \
model.feature_encoder.out_channels="32,64,128" \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.n_layers="1,2" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
tags="[MainExperiment]" \
--multirun
done

# ----Graph regression dataset----
# Train on ZINC dataset
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=hypergraph/allsettransformer \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun


# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=hypergraph/allsettransformer \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=32,64 \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'REDDIT-BINARY' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=hypergraph/allsettransformer \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

# ----Heterophilic datasets----

datasets=( roman_empire amazon_ratings tolokers minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=hypergraph/allsettransformer \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.n_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done
135 changes: 135 additions & 0 deletions hp_scripts/main_exp/hypergraph/edgnn.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# Description: Main experiment script for GCN model.
# ----Node regression datasets: US County Demographics----
task_variables=( 'Election' 'MedianIncome' 'MigraRate' 'BirthRate' 'DeathRate' 'BachelorRate' 'UnemploymentRate' )

for task_variable in ${task_variables[*]}
do
python train.py \
dataset=us_country_demos \
dataset.parameters.data_seed=0,3,5,7,9 \
dataset.parameters.task_variable=$task_variable \
model=hypergraph/edgnn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.All_num_layers=1,2,3,4 \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=1000 \
trainer.min_epochs=500 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
tags="[MainExperiment]" \
--multirun

done

# ----Cocitation datasets----
datasets=( 'cocitation_cora' 'cocitation_citeseer' 'cocitation_pubmed' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
dataset.parameters.data_seed=0,3,5,7,9 \
model=hypergraph/edgnn \
model.feature_encoder.out_channels=32,64,128 \
model.feature_encoder.proj_dropout=0.25,0.5 \
model.backbone.All_num_layers="1,2" \
model.optimizer.lr="0.01,0.001" \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=25 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
tags="[MainExperiment]" \
--multirun
done

# ----Graph regression dataset----
# Train on ZINC dataset
python train.py \
dataset=ZINC \
seed=42,3,5,23,150 \
model=hypergraph/edgnn \
model.optimizer.lr=0.01,0.001 \
model.optimizer.weight_decay=0 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.All_num_layers=2,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.batch_size=128,256 \
dataset.transforms.one_hot_node_degree_features.degrees_fields=x \
dataset.parameters.data_seed=0 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
callbacks.early_stopping.min_delta=0.005 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
tags="[MainExperiment]" \
--multirun

# ----TU graph datasets----
# MUTAG have very few samples, so we use a smaller batch size
# Train on MUTAG dataset
python train.py \
dataset=MUTAG \
model=hypergraph/edgnn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.All_num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=32,64 \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
callbacks.early_stopping.patience=25 \
tags="[MainExperiment]" \
--multirun

# Train rest of the TU graph datasets
datasets=( 'PROTEINS_TU' 'NCI1' 'NCI109' 'REDDIT-BINARY' 'IMDB-BINARY' 'IMDB-MULTI' )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=hypergraph/edgnn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.All_num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
trainer.max_epochs=500 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=5 \
callbacks.early_stopping.patience=10 \
--multirun
done

# ----Heterophilic datasets----

datasets=( roman_empire amazon_ratings tolokers minesweeper )

for dataset in ${datasets[*]}
do
python train.py \
dataset=$dataset \
model=hypergraph/edgnn \
model.optimizer.lr=0.01,0.001 \
model.feature_encoder.out_channels=32,64,128 \
model.backbone.All_num_layers=1,2,3,4 \
model.feature_encoder.proj_dropout=0.25,0.5 \
dataset.parameters.data_seed=0,3,5 \
dataset.parameters.batch_size=128,256 \
logger.wandb.project=TopoBenchmarkX_Hypergraph \
trainer.max_epochs=1000 \
trainer.min_epochs=50 \
trainer.check_val_every_n_epoch=1 \
callbacks.early_stopping.patience=50 \
tags="[MainExperiment]" \
--multirun
done
Loading

0 comments on commit f29adb2

Please sign in to comment.