SDE Solvers API Reference
This section provides comprehensive API reference for the Neural Fractional SDE Solvers.
Fractional SDE Solvers
Fractional Stochastic Differential Equation Solvers
This module provides comprehensive solvers for fractional SDEs including various numerical methods, adaptive step size control, and error estimation.
Performance Note: - Uses FFT-based convolution for O(N log N) history summation instead of O(N²) - Intelligent backend selection for optimal performance - Multi-backend support (PyTorch, JAX, NumPy/Numba)
- hpfracc.solvers.sde_solvers._get_gamma_function()[source]
Get gamma function through adapter system.
- hpfracc.solvers.sde_solvers._get_intelligent_selector()[source]
Get intelligent backend selector instance.
- hpfracc.solvers.sde_solvers._fft_convolution(coeffs, values, axis=0)[source]
Fast convolution using FFT for O(N log N) performance.
- class hpfracc.solvers.sde_solvers.SDESolution(t, y, fractional_order, method, drift_func, diffusion_func, metadata=None)[source]
Bases:
objectSolution object for SDE solvers.
- Parameters:
- fractional_order: float | FractionalOrder
- class hpfracc.solvers.sde_solvers.FractionalSDESolver(fractional_order, definition='caputo', adaptive=False, rtol=1e-05, atol=1e-08)[source]
Bases:
ABCBase class for fractional SDE solvers.
- A fractional SDE takes the form:
D^α X(t) = f(t, X(t)) dt + g(t, X(t)) dW(t)
- where:
α is the fractional order
f is the drift function
g is the diffusion function
W(t) is a Wiener process
- Parameters:
- __init__(fractional_order, definition='caputo', adaptive=False, rtol=1e-05, atol=1e-08)[source]
Initialize fractional SDE solver.
- Parameters:
fractional_order (float | FractionalOrder) – Fractional order (0 < α < 2)
definition (str) – Type of fractional derivative (“caputo” or “riemann_liouville”)
adaptive (bool) – Use adaptive step size
rtol (float) – Relative tolerance for adaptive stepping
atol (float) – Absolute tolerance for adaptive stepping
- abstract solve(drift, diffusion, x0, t_span, **kwargs)[source]
Solve fractional SDE.
- Parameters:
- Returns:
SDESolution object containing trajectory
- Return type:
- class hpfracc.solvers.sde_solvers.FastHistoryConvolution(alpha, num_steps, dim)[source]
Bases:
objectHelper class for efficient history convolution in fractional SDE solvers.
Currently uses optimized dot product (O(N^2)), but structured to support FFT-based block convolution (O(N log N)) in future updates.
- class hpfracc.solvers.sde_solvers.FractionalEulerMaruyama(*args, **kwargs)[source]
Bases:
FractionalSDESolverFractional Euler-Maruyama method for solving fractional SDEs.
This is a first-order strong convergence method.
- __init__(*args, **kwargs)[source]
Initialize fractional SDE solver.
- Parameters:
fractional_order – Fractional order (0 < α < 2)
definition – Type of fractional derivative (“caputo” or “riemann_liouville”)
adaptive – Use adaptive step size
rtol – Relative tolerance for adaptive stepping
atol – Absolute tolerance for adaptive stepping
- class hpfracc.solvers.sde_solvers.FractionalMilstein(*args, **kwargs)[source]
Bases:
FractionalSDESolverFractional Milstein method for solving fractional SDEs.
This is a second-order strong convergence method with improved accuracy.
- __init__(*args, **kwargs)[source]
Initialize fractional SDE solver.
- Parameters:
fractional_order – Fractional order (0 < α < 2)
definition – Type of fractional derivative (“caputo” or “riemann_liouville”)
adaptive – Use adaptive step size
rtol – Relative tolerance for adaptive stepping
atol – Absolute tolerance for adaptive stepping
- hpfracc.solvers.sde_solvers.solve_fractional_sde(drift, diffusion, x0, t_span, fractional_order=0.5, method='euler_maruyama', num_steps=100, seed=None, **kwargs)[source]
Solve a fractional SDE.
- Parameters:
drift (Callable) – Drift function f(t, x) -> R^d
diffusion (Callable) – Diffusion function g(t, x) -> R^(d x m)
x0 (ndarray) – Initial condition
fractional_order (float | FractionalOrder) – Fractional order (0 < α < 2)
method (str) – Solver method (“euler_maruyama”, “milstein”, “predictor_corrector”)
num_steps (int) – Number of time steps
seed (int | None) – Random seed for Wiener process
**kwargs – Additional solver parameters
- Returns:
SDESolution object
- Return type:
Example
>>> def drift(t, x): ... return -0.5 * x >>> def diffusion(t, x): ... return 0.2 * np.eye(1) >>> x0 = np.array([1.0]) >>> sol = solve_fractional_sde(drift, diffusion, x0, (0, 1), 0.5, num_steps=100) >>> print(sol.y[-1])
- hpfracc.solvers.sde_solvers.solve_fractional_sde_system(drift, diffusion, x0, t_span, fractional_order, method='euler_maruyama', noise_type='additive', num_steps=100, seed=None, **kwargs)[source]
Solve a system of coupled fractional SDEs.
- Parameters:
drift (Callable) – Drift function f(t, x) -> R^d
diffusion (Callable) – Diffusion function g(t, x) -> R^(d x m)
x0 (ndarray) – Initial condition
fractional_order (float | FractionalOrder | List[float]) – Fractional order(s) for system
method (str) – Solver method
noise_type (str) – Type of noise (“additive” or “multiplicative”)
num_steps (int) – Number of time steps
seed (int | None) – Random seed
**kwargs – Additional parameters
- Returns:
SDESolution object
- Return type:
Noise Models
Stochastic Noise Models for Fractional SDEs
This module provides various noise models including Brownian motion, fractional Brownian motion, Lévy processes, and coloured noise.
- class hpfracc.solvers.noise_models.NoiseModel[source]
Bases:
ABCBase class for stochastic noise models.
- class hpfracc.solvers.noise_models.BrownianMotion(scale=1.0)[source]
Bases:
NoiseModelStandard Brownian motion (Wiener process).
Generates independent Gaussian increments with variance dt.
- Parameters:
scale (float)
- __init__(scale=1.0)[source]
Initialize Brownian motion.
- Parameters:
scale (float) – Scaling factor for noise
- class hpfracc.solvers.noise_models.FractionalBrownianMotion(hurst=0.5, scale=1.0)[source]
Bases:
NoiseModelFractional Brownian motion (fBm).
A Gaussian process with long-range dependence characterized by the Hurst exponent H (0 < H < 1).
- class hpfracc.solvers.noise_models.LevyNoise(alpha=1.5, beta=0.0, scale=1.0, location=0.0)[source]
Bases:
NoiseModelLévy noise for jump diffusions.
Uses stable distributions to model heavy-tailed noise.
- class hpfracc.solvers.noise_models.ColouredNoise(correlation_time=1.0, amplitude=1.0, seed=None)[source]
Bases:
NoiseModelColoured noise (Ornstein-Uhlenbeck process).
Gaussian noise with exponential autocorrelation.
- class hpfracc.solvers.noise_models.NoiseConfig(noise_type='brownian', hurst=0.5, scale=1.0, alpha=1.5, beta=0.0, correlation_time=1.0, amplitude=1.0)[source]
Bases:
objectConfiguration for noise models.
- Parameters:
- hpfracc.solvers.noise_models.create_noise_model(config)[source]
Create a noise model from configuration.
- Parameters:
config (NoiseConfig) – Noise configuration
- Returns:
NoiseModel instance
- Return type:
Neural Fractional SDE
Neural Fractional Stochastic Differential Equations
This module provides neural network-based fractional SDEs with adjoint training methods for efficient gradient-based learning.
- class hpfracc.ml.neural_fsde.NeuralFSDEConfig(input_dim=2, hidden_dim=64, output_dim=2, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05, fractional_order=None, device=None, dtype=torch.float32, enable_performance_monitoring=False, memory_optimization=True, use_advanced_solvers=True, diffusion_dim=1, noise_type='additive', drift_net=None, diffusion_net=None, use_sde_adjoint=True, learn_alpha=False)[source]
Bases:
NeuralODEConfigConfiguration for neural fractional SDE models.
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
num_layers (int)
activation (str)
use_adjoint (bool)
solver (str)
rtol (float)
atol (float)
fractional_order (float | FractionalOrder | None)
device (torch.device | None)
dtype (torch.dtype)
enable_performance_monitoring (bool)
memory_optimization (bool)
use_advanced_solvers (bool)
diffusion_dim (int)
noise_type (str)
drift_net (torch.nn.Module | None)
diffusion_net (torch.nn.Module | None)
use_sde_adjoint (bool)
learn_alpha (bool)
- __init__(input_dim=2, hidden_dim=64, output_dim=2, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05, fractional_order=None, device=None, dtype=torch.float32, enable_performance_monitoring=False, memory_optimization=True, use_advanced_solvers=True, diffusion_dim=1, noise_type='additive', drift_net=None, diffusion_net=None, use_sde_adjoint=True, learn_alpha=False)
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
num_layers (int)
activation (str)
use_adjoint (bool)
solver (str)
rtol (float)
atol (float)
fractional_order (float | FractionalOrder | None)
device (torch.device | None)
dtype (torch.dtype)
enable_performance_monitoring (bool)
memory_optimization (bool)
use_advanced_solvers (bool)
diffusion_dim (int)
noise_type (str)
drift_net (torch.nn.Module | None)
diffusion_net (torch.nn.Module | None)
use_sde_adjoint (bool)
learn_alpha (bool)
- Return type:
None
- class hpfracc.ml.neural_fsde.NeuralFractionalSDE(*args, **kwargs)[source]
Bases:
BaseNeuralODENeural network-based fractional SDE with adjoint training.
Extends neural ODE framework to fractional stochastic differential equations for modeling stochastic dynamics with memory effects.
The model learns: - Drift function f(t, x): deterministic dynamics - Diffusion function g(t, x): stochastic noise magnitude - Fractional order: memory effects in dynamics
- Parameters:
config (NeuralFSDEConfig)
- __init__(config)[source]
Initialize neural fractional SDE.
- Parameters:
config (NeuralFSDEConfig) – Configuration for the neural fSDE
- drift_function(t, x)[source]
Alias for drift() for compatibility with tests.
- Parameters:
t (torch.Tensor)
x (torch.Tensor)
- Return type:
torch.Tensor
- diffusion_function(t, x)[source]
Alias for diffusion() for compatibility with tests.
- Parameters:
t (torch.Tensor)
x (torch.Tensor)
- Return type:
torch.Tensor
- drift(t, x)[source]
Compute drift function f(t, x).
- Parameters:
t (torch.Tensor) – Time tensor
x (torch.Tensor) – State tensor
- Returns:
Drift vector
- Return type:
torch.Tensor
- diffusion(t, x)[source]
Compute diffusion function g(t, x).
- Parameters:
t (torch.Tensor) – Time tensor
x (torch.Tensor) – State tensor
- Returns:
Diffusion matrix
- Return type:
torch.Tensor
- forward(x0, t, method='euler_maruyama', num_steps=100, seed=None)[source]
Forward pass through neural fractional SDE.
- _solve_fractional_sde_torch(x0, t_start, t_end, num_steps, seed=None)[source]
PyTorch-native fractional SDE solver (Euler-Maruyama).
- hpfracc.ml.neural_fsde.create_neural_fsde(input_dim=None, output_dim=None, hidden_dim=64, num_layers=3, fractional_order=0.5, diffusion_dim=1, noise_type='additive', learn_alpha=False, use_adjoint=True, drift_net=None, diffusion_net=None, config=None)[source]
Factory function to create a neural fractional SDE.
- Parameters:
input_dim (int | None) – Input dimension
output_dim (int | None) – Output dimension
hidden_dim (int) – Hidden layer dimension
num_layers (int) – Number of hidden layers
fractional_order (float) – Initial fractional order
diffusion_dim (int) – Dimension of noise
noise_type (str) – Type of noise (“additive” or “multiplicative”)
learn_alpha (bool) – Whether to learn fractional order
use_adjoint (bool) – Use adjoint method for backpropagation
drift_net (torch.nn.Module | None) – Custom drift network
diffusion_net (torch.nn.Module | None) – Custom diffusion network
config (NeuralFSDEConfig | None)
- Returns:
NeuralFractionalSDE instance
- Return type:
SDE Adjoint Methods
Advanced SDE Adjoint Optimization Utilities
Provides memory-efficient checkpointing, mixed precision training, and sparse gradient accumulation for neural fractional SDEs.
- class hpfracc.ml.sde_adjoint_utils.CheckpointConfig(checkpoint_frequency=10, max_checkpoints=100, checkpoint_strategy='uniform', enable_checkpointing=True)[source]
Bases:
objectConfiguration for gradient checkpointing.
- Parameters:
- class hpfracc.ml.sde_adjoint_utils.MixedPrecisionConfig(enable_amp=False, half_precision=False, dtype_fp16=torch.float16, dtype_fp32=torch.float32, loss_scaling=1.0)[source]
Bases:
objectConfiguration for mixed precision training.
- Parameters:
- class hpfracc.ml.sde_adjoint_utils.SDEStateCheckpoint(config)[source]
Bases:
objectCheckpoint manager for SDE trajectory states. Enables memory-efficient training by saving intermediate states.
- Parameters:
config (CheckpointConfig)
- __init__(config)[source]
- Parameters:
config (CheckpointConfig)
- class hpfracc.ml.sde_adjoint_utils.MixedPrecisionManager(config)[source]
Bases:
objectManager for mixed precision training in SDEs. Handles automatic mixed precision (AMP) and float16 operations.
- Parameters:
config (MixedPrecisionConfig)
- __init__(config)[source]
- Parameters:
config (MixedPrecisionConfig)
- scale_loss(loss)[source]
Scale loss for mixed precision training.
- Parameters:
loss (torch.Tensor)
- Return type:
torch.Tensor
- class hpfracc.ml.sde_adjoint_utils.SparseGradientAccumulator(sparsity_threshold=1e-06)[source]
Bases:
objectAccumulator for sparse gradients in high-dimensional SDE systems. Reduces memory usage by only storing non-zero gradients.
- Parameters:
sparsity_threshold (float)
- __init__(sparsity_threshold=1e-06)[source]
Initialize sparse gradient accumulator.
- Parameters:
sparsity_threshold (float) – Threshold below which gradients are considered zero
- accumulate(grad, param_name=None)[source]
Accumulate a gradient with sparsity.
- Parameters:
grad (torch.Tensor) – Gradient tensor
param_name (str | None) – Optional parameter name for debugging
- hpfracc.ml.sde_adjoint_utils.checkpoint_trajectory(func, *args, checkpoint_freq=10, **kwargs)[source]
Execute function with checkpointing to save memory.
Uses gradient checkpointing to trade compute for memory.
- class hpfracc.ml.sde_adjoint_utils.SDEAdjointOptimizer(model, optimizer, checkpoint_config=None, mixed_precision_config=None, enable_sparse_gradients=False)[source]
Bases:
objectOptimizer wrapper for SDE adjoint training with advanced optimizations.
Combines checkpointing, mixed precision, and sparse gradients.
- Parameters:
model (torch.nn.Module)
optimizer (torch.optim.Optimizer)
checkpoint_config (CheckpointConfig | None)
mixed_precision_config (MixedPrecisionConfig | None)
enable_sparse_gradients (bool)
- __init__(model, optimizer, checkpoint_config=None, mixed_precision_config=None, enable_sparse_gradients=False)[source]
- Parameters:
model (torch.nn.Module)
optimizer (torch.optim.Optimizer)
checkpoint_config (CheckpointConfig | None)
mixed_precision_config (MixedPrecisionConfig | None)
enable_sparse_gradients (bool)
- step(loss)[source]
Optimization step with advanced features.
- Parameters:
loss (torch.Tensor) – Loss tensor to optimize
Graph-SDE Coupling
Graph-SDE Coupling for Spatio-Temporal Dynamics
This module provides coupling layers that integrate spatial dynamics (via graph neural networks) with temporal dynamics (via fractional SDEs) for modeling spatio-temporal phenomena.
- class hpfracc.ml.graph_sde_coupling.CouplingType[source]
Bases:
objectTypes of spatial-temporal coupling.
- BIDIRECTIONAL = 'bidirectional'
- SPATIAL_TO_TEMPORAL = 'spatial_to_temporal'
- TEMPORAL_TO_SPATIAL = 'temporal_to_spatial'
- GATED = 'gated'
- class hpfracc.ml.graph_sde_coupling.SpatialTemporalCoupling(*args, **kwargs)[source]
Bases:
ModuleCoupling layer between spatial (graph) and temporal (SDE) dynamics.
Computes learned coupling between spatial embeddings and temporal states.
- Parameters:
- __init__(spatial_dim, temporal_dim, coupling_dim, coupling_type='bidirectional', use_attention=True)[source]
Initialize coupling layer.
- forward(spatial_features, temporal_features)[source]
Apply spatial-temporal coupling.
- Parameters:
spatial_features (torch.Tensor) – Graph node features (batch, num_nodes, spatial_dim)
temporal_features (torch.Tensor) – SDE state features (batch, num_nodes, temporal_dim)
- Returns:
Tuple of (coupled_spatial, coupled_temporal)
- Return type:
Tuple[torch.Tensor, torch.Tensor]
- class hpfracc.ml.graph_sde_coupling.GraphFractionalSDELayer(*args, **kwargs)[source]
Bases:
ModuleLayer that couples graph-based spatial dynamics with fractional SDE temporal evolution.
Architecture: - Graph convolution for spatial features - Fractional SDE for temporal dynamics at each node - Learned coupling between spatial and temporal embeddings
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
fractional_order (float | FractionalOrder)
coupling_type (str)
num_sde_steps (int)
backend (BackendType)
- __init__(input_dim, hidden_dim, output_dim, fractional_order=0.5, coupling_type='bidirectional', num_sde_steps=10, backend=BackendType.AUTO)[source]
Initialize Graph-Fractional SDE layer.
- Parameters:
input_dim (int) – Input feature dimension
hidden_dim (int) – Hidden dimension for both spatial and temporal
output_dim (int) – Output feature dimension
fractional_order (float | FractionalOrder) – Fractional order for SDE dynamics
coupling_type (str) – Type of spatial-temporal coupling
num_sde_steps (int) – Number of SDE integration steps
backend (BackendType) – Computation backend
- drift(x)[source]
Compute drift term for SDE.
- Parameters:
x (torch.Tensor)
- Return type:
torch.Tensor
- diffusion(x)[source]
Compute diffusion term for SDE.
- Parameters:
x (torch.Tensor)
- Return type:
torch.Tensor
- forward(x, edge_index, edge_weight=None)[source]
Forward pass through graph-SDE layer.
- Parameters:
x (torch.Tensor) – Node features (batch, num_nodes, input_dim)
edge_index (torch.Tensor) – Edge connectivity (2, num_edges)
edge_weight (torch.Tensor | None) – Optional edge weights (num_edges,)
- Returns:
Updated node features (batch, num_nodes, output_dim)
- Return type:
torch.Tensor
- class hpfracc.ml.graph_sde_coupling.MultiScaleGraphSDE(*args, **kwargs)[source]
Bases:
ModuleMulti-scale graph-SDE network with adaptive time stepping.
Handles different time scales for graph updates vs SDE evolution, optimal for stiff coupled systems.
- Parameters:
- __init__(input_dim, hidden_dims, output_dim, fractional_order=0.5, spatial_time_scale=1.0, temporal_time_scale=0.1)[source]
Initialize multi-scale graph-SDE.
- Parameters:
input_dim (int) – Input dimension
hidden_dims (list) – List of hidden dimensions for each layer
output_dim (int) – Output dimension
fractional_order (float | FractionalOrder) – Fractional order for SDE
spatial_time_scale (float) – Time scale for spatial (graph) dynamics
temporal_time_scale (float) – Time scale for temporal (SDE) dynamics
Coupled System Solvers
Coupled System Solvers for Graph-SDE Dynamics
This module provides numerical solvers for systems of coupled spatial-temporal dynamics, integrating graph-based spatial evolution with fractional SDE temporal evolution.
- class hpfracc.solvers.coupled_solvers.CoupledSolution(t, spatial, temporal, coupling, metadata=None)[source]
Bases:
objectSolution object for coupled graph-SDE systems.
- Parameters:
- class hpfracc.solvers.coupled_solvers.CoupledSystemSolver(fractional_orders, coupling_strength=1.0)[source]
Bases:
ABCBase class for coupled system solvers.
- Parameters:
- class hpfracc.solvers.coupled_solvers.OperatorSplittingSolver(fractional_orders, coupling_strength=1.0, split_order=2)[source]
Bases:
CoupledSystemSolverOperator splitting solver for graph-SDE dynamics.
Uses Strang splitting for second-order accuracy by splitting spatial and temporal operators.
- Parameters:
- __init__(fractional_orders, coupling_strength=1.0, split_order=2)[source]
Initialize operator splitting solver.
- solve(graph_dynamics, sde_drift, sde_diffusion, adjacency, node_features, t_span, num_steps=100, seed=None, **kwargs)[source]
Solve using operator splitting.
For Strang splitting (order 2): - Half step of spatial dynamics - Full step of temporal dynamics - Half step of spatial dynamics
- class hpfracc.solvers.coupled_solvers.MonolithicSolver(fractional_orders, coupling_strength=1.0)[source]
Bases:
CoupledSystemSolverMonolithic solver for strongly coupled graph-SDE systems.
Solves the full coupled system simultaneously for better accuracy in strongly coupled regimes, at the cost of higher memory usage.
- Parameters:
- hpfracc.solvers.coupled_solvers.solve_coupled_graph_sde(graph_dynamics, sde_drift, sde_diffusion, adjacency, node_features, t_span, fractional_orders=0.5, coupling_type='bidirectional', coupling_strength=1.0, solver='operator_splitting', **kwargs)[source]
Solve coupled graph-SDE system.
- Parameters:
graph_dynamics (Callable) – Spatial dynamics function f(spatial, adjacency)
sde_drift (Callable) – Temporal drift function f_spatial(t, temporal)
sde_diffusion (Callable) – Temporal diffusion function g_temporal(t, temporal)
adjacency (ndarray) – Graph adjacency matrix
node_features (ndarray) – Initial node features
fractional_orders (float | FractionalOrder | Dict[str, float]) – Fractional order(s)
coupling_type (str) – Coupling type (“bidirectional”, “spatial_to_temporal”, etc.)
coupling_strength (float) – Strength of coupling
solver (str) – Solver type (“operator_splitting”, “monolithic”, “multiscale”)
**kwargs – Additional solver parameters
- Returns:
CoupledSolution object
- Return type:
Probabilistic SDE
Probabilistic SDE Models with NumPyro
This module provides Bayesian neural fractional SDEs with uncertainty quantification using NumPyro for probabilistic programming.
- hpfracc.ml.probabilistic_sde.numpyro_fsde_model(X, y=None, fractional_order_prior=None, drift_prior=None, diffusion_prior=None)[source]
NumPyro model for Bayesian inference in Neural fSDEs.
- Parameters:
- Returns:
Pyro computation
- hpfracc.ml.probabilistic_sde.numpyro_guide_fsde(X)[source]
Guide (variational posterior) for Bayesian fSDE.
- Parameters:
X – Input data
- Returns:
Guide computation
- class hpfracc.ml.probabilistic_sde.BayesianNeuralFractionalSDE(model_fn=<function numpyro_fsde_model>, guide_fn=<function numpyro_guide_fsde>, num_samples=1000)[source]
Bases:
objectBayesian neural fractional SDE with NumPyro for uncertainty quantification.
Provides: - Prior distributions over drift/diffusion parameters - Variational inference for parameter learning - Posterior predictive distributions for uncertainty quantification
- Parameters:
num_samples (int)
- __init__(model_fn=<function numpyro_fsde_model>, guide_fn=<function numpyro_guide_fsde>, num_samples=1000)[source]
Initialize Bayesian neural fSDE.
- Parameters:
model_fn – NumPyro model function
guide_fn – NumPyro guide (variational posterior) function
num_samples (int) – Number of posterior samples for inference