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.KGTripletLoaderreplaces PyG'storch.utils.data.DataLoader-based loader with a framework-agnostic batching iterator (numpy-backed), since a torch-specificDataLoaderdoesn't fit a multi-backend (TF/PyTorch/JAX) library.k3_node.layers.unpool.knn_interpolatereusesk3_node.layers.pool.knn(a self-contained numpy brute-force k-NN) rather than PyG'spyg-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.