This commit is contained in:
Erik Fröjdh
2025-10-31 14:47:39 +01:00
parent 6f95829336
commit b6fa09fd22
5 changed files with 114 additions and 0 deletions

25
.gitignore vendored Normal file
View File

@@ -0,0 +1,25 @@
install/
.cproject
.project
bin/
.settings
*.aux
*.log
*.out
*.toc
*.o
*.so
.*
build/
RELEASE.txt
Testing/
ctbDict.cpp
ctbDict.h
wheelhouse/
dist/
*.pyc
*/__pycache__/*

25
play.py Normal file
View File

@@ -0,0 +1,25 @@
import matplotlib.pyplot as plt
plt.ion()
import numpy as np
from simple_eta import gaussian_2d, plot_gaussian
from simple_eta import generate
sigma_um = 12
resolution = 200
grid_size = 3
pixel_size = 25
pos = (37.5,37.5) #x,y
t = gaussian_2d(mx=pos[0], my = pos[1], sigma = sigma_um, res = resolution, grid_size = grid_size, pixel_size = pixel_size)
fig, ax = plot_gaussian(t, pixel_size=pixel_size, grid_size = grid_size)
plt.show()
res = generate.sum_pixels(t, grid_size)
fig,ax = plt.subplots()
im = ax.imshow(res, origin = 'lower')

2
simple_eta/__init__.py Normal file
View File

@@ -0,0 +1,2 @@
from .generate import gaussian_2d
from .plotting import plot_gaussian

40
simple_eta/generate.py Normal file
View File

@@ -0,0 +1,40 @@
import torch
import math
import numpy as np
def gaussian_2d(mx, my, sigma = 1, res=100, pixel_size = 25, grid_size = 2):
"""
Generate a 2D gaussian as position mx, my, with sigma=sigma.
The gaussian is placed on a grid_size x grid_size pixel matrix with resolution
res in one dimesion.
"""
x = torch.linspace(0, pixel_size*grid_size, res)
x,y = torch.meshgrid(x,x, indexing="ij")
return 1 / (2*math.pi*sigma**2) * \
torch.exp(-((x - my)**2 / (2*sigma**2) + (y - mx)**2 / (2*sigma**2)))
def sum_pixels(t, grid):
resolution = t.shape[0]
pixels = np.zeros((grid,grid))
step = resolution//grid
for i in range(grid):
for j in range(grid):
print(f'[{i*step}:{(i+1)*step}, {j*step}:{(j+1)*step}]')
pixels[i,j] = t[i*step:(i+1)*step, j*step:(j+1)*step].sum()
# pixels[0,0] = t[0:resolution//2, 0:resolution//2].sum()
# pixels[0,1] = t[0:resolution//2, resolution//2:].sum()
# pixels[1,0] = t[resolution//2:, 0:resolution//2].sum()
# pixels[1,1] = t[resolution//2:, resolution//2:].sum()
return pixels
def sum_pixels2(t, grid):
resolution = t.shape[0]
pixels = np.zeros((grid,grid))
pixels[0,0] = t[0:resolution//2, 0:resolution//2].sum()
pixels[0,1] = t[0:resolution//2, resolution//2:].sum()
pixels[1,0] = t[resolution//2:, 0:resolution//2].sum()
pixels[1,1] = t[resolution//2:, resolution//2:].sum()
return pixels

22
simple_eta/plotting.py Normal file
View File

@@ -0,0 +1,22 @@
import matplotlib.pyplot as plt
import numpy as np
def plot_gaussian(t, pixel_size, grid_size):
print(f'{t.shape=}')
resolution = t.shape[0]
xa = np.linspace(0,grid_size*pixel_size,resolution)
ticks = [tick for tick in range(0,pixel_size*grid_size+1, pixel_size)]
fig, ax = plt.subplots(figsize = (7,7))
ax.pcolormesh(xa,xa, t)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xlim(0,grid_size*pixel_size)
ax.set_ylim(0,grid_size*pixel_size)
ax.grid()
ax.set_xlabel(r'Position x [$\mu$m]')
ax.set_ylabel(r'Position y [$\mu$m]')
return fig, ax