Skip to content

k3-node Porting Checklist

Tracks parity between torch_geometric.nn and k3_node.layers / k3_node.models. Generated by diffing torch_geometric.nn.<submodule>.__all__ against the equivalent k3-node package. Update this file whenever new API is ported.

Legend: โœ… ported ยท ๐ŸŸก partially ported ยท โฌœ not ported

Summary

Submodule k3-node location Status
torch_geometric.nn.conv k3_node.layers.conv โœ… 65/65
torch_geometric.nn.pool k3_node.layers.pool โœ… 31/31
torch_geometric.nn.unpool k3_node.layers.unpool โœ… 1/1
torch_geometric.nn.kge k3_node.layers.kge โœ… 5/5
torch_geometric.nn.functional k3_node.layers.functional โœ… 2/2
torch_geometric.nn.norm k3_node.layers.norm โœ… 11/11
torch_geometric.nn.aggr k3_node.layers.aggr โœ… 26/26
torch_geometric.nn.dense k3_node.layers.dense โœ… 11/11
torch_geometric.nn.models k3_node.models โœ… 46/46
torch_geometric.data k3_node.data โœ… 19/19
torch_geometric.loader k3_node.loader โœ… 26/26
torch_geometric.transforms k3_node.transforms โœ… 62/62

conv, pool, unpool, kge, functional, norm, aggr, dense, models, data, loader, and transforms are at full parity with PyG's public API (see each package's __all__).

torch_geometric.nn.models (parity status)

PyG class Status k3-node location Notes
MLP โœ… k3_node.models.MLP
ARLinkPredictor โœ… k3_node.models.ARLinkPredictor Attract-Repel link predictor
InnerProductDecoder โœ… k3_node.models.InnerProductDecoder
GAE โœ… k3_node.models.GAE
VGAE โœ… k3_node.models.VGAE
ARGA โœ… k3_node.models.ARGA
ARGVA โœ… k3_node.models.ARGVA
DeepGraphInfomax โœ… k3_node.models.DeepGraphInfomax
DeepGCNLayer โœ… k3_node.models.DeepGCNLayer ckpt_grad accepted but a no-op (no uniform gradient-checkpoint API across Keras backends)
AttentiveFP โœ… k3_node.models.AttentiveFP Molecular graph attention model
GCN โœ… k3_node.models.GCN BasicGNN with GCNConv layers
GraphSAGE โœ… k3_node.models.GraphSAGE BasicGNN with SAGEConv layers
GIN โœ… k3_node.models.GIN BasicGNN with GINConv layers + MLP
GAT โœ… k3_node.models.GAT BasicGNN with GATConv/GATv2Conv layers
PNA โœ… k3_node.models.PNA BasicGNN with PNAConv layers
EdgeCNN โœ… k3_node.models.EdgeCNN BasicGNN with EdgeConv layers + MLP
JumpingKnowledge โœ… k3_node.models.JumpingKnowledge Supports cat, max, and lstm modes
HeteroJumpingKnowledge โœ… k3_node.models.HeteroJumpingKnowledge Heterogeneous graph jumping knowledge
MetaLayer โœ… k3_node.models.MetaLayer Edge, node, and global network modules
Node2Vec โœ… k3_node.models.Node2Vec Random-walk + skip-gram embedding without pyg-lib C++ dependency
SignedGCN โœ… k3_node.models.SignedGCN Signed graph convolutional network with balanced losses
RENet โœ… k3_node.models.RENet Temporal knowledge graph reasoning with GRU and mean aggregation
GraphUNet โœ… k3_node.models.GraphUNet U-Net-style pooling/unpooling GNN
SchNet โœ… k3_node.models.SchNet Molecular continuous-filter convs with GaussianSmearing & ShiftedSoftplus
DimeNet / DimeNetPlusPlus โœ… k3_node.models.DimeNet / DimeNetPlusPlus Directional message passing with BesselBasis, SphericalBasis, and triplets
GPSE / GPSENodeEncoder โœ… k3_node.models.GPSE / GPSENodeEncoder Graph Positional & Structural Encoder with multi-head predictions & node encoder
to_captum_model / to_captum_input / captum_output_to_dicts โœ… k3_node.models.captum PyTorch-exclusive interpretability stubs with documentation
MetaPath2Vec โœ… k3_node.models.MetaPath2Vec Heterogeneous network embedding with metapath random walks
TGNMemory โœ… k3_node.models.TGNMemory Temporal Graph Network memory model with TimeEncoder & aggregators
LabelPropagation โœ… k3_node.models.LabelPropagation Label propagation via symmetric normalized Laplacian
CorrectAndSmooth โœ… k3_node.models.CorrectAndSmooth Residual error correction + label smoothing
RECT_L โœ… k3_node.models.RECT_L Supervised class-reconstruction model
LINKX โœ… k3_node.models.LINKX Non-homophilous graph learner with SparseLinear
LightGCN โœ… k3_node.models.LightGCN Light graph convolution network for recommendation
MaskLabel โœ… k3_node.models.MaskLabel Label embedding and masking layer (add and concat)
GroupAddRev โœ… k3_node.models.GroupAddRev Reversible GNN block with inverse
GNNFF โœ… k3_node.models.GNNFF Graph Neural Network Force Field with NodeBlock, EdgeBlock, and GaussianFilter
PMLP โœ… k3_node.models.PMLP Propagational MLP with SimpleConv propagation at inference
NeuralFingerprint โœ… k3_node.models.NeuralFingerprint Molecular neural fingerprint with MFConv and add pool
ViSNet โœ… k3_node.models.ViSNet Equivariant vector-scalar interactive GNN with spherical harmonics & CosineCutoff
LPFormer โœ… k3_node.models.LPFormer Adaptive graph transformer for link prediction with PPR positional encodings
SGFormer โœ… k3_node.models.SGFormer All-pair linear attention + GNN graph transformer
Polynormer โœ… k3_node.models.Polynormer Full polynomial-expressive graph transformer (local + global)

