Skip to content

Commit 6a910ca

Browse files
lore and widget added in readme
1 parent 2ab9ee1 commit 6a910ca

1 file changed

Lines changed: 102 additions & 49 deletions

File tree

README.md

Lines changed: 102 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
![PICA CI](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/actions/workflows/python-app.yml/badge.svg)
2-
[![codecov](https://codecov.io/gh/prathameshnium/PICA-Python-Instrument-Control-and-Automation/branch/main/graph/badge.svg)](https://codecov.io/gh/prathameshnium/PICA-Python-Instrument-Control-and-Automation)
3-
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
4-
[![Python 3.10+](https://img.shields.io/badge/Python-3.10+-brightgreen.svg)](https://www.python.org/downloads/)
51

6-
<p align="center">
7-
<img src="./assets/LOGO/PICA_LOGO_NBG.png" alt="PICA Logo" width="150"/>
8-
</p>
92

10-
<h1 align="center">PICA: Python-based Instrument Control and Automation</h1>
3+
[](https://codecov.io/gh/prathameshnium/PICA-Python-Instrument-Control-and-Automation)
4+
[](https://opensource.org/licenses/MIT)
5+
[](https://www.python.org/downloads/)
116

12-
<p align="center">
13-
<strong>A modular software suite for automating laboratory measurements in physics research.</strong>
14-
</p>
7+
\<p align="center"\>
8+
\<img src="./assets/LOGO/PICA\_LOGO\_NBG.png" alt="PICA Logo" width="150"/\>
9+
\</p\>
1510

16-
---
11+
\<h1 align="center"\>PICA: Python-based Instrument Control and Automation\</h1\>
12+
13+
\<p align="center"\>
14+
\<strong\>A modular software suite for automating laboratory measurements in physics research.\</strong\>
15+
\</p\>
16+
17+
-----
1718

1819
## Overview
1920

@@ -27,42 +28,54 @@ A key architectural feature is the use of **isolated process execution** for eac
2728
>
2829
> 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.
2930
30-
---
31+
-----
32+
<p align="center">
33+
<!-- Project Inception Date (Static) -->
34+
<img src="https://img.shields.io/badge/Inception-June%202022-orange?style=flat-square&logo=calendar" alt="Inception Date">
35+
<!-- Total Lines of Code (Dynamic via Tokei) -->
36+
<img src="https://tokei.rs/b1/github/prathameshnium/PICA-Python-Instrument-Control-and-Automation?category=code" alt="Lines of Code">
37+
<!-- Repository Size -->
38+
<img src="https://img.shields.io/github/repo-size/prathameshnium/PICA-Python-Instrument-Control-and-Automation?style=flat-square&color=blue" alt="Repo Size">
39+
<!-- Last Commit -->
40+
<img src="https://img.shields.io/github/last-commit/prathameshnium/PICA-Python-Instrument-Control-and-Automation?style=flat-square&color=critical" alt="Last Commit">
41+
</p>
42+
-----
3143

3244
## Table of Contents
3345

34-
- [Architecture](#architecture)
35-
- [Core Features](#core-features)
36-
- [Instrument Specifications](#instrument-specifications)
37-
- [Getting Started](#-getting-started)
38-
- [Running Tests](#-running-tests)
39-
- [Resources & Documentation](#-resources--documentation)
40-
- [Citation](#citation)
41-
- [License](#license)
42-
- [Authors & Acknowledgments](#authors--acknowledgments)
46+
- [Architecture](https://www.google.com/search?q=%23architecture)
47+
- [Core Features](https://www.google.com/search?q=%23core-features)
48+
- [Instrument Specifications](https://www.google.com/search?q=%23instrument-specifications)
49+
- [Getting Started](https://www.google.com/search?q=%23-getting-started)
50+
- [Running Tests](https://www.google.com/search?q=%23-running-tests)
51+
- [Project History & Evolution](https://www.google.com/search?q=%23project-history--evolution)
52+
- [Resources & Documentation](https://www.google.com/search?q=%23-resources--documentation)
53+
- [Citation](https://www.google.com/search?q=%23citation)
54+
- [License](https://www.google.com/search?q=%23license)
55+
- [Authors & Acknowledgments](https://www.google.com/search?q=%23authors--acknowledgments)
4356

44-
---
57+
-----
4558

4659
## Architecture
4760

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

50-
- **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`.
51-
- **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.
52-
- **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.
53-
- **Inter-Process Communication:** The frontend and backend communicate via thread-safe `multiprocessing.Queues`, allowing for high-speed data transfer without race conditions.
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.
5467

55-
---
68+
-----
5669

5770
## Core Features
5871

59-
- **Centralized Control Dashboard:** A comprehensive GUI for launching all measurement modules.
60-
- **Integrated VISA Instrument Scanner:** An embedded utility for identifying and troubleshooting GPIB/VISA connections via the NI-VISA backend.
61-
- **Modular Design:** Each experimental setup is a self-contained module, making the codebase easy to extend.
62-
- **Embedded Documentation:** In-application viewer for technical manuals and project guides.
63-
- **System Console Log:** A real-time logging system that provides status updates and error diagnostics.
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.
6477

65-
---
78+
-----
6679

6780
## Instrument Specifications
6881

@@ -77,7 +90,7 @@ This software controls a facility designed for characterizing the full spectrum
7790
| **3. Mid-Resistance (High-Precision)** | **Keithley 2400** + **K2182** | Detecting subtle phase transitions. | $1 \mu\Omega$ to $100 M\Omega$ |
7891
| **4. High-Resistance** | **Keithley 6517B** Electrometer | Dielectrics, polymers, & ceramics. | $1 \Omega$ to $10^{16} \Omega$ |
7992

80-
---
93+
-----
8194

8295
## 🚀 Getting Started
8396

@@ -89,34 +102,38 @@ This software controls a facility designed for characterizing the full spectrum
89102
### Installation Steps
90103

91104
1. **Clone the Repository**
105+
92106
```bash
93-
git clone [https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git)
107+
git clone https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git
94108
cd PICA-Python-Instrument-Control-and-Automation
95109
```
96110

97111
2. **Create a Virtual Environment**
98112
Recommended to verify dependencies and avoid conflicts.
113+
99114
```bash
100115
# Create the virtual environment
101116
python -m venv venv
102-
117+
103118
# Activate (Windows)
104119
venv\Scripts\activate
105120
# Activate (macOS/Linux)
106121
source venv/bin/activate
107122
```
108123

109124
3. **Install Dependencies**
125+
110126
```bash
111127
pip install -r requirements.txt
112128
```
113129

114130
4. **Launch the Application**
131+
115132
```bash
116133
python PICA_v6.py
117134
```
118135

119-
---
136+
-----
120137

121138
## 🧪 Running Tests
122139

@@ -125,34 +142,65 @@ This repository includes a robust test suite using `pytest`. It mocks hardware i
125142
To run the tests locally:
126143

127144
1. **Install Test Dependencies:**
145+
128146
```bash
129147
pip install pytest pytest-cov flake8
130148
```
131149

132150
2. **Run the Test Suite:**
151+
133152
```bash
134153
python -m pytest
135154
```
136155

137156
3. **Generate Coverage Report:**
157+
138158
```bash
139159
# Generates an HTML report in the htmlcov/ directory
140160
python -m pytest --cov=. --cov-report=html
141161
```
142162

143-
The testing pipeline verifies:
144-
* **Package Integrity:** Ensures all scripts compile and import correctly.
145-
* **GUI Layouts:** Validates that `Tkinter` and `Matplotlib` widgets initialize without errors (using mocked graphics).
146-
* **Backend Logic:** Simulates measurement loops (e.g., Temperature Ramps) to verify logic flow without needing physical instruments connected.
163+
-----
164+
165+
## Project History & Evolution
166+
167+
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.
168+
169+
> **📜 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).
170+
171+
### **v15.0 (Current): JOSS Submission & Professionalization**
172+
173+
*Status: Released November 2025*
174+
Focus shifted to code quality, stability, and documentation standards.
147175
148-
---
176+
* **CI/CD Integration:** Implementation of automated testing pipelines using GitHub Actions.
177+
* **Refactoring:** Comprehensive cleanup of the codebase to meet JOSS standards.
178+
* **Validation:** Currently undergoing rigorous physical validation to ensure the refactoring process retained hardware-specific timing integrity.
179+
180+
### **v13.0 – v14.1 (2025): Architecture Modernization**
181+
182+
*Status: Major Release*
183+
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.
188+
189+
### **2022 – 2024: Inception & Prototyping**
190+
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+
-----
149197
150198
## 📚 Resources & Documentation
151199
152-
* **User Manual:** Detailed setup and troubleshooting guides are available in [docs/User_Manual.md](docs/User_Manual.md).
153-
* **Instrument Manuals:** Original PDF manuals for the supported hardware are located in `assets/Manuals/`.
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/`.
154202
155-
---
203+
-----
156204
157205
## Citation
158206
@@ -165,10 +213,10 @@ If you use this software in your research, please cite it using the following Bi
165213
month = sep,
166214
year = 2023,
167215
publisher = {GitHub},
168-
version = {14.1.0},
169-
url = {[https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation)}
216+
version = {15.0.0},
217+
url = {https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation}
170218
}
171-
````
219+
```
172220
173221
Alternatively, refer to the `CITATION.cff` file in the root directory.
174222
@@ -193,3 +241,8 @@ Financial support for this work was provided under SERB-CRG project grant No. CR
193241
194242
This project is licensed under the MIT License - see the [LICENSE](https://www.google.com/search?q=LICENSE) file for details.
195243
244+
-----
245+
246+
### **Next Step**
247+
248+
Would you like me to generate the **`paper.md`** draft required for the JOSS submission, based on this updated README and your project history?

0 commit comments

Comments
 (0)