Skip to content

Commit b0a8fdd

Browse files
Improved readme
1 parent 7ccdc71 commit b0a8fdd

1 file changed

Lines changed: 82 additions & 66 deletions

File tree

README.md

Lines changed: 82 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -48,71 +48,83 @@
4848

4949
</div>
5050

51-
---
5251
---
5352

5453
## Overview
5554

5655
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+
5757
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-
.
6058

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.
6260

6361
## Table of Contents
6462

63+
- [Overview](#overview)
64+
- [What's the Need for PICA](#whats-the-need-for-pica)
6565
- [Architecture](#architecture)
6666
- [Core Features](#core-features)
67+
- [Instrument Support](#instrument-support)
6768
- [Instrument Specifications](#instrument-specifications)
68-
- [Getting Started](#-getting-started)
69-
- [Running Tests](#-running-tests)
69+
- [Getting Started](#getting-started)
70+
- [Running the Software](#running-the-software)
71+
- [Running Tests](#running-tests)
7072
- [Project History & Evolution](#project-history--evolution)
71-
- [Resources & Documentation](#-resources--documentation)
73+
- [Resources & Documentation](#resources--documentation)
7274
- [Citation](#citation)
73-
- [License](#license)
7475
- [Authors & Acknowledgments](#authors--acknowledgments)
76+
- [License](#license)
7577

76-
---
78+
## What's the Need for PICA
79+
80+
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.
7781

7882
## Architecture
7983

8084
The core design philosophy of PICA is the separation of concerns, implemented through a distinct **GUI-Backend** architecture for each measurement module.
8185

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.
8488
- **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.
8690

8791
---
8892

8993
## 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.
95103

96104
---
97105

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+
98110
## Instrument Specifications
99111

100112
### Advanced Cryogenic Transport Measurement System
101113

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.
103115

104116
| Module | Configuration / Instrument | Use Case | Resistance Range |
105117
| :--- | :--- | :--- | :--- |
106-
| **1. Low-Resistance (Delta Mode)** | **Keithley 6221** (Current Source) + **K2182** (Nanovoltmeter) | Superconductors & metallic films; actively cancels thermal EMFs. | $10 n\Omega$ to $100 M\Omega$ |
107-
| **2. Mid-Resistance (Standard)** | **Keithley 2400** SourceMeter | Semiconductors, oxides, general transport. | $100 \mu\Omega$ to $200 M\Omega$ |
108-
| **3. Mid-Resistance (High-Precision)** | **Keithley 2400** + **K2182** | Detecting subtle phase transitions. | $1 \mu\Omega$ to $100 M\Omega$ |
109-
| **4. High-Resistance** | **Keithley 6517B** Electrometer | Dielectrics, polymers, & ceramics. | $1 \Omega$ to $10^{16} \Omega$ |
118+
| **1. Low-Resistance (Delta Mode)** | **Keithley 6221** (Current Source) + **K2182** (Nanovoltmeter) | Superconductors & metallic films; actively cancels thermal EMFs. | $10\,\text{n}\Omega$ to $100\,\text{M}\Omega$ |
119+
| **2. Mid-Resistance (Standard)** | **Keithley 2400** SourceMeter | Semiconductors, oxides, general transport. | $100\,\mu\Omega$ to $200\,\text{M}\Omega$ |
120+
| **3. Mid-Resistance (High-Precision)** | **Keithley 2400** + **K2182** | Detecting subtle phase transitions. | $1\,\mu\Omega$ to $100\,\text{M}\Omega$ |
121+
| **4. High-Resistance** | **Keithley 6517B** Electrometer | Dielectrics, polymers, & ceramics. | $1\,\Omega$ to $10^{16}\,\Omega$ |
110122

111123
---
112124

113-
## Installation
125+
## Getting Started
114126

115-
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.
116128

117129
1. **Clone the Repository**
118130
```bash
@@ -139,7 +151,11 @@ PICA is now structured as a standard Python package. Follow these steps to insta
139151

140152
## Running the Software
141153

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.
143159

144160
1. **Graphical Launcher (GUI)**
145161
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
148164
```
149165

150166
2. **Command Line Interface (CLI)**
151-
New in v.17.0.0: A text-based menu for running measurements via SSH, on Raspberry Pis, or in automated environments without a monitor.
167+
In v.17.0: A text-based menu for running measurements via SSH, on Raspberry Pis, or in automated environments without a monitor.
152168
```bash
153169
python pica_cli.py
154170
```
@@ -181,48 +197,44 @@ To run the tests locally:
181197

182198
## Project History & Evolution
183199

184-
PICA has evolved from a collection of offline utility scripts into a modular software suite. The development timeline highlights the shift from 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.
185201

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).
187203

188-
---
189-
[17.0.0] - 2025-12-02 (Current)
190-
Changed
204+
### v17.0: Naming & Folder Standardization
205+
*2025-12-02 (Current)*
191206

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).
193209

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).
195213

196-
Research & Documentation
214+
**[Community] - 2025-12-01**
215+
- **Launch:** PICA announced on Hacker News.
197216

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*
199219

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.
201223

202-
[Community] - 2025-12-01
224+
### v13.0 – v14.1 (2025): Architecture Modernization
225+
*Major Release*
203226

204-
Launch: PICA project posted on Hacker News.
205-
---
227+
- **Architecture:** Introduced GUI–backend isolation.
228+
- **Multiprocessing:** Used `multiprocessing` to separate UI from instrument control loops.
229+
- **UI:** Standardized dark theme across modules.
230+
- **New Modes:** Added Passive Sensing for R–T and integrated plotting tools.
231+
232+
### 2022 – 2024: Inception & Prototyping
206233

207-
### **v 15.0 : JOSS Submission & Professionalization**
208-
*Status: Released November 2025*
209-
Focus shifted to code quality, stability, and documentation standards.
210-
* **CI/CD Integration:** Implementation of automated testing pipelines using GitHub Actions.
211-
* **Refactoring:** Comprehensive cleanup of the codebase to meet JOSS standards.
212-
* **Validation:** Currently undergoing rigorous physical validation to ensure the refactoring process retained hardware-specific timing integrity.
213-
214-
### **v13.0 – v14.1 (2025): Architecture Modernization**
215-
*Status: Major Release*
216-
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.
226238

227239
---
228240

@@ -241,22 +253,23 @@ If you use this software in your research, please cite it using the following Bi
241253
@software{Deshmukh_PICA_2025,
242254
author = {Deshmukh, Prathamesh Keshao and Mukherjee, Sudip},
243255
title = {{PICA: Python-based Instrument Control and Automation Software Suite}},
244-
month = sep,
256+
month = dec,
245257
year = 2025,
246258
publisher = {GitHub},
247-
version = {17.0.0},
248-
url = {https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation}
259+
version = {17.0},
260+
url = {[https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation)}
249261
}
250-
```
262+
````
251263
252264
Alternatively, refer to the `CITATION.cff` file in the root directory.
253265
254266
-----
267+
255268
## Authors & Acknowledgments
256269
257-
<p align="center">
258-
<img src="pica/assets/LOGO/UGC_DAE_CSR_NBG.jpeg" alt="UGC DAE CSR Logo" width="150">
259-
</p>
270+
\<p align="center"\>
271+
\<img src="pica/assets/LOGO/UGC\_DAE\_CSR\_NBG.jpeg" alt="UGC DAE CSR Logo" width="150"\>
272+
\</p\>
260273
261274
- **Lead Developer:** **[Prathamesh Deshmukh](https://prathameshdeshmukh.site/)**
262275
- **Principal Investigator:** **[Dr. Sudip Mukherjee](https://www.google.com/search?q=https://www.researchgate.net/lab/Sudip-Mukherjee-Lab)**
@@ -269,4 +282,7 @@ Financial support for this work was provided under SERB-CRG project grant No. CR
269282
270283
## License
271284
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.
286+
287+
```
288+
```

0 commit comments

Comments
 (0)