Skip to content

Commit 2524eca

Browse files
User manual updated
1 parent 07d62e1 commit 2524eca

1 file changed

Lines changed: 106 additions & 82 deletions

File tree

docs/User_Manual.md

Lines changed: 106 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -8,62 +8,80 @@
88

99
-----
1010

11-
## 📖 Table of Contents
11+
## �� Table of Contents
1212

1313
1. [Overview](https://www.google.com/search?q=%231-overview)
14-
2. [Getting Started](https://www.google.com/search?q=%232-getting-started)
15-
* [Hardware Setup](https://www.google.com/search?q=%23hardware-setup)
16-
* [Software Installation](https://www.google.com/search?q=%23software-installation)
17-
* [Running the Software (GUI & CLI)](https://www.google.com/search?q=%23running-the-software)
18-
* [Connection Testing](https://www.google.com/search?q=%23connection-testing)
19-
3. [Software Architecture](https://www.google.com/search?q=%233-software-architecture)
20-
4. [Available Measurement Modules](https://www.google.com/search?q=%234-available-measurement-modules)
21-
5. [Testing & Validation](https://www.google.com/search?q=%235-testing--validation)
22-
6. [Technical Reference](https://www.google.com/search?q=%236-technical-reference)
23-
* [Instrument Specifications](https://www.google.com/search?q=%23instrument-specifications)
24-
* [GPIB Address Guide](https://www.google.com/search?q=%23gpib-address-guide)
25-
* [File Structure](https://www.google.com/search?q=%23file-structure)
26-
7. [Citation, Attribution & Funding](https://www.google.com/search?q=%237-citation-attribution--funding)
27-
8. [Version History](https://www.google.com/search?q=%238-version-history)
14+
2. [Statement of Need](#2-statement-of-need)
15+
3. [Getting Started](#3--getting-started)
16+
* [Hardware Setup](#hardware-setup)
17+
* [Software Installation](#software-installation)
18+
* [Running the Software](#running-the-software)
19+
* [Connection Testing](#connection-testing)
20+
4. [Software Architecture](#4--️-software-architecture)
21+
5. [Available Measurement Modules](#5--available-measurement-modules)
22+
6. [Testing & Validation](#6-testing--validation)
23+
7. [Technical Reference](#7--technical-reference)
24+
* [Instrument Specifications](#instrument-specifications)
25+
* [GPIB Address Guide](#gpib-address-guide)
26+
* [File Structure](#file-structure)
27+
8. [Citation, Attribution & Funding](#8--citation-attribution--funding)
28+
9. [Version History](#9--version-history)
2829

2930
-----
3031

3132
## 1\. Overview
33+
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.
34+
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.
35+
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.
3236

33-
**PICA (Python-based Instrument Control and Automation)** is a modular software suite designed to provide a robust framework for automating laboratory instruments in materials science and condensed matter physics research.
3437

35-
The suite features a central graphical user interface (GUI), the **PICA Launcher**, which serves as a dashboard for managing and executing a variety of characterization 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.
38+
## 2\. Statement of Need
39+
40+
Advancements in experimental physics critically depend on the accurate characterization of material properties under extreme physical conditions. Such experiments typically require the coordinated operation and precise control of multiple instruments sourced from different vendors.
41+
42+
Researchers are often faced with a choice between using expensive proprietary software platforms such as LabVIEW or developing custom measurement scripts from scratch. Python libraries such as PyVISA and PyMeasure provide robust low-level driver support and are essential for instrument communication and control. However, these libraries primarily function as developer-oriented toolkits: they generally require users to possess detailed knowledge of measurement protocols and, in the case of PyVISA, familiarity with SCPI (Standard Commands for Programmable Instruments). Furthermore, users must design and implement their own graphical user interfaces (GUIs) tailored to specific experimental workflows. These libraries also do not natively provide comprehensive multithreading support, thereby requiring users to understand and manage concurrency and other computational aspects themselves.
43+
44+
By contrast, LabVIEW offers a graphical programming paradigm that simplifies certain aspects of instrument control but introduces other limitations. Its visual programming model is difficult to integrate with modern software engineering practices such as version control, and its proprietary nature constrains the extent to which users can modify low-level behaviour compared to Python-based solutions.
45+
46+
This situation reveals 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 source code. At the same time, being implemented in open-source Python would preserve the ability for advanced users to modify virtually any component of the system and to 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.
47+
48+
PICA was developed at the UGC–DAE Consortium for Scientific Research, Mumbai Centre, a research institute under the Government of India. The mandate of the institute is to support universities, including those in remote locations, in conducting advanced research. The open-source nature of PICA is fully aligned with this mandate, as it facilitates broader access to computational tools and thereby promotes and enhances the research capabilities of the scientific community.
49+
50+
We tried to reduce dependencies, making it suitable for the laboratory systems that are not connected to the internet by providing stable, scientifically validated protocols and a robust user interface for conducting measurements on our ATMS (Advanced Transport Measurement System), a laboratory-built platform comprising custom-developed hardware and software.
51+
52+
Although PICA was initially designed for our in-house ATMS infrastructure, the underlying code and framework are sufficiently generalizable for use in a wide range of experimental setups. We particularly encourage researchers in developing countries, where access to advanced measurement systems may be limited, to adopt and adapt this tool. Furthermore, the architecture allows for modular extensions, enabling the integration of additional functionalities as required by users.
3653

3754
### Core Features
3855

39-
* **Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
56+
* **Accessibility:** PICA provides a professional dashboard that enables researchers without programming experience to configure and execute complex measurements.
57+
* **Physical Validation:** PICA protocols are routinely employed for cryogenic transport measurements in the temperature range 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 artifacts arising from instrument output start-up transients, synchronization errors, or other physical anomalies are identified and eliminated.
58+
59+
* **Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
4060
* **CLI Mode:** A new command-line interface for headless operation (e.g., via SSH or Raspberry Pi).
4161
* **Isolated Process Execution:** Each script operates in a discrete process, guaranteeing application stability.
4262
* **Integrated VISA Instrument Scanner:** An embedded utility for discovering and troubleshooting connections.
63+
* **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.
4364
* **Automated Testing:** Integrated CI/CD pipelines for logic verification.
4465

45-
> **⚠️ Important Note on Validation**
46-
>
47-
> While Version 15.0 introduces **Automated CI/CD Testing** that passes all logic checks, the refactoring required for packaging may introduce subtle timing differences on physical hardware. **A comprehensive round of manual validation on physical instruments is currently underway** to ensure full operational stability matches the simulations.
48-
49-
-----
50-
51-
## 2\. 🚀 Getting Started
66+
## 3\. Getting Started
5267

5368
### Hardware Setup
69+
Prior to executing the software, verify that all physical connections between the measurement instruments and the computer hosting PICA are correctly and securely established. [1]
70+
71+
There are multiple methods for establishing communication between an instrument and a computer, including direct USB, LAN (Ethernet), or via a USB‑to‑GPIB converter. Use a reliable, compliant interface cable (e.g., Keysight 82357B) to connect the computer to the instruments.
5472

55-
Before running the software, ensure your physical connections are established:
73+
If a converter (e.g., GPIB‑to‑USB) is used, confirm that its status indicator is active (typically a green LED). Similarly, for LAN connections, check the link/activity indicators on the instrument and network interface. Many instruments also provide a “REMOTE” or similar status indication on their front panel to show that a remote communication session has been established.
5674

57-
* **USB to GPIB Converter:** Use a reliable interface cable (e.g., Keysight 82357B) to connect your computer to the instruments.
58-
* **Status Check:** Ensure the converter's status light is active (usually green).
59-
* **Instrument Config:** Enable GPIB communication on your physical instruments and note their addresses (e.g., 12, 24).
75+
Instrument configuration: enable the appropriate communication interface (GPIB, USB, or LAN) on each physical instrument and record their corresponding addresses. If necessary, modify the instrument address and related communication parameters through the instrument’s configuration or setup menu..
6076

6177
### Software Installation
6278

6379
**Prerequisites:**
6480

65-
* **Python:** Version 3.10 or newer.
66-
* **NI-VISA Driver:** Install the National Instruments VISA Driver for your OS to enable communication.
81+
* **Python:** Version 3.10 or newer.
82+
* **NI-VISA Driver:** Install the National Instruments VISA Driver for your OS to enable communication.
83+
84+
Install the required dependencies as specified in the `requirements.txt` file.
6785

6886
**Installation Steps (Package Mode):**
6987

@@ -78,12 +96,12 @@ PICA is now structured as a standard Python package. We recommend installing it
7896

7997
2. **Create and Activate Virtual Environment:**
8098

81-
* *Windows:*
99+
* *Windows:*
82100
```bash
83101
python -m venv venv
84-
venv\Scripts\activate
102+
.\venv\Scripts\activate
85103
```
86-
* *macOS/Linux:*
104+
* *macOS/Linux:*
87105
```bash
88106
python3 -m venv venv
89107
source venv/bin/activate
@@ -98,9 +116,9 @@ PICA is now structured as a standard Python package. We recommend installing it
98116

99117
### Running the Software
100118

101-
You can now run PICA in two modes depending on your environment:
119+
PICA can be executed in two modes: a graphical user interface (GUI) for interactive use and a command-line interface (CLI) for headless or automated environments.
102120

103-
**1. Graphical Launcher (GUI)**
121+
#### 1. Graphical Launcher (GUI)
104122
The standard dashboard for desktop users with a monitor.
105123

106124
```bash
@@ -118,16 +136,9 @@ python pica_cli.py
118136

119137
You can quickly verify which instruments are connected and recognized by your system using the built-in scanner or this Python snippet:
120138

121-
```python
122-
import pyvisa
123-
rm = pyvisa.ResourceManager()
124-
print(rm.list_resources())
125-
# Output Example: ('GPIB0::12::INSTR', 'GPIB0::24::INSTR')
126-
```
127139

128-
-----
129140

130-
## 3\. 🏗️ Software Architecture
141+
## 4\. ️ Software Architecture
131142

132143
The core design philosophy of PICA is the **separation of concerns**, implemented through a distinct Frontend-Backend architecture.
133144

@@ -138,7 +149,7 @@ The core design philosophy of PICA is the **separation of concerns**, implemente
138149

139150
-----
140151

141-
## 4\. 🔬 Available Measurement Modules
152+
## 5\. Available Measurement Modules
142153

143154
The suite is organized into modules, each containing a specific experimental setup:
144155

@@ -153,29 +164,12 @@ The suite is organized into modules, each containing a specific experimental set
153164

154165
-----
155166

156-
## 5\. 🧪 Testing & Validation
157-
158-
PICA now includes a robust test suite using `pytest`. It mocks hardware interactions, allowing the logic to be verified in a headless environment.
159-
160-
To run the tests locally:
161-
162-
1. **Install Test Dependencies:**
163-
```bash
164-
pip install pytest pytest-cov flake8
165-
```
166-
2. **Run the Test Suite:**
167-
```bash
168-
python -m pytest
169-
```
170-
3. **Generate Coverage Report:**
171-
```bash
172-
# Generates an HTML report in the htmlcov/ directory
173-
python -m pytest --cov=. --cov-report=html
174-
```
167+
# Example usage
168+
# Functionality
175169

176170
-----
177171

178-
## 6\. 📚 Technical Reference
172+
## 7\. Technical Reference
179173

180174
### Instrument Specifications
181175

@@ -206,8 +200,7 @@ Specifications for instruments used in the PICA project.
206200

207201
### GPIB Address Guide
208202

209-
Default addresses for PICA instruments. Use the **Test GPIB** utility in the GUI to confirm.
210-
203+
Default communication addresses for selected instruments. Use the **Test GPIB** utility available in the graphical user interface (GUI) to verify proper connectivity and configuration.
211204
* **Lakeshore 340:** `GPIB0::12::INSTR`
212205
* **Lakeshore 350:** `GPIB1::15::INSTR`
213206
* **Keithley 2400:** `GPIB1::4::INSTR`
@@ -238,7 +231,7 @@ PICA (Root Directory)/
238231

239232
-----
240233

241-
## 7\. 📄 Citation, Attribution & Funding
234+
## 8\. Citation, Attribution & Funding
242235

243236
### Citation
244237

@@ -247,30 +240,21 @@ If you use this software in your research, please cite it.
247240
**BibTeX:**
248241

249242
```bibtex
250-
@software{Deshmukh_PICA_2023,
243+
@software{Deshmukh_PICA_2025,
251244
author = {Deshmukh, Prathamesh Keshao and Mukherjee, Sudip},
252245
title = {{PICA: Python-based Instrument Control and Automation Software Suite}},
253246
month = sep,
254-
year = 2023,
247+
year = 2025,
255248
publisher = {GitHub},
256-
version = {15.0.0},
249+
version = {1.0.1},
257250
url = {https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation}
258251
}
259252
```
260253

261-
### Authors
262-
263-
* **Lead Developer:** Prathamesh Keshao Deshmukh
264-
* **Principal Investigator:** Dr. Sudip Mukherjee
265-
* **Institute:** UGC-DAE Consortium for Scientific Research, Mumbai Centre
266-
267-
### Funding
268-
269-
Financial support for this work was provided under **SERB-CRG project grant No. CRG/2022/005676** from the Anusandhan National Research Foundation (ANRF), a statutory body of the Department of Science & Technology (DST), Government of India.
270254

271255
-----
272256

273-
## 8\. 📝 Version History
257+
## 9\. Version History
274258
-----
275259
[1.0.1] - 2025-12-02 (Current)
276260
Changed
@@ -305,4 +289,44 @@ Research & Documentation
305289
**Version 14.0**
306290

307291
* **GUI Upgrade:** Updated frontend scripts to new standardized "Version 5" interfaces.
308-
* **New Module:** Added `RT_K2400_L350_T_Sensing_Frontend_v4.py` for passive monitoring.
292+
* **New Module:** Added `RT_K2400_L350_T_Sensing_Frontend_v4.py` for passive monitoring.
293+
# tests
294+
To ensure measurement reliability and correct software operation, comprehensive testing is required. To this end, all modules were thoroughly tested in conjunction with the corresponding hardware. In addition to automated procedures, extensive manual testing was performed directly on the instrument, with particular emphasis on identifying limitations and edge conditions. In practice, each individual measurement effectively serves as a distinct test case. [1]
295+
296+
Recognizing that full validation of the software suite is difficult without access to the complete set of instrument hardware, a limited set of automated tests has been implemented to provide at least a baseline level of verification.
297+
298+
For manual testing of the PICA graphical user interface (GUI), the user can interact with different components, such as resizing the measurement panel and the plotting panel, and launching multiple instances of PICA modules (e.g., different measurement modules, the plotting utility, and the launcher). On modern hardware, the system has been empirically verified not to hang under such multitasking conditions.
299+
300+
A particularly accessible component for testing is the plotting utility, <#plotterutil#>. It can be evaluated by repeatedly plotting data and modifying the data points to confirm that all visual elements update in real time. The performance of the measurement modules can likewise be assessed under concurrent operation to ensure there are no issues with multitasking. In addition, one should verify that all links and buttons from the main dashboard to the individual modules function correctly and lead to the intended targets.
301+
# Automated tests
302+
## 6\. Testing & Validation
303+
PICA now includes a robust test suite using `pytest`. It mocks hardware interactions, allowing the logic to be verified in a headless environment.
304+
305+
To run the tests locally:
306+
307+
1. **Install Test Dependencies:**
308+
```bash
309+
pip install pytest pytest-cov flake8
310+
```
311+
2. **Run the Test Suite:**
312+
```bash
313+
python -m pytest
314+
```
315+
3. **Generate Coverage Report:**
316+
```bash
317+
# Generates an HTML report in the htmlcov/ directory
318+
python -m pytest --cov=. --cov-report=html
319+
```
320+
# Community guidelines
321+
We encourage the community to contribute to PICA, either by developing new modules or by correcting existing issues. Individuals interested in contributing are invited to report problems or feature requests via the GitHub “Issues” tab. We are available to provide support with the installation and configuration of PICA, as well as with the setup of custom measurement systems; therefore, prospective users should not hesitate to contact us.
322+
Additional details regarding the code of conduct for contributors are available at:
323+
324+
### Authors
325+
326+
* **Lead Developer:** Prathamesh Keshao Deshmukh
327+
* **Principal Investigator:** Dr. Sudip Mukherjee
328+
* **Institute:** UGC-DAE Consortium for Scientific Research, Mumbai Centre
329+
330+
### Funding
331+
332+
Financial support for this work was provided under **SERB-CRG project grant No. CRG/2022/005676** from the Anusandhan National Research Foundation (ANRF), a statutory body of the Department of Science & Technology (DST), Government of India.

0 commit comments

Comments
 (0)