Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
parent
fd3b7a6eef
commit
4d56a4a416
169
src/SimNDT/gui/snapshots.py
Normal file
169
src/SimNDT/gui/snapshots.py
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
__author__ = 'Miguel Molero'
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
from scipy.misc import imsave
|
||||||
|
from scipy.io import savemat
|
||||||
|
|
||||||
|
from SimNDT.gui.Warnings import WarningParms
|
||||||
|
import math
|
||||||
|
|
||||||
|
class SnapShots:
|
||||||
|
def __init__(self, Enable=False, Extension='.png', Step=200, Filename=None, dB=60, Color=0,
|
||||||
|
Field = 0,
|
||||||
|
enableFields=False,
|
||||||
|
enableSignals=False,
|
||||||
|
enableImages=False,
|
||||||
|
enableNumPy=False,
|
||||||
|
enableVolume=False,
|
||||||
|
enableView=False,
|
||||||
|
sensorShape = [],
|
||||||
|
sensorPlacement = [],
|
||||||
|
sensorSize = 0):
|
||||||
|
|
||||||
|
self.IsEnable = Enable
|
||||||
|
self.Extension = Extension
|
||||||
|
self.Step = Step
|
||||||
|
self.Filename = Filename
|
||||||
|
self.DB = dB
|
||||||
|
self.Color = Color
|
||||||
|
self.Field = Field
|
||||||
|
self.enableFields = enableFields
|
||||||
|
self.enableSignals = enableSignals
|
||||||
|
self.enableImages = enableImages
|
||||||
|
self.enableNumPy = enableNumPy
|
||||||
|
self.enableVolume = enableVolume
|
||||||
|
self.enableView = enableView
|
||||||
|
self.sensorShape = sensorShape
|
||||||
|
self.sensorPlacement = sensorPlacement
|
||||||
|
self.sensorSize = sensorSize
|
||||||
|
self.volF = []
|
||||||
|
self.volS = []
|
||||||
|
self.volP = []
|
||||||
|
|
||||||
|
def save_fields(self, Fx, Fy, n):
|
||||||
|
|
||||||
|
if self.enableVolume:
|
||||||
|
self.volF.append(np.array([Fx,Fy]))
|
||||||
|
elif self.enableNumPy:
|
||||||
|
FILE = self.Filename + ("-fields-%05d" % (int(n / self.Step)))
|
||||||
|
np.save(FILE,np.array([Fx,Fy]))
|
||||||
|
else:
|
||||||
|
dict = {}
|
||||||
|
dict['Vx'] = Fx
|
||||||
|
dict['Vy'] = Fy
|
||||||
|
FILE = self.Filename + ("-fields-%05d" % (int(n / self.Step))) + ".mat"
|
||||||
|
savemat(FILE, dict)
|
||||||
|
|
||||||
|
# @blab+
|
||||||
|
def save_signal(self, D , n, Label):
|
||||||
|
self.Label = Label
|
||||||
|
xn = D.shape[1]
|
||||||
|
yn = D.shape[0]
|
||||||
|
dx = 1 # sensor delta
|
||||||
|
dy = 1
|
||||||
|
ox = 0 # offset
|
||||||
|
oy = 0
|
||||||
|
if len(self.sensorShape) > 0:
|
||||||
|
# size of sensor matrix
|
||||||
|
sx = self.sensorShape[0]
|
||||||
|
sy = self.sensorShape[1]
|
||||||
|
S = np.zeros([sy,sx])
|
||||||
|
if len(self.sensorPlacement):
|
||||||
|
p=self.sensorPlacement
|
||||||
|
ox=p[0]
|
||||||
|
dx=p[1]
|
||||||
|
oy=p[2]
|
||||||
|
dy=p[3]
|
||||||
|
else:
|
||||||
|
ox=dx=round(xn/(sx+1.0))
|
||||||
|
oy=dy=round(yn/(sy+1.0))
|
||||||
|
for x in range(0,sx):
|
||||||
|
for y in range(0,sy):
|
||||||
|
S[y,x]=D[oy+y*dy,ox+x*dx]
|
||||||
|
else:
|
||||||
|
S = D
|
||||||
|
|
||||||
|
if self.enableVolume:
|
||||||
|
self.volS.append(np.copy(S))
|
||||||
|
elif self.enableNumPy:
|
||||||
|
FILE = self.Filename + ("-signal-"+Label+"-%05d" % (int(n / self.Step)))
|
||||||
|
np.save(FILE,S)
|
||||||
|
else:
|
||||||
|
FILE = self.Filename + ("-signal-"+Label+"-%05d" % (int(n / self.Step))) + ".mat"
|
||||||
|
savemat(FILE, S)
|
||||||
|
|
||||||
|
def save_power(self, Vx, Vy, n):
|
||||||
|
|
||||||
|
S = np.sqrt(Vx ** 2 + Vy ** 2)
|
||||||
|
|
||||||
|
if self.enableVolume:
|
||||||
|
self.volP.append(np.copy(S))
|
||||||
|
elif self.enableNumPy:
|
||||||
|
FILE = self.Filename + ("-power-%05d" % (int(n / self.Step)))
|
||||||
|
np.save(FILE,S)
|
||||||
|
else:
|
||||||
|
FILE = self.Filename + ("-power-%05d" % (int(n / self.Step))) + ".mat"
|
||||||
|
savemat(FILE, S)
|
||||||
|
|
||||||
|
def save_fig(self, SV, n, idx=None):
|
||||||
|
|
||||||
|
SV += self.DB
|
||||||
|
ind = np.nonzero(SV < 0)
|
||||||
|
SV[ind] = 0
|
||||||
|
SV /= np.max(SV)
|
||||||
|
|
||||||
|
if self.Color == 0:
|
||||||
|
cmap = plt.get_cmap('jet')
|
||||||
|
elif self.Color == 1:
|
||||||
|
cmap = plt.get_cmap('gray')
|
||||||
|
|
||||||
|
try:
|
||||||
|
_resize = False
|
||||||
|
M, N = np.shape(SV)
|
||||||
|
if M >= 2000:
|
||||||
|
_resize = True
|
||||||
|
if N >= 2000:
|
||||||
|
_resize = True
|
||||||
|
|
||||||
|
if _resize:
|
||||||
|
SVV = SV[::3, ::3]
|
||||||
|
rgba_img = cmap(SVV)
|
||||||
|
else:
|
||||||
|
SVV = SV[::2, ::2]
|
||||||
|
rgba_img = cmap(SVV)
|
||||||
|
|
||||||
|
rgb_img = np.delete(rgba_img, 3, 2)
|
||||||
|
|
||||||
|
if idx is not None:
|
||||||
|
FILE = self.Filename + "_insp%d_" % idx + str(int(n / self.Step)) + self.Extension
|
||||||
|
else:
|
||||||
|
FILE = self.Filename + ("%05d" % (int(n / self.Step))) + self.Extension
|
||||||
|
imsave(FILE, rgb_img)
|
||||||
|
|
||||||
|
except:
|
||||||
|
msgBox = WarningParms("Too large Snapshots Size!!!!!!!!")
|
||||||
|
if msgBox.exec_():
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
def save_vol(self):
|
||||||
|
|
||||||
|
if len(self.volF) > 0:
|
||||||
|
if self.enableNumPy:
|
||||||
|
FILE = self.Filename + '-fields'
|
||||||
|
np.save(FILE,np.array(self.volF))
|
||||||
|
self.volF=[]
|
||||||
|
|
||||||
|
if len(self.volS) > 0:
|
||||||
|
if self.enableNumPy:
|
||||||
|
FILE = self.Filename + '-signal-'+self.Label
|
||||||
|
np.save(FILE,np.array(self.volS))
|
||||||
|
self.volS=[]
|
||||||
|
|
||||||
|
if len(self.volP) > 0:
|
||||||
|
if self.enableNumPy:
|
||||||
|
FILE = self.Filename + '-power'
|
||||||
|
np.save(FILE,np.array(self.volP))
|
||||||
|
self.volP=[]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user