torch_geometric.data (parity status)

PyG class / function Status k3-node location Notes
Data โœ… k3_node.data.Data Homogeneous graph container with multi-backend tensor support
HeteroData โœ… k3_node.data.HeteroData Heterogeneous graph container with multi-backend tensor support
Batch / HeteroBatch โœ… k3_node.data.Batch Disjoint graph batching & separation for Data & HeteroData
TemporalData โœ… k3_node.data.TemporalData Continuous-time temporal event stream container
HypergraphData โœ… k3_node.data.HypergraphData Hypergraph container with hyperedge indexing
Dataset โœ… k3_node.data.Dataset Base graph dataset abstraction
InMemoryDataset โœ… k3_node.data.InMemoryDataset In-memory graph dataset with serialization
OnDiskDataset โœ… k3_node.data.OnDiskDataset Out-of-core graph dataset with database backend
FeatureStore โœ… k3_node.data.FeatureStore Multi-backend feature store interface
GraphStore โœ… k3_node.data.GraphStore Graph edge store interface
TensorAttr โœ… k3_node.data.TensorAttr Feature store tensor metadata attribute
EdgeAttr / EdgeLayout โœ… k3_node.data.EdgeAttr Graph store edge layout and metadata
Database โœ… k3_node.data.Database Abstract key-value database interface
SQLiteDatabase โœ… k3_node.data.SQLiteDatabase SQLite3-backed persistent graph store
RocksDatabase โœ… k3_node.data.RocksDatabase RocksDB-backed database stub
makedirs โœ… k3_node.data.makedirs Recursive directory creation utility
download_url โœ… k3_node.data.download_url HTTP file downloader with progress
download_google_url โœ… k3_node.data.download_google_url Google Drive download helper
extract_tar / extract_zip / extract_bz2 / extract_gz โœ… k3_node.data.extract_* Archive extraction helpers

torch_geometric.loader (parity status)

