Semapp 1.0.1__tar.gz → 1.0.3__tar.gz
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.
- semapp-1.0.3/PKG-INFO +226 -0
- semapp-1.0.3/README.md +205 -0
- semapp-1.0.3/SEMapp.egg-info/PKG-INFO +226 -0
- {semapp-1.0.1 → semapp-1.0.3}/pyproject.toml +1 -1
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Layout/create_button.py +163 -51
- semapp-1.0.3/semapp/Plot/__init__.py +8 -0
- semapp-1.0.3/semapp/Plot/frame_attributes.py +583 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Processing/processing.py +132 -77
- semapp-1.0.3/semapp/__init__.py +10 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/main.py +10 -1
- semapp-1.0.1/PKG-INFO +0 -20
- semapp-1.0.1/README.md +0 -0
- semapp-1.0.1/SEMapp.egg-info/PKG-INFO +0 -20
- semapp-1.0.1/semapp/Plot/__init__.py +0 -8
- semapp-1.0.1/semapp/Plot/frame_attributes.py +0 -407
- semapp-1.0.1/semapp/__init__.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/LICENSE +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/SEMapp.egg-info/SOURCES.txt +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/SEMapp.egg-info/dependency_links.txt +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/SEMapp.egg-info/entry_points.txt +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/SEMapp.egg-info/requires.txt +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/SEMapp.egg-info/top_level.txt +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Layout/__init__.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Layout/main_window_att.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Layout/settings.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Layout/styles.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Plot/styles.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Plot/utils.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/semapp/Processing/__init__.py +0 -0
- {semapp-1.0.1 → semapp-1.0.3}/setup.cfg +0 -0
semapp-1.0.3/PKG-INFO
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Semapp
|
|
3
|
+
Version: 1.0.3
|
|
4
|
+
Summary: Package for SEM visualization
|
|
5
|
+
Author-email: Thibaut Meyer <thibaut.meyer3@gmail.com>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/thi-mey/SEMapp
|
|
8
|
+
Keywords: SEM,GUI
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.9
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
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
|
|
18
|
+
Requires-Dist: PyQt5==5.15.11
|
|
19
|
+
Requires-Dist: PyQt5_sip==12.17.0
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
|
|
22
|
+
# SEMapp - SEM Data Visualization Application
|
|
23
|
+
|
|
24
|
+
A PyQt5-based desktop application for visualizing and analyzing Scanning Electron Microscope (SEM) data. SEMapp supports both standard and COMPLUS4T KLARF file formats, providing an intuitive interface for defect mapping and image analysis.
|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
### Core Functionality
|
|
29
|
+
- **KLARF File Support**: Parse and extract defect data from `.001` (KLARF) files
|
|
30
|
+
- **Dual Mode Operation**:
|
|
31
|
+
- **Standard Mode**: Process SEM data from structured subdirectories
|
|
32
|
+
- **COMPLUS4T Mode**: Handle multi-wafer KLARF files with automatic wafer detection
|
|
33
|
+
- **Interactive Wafer Mapping**: Visual representation of defect positions on wafer surface
|
|
34
|
+
- **Image Visualization**: Display TIFF images corresponding to defect locations
|
|
35
|
+
- **Dynamic Defect Filtering**: Real-time defect filtering based on size threshold (COMPLUS4T mode)
|
|
36
|
+
|
|
37
|
+
### Data Processing
|
|
38
|
+
- **Automatic File Organization**: Organize TIFF files into wafer-specific subfolders
|
|
39
|
+
- **Coordinate Extraction**: Extract and convert defect coordinates from KLARF format
|
|
40
|
+
- **CSV Export**: Save defect mapping data for external analysis
|
|
41
|
+
- **Batch Processing**: Process multiple wafers in a single session
|
|
42
|
+
|
|
43
|
+
### User Interface
|
|
44
|
+
- **Wafer Selection**: Grid-based wafer slot selection (1-26)
|
|
45
|
+
- **Image Type Selection**: Choose from different image scales and types
|
|
46
|
+
- **Defect Size Slider**: Dynamic threshold control for defect visualization (COMPLUS4T mode)
|
|
47
|
+
- **Interactive Plot**: Click on defect positions to view corresponding images
|
|
48
|
+
- **Settings Configuration**: Customize image types and processing parameters
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
### Prerequisites
|
|
53
|
+
- Python 3.7 or higher
|
|
54
|
+
- pip package manager
|
|
55
|
+
|
|
56
|
+
### Install from PyPI
|
|
57
|
+
```bash
|
|
58
|
+
pip install semapp
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Install from Source
|
|
62
|
+
```bash
|
|
63
|
+
git clone https://github.com/yourusername/semapp.git
|
|
64
|
+
cd semapp
|
|
65
|
+
pip install -e .
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Dependencies
|
|
69
|
+
The following packages will be installed automatically:
|
|
70
|
+
- PyQt5 >= 5.15.0
|
|
71
|
+
- matplotlib >= 3.3.0
|
|
72
|
+
- pandas >= 1.1.0
|
|
73
|
+
- Pillow >= 8.0.0
|
|
74
|
+
- numpy >= 1.19.0
|
|
75
|
+
|
|
76
|
+
## Quick Start
|
|
77
|
+
|
|
78
|
+
### Launching the Application
|
|
79
|
+
```bash
|
|
80
|
+
# From command line after installation
|
|
81
|
+
semapp
|
|
82
|
+
|
|
83
|
+
# Or run directly from source
|
|
84
|
+
python -m semapp.main
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Basic Workflow
|
|
88
|
+
|
|
89
|
+
1. **Select a Directory**
|
|
90
|
+
- Click "Select Folder" to choose your data directory
|
|
91
|
+
- Application automatically detects standard or COMPLUS4T mode
|
|
92
|
+
|
|
93
|
+
2. **Choose a Wafer**
|
|
94
|
+
- Select a wafer slot from the grid (1-26)
|
|
95
|
+
- Available wafers are highlighted
|
|
96
|
+
|
|
97
|
+
3. **Open TIFF Data**
|
|
98
|
+
- Click "Open TIFF" to load defect data and images
|
|
99
|
+
- Wafer mapping is displayed automatically
|
|
100
|
+
|
|
101
|
+
4. **Analyze Defects**
|
|
102
|
+
- Click on defect points in the map to view corresponding images
|
|
103
|
+
- Use the defect size slider (COMPLUS4T mode) to filter by threshold
|
|
104
|
+
- Red points indicate defects above threshold, blue points below
|
|
105
|
+
|
|
106
|
+
## File Structure
|
|
107
|
+
|
|
108
|
+
### Standard Mode
|
|
109
|
+
```
|
|
110
|
+
project_directory/
|
|
111
|
+
├── 1/ # Wafer slot 1
|
|
112
|
+
│ ├── data.tif # TIFF image file
|
|
113
|
+
│ ├── recipe_file.001 # KLARF defect file
|
|
114
|
+
│ └── mapping.csv # Generated coordinate mapping
|
|
115
|
+
├── 2/ # Wafer slot 2
|
|
116
|
+
│ ├── data.tif
|
|
117
|
+
│ ├── recipe_file.001
|
|
118
|
+
│ └── mapping.csv
|
|
119
|
+
└── ...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### COMPLUS4T Mode
|
|
123
|
+
```
|
|
124
|
+
project_directory/
|
|
125
|
+
├── data.tiff # Single TIFF file with all defects
|
|
126
|
+
├── recipe_file.001 # KLARF file containing multiple wafer IDs
|
|
127
|
+
├── 16/ # Subfolder created for wafer ID 16
|
|
128
|
+
│ └── mapping.csv # Wafer-specific mapping
|
|
129
|
+
├── 21/ # Subfolder created for wafer ID 21
|
|
130
|
+
│ └── mapping.csv
|
|
131
|
+
└── ...
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## KLARF File Format
|
|
135
|
+
|
|
136
|
+
SEMapp parses KLARF (`.001`) files to extract:
|
|
137
|
+
- **Wafer IDs**: `WaferID "@16";` (COMPLUS4T mode)
|
|
138
|
+
- **Sample Size**: Total number of defects
|
|
139
|
+
- **Die Pitch**: X and Y spacing between dies
|
|
140
|
+
- **Die Origin**: Reference origin coordinates
|
|
141
|
+
- **Sample Center**: Wafer center location
|
|
142
|
+
- **Defect List**: Individual defect data including:
|
|
143
|
+
- Position (X, Y coordinates)
|
|
144
|
+
- Size (nm)
|
|
145
|
+
- Defect ID
|
|
146
|
+
|
|
147
|
+
## Settings Configuration
|
|
148
|
+
|
|
149
|
+
### Image Type Settings
|
|
150
|
+
Configure available image types and scales in the settings dialog:
|
|
151
|
+
- **Scale**: Image scale factor (e.g., 1µm, 5µm, 10µm)
|
|
152
|
+
- **Image Type**: Description of image type (e.g., Optic, SEM)
|
|
153
|
+
|
|
154
|
+
Settings are saved to `settings_data.json` for persistence across sessions.
|
|
155
|
+
|
|
156
|
+
### Data Processing Options
|
|
157
|
+
- **Split & Rename**: Organize files into wafer subfolders
|
|
158
|
+
- **Rename Files**: Batch rename files based on coordinates
|
|
159
|
+
- **Clean Folders**: Remove temporary/unwanted files
|
|
160
|
+
|
|
161
|
+
## Troubleshooting
|
|
162
|
+
|
|
163
|
+
### Common Issues
|
|
164
|
+
|
|
165
|
+
**TIFF file not found**
|
|
166
|
+
- Ensure TIFF files are named `data.tif` (standard mode)
|
|
167
|
+
- Check that TIFF files have `.tiff` or `.tif` extension
|
|
168
|
+
- Verify folder structure matches expected format
|
|
169
|
+
|
|
170
|
+
**Wafer IDs not detected**
|
|
171
|
+
- Confirm KLARF file contains "COMPLUS4T" keyword
|
|
172
|
+
- Check WaferID format: `WaferID "@<number>";`
|
|
173
|
+
- Ensure wafer IDs are between 1 and 26
|
|
174
|
+
|
|
175
|
+
**Coordinates not displaying**
|
|
176
|
+
- Verify KLARF file contains DefectList section
|
|
177
|
+
- Check that DiePitch, DieOrigin, and SampleCenterLocation are defined
|
|
178
|
+
- Ensure defect data format matches expected structure
|
|
179
|
+
|
|
180
|
+
**Images not loading**
|
|
181
|
+
- Confirm TIFF file is valid and not corrupted
|
|
182
|
+
- Check file permissions for read access
|
|
183
|
+
- Verify sufficient memory for large TIFF files
|
|
184
|
+
|
|
185
|
+
## Development
|
|
186
|
+
|
|
187
|
+
### Project Structure
|
|
188
|
+
```
|
|
189
|
+
semapp/
|
|
190
|
+
├── __init__.py # Package initialization
|
|
191
|
+
├── main.py # Application entry point
|
|
192
|
+
├── Layout/ # UI components
|
|
193
|
+
│ ├── create_button.py # Button controls and wafer selection
|
|
194
|
+
│ ├── main_window_att.py # Main window layout
|
|
195
|
+
│ ├── settings.py # Settings dialog
|
|
196
|
+
│ └── styles.py # UI style definitions
|
|
197
|
+
├── Plot/ # Plotting and visualization
|
|
198
|
+
│ ├── frame_attributes.py # Plot frame and mapping
|
|
199
|
+
│ ├── styles.py # Plot styles
|
|
200
|
+
│ └── utils.py # Plotting utilities
|
|
201
|
+
└── Processing/ # Data processing
|
|
202
|
+
└── processing.py # File processing and KLARF parsing
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Contributing
|
|
206
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
207
|
+
## License
|
|
208
|
+
|
|
209
|
+
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
210
|
+
|
|
211
|
+
## Acknowledgments
|
|
212
|
+
|
|
213
|
+
- Built with PyQt5 for the graphical interface
|
|
214
|
+
- Matplotlib for data visualization
|
|
215
|
+
- Pandas for data manipulation
|
|
216
|
+
- Pillow for image processing
|
|
217
|
+
|
|
218
|
+
## Contact
|
|
219
|
+
|
|
220
|
+
For questions, issues, or suggestions, please open an issue on GitHub.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
**Version**: 1.0.2
|
|
225
|
+
**Status**: Production Ready
|
|
226
|
+
|
semapp-1.0.3/README.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# SEMapp - SEM Data Visualization Application
|
|
2
|
+
|
|
3
|
+
A PyQt5-based desktop application for visualizing and analyzing Scanning Electron Microscope (SEM) data. SEMapp supports both standard and COMPLUS4T KLARF file formats, providing an intuitive interface for defect mapping and image analysis.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### Core Functionality
|
|
8
|
+
- **KLARF File Support**: Parse and extract defect data from `.001` (KLARF) files
|
|
9
|
+
- **Dual Mode Operation**:
|
|
10
|
+
- **Standard Mode**: Process SEM data from structured subdirectories
|
|
11
|
+
- **COMPLUS4T Mode**: Handle multi-wafer KLARF files with automatic wafer detection
|
|
12
|
+
- **Interactive Wafer Mapping**: Visual representation of defect positions on wafer surface
|
|
13
|
+
- **Image Visualization**: Display TIFF images corresponding to defect locations
|
|
14
|
+
- **Dynamic Defect Filtering**: Real-time defect filtering based on size threshold (COMPLUS4T mode)
|
|
15
|
+
|
|
16
|
+
### Data Processing
|
|
17
|
+
- **Automatic File Organization**: Organize TIFF files into wafer-specific subfolders
|
|
18
|
+
- **Coordinate Extraction**: Extract and convert defect coordinates from KLARF format
|
|
19
|
+
- **CSV Export**: Save defect mapping data for external analysis
|
|
20
|
+
- **Batch Processing**: Process multiple wafers in a single session
|
|
21
|
+
|
|
22
|
+
### User Interface
|
|
23
|
+
- **Wafer Selection**: Grid-based wafer slot selection (1-26)
|
|
24
|
+
- **Image Type Selection**: Choose from different image scales and types
|
|
25
|
+
- **Defect Size Slider**: Dynamic threshold control for defect visualization (COMPLUS4T mode)
|
|
26
|
+
- **Interactive Plot**: Click on defect positions to view corresponding images
|
|
27
|
+
- **Settings Configuration**: Customize image types and processing parameters
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
### Prerequisites
|
|
32
|
+
- Python 3.7 or higher
|
|
33
|
+
- pip package manager
|
|
34
|
+
|
|
35
|
+
### Install from PyPI
|
|
36
|
+
```bash
|
|
37
|
+
pip install semapp
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Install from Source
|
|
41
|
+
```bash
|
|
42
|
+
git clone https://github.com/yourusername/semapp.git
|
|
43
|
+
cd semapp
|
|
44
|
+
pip install -e .
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Dependencies
|
|
48
|
+
The following packages will be installed automatically:
|
|
49
|
+
- PyQt5 >= 5.15.0
|
|
50
|
+
- matplotlib >= 3.3.0
|
|
51
|
+
- pandas >= 1.1.0
|
|
52
|
+
- Pillow >= 8.0.0
|
|
53
|
+
- numpy >= 1.19.0
|
|
54
|
+
|
|
55
|
+
## Quick Start
|
|
56
|
+
|
|
57
|
+
### Launching the Application
|
|
58
|
+
```bash
|
|
59
|
+
# From command line after installation
|
|
60
|
+
semapp
|
|
61
|
+
|
|
62
|
+
# Or run directly from source
|
|
63
|
+
python -m semapp.main
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Basic Workflow
|
|
67
|
+
|
|
68
|
+
1. **Select a Directory**
|
|
69
|
+
- Click "Select Folder" to choose your data directory
|
|
70
|
+
- Application automatically detects standard or COMPLUS4T mode
|
|
71
|
+
|
|
72
|
+
2. **Choose a Wafer**
|
|
73
|
+
- Select a wafer slot from the grid (1-26)
|
|
74
|
+
- Available wafers are highlighted
|
|
75
|
+
|
|
76
|
+
3. **Open TIFF Data**
|
|
77
|
+
- Click "Open TIFF" to load defect data and images
|
|
78
|
+
- Wafer mapping is displayed automatically
|
|
79
|
+
|
|
80
|
+
4. **Analyze Defects**
|
|
81
|
+
- Click on defect points in the map to view corresponding images
|
|
82
|
+
- Use the defect size slider (COMPLUS4T mode) to filter by threshold
|
|
83
|
+
- Red points indicate defects above threshold, blue points below
|
|
84
|
+
|
|
85
|
+
## File Structure
|
|
86
|
+
|
|
87
|
+
### Standard Mode
|
|
88
|
+
```
|
|
89
|
+
project_directory/
|
|
90
|
+
├── 1/ # Wafer slot 1
|
|
91
|
+
│ ├── data.tif # TIFF image file
|
|
92
|
+
│ ├── recipe_file.001 # KLARF defect file
|
|
93
|
+
│ └── mapping.csv # Generated coordinate mapping
|
|
94
|
+
├── 2/ # Wafer slot 2
|
|
95
|
+
│ ├── data.tif
|
|
96
|
+
│ ├── recipe_file.001
|
|
97
|
+
│ └── mapping.csv
|
|
98
|
+
└── ...
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### COMPLUS4T Mode
|
|
102
|
+
```
|
|
103
|
+
project_directory/
|
|
104
|
+
├── data.tiff # Single TIFF file with all defects
|
|
105
|
+
├── recipe_file.001 # KLARF file containing multiple wafer IDs
|
|
106
|
+
├── 16/ # Subfolder created for wafer ID 16
|
|
107
|
+
│ └── mapping.csv # Wafer-specific mapping
|
|
108
|
+
├── 21/ # Subfolder created for wafer ID 21
|
|
109
|
+
│ └── mapping.csv
|
|
110
|
+
└── ...
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## KLARF File Format
|
|
114
|
+
|
|
115
|
+
SEMapp parses KLARF (`.001`) files to extract:
|
|
116
|
+
- **Wafer IDs**: `WaferID "@16";` (COMPLUS4T mode)
|
|
117
|
+
- **Sample Size**: Total number of defects
|
|
118
|
+
- **Die Pitch**: X and Y spacing between dies
|
|
119
|
+
- **Die Origin**: Reference origin coordinates
|
|
120
|
+
- **Sample Center**: Wafer center location
|
|
121
|
+
- **Defect List**: Individual defect data including:
|
|
122
|
+
- Position (X, Y coordinates)
|
|
123
|
+
- Size (nm)
|
|
124
|
+
- Defect ID
|
|
125
|
+
|
|
126
|
+
## Settings Configuration
|
|
127
|
+
|
|
128
|
+
### Image Type Settings
|
|
129
|
+
Configure available image types and scales in the settings dialog:
|
|
130
|
+
- **Scale**: Image scale factor (e.g., 1µm, 5µm, 10µm)
|
|
131
|
+
- **Image Type**: Description of image type (e.g., Optic, SEM)
|
|
132
|
+
|
|
133
|
+
Settings are saved to `settings_data.json` for persistence across sessions.
|
|
134
|
+
|
|
135
|
+
### Data Processing Options
|
|
136
|
+
- **Split & Rename**: Organize files into wafer subfolders
|
|
137
|
+
- **Rename Files**: Batch rename files based on coordinates
|
|
138
|
+
- **Clean Folders**: Remove temporary/unwanted files
|
|
139
|
+
|
|
140
|
+
## Troubleshooting
|
|
141
|
+
|
|
142
|
+
### Common Issues
|
|
143
|
+
|
|
144
|
+
**TIFF file not found**
|
|
145
|
+
- Ensure TIFF files are named `data.tif` (standard mode)
|
|
146
|
+
- Check that TIFF files have `.tiff` or `.tif` extension
|
|
147
|
+
- Verify folder structure matches expected format
|
|
148
|
+
|
|
149
|
+
**Wafer IDs not detected**
|
|
150
|
+
- Confirm KLARF file contains "COMPLUS4T" keyword
|
|
151
|
+
- Check WaferID format: `WaferID "@<number>";`
|
|
152
|
+
- Ensure wafer IDs are between 1 and 26
|
|
153
|
+
|
|
154
|
+
**Coordinates not displaying**
|
|
155
|
+
- Verify KLARF file contains DefectList section
|
|
156
|
+
- Check that DiePitch, DieOrigin, and SampleCenterLocation are defined
|
|
157
|
+
- Ensure defect data format matches expected structure
|
|
158
|
+
|
|
159
|
+
**Images not loading**
|
|
160
|
+
- Confirm TIFF file is valid and not corrupted
|
|
161
|
+
- Check file permissions for read access
|
|
162
|
+
- Verify sufficient memory for large TIFF files
|
|
163
|
+
|
|
164
|
+
## Development
|
|
165
|
+
|
|
166
|
+
### Project Structure
|
|
167
|
+
```
|
|
168
|
+
semapp/
|
|
169
|
+
├── __init__.py # Package initialization
|
|
170
|
+
├── main.py # Application entry point
|
|
171
|
+
├── Layout/ # UI components
|
|
172
|
+
│ ├── create_button.py # Button controls and wafer selection
|
|
173
|
+
│ ├── main_window_att.py # Main window layout
|
|
174
|
+
│ ├── settings.py # Settings dialog
|
|
175
|
+
│ └── styles.py # UI style definitions
|
|
176
|
+
├── Plot/ # Plotting and visualization
|
|
177
|
+
│ ├── frame_attributes.py # Plot frame and mapping
|
|
178
|
+
│ ├── styles.py # Plot styles
|
|
179
|
+
│ └── utils.py # Plotting utilities
|
|
180
|
+
└── Processing/ # Data processing
|
|
181
|
+
└── processing.py # File processing and KLARF parsing
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Contributing
|
|
185
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
186
|
+
## License
|
|
187
|
+
|
|
188
|
+
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
189
|
+
|
|
190
|
+
## Acknowledgments
|
|
191
|
+
|
|
192
|
+
- Built with PyQt5 for the graphical interface
|
|
193
|
+
- Matplotlib for data visualization
|
|
194
|
+
- Pandas for data manipulation
|
|
195
|
+
- Pillow for image processing
|
|
196
|
+
|
|
197
|
+
## Contact
|
|
198
|
+
|
|
199
|
+
For questions, issues, or suggestions, please open an issue on GitHub.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
**Version**: 1.0.2
|
|
204
|
+
**Status**: Production Ready
|
|
205
|
+
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Semapp
|
|
3
|
+
Version: 1.0.3
|
|
4
|
+
Summary: Package for SEM visualization
|
|
5
|
+
Author-email: Thibaut Meyer <thibaut.meyer3@gmail.com>
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/thi-mey/SEMapp
|
|
8
|
+
Keywords: SEM,GUI
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.9
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
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
|
|
18
|
+
Requires-Dist: PyQt5==5.15.11
|
|
19
|
+
Requires-Dist: PyQt5_sip==12.17.0
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
|
|
22
|
+
# SEMapp - SEM Data Visualization Application
|
|
23
|
+
|
|
24
|
+
A PyQt5-based desktop application for visualizing and analyzing Scanning Electron Microscope (SEM) data. SEMapp supports both standard and COMPLUS4T KLARF file formats, providing an intuitive interface for defect mapping and image analysis.
|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
### Core Functionality
|
|
29
|
+
- **KLARF File Support**: Parse and extract defect data from `.001` (KLARF) files
|
|
30
|
+
- **Dual Mode Operation**:
|
|
31
|
+
- **Standard Mode**: Process SEM data from structured subdirectories
|
|
32
|
+
- **COMPLUS4T Mode**: Handle multi-wafer KLARF files with automatic wafer detection
|
|
33
|
+
- **Interactive Wafer Mapping**: Visual representation of defect positions on wafer surface
|
|
34
|
+
- **Image Visualization**: Display TIFF images corresponding to defect locations
|
|
35
|
+
- **Dynamic Defect Filtering**: Real-time defect filtering based on size threshold (COMPLUS4T mode)
|
|
36
|
+
|
|
37
|
+
### Data Processing
|
|
38
|
+
- **Automatic File Organization**: Organize TIFF files into wafer-specific subfolders
|
|
39
|
+
- **Coordinate Extraction**: Extract and convert defect coordinates from KLARF format
|
|
40
|
+
- **CSV Export**: Save defect mapping data for external analysis
|
|
41
|
+
- **Batch Processing**: Process multiple wafers in a single session
|
|
42
|
+
|
|
43
|
+
### User Interface
|
|
44
|
+
- **Wafer Selection**: Grid-based wafer slot selection (1-26)
|
|
45
|
+
- **Image Type Selection**: Choose from different image scales and types
|
|
46
|
+
- **Defect Size Slider**: Dynamic threshold control for defect visualization (COMPLUS4T mode)
|
|
47
|
+
- **Interactive Plot**: Click on defect positions to view corresponding images
|
|
48
|
+
- **Settings Configuration**: Customize image types and processing parameters
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
### Prerequisites
|
|
53
|
+
- Python 3.7 or higher
|
|
54
|
+
- pip package manager
|
|
55
|
+
|
|
56
|
+
### Install from PyPI
|
|
57
|
+
```bash
|
|
58
|
+
pip install semapp
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Install from Source
|
|
62
|
+
```bash
|
|
63
|
+
git clone https://github.com/yourusername/semapp.git
|
|
64
|
+
cd semapp
|
|
65
|
+
pip install -e .
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Dependencies
|
|
69
|
+
The following packages will be installed automatically:
|
|
70
|
+
- PyQt5 >= 5.15.0
|
|
71
|
+
- matplotlib >= 3.3.0
|
|
72
|
+
- pandas >= 1.1.0
|
|
73
|
+
- Pillow >= 8.0.0
|
|
74
|
+
- numpy >= 1.19.0
|
|
75
|
+
|
|
76
|
+
## Quick Start
|
|
77
|
+
|
|
78
|
+
### Launching the Application
|
|
79
|
+
```bash
|
|
80
|
+
# From command line after installation
|
|
81
|
+
semapp
|
|
82
|
+
|
|
83
|
+
# Or run directly from source
|
|
84
|
+
python -m semapp.main
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Basic Workflow
|
|
88
|
+
|
|
89
|
+
1. **Select a Directory**
|
|
90
|
+
- Click "Select Folder" to choose your data directory
|
|
91
|
+
- Application automatically detects standard or COMPLUS4T mode
|
|
92
|
+
|
|
93
|
+
2. **Choose a Wafer**
|
|
94
|
+
- Select a wafer slot from the grid (1-26)
|
|
95
|
+
- Available wafers are highlighted
|
|
96
|
+
|
|
97
|
+
3. **Open TIFF Data**
|
|
98
|
+
- Click "Open TIFF" to load defect data and images
|
|
99
|
+
- Wafer mapping is displayed automatically
|
|
100
|
+
|
|
101
|
+
4. **Analyze Defects**
|
|
102
|
+
- Click on defect points in the map to view corresponding images
|
|
103
|
+
- Use the defect size slider (COMPLUS4T mode) to filter by threshold
|
|
104
|
+
- Red points indicate defects above threshold, blue points below
|
|
105
|
+
|
|
106
|
+
## File Structure
|
|
107
|
+
|
|
108
|
+
### Standard Mode
|
|
109
|
+
```
|
|
110
|
+
project_directory/
|
|
111
|
+
├── 1/ # Wafer slot 1
|
|
112
|
+
│ ├── data.tif # TIFF image file
|
|
113
|
+
│ ├── recipe_file.001 # KLARF defect file
|
|
114
|
+
│ └── mapping.csv # Generated coordinate mapping
|
|
115
|
+
├── 2/ # Wafer slot 2
|
|
116
|
+
│ ├── data.tif
|
|
117
|
+
│ ├── recipe_file.001
|
|
118
|
+
│ └── mapping.csv
|
|
119
|
+
└── ...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### COMPLUS4T Mode
|
|
123
|
+
```
|
|
124
|
+
project_directory/
|
|
125
|
+
├── data.tiff # Single TIFF file with all defects
|
|
126
|
+
├── recipe_file.001 # KLARF file containing multiple wafer IDs
|
|
127
|
+
├── 16/ # Subfolder created for wafer ID 16
|
|
128
|
+
│ └── mapping.csv # Wafer-specific mapping
|
|
129
|
+
├── 21/ # Subfolder created for wafer ID 21
|
|
130
|
+
│ └── mapping.csv
|
|
131
|
+
└── ...
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## KLARF File Format
|
|
135
|
+
|
|
136
|
+
SEMapp parses KLARF (`.001`) files to extract:
|
|
137
|
+
- **Wafer IDs**: `WaferID "@16";` (COMPLUS4T mode)
|
|
138
|
+
- **Sample Size**: Total number of defects
|
|
139
|
+
- **Die Pitch**: X and Y spacing between dies
|
|
140
|
+
- **Die Origin**: Reference origin coordinates
|
|
141
|
+
- **Sample Center**: Wafer center location
|
|
142
|
+
- **Defect List**: Individual defect data including:
|
|
143
|
+
- Position (X, Y coordinates)
|
|
144
|
+
- Size (nm)
|
|
145
|
+
- Defect ID
|
|
146
|
+
|
|
147
|
+
## Settings Configuration
|
|
148
|
+
|
|
149
|
+
### Image Type Settings
|
|
150
|
+
Configure available image types and scales in the settings dialog:
|
|
151
|
+
- **Scale**: Image scale factor (e.g., 1µm, 5µm, 10µm)
|
|
152
|
+
- **Image Type**: Description of image type (e.g., Optic, SEM)
|
|
153
|
+
|
|
154
|
+
Settings are saved to `settings_data.json` for persistence across sessions.
|
|
155
|
+
|
|
156
|
+
### Data Processing Options
|
|
157
|
+
- **Split & Rename**: Organize files into wafer subfolders
|
|
158
|
+
- **Rename Files**: Batch rename files based on coordinates
|
|
159
|
+
- **Clean Folders**: Remove temporary/unwanted files
|
|
160
|
+
|
|
161
|
+
## Troubleshooting
|
|
162
|
+
|
|
163
|
+
### Common Issues
|
|
164
|
+
|
|
165
|
+
**TIFF file not found**
|
|
166
|
+
- Ensure TIFF files are named `data.tif` (standard mode)
|
|
167
|
+
- Check that TIFF files have `.tiff` or `.tif` extension
|
|
168
|
+
- Verify folder structure matches expected format
|
|
169
|
+
|
|
170
|
+
**Wafer IDs not detected**
|
|
171
|
+
- Confirm KLARF file contains "COMPLUS4T" keyword
|
|
172
|
+
- Check WaferID format: `WaferID "@<number>";`
|
|
173
|
+
- Ensure wafer IDs are between 1 and 26
|
|
174
|
+
|
|
175
|
+
**Coordinates not displaying**
|
|
176
|
+
- Verify KLARF file contains DefectList section
|
|
177
|
+
- Check that DiePitch, DieOrigin, and SampleCenterLocation are defined
|
|
178
|
+
- Ensure defect data format matches expected structure
|
|
179
|
+
|
|
180
|
+
**Images not loading**
|
|
181
|
+
- Confirm TIFF file is valid and not corrupted
|
|
182
|
+
- Check file permissions for read access
|
|
183
|
+
- Verify sufficient memory for large TIFF files
|
|
184
|
+
|
|
185
|
+
## Development
|
|
186
|
+
|
|
187
|
+
### Project Structure
|
|
188
|
+
```
|
|
189
|
+
semapp/
|
|
190
|
+
├── __init__.py # Package initialization
|
|
191
|
+
├── main.py # Application entry point
|
|
192
|
+
├── Layout/ # UI components
|
|
193
|
+
│ ├── create_button.py # Button controls and wafer selection
|
|
194
|
+
│ ├── main_window_att.py # Main window layout
|
|
195
|
+
│ ├── settings.py # Settings dialog
|
|
196
|
+
│ └── styles.py # UI style definitions
|
|
197
|
+
├── Plot/ # Plotting and visualization
|
|
198
|
+
│ ├── frame_attributes.py # Plot frame and mapping
|
|
199
|
+
│ ├── styles.py # Plot styles
|
|
200
|
+
│ └── utils.py # Plotting utilities
|
|
201
|
+
└── Processing/ # Data processing
|
|
202
|
+
└── processing.py # File processing and KLARF parsing
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Contributing
|
|
206
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
207
|
+
## License
|
|
208
|
+
|
|
209
|
+
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
210
|
+
|
|
211
|
+
## Acknowledgments
|
|
212
|
+
|
|
213
|
+
- Built with PyQt5 for the graphical interface
|
|
214
|
+
- Matplotlib for data visualization
|
|
215
|
+
- Pandas for data manipulation
|
|
216
|
+
- Pillow for image processing
|
|
217
|
+
|
|
218
|
+
## Contact
|
|
219
|
+
|
|
220
|
+
For questions, issues, or suggestions, please open an issue on GitHub.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
**Version**: 1.0.2
|
|
225
|
+
**Status**: Production Ready
|
|
226
|
+
|