Skip to content

Commit 859a86b

Browse files
updated readme from paper writeup
1 parent b58a7f2 commit 859a86b

1 file changed

Lines changed: 69 additions & 36 deletions

File tree

README.md

Lines changed: 69 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
# PICA: Python-based Instrument Control and Automation
1+
# PICA: Advanced Python Suite for High Precision Instrumentation and Transport Measurement Automation
22

33
<p align="center">
44
<img src="pica/assets/LOGO/PICA_LOGO_NBG.png" alt="PICA Logo" width="250">
55
</p>
66

7-
8-
**A modular, open-source framework for automating laboratory measurements in physics research.**
9-
107
<p align="center">
118
<a href="https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/actions/workflows/ci.yml"><img src="https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/actions/workflows/ci.yml/badge.svg" alt="CI Build Status"></a>
129
<a href="https://codecov.io/gh/prathameshnium/PICA-Python-Instrument-Control-and-Automation"><img src="https://codecov.io/gh/prathameshnium/PICA-Python-Instrument-Control-and-Automation/branch/main/graph/badge.svg" alt="Code Coverage"></a>
@@ -29,11 +26,17 @@
2926

3027
---
3128

32-
## Overview
29+
## Summary
30+
31+
High-precision measurements are essential for advancing research in spintronics and materials characterization. **PICA (Python-based Instrument Control and Automation)** is a modular, open-source software suite designed to automate advanced transport measurements for electronic devices and chemical samples. It operates as a versatile framework capable of running on any standard laboratory workstation.
3332

34-
PICA (Python-based Instrument Control and Automation) is a modular software suite designed to democratize access to advanced experimental automation. It replaces expensive, rigid proprietary software with a flexible, open-source framework capable of orchestrating diverse laboratory instruments.
33+
PICA provides an extensible, unified graphical user interface (GUI) for orchestrating high-precision instruments, specifically current source (DC/AC) units, nanovoltmeters, high resistance electrometers, impedance analyzers, and temperature controllers. Built on the robust Python scientific ecosystem, PICA ensures that the entire hardware ecosystem functions seamlessly as a cohesive unit.
3534

36-
While originally developed for cryogenic transport characterization, PICA's architecture is highly **versatile**, providing a centralized dashboard - the **PICA Launcher** - that allows researchers in any facility to configure and execute complex measurement sequences without writing code.
35+
The suite performs automated protocols including:
36+
* Temperature-dependent wide-range resistance measurement ($10^{-8}$ - $10^{16}$ Ω).
37+
* Current-voltage (I-V) characterization.
38+
* Capacitance characterization and magnetodielectric studies (20 Hz - 2 MHz).
39+
* Pyroelectric current measurement (resolution ~$10^{-15}$ A).
3740

3841
<p align="center">
3942
<img src="pica/assets/Images/screenshots/00_PICA_Launcher.png" alt="PICA Launcher" width="800">
@@ -44,69 +47,97 @@ While originally developed for cryogenic transport characterization, PICA's arch
4447
4548
## Table of Contents
4649