PyG class Status k3-node location Notes
DataLoader โœ… k3_node.loader.DataLoader Multi-backend graph batch loader with follow_batch & exclude_keys
NodeLoader โœ… k3_node.loader.NodeLoader Mini-batch sampling from node information
LinkLoader โœ… k3_node.loader.LinkLoader Mini-batch sampling from link/edge information
NeighborLoader โœ… k3_node.loader.NeighborLoader Multi-hop neighbor sampling without external C++ binary dependency
LinkNeighborLoader โœ… k3_node.loader.LinkNeighborLoader Link-centric neighbor sampling with positive & negative link supervision
HGTLoader โœ… k3_node.loader.HGTLoader Heterogeneous Graph Transformer balanced neighbor sampling
ClusterData โœ… k3_node.loader.ClusterData Graph partitioner with METIS and pure Python/BFS fallback
ClusterLoader โœ… k3_node.loader.ClusterLoader Merges partitioned subgraphs into mini-batches
GraphSAINTSampler โœ… k3_node.loader.GraphSAINTSampler GraphSAINT random subgraph sampler base class
GraphSAINTNodeSampler โœ… k3_node.loader.GraphSAINTNodeSampler Node-based GraphSAINT sampler
GraphSAINTEdgeSampler โœ… k3_node.loader.GraphSAINTEdgeSampler Edge-probability GraphSAINT sampler
GraphSAINTRandomWalkSampler โœ… k3_node.loader.GraphSAINTRandomWalkSampler Random-walk-based GraphSAINT sampler
ShaDowKHopSampler โœ… k3_node.loader.ShaDowKHopSampler Decoupled shallow ego-network subgraph extractor
RandomNodeLoader โœ… k3_node.loader.RandomNodeLoader Random node partition loader for large graphs
ZipLoader โœ… k3_node.loader.ZipLoader Combines multiple loaders into synchronized tuples
DataListLoader โœ… k3_node.loader.DataListLoader Yields lists of Data objects without batch merging
DenseDataLoader โœ… k3_node.loader.DenseDataLoader Stacks graphs with dense adjacency matrices
TemporalDataLoader โœ… k3_node.loader.TemporalDataLoader Successive temporal event window mini-batch loader
NeighborSampler โœ… k3_node.loader.NeighborSampler Legacy layer-by-layer bipartite neighbor sampler
ImbalancedSampler โœ… k3_node.loader.ImbalancedSampler Class-frequency weighted random sampler
DynamicBatchSampler โœ… k3_node.loader.DynamicBatchSampler Dynamic node/edge budget mini-batch sampler
PrefetchLoader โœ… k3_node.loader.PrefetchLoader Asynchronous host-to-device memory prefetcher
CachedLoader โœ… k3_node.loader.CachedLoader In-memory mini-batch cache across epochs
AffinityMixin โœ… k3_node.loader.AffinityMixin CPU worker core affinitization context manager
MultithreadingMixin โœ… k3_node.loader.MultithreadingMixin Worker subprocess thread count configuration
LogMemoryMixin โœ… k3_node.loader.LogMemoryMixin Worker RSS memory consumption logger

torch_geometric.transforms (parity status)

Group PyG classes Status k3-node location Notes
General (15) BaseTransform, Compose, ComposeFilters, ToDevice, ToSparseTensor, Constant, NormalizeFeatures, SVDFeatureReduction, RemoveTrainingClasses, RandomNodeSplit, RandomLinkSplit, NodePropertySplit, IndexToMask, MaskToIndex, Pad โœ… 15/15 k3_node.transforms.general Multi-backend support (torch.Tensor, numpy arrays, Keras tensors)
Graph (26) ToUndirected, OneHotDegree, TargetIndegree, LocalDegreeProfile, AddSelfLoops, AddRemainingSelfLoops, RemoveSelfLoops, RemoveIsolatedNodes, RemoveDuplicatedEdges, KNNGraph, RadiusGraph, ToDense, TwoHop, LineGraph, LaplacianLambdaMax, GDC, SIGN, GCNNorm, AddMetaPaths, AddRandomMetaPaths, RootedEgoNets, RootedRWSubgraph, LargestConnectedComponents, VirtualNode, AddLaplacianEigenvectorPE, AddRandomWalkPE, AddGPSE, FeaturePropagation, HalfHop โœ… 26/26 k3_node.transforms.graph Self-contained graph transformations with sparse matrix computations
Vision / Spatial (21) Distance, Cartesian, LocalCartesian, Polar, Spherical, PointPairFeatures, Center, NormalizeRotation, NormalizeScale, RandomJitter, RandomFlip, LinearTransformation, RandomScale, RandomRotate, RandomShear, FaceToEdge, SamplePoints, FixedPoints, GenerateMeshNormals, Delaunay, ToSLIC, GridSampling, RandomTranslate โœ… 21/21 k3_node.transforms.spatial 3D mesh and point cloud geometric processing with Delaunay & grid clustering

Notes on non-goals / caveats

  • k3_node.layers.kge.KGTripletLoader replaces PyG's torch.utils.data.DataLoader-based loader with a framework-agnostic batching iterator (numpy-backed), since a torch-specific DataLoader doesn't fit a multi-backend (TF/PyTorch/JAX) library.
  • k3_node.layers.unpool.knn_interpolate reuses k3_node.layers.pool.knn (a self-contained numpy brute-force k-NN) rather than PyG's pyg-lib/ torch-cluster-backed extension.
  • Methods that are inherently framework-agnostic-unfriendly (e.g. PyTorch's torch.utils.checkpoint, TorchScript export, Captum integration) are ported as no-ops or omitted, with notes above.