Semapp 1.0.0__py3-none-any.whl → 1.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Semapp might be problematic. Click here for more details.

@@ -114,41 +114,41 @@ class PlotFrame(QWidget):
114
114
  dans_defect_list = False
115
115
 
116
116
  with open(filepath, "r", encoding="utf-8") as f:
117
- for ligne in f:
118
- ligne = ligne.strip()
117
+ for line in f:
118
+ line = line.strip()
119
119
 
120
- if ligne.startswith("SampleSize"):
121
- match = re.search(r"SampleSize\s+1\s+(\d+)", ligne)
120
+ if line.startswith("SampleSize"):
121
+ match = re.search(r"SampleSize\s+1\s+(\d+)", line)
122
122
  if match:
123
123
  data["SampleSize"] = int(match.group(1))
124
124
 
125
- elif ligne.startswith("DiePitch"):
126
- match = re.search(r"DiePitch\s+([0-9.]+)\s+([0-9.]+);", ligne)
125
+ elif line.startswith("DiePitch"):
126
+ match = re.search(r"DiePitch\s+([0-9.]+)\s+([0-9.]+);", line)
127
127
  if match:
128
128
  data["DiePitch"]["X"] = float(match.group(1))
129
129
  data["DiePitch"]["Y"] = float(match.group(2))
130
130
 
131
- elif ligne.startswith("DieOrigin"):
132
- match = re.search(r"DieOrigin\s+([0-9.]+)\s+([0-9.]+);", ligne)
131
+ elif line.startswith("DieOrigin"):
132
+ match = re.search(r"DieOrigin\s+([0-9.]+)\s+([0-9.]+);", line)
133
133
  if match:
134
134
  data["DieOrigin"]["X"] = float(match.group(1))
135
135
  data["DieOrigin"]["Y"] = float(match.group(2))
136
136
 
137
- elif ligne.startswith("SampleCenterLocation"):
138
- match = re.search(r"SampleCenterLocation\s+([0-9.]+)\s+([0-9.]+);", ligne)
137
+ elif line.startswith("SampleCenterLocation"):
138
+ match = re.search(r"SampleCenterLocation\s+([0-9.]+)\s+([0-9.]+);", line)
139
139
  if match:
140
140
  data["SampleCenterLocation"]["X"] = float(match.group(1))
141
141
  data["SampleCenterLocation"]["Y"] = float(match.group(2))
142
142
 
143
- elif ligne.startswith("DefectList"):
143
+ elif line.startswith("DefectList"):
144
144
  dans_defect_list = True
145
145
  continue
146
146
 
147
147
  elif dans_defect_list:
148
- if re.match(r"^\d+\s", ligne):
149
- valeurs = ligne.split()
150
- if len(valeurs) >= 18:
151
- defect = {f"val{i+1}": float(val) for i, val in enumerate(valeurs[:18])}
148
+ if re.match(r"^\d+\s", line):
149
+ value = line.split()
150
+ if len(value) >= 18:
151
+ defect = {f"val{i+1}": float(val) for i, val in enumerate(value[:18])}
152
152
  data["Defects"].append(defect)
153
153
 
154
154
  pitch_x = data["DiePitch"]["X"]
@@ -204,15 +204,15 @@ class PlotFrame(QWidget):
204
204
  folder_path = os.path.join(self.button_frame.folder_var_changed(),
205
205
  str(self.selected_wafer))
206
206
 
207
- # Recherche du fichier qui se termine par .001 dans le dossier
207
+ # Find the first .001 file in the selected folder
208
208
  matching_files = glob.glob(os.path.join(folder_path, '*.001'))
209
209
 
210
- # Si au moins un fichier correspond, on prend le premier
210
+ # Sort the files to ensure consistent ordering
211
211
  if matching_files:
212
212
  recipe_path = matching_files[0]
213
213
  else:
214
- recipe_path = None # Ou tu peux lever une exception ou afficher un message d’erreur
215
- # Charger les coordonnées depuis le fichier CSV (recipe)
214
+ recipe_path = None
215
+
216
216
  self.coordinates = self.extract_positions(recipe_path)
217
217
 
218
218
  tiff_path = os.path.join(folder_path, "data.tif")
