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
Copy file name to clipboardExpand all lines: README.md
+82-66Lines changed: 82 additions & 66 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,71 +48,83 @@
48
48
49
49
</div>
50
50
51
-
---
52
51
---
53
52
54
53
## Overview
55
54
56
55
PICA (Python-based Instrument Control and Automation) is a modular, open-source software suite specifically designed to automate complex characterisation experiments and provide a robust framework for automating laboratory instruments in materials science and condensed matter physics research.
56
+
57
57
Developed to operate as a custom laboratory-built measurement system, PICA provides a unifying graphical user interface (GUI) for orchestrating high-precision instruments, specifically Keithley SourceMeters/Nanovoltmeters, Lakeshore Temperature Controllers, and Keysight LCR Meters. The suite regulates the cryogenic environment to perform automated protocols such as temperature-dependent resistivity, current-voltage (I-V) characteristics, and pyroelectric current measurements.
58
-
The suite features a central graphical user interface (GUI), the **PICA Launcher**, which serves as a dashboard for managing and executing a variety of characterisation experiments. Built to streamline data acquisition and enhance experimental reproducibility, PICA leverages Python's `multiprocessing` library to ensure high stability by isolating each measurement process.
59
-
.
60
58
61
-
---
59
+
The suite features a central graphical user interface (GUI), the **PICA Launcher**, which serves as a dashboard for managing and executing a variety of characterisation experiments. Built to streamline data acquisition and enhance experimental reproducibility, PICA leverages Python's `multiprocessing` library to ensure high stability by isolating each measurement process.
62
60
63
61
## Table of Contents
64
62
63
+
-[Overview](#overview)
64
+
-[What's the Need for PICA](#whats-the-need-for-pica)
PICA tries to fill a clear gap for an open-source, laboratory-ready framework that provides well-tested measurement protocols together with an intuitive user interface, enabling experimentalists to perform sophisticated measurements without directly interacting with the source code. At the same time, implementing it in open-source Python would preserve the ability for advanced users to modify virtually any component of the system and contribute enhancements back to the project. Such a framework would foster a more open and collaborative scientific ecosystem, facilitating reproducibility, extensibility, and community-driven development in experimental physics research.
77
81
78
82
## Architecture
79
83
80
84
The core design philosophy of PICA is the separation of concerns, implemented through a distinct **GUI-Backend** architecture for each measurement module.
81
85
82
-
-**GUI (Frontend):** Each measurement has a dedicated GUI script (e.g., `IV_K2400_GUI.py`) built with `Tkinter`. It is responsible for user interaction, parameter input, and real-time data visualization using `Matplotlib`.
83
-
-**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.
86
+
-**GUI (Frontend):** Each measurement has a dedicated GUI script (e.g., `IV_K6221_DC_Sweep_GUI.py`) built with `tkinter`. It is responsible for user interaction, parameter input, and real-time data visualisation using `matplotlib`.
87
+
-**Backend:** The instrument control logic is encapsulated in separate classes. This layer handles all `pyvisa` communication, SCPI command parsing, and data retrieval.
84
88
-**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.
85
-
-**Inter-Process Communication:** The frontend and backend communicate via thread-safe `multiprocessing.Queues`, allowing for high-speed data transfer without race conditions.
89
+
-**Inter-Process Communication:** The frontend and backend communicate via thread-safe `multiprocessing.Queue`, allowing for high-speed data transfer without race conditions.
86
90
87
91
---
88
92
89
93
## Core Features
90
-
-**Modular Design:** Each experimental setup is a self-contained module, making the codebase easy to extend.
91
-
-**Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
92
-
-**Integrated VISA Instrument Scanner:** An embedded utility for identifying and troubleshooting GPIB/VISA connections via the NI-VISA backend.
93
-
-**Embedded Documentation:** In-application viewer for technical manuals and project guides.
94
-
-**System Console Log:** A real-time logging system that provides status updates and error diagnostics.
94
+
95
+
***Accessibility:** PICA provides a professional dashboard that enables researchers without programming experience to configure and execute complex measurements.
96
+
***Physical Validation:** PICA protocols are routinely employed for cryogenic transport measurements in the temperature range of 80–320 K at the UGC–DAE Consortium for Scientific Research, Mumbai Centre. Particular emphasis is placed on ensuring that the protocols are physically valid and that any artefacts arising from instrument output start‑up transients, synchronisation errors, or other physical anomalies are identified and eliminated.
97
+
***Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
98
+
***CLI Mode:** A new command-line interface for headless operation (e.g., via SSH or Raspberry Pi).
99
+
***Isolated Process Execution:** Each script operates in a discrete process, guaranteeing application stability.
100
+
***Integrated VISA Instrument Scanner:** An embedded utility for discovering and troubleshooting connections.
101
+
***Operational Transparency:** Unlike black-box solutions, PICA exposes real-time logs that facilitate debugging in the event of errors or anomalies, thereby enhancing scientific reproducibility.
102
+
***Automated Testing:** Integrated CI/CD pipelines for logic verification.
95
103
96
104
---
97
105
106
+
## Instrument Support
107
+
108
+
These are the instruments currently supported by PICA. We are working to integrate additional devices and to extend the range of measurement protocols available for the existing instruments.
109
+
98
110
## Instrument Specifications
99
111
100
112
### Advanced Cryogenic Transport Measurement System
101
113
102
-
This software controls a facility designed for characterizing the full spectrum of electronic transport properties in cryogenic environments (80 K to 320 K). The setup integrates multiple high-precision instruments to cover a resistance range spanning 24 orders of magnitude.
114
+
This software controls a facility designed for characterising the full spectrum of electronic transport properties in cryogenic environments (80 K to 320 K). The setup integrates multiple high-precision instruments to cover a resistance range spanning 24 orders of magnitude.
103
115
104
116
| Module | Configuration / Instrument | Use Case | Resistance Range |
PICA is now structured as a standard Python package. Follow these steps to install it in editable mode, which allows you to modify code and see changes immediately.
127
+
PICA is structured as a standard Python package. Follow these steps to install it in editable mode, which allows you to modify code and see changes immediately.
116
128
117
129
1.**Clone the Repository**
118
130
```bash
@@ -139,7 +151,11 @@ PICA is now structured as a standard Python package. Follow these steps to insta
139
151
140
152
## Running the Software
141
153
142
-
You can now run PICA in two modes: the standard Graphical User Interface (GUI) or the new Command Line Interface (CLI) for headless operation.
154
+
You can now run PICA in two modes: the standard Graphical User Interface (GUI) or the older Command Line Interface (CLI) for headless operation.
155
+
156
+
I strongly recommend using the graphical user interface (GUI) version, as it represents the finalized protocols and provides laboratory-ready applications. By contrast, the command-line interface (CLI) tools correspond to earlier prototype scripts that were used during protocol development prior to completion of the full-stack program. Consequently, the CLI tools are outdated and no longer actively maintained. They are included here primarily for the sake of completeness and may still be useful for users who wish to learn about the underlying interfacing mechanisms.
157
+
158
+
In the future, I also plan to develop executable (`.exe`) versions in order to further simplify setup and facilitate rapid adoption.
143
159
144
160
1. **Graphical Launcher (GUI)**
145
161
The standard dashboard for desktop users.
@@ -148,7 +164,7 @@ You can now run PICA in two modes: the standard Graphical User Interface (GUI) o
148
164
```
149
165
150
166
2. **Command Line Interface (CLI)**
151
-
New inv.17.0.0: A text-based menu forrunning measurements via SSH, on Raspberry Pis, orin automated environments without a monitor.
167
+
In v.17.0: A text-based menu forrunning measurements via SSH, on Raspberry Pis, orin automated environments without a monitor.
152
168
```bash
153
169
python pica_cli.py
154
170
```
@@ -181,48 +197,44 @@ To run the tests locally:
181
197
182
198
## Project History & Evolution
183
199
184
-
PICA has evolved from a collection of offline utility scripts into a modular software suite. The development timeline highlights the shiftfrom manual instrument handling to a fully automated, asynchronous control system.
200
+
PICA has grown from offline utility scripts into a modular, automated, asynchronous control suite, moving from manual instrument handling to fully automated operation.
185
201
186
-
>**�� 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 [`Change_Logs.md`](Change_Logs.md).
202
+
>**Project Lore:** For a full chronological development log, including offline prototyping and detailed version history, see [`CHANGELOG.md`](CHANGELOG.md).
187
203
188
-
---
189
-
[17.0.0] - 2025-12-02 (Current)
190
-
Changed
204
+
### v17.0: Naming & Folder Standardization
205
+
*2025-12-02 (Current)*
191
206
192
-
Directory Structure: Refactored codebase into a professional project structure; moved numerous files to appropriate subdirectories for better organization.
207
+
- **Directory Structure:** Refactored into a professional layout with organized subdirectories.
208
+
- **Versioning:** Standardized names and adopted Semantic Versioning (v17.0.0).
193
209
194
-
Versioning: Standardized version naming conventions. Adopted Semantic Versioning (v17.0.0).
210
+
**Research & Documentation**
211
+
- **Paper Draft:** First research paper draft completed and presented to Dr. Sudip Mukherjee.
212
+
- **Feedback:** Received key feedback on integrating ATMS (Advanced Transport Measurement Systems).
195
213
196
-
Research & Documentation
214
+
**[Community] - 2025-12-01**
215
+
- **Launch:** PICA announced on Hacker News.
197
216
198
-
Paper Draft: Completed and presented the first draft of the research paper to Dr. Sudip Mukherjee.
217
+
### v15.0: JOSS Submission & Professionalization
218
+
*Released November 2025*
199
219
200
-
Feedback: Received critical feedback regarding the inclusion of ATMS (Advanced Trasport Measuremenet Systems).
220
+
- **CI/CD:** Added automated tests via GitHub Actions.
221
+
- **Refactoring:** Reorganized code to meet JOSS standards.
222
+
- **Validation:** Ongoing physical validation of hardware timing.
This period marked the transition to the **GUI-Backend isolated architecture**.
217
-
* **Multiprocessing:** Implementation of `multiprocessing` to separate UI threads from instrument control loops.
218
-
* **UI Standardization:** Adoption of a unified dark-themed UI across all measurement modules.
219
-
* **New Modes:** Added "Passive Sensing" modes for R-T measurements and integrated plotting utilities.
220
-
221
-
### **2022 – 2024: Inception & Prototyping**
222
-
* **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).
223
-
* **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.
224
-
* *Project Concept:* Proposed by Dr. Sudip Mukherjee to automate characterization workflows.
225
-
* *Early Prototypes:* Built iteratively alongside hardware upgrades and cryogenic probe development at UGC-DAE CSR.
234
+
- **2024 (Migration):** Moved from offline lab systems to GitHub; organized scripts into instrument modules (Keithley/Lakeshore).
235
+
- **2022 (Origins):** Started in an air-gapped lab with `pyvisa` scripts replacing manual logging.
236
+
- *Concept:* Proposed by Dr. Sudip Mukherjee to automate characterization workflows.
237
+
- *Prototypes:* Built alongside hardware upgrades and cryogenic probe work at UGC-DAE CSR.
226
238
227
239
---
228
240
@@ -241,22 +253,23 @@ If you use this software in your research, please cite it using the following Bi
241
253
@software{Deshmukh_PICA_2025,
242
254
author = {Deshmukh, Prathamesh Keshao and Mukherjee, Sudip},
243
255
title = {{PICA: Python-based Instrument Control and Automation Software Suite}},
@@ -269,4 +282,7 @@ Financial support for this work was provided under SERB-CRG project grant No. CR
269
282
270
283
## License
271
284
272
-
This project is licensed under the MIT License - see the [LICENSE](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/blob/main/LICENSE) file for details.
285
+
This project is licensed under the MIT License - see the [LICENSE](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/blob/main/LICENSE) file for details.
0 commit comments