Missing Features in JraphX
This document tracks PyTorch Geometric features that are not yet implemented in JraphX. For what is implemented, see jraphx; for how it is tested, see Test Coverage.
High Priority (Core GNN functionality)
Convolution Layers
GCNConv, GATConv, GATv2Conv, SAGEConv, GINConv, GINEConv,
EdgeConv,
DynamicEdgeConv and TransformerConv are implemented, along with the
MessagePassing base class. Still missing:
AGNNConv - Attention-based Graph Neural Network
APPNP - Approximate Personalized Propagation of Neural Predictions
ARMAConv - ARMA filters on graphs
CGConv - Crystal Graph Convolutional Networks
ChebConv - Chebyshev spectral graph convolution
ClusterGCNConv - Cluster-GCN
DNAConv - Dynamic Network Architecture
FastRGCNConv - Fast Relational Graph Convolutional Networks
FeaStConv - Feature-Steered Convolution
FiLMConv - Feature-wise Linear Modulation
GCN2Conv - Simple and Deep Graph Convolutional Networks
GENConv - Generalized Graph Convolutional Networks
GeneralConv - General GNN layer
GPSConv - Graph Transformer with Positional and Structural Encoding
GravNetConv - GravNet layer for point clouds
HGTConv - Heterogeneous Graph Transformer
HypergraphConv - Hypergraph Convolution
LEConv - Local Extremum Graph Neural Networks
LGConv - Light Graph Convolution
MFConv - Molecular Fingerprint Convolution
NNConv - Continuous kernel-based convolution
PANConv - Path Augmented Graph Neural Networks
PDNConv - Pathfinder Discovery Networks
PNAConv - Principal Neighborhood Aggregation
PointConv - Point Convolution for 3D
PPFConv - Point Pair Feature Convolution
RGCNConv - Relational Graph Convolutional Networks
RGATConv - Relational Graph Attention Networks
ResGatedGraphConv - Residual Gated Graph ConvNets
SGConv - Simplifying Graph Convolutional Networks
SignedConv - Signed Graph Convolutional Networks
SplineConv - Spline-based convolution
SuperGATConv - SuperGAT
TAGConv - Topology Adaptive Graph Convolutional Networks
TWirls - Trainable Wishart Relational Networks
XConv - PointNet++ XConv layer
Aggregation Functions
JraphX exposes aggregation as scatter functions (scatter_add, scatter_mean,
scatter_max, scatter_min, scatter_std, scatter_logsumexp) and pooling
operations rather than as the composable Aggregation module hierarchy. The
closest equivalents that do exist are global_sort_pool for SortAggregation,
global_softmax_pool for SoftmaxAggregation and scatter_std for
VarAggregation. Missing as modules:
Aggregation Module - The base class and its composable interface
MultiAggregation - Multiple aggregation combination
AttentionalAggregation - Attention-based aggregation
DeepSetsAggregation - DeepSets aggregation
DegreeScalerAggregation - Degree-based scaling
EquilibriumAggregation - Equilibrium-based aggregation
GraphMultisetTransformer - Graph Multiset Transformer
LSTMAggregation - LSTM-based aggregation
MLPAggregation - MLP aggregation
PowerMeanAggregation - Power mean aggregation
Set2Set - Set2Set aggregation
Medium Priority (Advanced Features)
Pooling Layers
TopKPooling and SAGPooling are implemented, as are the global pooling
operations (global_add_pool, global_mean_pool, global_max_pool,
global_min_pool, global_sort_pool, global_softmax_pool). Still missing:
ASAPooling - Adaptive Structure Aware Pooling
EdgePooling - Edge-based pooling
GlobalAttention - Global attention pooling.
global_softmax_poolweights nodes by a softmax over their own features;GlobalAttentionlearns a separate gating network, so it is not a substitute.MemPooling - Memory-based pooling
PANPooling - Path Augmented Pooling
Pre-built Models
BasicGNN and its GCN, GAT, GraphSAGE and GIN specialisations are
implemented, as are MLP and JumpingKnowledge. Still missing:
AttentiveFP - Attentive Fingerprinting
DeepGCN - Deep Graph Convolutional Networks
DeepGraphInfomax - Deep Graph Infomax
DiffPool - Differentiable Pooling
GAE - Graph Autoencoders
VGAE - Variational Graph Autoencoders
GraphUNet - Graph U-Net
MetaPath2Vec - MetaPath2Vec for heterogeneous graphs
Node2Vec - Node2Vec embeddings
PNA - Principal Neighborhood Aggregation networks
SchNet - SchNet for molecular property prediction
TGN - Temporal Graph Networks
Normalization Layers
BatchNorm, LayerNorm (node and graph modes) and GraphNorm are
implemented. Still missing:
DiffGroupNorm - Differentiable Group Normalization
InstanceNorm - Instance Normalization
MessageNorm - Message Normalization
PairNorm - Pair Normalization
JAX/JraphX Specific Limitations
k-NN Graph Construction
torch-cluster integration - PyTorch Geometric’s DynamicEdgeConv uses torch_cluster.knn() for automatic k-nearest neighbor computation from node features. JraphX’s DynamicEdgeConv is a simplified version that requires pre-computed k-NN indices as input.
Dynamic graph construction - Full dynamic graph construction would require a JAX-native k-NN implementation, which is not currently available.
Lower Priority (Specialized Features)
Knowledge Graph Embeddings
ComplEx - Complex embeddings
DistMult - DistMult embeddings
HolE - Holographic embeddings
KGEModel - Base class for KG embeddings
PairRE - Paired relation embeddings
RotatE - Rotation-based embeddings
TransE - Translation embeddings
Dense Layers
DenseGCNConv - Dense GCN convolution
DenseGINConv - Dense GIN convolution
DenseGraphConv - Dense graph convolution
DenseSAGEConv - Dense SAGE convolution
LinearTransformation - Dense linear layers
Functional Operations
contains_self_loops - Predicate for the presence of self-loops
dropout - Graph-aware dropout
gumbel_softmax - Gumbel softmax for graphs
is_undirected - Predicate for edge-index symmetry
local_graph_clustering - Local clustering
pagerank - PageRank algorithm
subgraph - Subgraph sampling
Transforms (Not Core but Useful)
AddSelfLoops - Add self-loops transform
Compose - Transform composition
NormalizeFeatures - Feature normalization
RandomNodeSplit - Random node splitting
RemoveIsolatedNodes - Remove isolated nodes
ToDevice - Device placement transform
ToSparseTensor - Sparse tensor conversion
Data Loading & Sampling
DataLoader - Graph data loading
NeighborSampler - Neighborhood sampling
RandomWalkSampler - Random walk sampling
ShaDowKHopSampler - ShaDow k-hop sampling
GraphSAINTSampler - GraphSAINT sampling
NodeSAINTSampler - Node-based GraphSAINT sampling
examples/graph_saint_flickr.py shows GraphSAINT-style sampling driven from
outside the library, using torch_geometric datasets and grain.
Datasets (Not Applicable - JAX doesn’t need this)
❌ All dataset classes (TUDataset, Planetoid, etc.) - Not relevant for JAX-only library
Distributed Training (Future Consideration)
DistributedSampler - For future JAX distributed training
GraphSAINT - Distributed sampling strategies
Features Deliberately Omitted
PyTorch-Specific
❌ DataParallel - JAX uses different parallelization
❌ torch.compile integration - JAX uses jit instead
❌ SparseTensor support - JAX has different sparse support
❌ CUDA-specific operations - might be heavy lift
Framework-Specific
❌ Heterogeneous graphs - Complex feature, may not fit JAX patterns
❌ Explainability modules - Separate concern
❌ NLP modules - Out of scope
❌ Remote backend - PyG-specific
Implementation Status Legend
✅ Implemented - Available in JraphX
Planned - Should be implemented
❌ Omitted - Deliberately not implementing
Removed Documentation Files
The following PyTorch Geometric documentation files have been removed from JraphX as they are not applicable to a JAX-based GNN library:
Advanced Concepts (Removed)
cpu_affinity.rst - PyTorch-specific CPU affinity settings
graphgym.rst - GraphGym framework (PyTorch ecosystem)
hgam.rst - Heterogeneous Graph Attention Memory (not implemented)
remote.rst - Remote backend for PyTorch Geometric
sparse_tensor.rst - PyTorch sparse tensor integration
Module Documentation (Removed)
contrib.rst - Community contributions (PyTorch-specific)
datasets.rst - Dataset loading (JraphX uses external datasets)
distributed.rst - Distributed training (PyTorch-specific)
explain.rst - Model explainability (separate concern)
graphgym.rst - GraphGym configuration system
loader.rst - Data loading utilities (not needed for JAX)
metrics.rst - Evaluation metrics (use external libraries)
profile.rst - Performance profiling (JAX has its own tools)
sampler.rst - Graph sampling utilities (not implemented)
transforms.rst - Data transforms (JAX uses functional preprocessing)
Tutorial Documentation (Removed)
application.rst - Application-specific tutorials
compile.rst - torch.compile integration (JAX uses jit)
create_dataset.rst - Dataset creation (not JraphX’s scope)
dataset_splitting.rst - Dataset splitting utilities
dataset.rst - Dataset handling
distributed_pyg.rst - Distributed PyTorch Geometric
distributed.rst - Distributed training
explain.rst - Model explainability
graph_transformer.rst - Advanced transformer architectures (not implemented)
heterogeneous.rst - Heterogeneous graph processing (not implemented)
load_csv.rst - CSV loading utilities
multi_gpu_vanilla.rst - Multi-GPU training (PyTorch-specific)
multi_node_multi_gpu_vanilla.rst - Multi-node training (PyTorch-specific)
neighbor_loader.rst - Neighborhood sampling (not implemented)
point_cloud.rst - Point cloud processing (limited support)
shallow_node_embeddings.rst - Node embedding methods (not implemented)
Rationale for Removal
Framework Mismatch: PyTorch-specific features that don’t apply to JAX
Scope Limitation: JraphX focuses on core GNN layers, not entire ML pipelines
Unimplemented Features: Advanced features not yet available in JraphX
External Dependencies: Features that rely on PyTorch ecosystem
Removed Figure Files
The following figure files from docs/source/_figures/ have been removed as they were not referenced in the JraphX documentation:
architecture.pdf / architecture.svg - PyTorch Geometric architecture diagrams
dist_part.png / dist_proc.png / dist_sampling.png - Distributed training figures (PyTorch-specific)
graphgps_layer.png - GraphGPS layer architecture (not implemented)
graphgym_design_space.png / graphgym_evaluation.png / graphgym_results.png - GraphGym framework figures
hg_example.svg / hg_example.tex - Heterogeneous graph examples (not implemented)
intel_kumo.png - Intel optimization figures (not applicable)
meshcnn_edge_adjacency.svg - MeshCNN figures (not implemented)
point_cloud1.png - point_cloud4.png - Point cloud examples (limited support)
remote_1.png - remote_3.png - Remote backend figures (not applicable)
shallow_node_embeddings.png - Node embedding figures (not implemented)
to_hetero.svg / to_hetero.tex / to_hetero_with_bases.svg / to_hetero_with_bases.tex - Heterogeneous graph conversion (not implemented)
training_affinity.png - CPU affinity training (PyTorch-specific)
Kept Figure Files
Only the essential figures were retained:
graph.svg / graph.tex - Basic graph visualization used in introduction tutorial
build.sh - Figure generation script
Kept Documentation Files
The following files were retained and translated to JraphX:
Core tutorials:
create_gnn.rst,gnn_design.rst(JAX integration)Essential concepts:
batching.rst,jit.rst,compile.rstAPI reference:
nn.rst,data.rst,utils.rst,root.rstCheatsheets:
gnn_cheatsheet.rst,data_cheatsheet.rstGetting started:
introduction.rst,installation.rst
Notes
Priority is based on common usage patterns and core GNN functionality
JAX-specific optimizations should be added where applicable (jit, vmap, scan)
Some features may need significant adaptation for JAX/NNX paradigms
Documentation cleanup focused on maintaining only relevant, translated content