47-
- [Overview](#overview)
48-
- [Why PICA?](#why-pica)
49-
- [Architecture & Design](#architecture--design)
50+
- [Summary](#summary)
51+
- [Statement of Need](#statement-of-need)
52+
- [Key Features](#key-features)
53+
- [Design and Implementation](#design-and-implementation)
5054
- [Supported Hardware Modules](#supported-hardware-modules)
5155
- [Getting Started](#getting-started)
5256
- [Running the Software](#running-the-software)
53-
- [Running Tests](#running-tests)
54-
- [Project History](#project-history)
5557
- [Resources & Documentation](#resources--documentation)
5658
- [Citation](#citation)
5759
- [Authors & Acknowledgments](#authors--acknowledgments)
5860
- [License](#license)
5961

60-
## Why PICA?
62+
---
63+
64+
## Statement of Need
65+
66+
Advancements in experimental physics and device manufacturing depend on the precise characterization of material properties under extreme physical conditions. Researchers often face a binary choice: purchase expensive proprietary software or develop custom measurement scripts from scratch.
67+
68+
While libraries such as **PyVISA** and **PyMeasure** provide foundational drivers, they require the user to write and maintain code. **PICA addresses this gap by functioning as a turnkey application.** It offers a "ready-to-run" graphical interface that abstracts underlying control logic, allowing experimentalists to focus on data acquisition without software development overhead.
69+
70+
PICA enables continuous operation across the full range from Delta-mode low-resistance measurements (removing constant offsets) to high-impedance electrometric measurements using a single unified framework.
71+
72+
## Key Features
6173

62-
* **Open & Adaptable:** Unlike "black box" commercial tools, PICA is fully transparent. Researchers can inspect, modify, and extend the underlying Python code to suit unique experimental needs.
63-
* **Unified Workflow:** It unifies control for instruments from different vendors (Keithley, Lake Shore, Keysight) into a single, cohesive interface.
64-
* **Data Integrity:** Automated protocols ensure reproducibility, reducing human error associated with manual data logging.
74+
* **Accessibility:** A professional GUI dashboard allows researchers without coding experience to configure and run complex measurement protocols immediately using pre-packaged measurement modules.
75+
* **Operational Validation:** Validated via cryogenic transport measurements using a custom-designed probe in conjunction with a **Physical Property Measurement System (PPMS)** (5-380 K, up to 14 Tesla) at the UGC DAE Consortium for Scientific Research, Mumbai Centre.
76+
* **Fault Tolerance:** Control logic is isolated from the user interface. Hardware timeouts or driver crashes are prevented from freezing the main dashboard.
77+
* **Modular CLI Architecture:** Measurement modules contain CLI counterparts, allowing researchers to utilize PICA's protocol logic for headless automation or integration into other workflows without GUI overhead.
78+
* **Operational Transparency:** PICA rejects the "black box" paradigm by exposing real-time, time-stamped command logs (e.g., `[10:05:25] Keithley 6221: Ramping current to 10 mA`). This aids debugging, ensures scientific reproducibility, and allows verification of measurement protocols.
79+
* **Open Source Extensibility:** Researchers can integrate new instrument drivers or experimental protocols by subclassing existing templates, fostering a community-driven ecosystem.
6580

66-
## Architecture & Design
81+
---
82+
83+
## Design and Implementation
84+
85+
PICA is built on a modular architecture characterized by self-contained modules, ensuring future extensibility without impacting core system stability.
6786

68-
PICA is built on a philosophy of **robustness, modularity, and accessibility**.
87+
### Process Isolation and Concurrency
88+
Unlike simple script-based automation, PICA decouples the User Interface (UI) from the instrumentation control logic using Python's standard `multiprocessing` libraries.
89+
* **Stability:** If an instrument hangs, the isolated process can be terminated safely without freezing the main GUI or losing previous data.
90+
* **Responsiveness:** The `tkinter`-based frontend remains responsive for live data plotting (using `matplotlib` with blitting) even while the backend waits for hardware triggers.
91+
* **Data Integrity:** A "write on acquisition" strategy using `pandas` saves data to CSV immediately after every acquisition point, preventing data loss during power failures.
6992

70-
* **Tech Stack:** Python 3.9+ serves as the core, utilizing `Tkinter` for GUIs, `PyVISA` for instrument communication, `Matplotlib` for real-time visualization, and `Multiprocessing` for concurrency.
71-
* **Operational Transparency:** Every GUI includes an **Embedded Console Log** that streams real-time SCPI commands and status updates, allowing researchers to verify exactly what the hardware is doing.
72-
* **Process Isolation:** Each measurement runs in a discrete process. If a specific instrument driver crashes or times out, the main launcher remains stable.
93+
### Hardware Abstraction Layer
94+
PICA utilizes **PyVISA** to abstract low-level communication protocols (GPIB, USB, Ethernet). The software implements a strict initialization routine:
95+
1. **Connection Verification:** A built-in "VISA Instrument Scanner" queries the bus (`*IDN?`) to map instrument addresses.
96+
2. **Instrument Reset Protocol:** Explicitly resets all stored data and buffers to provide a clean initial state.
97+
3. **Graceful Shutdown:** Ensures sources are ramped down and heaters disabled safely, even if the software is interrupted.
98+
99+
### Testing and Simulation
100+
PICA includes a testing suite using `pytest` and `unittest.mock` to simulate VISA resources, allowing verification of backend logic streams and command sequences without constant access to physical instruments.
101+
102+
---
73103

74104
## Supported Hardware Modules
75105

76-
PICA includes built-in support for the following instrument configurations, covering a resistance range spanning 24 orders of magnitude.
106+
The system is currently validated with industry-standard hardware, covering a resistance range spanning 24 orders of magnitude.
77107

78108
| Module | Configuration / Instrument | Use Case | Range |
79109
| :--- | :--- | :--- | :--- |
80110
| **Low-Resistance (Delta)** | **Keithley 6221** + **K2182** | Superconductors & metallic films; cancels thermal EMFs via AC Delta method. | 10 nΩ - 100 MΩ |
81111
| **Mid-Resistance (Standard)** | **Keithley 2400** SourceMeter | Semiconductors, oxides, general transport. | 100 µΩ - 200 MΩ |
82112
| **Mid-Resistance (High-Precision)** | **Keithley 2400** + **K2182** | Detecting subtle phase transitions. | 1 µΩ - 100 MΩ |
83113
| **High-Resistance** | **Keithley 6517B** Electrometer | Dielectrics, polymers, & ceramics. | 1 Ω - 10 PΩ |
84-
| **Dielectric** | **Keysight E4980A** | C-V Analysis. | 20 Hz - 2 MHz |
85-
| **Pyroelectric** | **K6517B** + **Temp Controller** | Current vs Temp (detecting Curie temperature). | pA - nA range |
114+
| **Dielectric Analysis** | **Keysight E4980A** | C-V Analysis and Magnetodielectric characterization. | 20 Hz - 2 MHz |
115+
| **Pyroelectric** | **K6517B** + **Temp Controller** | Current vs Temp (detecting Curie temperature). | $10^{-15}$ A Resolution |
86116

87-
## Module Previews
117+
*While the current implementation drives specific instruments, the underlying framework is hardware agnostic. Researchers need only replace specific SCPI commands to utilize the suite with different models.*
88118

89-
Here are a few examples of the measurement modules available in PICA:
119+
### Module Previews
90120

91121
<p align="center">
92122
<img src="pica/assets/Images/screenshots/K6221_RT_Control.png" alt="K6221 RT Control" width="600">
93123
<br>
94-
<em>K6221 RT Control</em>
124+
<em>K6221 RT Control Interface</em>
95125
</p>
96126
<p align="center">
97127
<img src="pica/assets/Images/screenshots/K6517B_IV.png" alt="K6517B IV" width="600">
98128
<br>
99-
<em>K6517B IV</em>
129+
<em>K6517B IV Characterization Interface</em>
100130
</p>
101131

102132
---
133+
103134
## Getting Started
104135

105-
PICA is structured as a standard Python package.
136+
PICA is structured as a standard Python package.
106137

107138
1. **Clone the Repository**
108139
```bash
109-
git clone https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git
140+
git clone [https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git)
110141
cd PICA-Python-Instrument-Control-and-Automation
111142
```
112143

@@ -163,8 +194,9 @@ PICA evolved from simple offline scripts in 2022 to a full-stack automated suite
163194

164195
## Resources & Documentation
165196

166-
* **User Manual:** Detailed physics and usage guides are available in the [User Manual](docs/User_Manual.md).
167-
* **Instrument Manuals:** A list of instrument manuals is available in [docs/Instruments_Manuals_Lists.md](docs/Instruments_Manuals_Lists.md).
197+
* **User Manual:** Detailed physics and usage guides are available in the [User Manual](docs/User_Manual.md).
198+
* **Quick Interfacing Guide:** See [docs/python_instrument_interfacing.md](docs/python_instrument_interfacing.md).
199+
* **Instrument Manuals:** A list of instrument manuals is available in [docs/Instruments_Manuals_Lists.md](docs/Instruments_Manuals_Lists.md).
168200

169201
---
170202

@@ -175,20 +207,21 @@ If you use this software in your research, please cite it:
175207
```bibtex
176208
@software{Deshmukh_PICA_2025,
177209
author = {Deshmukh, Prathamesh Keshao and Mukherjee, Sudip},
178-
title = {{PICA: Python-based Instrument Control and Automation Software Suite}},
210+
title = {{PICA: Advanced Python Suite for High Precision Instrumentation and Transport Measurement Automation}},
179211
month = dec,
180212
year = 2025,
181213
publisher = {GitHub},
182214
version = {17.0},
183-
url = {https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation}
215+
url = {[https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation)}
184216
}
185-
```
217+
````
186218
187219
## Authors & Acknowledgments
188220
189221
This project is led by [**Prathamesh K. Deshmukh**](https://prathameshdeshmukh.site/) under the supervision of [**Dr. Sudip Mukherjee**](https://www.csr.res.in/Sudip-Mukherjee) at the [*UGC-DAE Consortium for Scientific Research, Mumbai Centre*](https://www.csr.res.in/Mumbai_Centre).
190222
191-
Financial support for this work was provided under SERB-CRG project grant No. CRG/2022/005676 from the Anusandhan National Research Foundation (ANRF).
223+
We acknowledge the financial support provided under the **SERB-CRG project grant No. CRG/2022/005676** from the Anusandhan National Research Foundation (ANRF), a statutory body of the Department of Science and Technology (DST), Government of India.
224+
192225
193226
<p align="center">
194227
<img src="pica/assets/LOGO/UGC_DAE_CSR_NBG.jpeg" alt="UGC DAE CSR Logo" width="150">

0 commit comments

Comments
 (0)