A package for spherical positional encoding
Project description
Spherical-Implicit-Neural-Representation
Spherical-Implicit-Neural-Representation is a Python package for constructing spherical implicit neural representations using Herglotz-based positional encoding. It provides flexible modules for processing spherical data along with customizable positional encoding layers and regularization tools.
Installation
Install the package from PyPI:
pip install spherical-inr
Or install the development version locally:
git clone https://github.com/yourusername/spherical_inr.git
cd spherical_inr
pip install -e .
Getting Started
Instantiate HerglotzNet
The HerglotzNet module is designed for (θ, φ) coordinate data. Here’s an example of how to instantiate and use it:
import torch
import spherical_inr as sph
# Parameters for HerglotzNet
output_dim = 1
inr_sizes = [16] + 3 * [32] # [PE size] + (hidden layers * hidden features)
omega0 = 1.0
seed = 42
# Instantiate the network NOTE : # HNET is defined for (θ, φ) coordinates only
model = sph.HerglotzNet(
output_dim=output_dim,
inr_sizes=inr_sizes,
bias=True,
pe_omega0=omega0,
seed=seed
)
# Example
dummy_input = torch.randn(4, 2)
output = model(dummy_input)
print(output)
Generic Cartesian INR
You can also create a customized Cartesian implicit neural representation (INR). For example:
import torch
import spherical_inr as sph
# INR parameters
input_dim = 3
output_dim = 1
inr_sizes = [100] + 3 * [100]
pe = "fourier"
activation = "sin"
bias = False
# Instantiate a generic Cartesian INR
inr = sph.INR(
input_dim=input_dim,
output_dim=output_dim,
inr_sizes=inr_sizes,
pe=pe,
activation=activation,
bias=bias
)
To incorporate Laplacian regularization into your loss function:
import torch
from spherical_inr.loss import CartesianLaplacianLoss
laplacian_loss = CartesianLaplacianLoss()
mse_loss = torch.nn.MSELoss()
def loss_fn(target, y_pred, y_reg, x_reg):
reg = laplacian_loss(y_reg, x_reg)
mse = mse_loss(target, y_pred)
return reg + mse
Then train your model as usual.
Instantiate and Use a Positional Encoding
You can also directly instantiate a positional encoding module and integrate it into your own PyTorch model. For example:
import torch
import torch.nn as nn
import spherical_inr as sph
# Example model using a positional encoding
class MyModel(nn.Module):
def __init__(self, num_atoms, input_dim, output_dim, bias, omega0, seed):
super().__init__()
self.pe = sph.RegularHerglotzPE(
num_atoms=num_atoms,
input_dim=input_dim,
bias=bias,
omega0=omega0,
seed=seed
)
self.linear = nn.Linear(num_atoms, output_dim)
def forward(self, x):
x = self.pe(x)
return self.linear(x)
# Instantiate the model
model = MyModel(
num_atoms=50,
input_dim=10,
output_dim=5,
bias=True,
omega0=1.0,
seed=42,
)
dummy_input = torch.randn(4, 10)
output = model(dummy_input)
print(output)
📚 References
- Théo Hanon, Nicolas Mil-Homens Cavaco, John Kiely, Laurent Jacques,
Herglotz-NET: Implicit Neural Representation of Spherical Data with Harmonic Positional Encoding,
arXiv preprint, 2025.
arXiv:2502.13777
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spherical_inr-0.3.1.tar.gz.
File metadata
- Download URL: spherical_inr-0.3.1.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2feb682ae895a07706ecd7220f36fc469f8df8b4837bd2f4380cff679759bb5c
|
|
| MD5 |
98fbe842ea9cfbfd5c08d7f02431dc03
|
|
| BLAKE2b-256 |
58f88fc2d9102098f6b4ce6856261e3bda7af2007d7b9c5a9e142c8cfa63e51b
|
File details
Details for the file spherical_inr-0.3.1-py3-none-any.whl.
File metadata
- Download URL: spherical_inr-0.3.1-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b6bd48b880bf2cf5787a4bcb2dee68d4ad31414cd2a74f95b95ae37005b515d
|
|
| MD5 |
83720b94841e4cfa89009b01fe725e59
|
|
| BLAKE2b-256 |
22997e57c05f216a6c48b640442780bcf282765a5859615c41caf785be3d22c7
|