Generic 2D scalar field patch similarity search using gradient, statistical, and spectral features with HNSW indexing.
Note: Forked from terravector and generalized for any 2D scalar field data.
FieldVector converts any 2D scalar field (temperature, pressure, density, etc.) into searchable vector embeddings. Each patch gets a "fingerprint" based on gradient structure, statistical moments, and spectral content. An HNSW index enables O(log N) similarity queries across millions of patches.
Use cases:
- Find similar patterns in simulation output
- Detect anomalies in sensor data
- Compare fields across different experiments
- Match patterns in climate/weather data
- Quality control in manufacturing (surface inspection)
git clone https://github.com/bshepp/fieldvector.git
cd fieldvector
pip install -r requirements.txtpython viewer.py path/to/field.npy path/to/index.idxpython app.py# Build index from 2D array
python cli.py build field.npy --patch-size 64 --output field.idx
# Build with gradient preset
python cli.py build field.npy --config gradient --output grad.idx
# Query for similar patches
python cli.py query field.idx --patch 42 --k 10Patch-level statistics:
- Mean, variance, skewness, kurtosis
- Min, max, range, median
- Percentiles
Spatial derivative analysis:
- Gradient magnitude statistics
- Gradient direction histogram
- Laplacian (curvature)
- Divergence, curl (for vector fields)
Frequency domain analysis:
- FFT power spectrum
- Directional FFT
- Dominant frequencies
Signal processing:
- Multi-scale decomposition
- Wavelet features
- Morphological filtering
| Preset | Features | Use Case |
|---|---|---|
default |
Statistical + Gradient | General purpose |
statistical |
Full statistics | Distribution matching |
gradient |
Gradient focus | Edge/flow patterns |
spectral |
FFT features | Periodic patterns |
hybrid |
All features | Maximum discrimination |
- NumPy (.npy, .npz) - Primary format
- NetCDF (.nc) - Climate/scientific data
- HDF5 (.h5, .hdf5) - Large datasets
- TIFF (.tif) - Image-like data
- Python 3.8+
- numpy, scipy, scikit-image
- nmslib (HNSW implementation)
- xarray, h5py, netCDF4 (optional, for format support)
- gradio, napari (UI)
Apache 2.0
@software{fieldvector2025,
author = {Shepp, B.},
title = {FieldVector: 2D Scalar Field Patch Similarity Search},
year = {2025},
url = {https://github.com/bshepp/fieldvector}
}