You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -28,54 +36,43 @@ A key architectural feature is the use of **isolated process execution** for eac
28
36
>
29
37
> Recently, significant updates were made to the codebase to integrate **Automated CI/CD Testing** (simulations and logic checks). While these automated tests pass successfully, the refactoring required for them may have introduced subtle timing or hardware-specific regressions. **A comprehensive round of manual validation on the physical instruments is currently underway** to ensure full operational stability.
The core design philosophy of PICA is the separation of concerns, implemented through a distinct **GUI-Backend** architecture for each measurement module.
62
59
63
-
-**GUI (Frontend):** Each measurement has a dedicated GUI script (e.g., `IV_K2400_GUI_v5.py`) built with `Tkinter`. It is responsible for user interaction, parameter input, and real-time data visualization using `Matplotlib`.
64
-
-**Backend:** The instrument control logic is encapsulated in separate classes (e.g., `Keithley2400_Backend`). This layer handles all `PyVISA` communication, SCPI command parsing, and data retrieval.
65
-
-**Process Isolation:** When a measurement starts, the GUI launches the backend logic in a separate, isolated process. This prevents a hardware timeout or script error from crashing the entire application suite.
66
-
-**Inter-Process Communication:** The frontend and backend communicate via thread-safe `multiprocessing.Queues`, allowing for high-speed data transfer without race conditions.
60
+
-**GUI (Frontend):** Each measurement has a dedicated GUI script (e.g., `IV_K2400_GUI_v5.py`) built with `Tkinter`. It is responsible for user interaction, parameter input, and real-time data visualization using `Matplotlib`.
61
+
-**Backend:** The instrument control logic is encapsulated in separate classes (e.g., `Keithley2400_Backend`). This layer handles all `PyVISA` communication, SCPI command parsing, and data retrieval.
62
+
-**Process Isolation:** When a measurement starts, the GUI launches the backend logic in a separate, isolated process. This prevents a hardware timeout or script error from crashing the entire application suite.
63
+
-**Inter-Process Communication:** The frontend and backend communicate via thread-safe `multiprocessing.Queues`, allowing for high-speed data transfer without race conditions.
67
64
68
-
-----
65
+
---
69
66
70
67
## Core Features
71
68
72
-
-**Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
73
-
-**Integrated VISA Instrument Scanner:** An embedded utility for identifying and troubleshooting GPIB/VISA connections via the NI-VISA backend.
74
-
-**Modular Design:** Each experimental setup is a self-contained module, making the codebase easy to extend.
75
-
-**Embedded Documentation:** In-application viewer for technical manuals and project guides.
76
-
-**System Console Log:** A real-time logging system that provides status updates and error diagnostics.
69
+
-**Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
70
+
-**Integrated VISA Instrument Scanner:** An embedded utility for identifying and troubleshooting GPIB/VISA connections via the NI-VISA backend.
71
+
-**Modular Design:** Each experimental setup is a self-contained module, making the codebase easy to extend.
72
+
-**Embedded Documentation:** In-application viewer for technical manuals and project guides.
73
+
-**System Console Log:** A real-time logging system that provides status updates and error diagnostics.
77
74
78
-
-----
75
+
---
79
76
80
77
## Instrument Specifications
81
78
@@ -90,7 +87,7 @@ This software controls a facility designed for characterizing the full spectrum
Recommended to verify dependencies and avoid conflicts.
113
-
114
109
```bash
115
110
# Create the virtual environment
116
111
python -m venv venv
117
-
112
+
118
113
# Activate (Windows)
119
114
venv\Scripts\activate
120
115
# Activate (macOS/Linux)
121
116
source venv/bin/activate
122
117
```
123
118
124
119
3. **Install Dependencies**
125
-
126
120
```bash
127
121
pip install -r requirements.txt
128
122
```
129
123
130
124
4. **Launch the Application**
131
-
132
125
```bash
133
126
python PICA_v6.py
134
127
```
135
128
136
-
-----
129
+
---
137
130
138
131
## 🧪 Running Tests
139
132
@@ -142,25 +135,22 @@ This repository includes a robust test suite using `pytest`. It mocks hardware i
142
135
To run the tests locally:
143
136
144
137
1. **Install Test Dependencies:**
145
-
146
138
```bash
147
139
pip install pytest pytest-cov flake8
148
140
```
149
141
150
142
2. **Run the Test Suite:**
151
-
152
143
```bash
153
144
python -m pytest
154
145
```
155
146
156
147
3. **Generate Coverage Report:**
157
-
158
148
```bash
159
149
# Generates an HTML report in the htmlcov/ directory
160
150
python -m pytest --cov=. --cov-report=html
161
151
```
162
152
163
-
-----
153
+
---
164
154
165
155
## Project History & Evolution
166
156
@@ -169,38 +159,33 @@ PICA has evolved from a collection of offline utility scripts into a modular sof
169
159
>**📜 Project Lore:** For a detailed chronological log of the project's development history, including the offline prototyping phase and specific version changelogs, please refer to [`docs/Change_Logs.md`](docs/Change_Logs.md).
This period marked the transition to the **GUI-Backend isolated architecture**.
184
-
185
-
* **Multiprocessing:** Implementation of `multiprocessing` to separate UI threads from instrument control loops.
186
-
* **UI Standardization:** Adoption of a unified dark-themed UI across all measurement modules.
187
-
* **New Modes:** Added "Passive Sensing" modes for R-T measurements and integrated plotting utilities.
171
+
* **Multiprocessing:** Implementation of `multiprocessing` to separate UI threads from instrument control loops.
172
+
* **UI Standardization:** Adoption of a unified dark-themed UI across all measurement modules.
173
+
* **New Modes:** Added "Passive Sensing" modes for R-T measurements and integrated plotting utilities.
188
174
189
175
### **2022 – 2024: Inception & Prototyping**
176
+
* **2024 (Migration):** The codebase was migrated from offline laboratory systems to GitHub. The structure was reorganized from loose scripts into categorized instrument measurement modules (Keithley/Lakeshore).
177
+
* **2022 (Origins):** Development began in an air-gapped laboratory environment. Initial work focused on proof-of-concept scripts using `PyVISA` to replace manual data logging.
178
+
* *Project Concept:* Proposed by Dr. Sudip Mukherjee to automate characterization workflows.
179
+
* *Early Prototypes:* Built iteratively alongside hardware upgrades and cryogenic probe development at UGC-DAE CSR.
190
180
191
-
* **2024 (Migration):** The codebase was migrated from offline laboratory System to GitHub. The structure was reorganized from loose scripts into categorized instrument measuremenet modules (Keithley/Lakeshore).
192
-
* **2022 (Origins):** Development began in an air-gapped laboratory environment. Initial work focused on proof-of-concept scripts using `PyVISA` to replace manual data logging.
193
-
* *Project Concept:* Proposed by Dr. Sudip Mukherjee to automate characterization workflows.
194
-
* *Early Prototypes:* Built iteratively alongside hardware upgrades and cryogenic probe development at UGC-DAE CSR.
195
-
196
-
-----
181
+
---
197
182
198
183
## 📚 Resources & Documentation
199
184
200
-
* **User Manual:** Detailed setup and troubleshooting guides are available in [docs/User\_Manual.md](https://www.google.com/search?q=docs/User_Manual.md).
201
-
* **Instrument Manuals:** Original PDF manuals for the supported hardware are located in `assets/Manuals/`.
185
+
* **User Manual:** Detailed setup and troubleshooting guides are available in [docs/User_Manual.md](docs/User_Manual.md).
186
+
* **Instrument Manuals:** Original PDF manuals for the supported hardware are located in `assets/Manuals/`.
202
187
203
-
-----
188
+
---
204
189
205
190
## Citation
206
191
@@ -214,9 +199,9 @@ If you use this software in your research, please cite it using the following Bi
0 commit comments