@@ -223,9 +223,8 @@ class PlotFrame(QWidget):
223
223
  return
224
224
 
225
225
  self._load_tiff(tiff_path)
226
- self._update_plot() # Maintenant les coordonnées seront disponibles pour le plot
226
+ self._update_plot()
227
227
 
228
- # Pop-up stylisé
229
228
  msg = QMessageBox()
230
229
  msg.setIcon(QMessageBox.Information)
231
230
  msg.setText(f"Wafer {self.selected_wafer} opened successfully")
@@ -304,7 +303,7 @@ class PlotFrame(QWidget):
304
303
  x_coords = self.coordinates.iloc[:, 0]
305
304
  y_coords = self.coordinates.iloc[:, 1]
306
305
 
307
- # Calcul de la valeur maximale absolue parmi toutes les coordonnées
306
+ # Calculate the maximum value for scaling
308
307
  max_val = max(abs(x_coords).max(), abs(y_coords).max())
309
308
 
310
309
  if max_val <= 5:
@@ -316,14 +315,14 @@ class PlotFrame(QWidget):
316
315
  elif max_val <= 15:
317
316
  radius = 15
318
317
  else:
319
- radius = max_val # fallback pour les cas supérieurs à 30
318
+ radius = max_val # fallback for > 15
320
319
 
321
320
  self.radius = radius
322
321
 
323
322
  ax.scatter(x_coords, y_coords, color='blue', marker='o',
324
323
  s=100, label='Positions')
325
324
 
326
- # Mise à l'échelle du graphique en fonction du radius
325
+ # Set limits based on the radius
327
326
  ax.set_xlim(-radius - 1, radius + 1)
328
327
  ax.set_ylim(-radius - 1, radius + 1)
329
328
 
@@ -217,7 +217,6 @@ class Process:
217
217
  def clean(self):
218
218
  """
219
219
  Clean up the output directory by deleting any non-conforming TIFF files.
220
-
221
220
  This method deletes any files that do not follow the expected naming
222
221
  conventions (files not starting with "data" or
223
222
  containing the word "page").
semapp/main.py CHANGED
@@ -52,7 +52,7 @@ class MainWindow(QWidget): # pylint: disable=R0903
52
52
  Configures the main layout, creates frames for different sections,
53
53
  and initializes the update timer.
54
54
  """
55
- self.setWindowTitle("Data Visualization")
55
+ self.setWindowTitle("SEMapp")
56
56
  self.setStyleSheet(f"background-color: {BACKGROUND_COLOR};")
57
57
 
58
58
  # Create the main layout (canvas_layout)
@@ -1,21 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Semapp
3
- Version: 1.0.0
3
+ Version: 1.0.1
4
4
  Summary: Package for SEM visualization
5
5
  Author-email: Thibaut Meyer <thibaut.meyer3@gmail.com>
6
- License-Expression: MIT
7
- Project-URL: Homepage, https://github.com/pypa/sampleproject
8
- Project-URL: Issues, https://github.com/pypa/sampleproject/issues
6
+ License-Expression: GPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/thi-mey/SEMapp
9
8
  Keywords: SEM,GUI
10
9
  Classifier: Programming Language :: Python :: 3
11
10
  Classifier: Operating System :: OS Independent
12
11
  Requires-Python: >=3.9
13
12
  Description-Content-Type: text/markdown
14
13
  License-File: LICENSE
15
- Requires-Dist: matplotlib==3.8.3
16
- Requires-Dist: numpy<2.0,>=1.21
17
- Requires-Dist: pandas>=2.2.0
18
- Requires-Dist: Pillow>=11.0.0
14
+ Requires-Dist: matplotlib==3.10.3
15
+ Requires-Dist: numpy==2.2.5
16
+ Requires-Dist: pandas==2.2.3
17
+ Requires-Dist: Pillow==11.2.1
19
18
  Requires-Dist: PyQt5==5.15.11
20
- Requires-Dist: PyQt5_sip<13.0.0,>=12.15.0
19
+ Requires-Dist: PyQt5_sip==12.17.0
21
20
  Dynamic: license-file
