Fast interpolation of panilized detector data. Optimized for static sampling points.
Project description
static-interpolation
Fast interpolation of paneled detector data, optimized for static sampling positions.
Main features
- Plan first -> execute fast approach.
- Mask aware interpolation.
- Native support for paneled data
- EXtra-geom integration.
Installation
It is available on pipy so you can simply pip install the package
pip install static-interpolation
Usage
AGIPD_1M Detector & polar grid on Ewald's sphere
import static_interpolation as si
from extra_geom import AGIPD_1MGeometry,agipd_asic_seams
from matplotlib import pyplot as plt
geom = AGIPD_1MGeometry.from_quad_positions(quad_pos=[
(-525, 625), # in mm
(-550, -10),
(520, -160),
(542.5, 475),
])
# Things that are not in geom but needed
nr,nphi = (512,2048) # polar coord shape
detector_distance = 0.2 # in meters
xray_energy = 7000 # in eV
# Instanciate the interpolator
agipd_interp = si.AGIPD_1MInterpolator.from_polar_ewald(geom,
nr,
nphi,
xray_energy,
detector_distance
)
# make test data
data,masks = si.utils._generate_test_data(geom,n_images=150)
# Interpolate 150 agipd patterns in one go
out,out_masks = agipd_interp(data,masks)
# Plotting
fig = si.utils._plot_detector_test(data[0],masks[0],out[0],out_masks[0],geom,figsize=(32,12))
plt.show()
General example
import numpy as np
import static_interpolation as si
from matplotlib import pyplot as plt
# simple cubic interpolation using 1 panel
# generate test data
rng = np.random.RandomState(12345)
nx,ny = 5,5
n_samples = 100
n_images = 20
data = rng.random((n_images,nx,ny))
# define image layout
layout = si.data_structures.ImageLayout.from_shape((nx,ny))
# define sampling points
sampling_points = np.stack(np.meshgrid(np.arange(n_samples)*(nx-1)/n_samples,np.arange(n_samples)*(ny-1)/n_samples,indexing='ij'),axis=-1)
samples = si.data_structures.SamplingGrid(points = sampling_points[None,...],n_panels=1)
# options
options = si.config.InterpolationPolicy()
options.method = options.Method.linear
# Instanciate interpolatiors
interp_cubic = si.interpolators.StaticInterpolator(samples,layout=layout)
interp_linear = si.interpolators.StaticInterpolator(samples,layout=layout,policy=options)
# Execute interpolations for all 20 images
out = interp_cubic(data)
out_linear = interp_linear(data)
# Plot Result
fig,axs = plt.subplots(1,3,figsize=(10,5))
axs[0].imshow(data[0])
axs[0].set_title("Data")
axs[1].imshow(out[0])
axs[1].set_title("Cubic interpolation")
axs[2].imshow(out_linear[0])
axs[2].set_title("Linear interpolation")
plt.show()
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 static_interpolation-0.5.5.tar.gz.
File metadata
- Download URL: static_interpolation-0.5.5.tar.gz
- Upload date:
- Size: 26.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79830dafabe4f9fdf33357f174c720933d69f10eb2868f7d59b83fa396241288
|
|
| MD5 |
c594b6c0166ddde25a0b4b13fac40b21
|
|
| BLAKE2b-256 |
b79933344b8405ee97981cea67592143d9aa6f4a751f11e07e6a5e39edeb8696
|
File details
Details for the file static_interpolation-0.5.5-py3-none-any.whl.
File metadata
- Download URL: static_interpolation-0.5.5-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44723269e708260df8e266645aadf5ca63587c9889b1cc109868782be803cc54
|
|
| MD5 |
f47c710c3e5d5246f380206a3a26295c
|
|
| BLAKE2b-256 |
ffd3aae07dd6ae29b2cccc2dbc3290cc84fa621ad37ee9ed4e4a3090427e9087
|