WIP
This commit is contained in:
25
.gitignore
vendored
Normal file
25
.gitignore
vendored
Normal 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
25
play.py
Normal 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
2
simple_eta/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .generate import gaussian_2d
|
||||
from .plotting import plot_gaussian
|
||||
40
simple_eta/generate.py
Normal file
40
simple_eta/generate.py
Normal 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
22
simple_eta/plotting.py
Normal 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
|
||||
Reference in New Issue
Block a user