@@ -1,19 +1,19 @@
1
1
  semapp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- semapp/main.py,sha256=at6lSq7GbP8ER0IFn6b2PoNK-6ywSD7ozmLUIkHbdMc,2919
2
+ semapp/main.py,sha256=Ji_lMYAJqzqv3PymyUMkxLJkchKUh8SPrVQvtixJ1JU,2907
3
3
  semapp/Layout/__init__.py,sha256=Y60dNC2iCpGv7t9DkGZs1zqKCr1FfaZQ90fINmI1KMA,603
4
4
  semapp/Layout/create_button.py,sha256=5A70WHVmFdrVf22uuKRDfDqjgmyd1nbtYXNQHA2o7kg,19814
5
5
  semapp/Layout/main_window_att.py,sha256=bxefkRFZ9iUo-3Xy11rPEywKCAfZcNDrLPhCQxXoxUk,2249
6
6
  semapp/Layout/settings.py,sha256=Mrt88HSnKmPqMQP_k1cMsfrRJgfSjC1nIzpzWMO9eO0,6355
7
7
  semapp/Layout/styles.py,sha256=1R19eJbw0K5gTacqGuXh-HFShjhNgZcdvkoysx1zfMY,3473
8
8
  semapp/Plot/__init__.py,sha256=VaRDwSM4fwfRlHYTs6I3l-6Q_nTcctAjhFNCba13C6g,133
9
- semapp/Plot/frame_attributes.py,sha256=zaiA2vic1vqZjU3K4GJnscj6XXa8S64B_DfmCz8tf9U,15705
9
+ semapp/Plot/frame_attributes.py,sha256=IsZElkV9898xYYlXi0cotg8oA3fhkiB4W-Sm2xBFEdM,15366
10
10
  semapp/Plot/styles.py,sha256=WCDMlyOQI2_nMt0t_s_WcUyp_AkfKAofFcy4vPGuxSY,870
11
11
  semapp/Plot/utils.py,sha256=xcV2Abznu2wf9wa4MgMYaeHJ_NLx11mEc7hWbJUas6A,2839
12
12
  semapp/Processing/__init__.py,sha256=BZOqbkPq0GpUcScdQ2H5K-9lC9__ACSemfM4I7NuhGU,97
13
- semapp/Processing/processing.py,sha256=O8ydNYh2BKo0DllKqmUrMZiyQvsL1JkYDKahRl1oN1I,24887
14
- semapp-1.0.0.dist-info/licenses/LICENSE,sha256=LoV48WtuomVBIWbotLHaBF_MEfKNsD1mSQhBASSi8B4,35801
15
- semapp-1.0.0.dist-info/METADATA,sha256=sabRqolKP3s3QMzKZEciSPkwqN_a0767PlVdObi0XLs,732
16
- semapp-1.0.0.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
17
- semapp-1.0.0.dist-info/entry_points.txt,sha256=_rXPJS9aPfI3F8wcCv1PllnnDpvz3Mpd8FRL6Xivhwc,40
18
- semapp-1.0.0.dist-info/top_level.txt,sha256=jMlqZoYXBSCF-JQJ-vLlIYIFJurj438WgMBUMvoZtJo,7
19
- semapp-1.0.0.dist-info/RECORD,,
13
+ semapp/Processing/processing.py,sha256=_zTOOTxQLCAd-N2wKhlFGMSv6LkzayxM9Zg-QpvSxe0,24885
14
+ semapp-1.0.1.dist-info/licenses/LICENSE,sha256=LoV48WtuomVBIWbotLHaBF_MEfKNsD1mSQhBASSi8B4,35801
15
+ semapp-1.0.1.dist-info/METADATA,sha256=klYCr4hdMsN2JDWDBRCbaC0MjT0Ki_TD9KaXTUS19uM,663
16
+ semapp-1.0.1.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
17
+ semapp-1.0.1.dist-info/entry_points.txt,sha256=_rXPJS9aPfI3F8wcCv1PllnnDpvz3Mpd8FRL6Xivhwc,40
18
+ semapp-1.0.1.dist-info/top_level.txt,sha256=jMlqZoYXBSCF-JQJ-vLlIYIFJurj438WgMBUMvoZtJo,7
19
+ semapp-1.0.1.dist-info/RECORD,,
File without changes