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