Skip to main content

Fast interpolation of panilized detector data. Optimized for static sampling points.

Project description

Lates Release Tests Documentation Documentation License

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

simple_interpolation

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

simple_interpolation

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

static_interpolation-0.5.5.tar.gz (26.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

static_interpolation-0.5.5-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

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

Hashes for static_interpolation-0.5.5.tar.gz
Algorithm Hash digest
SHA256 79830dafabe4f9fdf33357f174c720933d69f10eb2868f7d59b83fa396241288
MD5 c594b6c0166ddde25a0b4b13fac40b21
BLAKE2b-256 b79933344b8405ee97981cea67592143d9aa6f4a751f11e07e6a5e39edeb8696

See more details on using hashes here.

File details

Details for the file static_interpolation-0.5.5-py3-none-any.whl.

File metadata

File hashes

Hashes for static_interpolation-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 44723269e708260df8e266645aadf5ca63587c9889b1cc109868782be803cc54
MD5 f47c710c3e5d5246f380206a3a26295c
BLAKE2b-256 ffd3aae07dd6ae29b2cccc2dbc3290cc84fa621ad37ee9ed4e4a3090427e9087

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page