Skip to content

Commit bfd23ad

Browse files
readme updated
1 parent 6a910ca commit bfd23ad

1 file changed

Lines changed: 64 additions & 85 deletions

File tree

README.md

Lines changed: 64 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
11

2+
![PICA CI](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/actions/workflows/python-app.yml/badge.svg)
3+
[![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)
4+
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5+
[![Python 3.10+](https://img.shields.io/badge/Python-3.10+-brightgreen.svg)](https://www.python.org/downloads/)
26

3-
[](https://codecov.io/gh/prathameshnium/PICA-Python-Instrument-Control-and-Automation)
4-
[](https://opensource.org/licenses/MIT)
5-
[](https://www.python.org/downloads/)
7+
<p align="center">
8+
<img src="./assets/LOGO/PICA_LOGO_NBG.png" alt="PICA Logo" width="150"/>
9+
</p>
610

7-
\<p align="center"\>
8-
\<img src="./assets/LOGO/PICA\_LOGO\_NBG.png" alt="PICA Logo" width="150"/\>
9-
\</p\>
11+
<h1 align="center">PICA: Python-based Instrument Control and Automation</h1>
1012

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

13-
\<p align="center"\>
14-
\<strong\>A modular software suite for automating laboratory measurements in physics research.\</strong\>
15-
\</p\>
17+
<p align="center">
18+
<img src="https://img.shields.io/badge/Inception-June%202022-orange?style=flat-square&logo=calendar" alt="Inception Date">
19+
<img src="https://img.shields.io/badge/Project%20Age-3%2B%20Years-blueviolet?style=flat-square" alt="Project Age">
20+
<img src="https://img.shields.io/tokei/lines/github/prathameshnium/PICA-Python-Instrument-Control-and-Automation?style=flat-square" alt="Lines of Code">
21+
<img src="https://img.shields.io/github/repo-size/prathameshnium/PICA-Python-Instrument-Control-and-Automation?style=flat-square&color=blue" alt="Repo Size">
22+
<img src="https://img.shields.io/github/last-commit/prathameshnium/PICA-Python-Instrument-Control-and-Automation?style=flat-square&color=critical" alt="Last Commit">
23+
</p>
1624

17-
-----
25+
---
1826

1927
## Overview
2028

@@ -28,54 +36,43 @@ A key architectural feature is the use of **isolated process execution** for eac
2836
>
2937
> 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.
3038
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-
-----
39+
---
4340

4441
## Table of Contents
4542

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)
43+
- [Architecture](#architecture)
44+
- [Core Features](#core-features)
45+
- [Instrument Specifications](#instrument-specifications)
46+
- [Getting Started](#-getting-started)
47+
- [Running Tests](#-running-tests)
48+
- [Project History & Evolution](#project-history--evolution)
49+
- [Resources & Documentation](#-resources--documentation)
50+
- [Citation](#citation)
51+
- [License](#license)
52+
- [Authors & Acknowledgments](#authors--acknowledgments)
5653

57-
-----
54+
---
5855

5956
## Architecture
6057

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

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.
60+
- **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`.
61+
- **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.
62+
- **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.
63+
- **Inter-Process Communication:** The frontend and backend communicate via thread-safe `multiprocessing.Queues`, allowing for high-speed data transfer without race conditions.
6764

68-
-----
65+
---
6966

7067
## Core Features
7168

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

78-
-----
75+
---
7976

8077
## Instrument Specifications
8178

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

93-
-----
90+
---
9491

9592
## 🚀 Getting Started
9693

@@ -102,38 +99,34 @@ This software controls a facility designed for characterizing the full spectrum
10299
### Installation Steps
103100

104101
1. **Clone the Repository**
105-
106102
```bash
107-
git clone https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git
103+
git clone [https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation.git)
108104
cd PICA-Python-Instrument-Control-and-Automation
109105
```
110106

111107
2. **Create a Virtual Environment**
112108
Recommended to verify dependencies and avoid conflicts.
113-
114109
```bash
115110
# Create the virtual environment
116111
python -m venv venv
117-
112+
118113
# Activate (Windows)
119114
venv\Scripts\activate
120115
# Activate (macOS/Linux)
121116
source venv/bin/activate
122117
```
123118

124119
3. **Install Dependencies**
125-
126120
```bash
127121
pip install -r requirements.txt
128122
```
129123

130124
4. **Launch the Application**
131-
132125
```bash
133126
python PICA_v6.py
134127
```
135128

136-
-----
129+
---
137130

138131
## 🧪 Running Tests
139132

@@ -142,25 +135,22 @@ This repository includes a robust test suite using `pytest`. It mocks hardware i
142135
To run the tests locally:
143136

144137
1. **Install Test Dependencies:**
145-
146138
```bash
147139
pip install pytest pytest-cov flake8
148140
```
149141

150142
2. **Run the Test Suite:**
151-
152143
```bash
153144
python -m pytest
154145
```
155146

156147
3. **Generate Coverage Report:**
157-
158148
```bash
159149
# Generates an HTML report in the htmlcov/ directory
160150
python -m pytest --cov=. --cov-report=html
161151
```
162152

163-
-----
153+
---
164154

165155
## Project History & Evolution
166156

@@ -169,38 +159,33 @@ PICA has evolved from a collection of offline utility scripts into a modular sof
169159
> **📜 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).
170160
171161
### **v15.0 (Current): JOSS Submission & Professionalization**
172-
173162
*Status: Released November 2025*
174163
Focus shifted to code quality, stability, and documentation standards.
175-
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.
164+
* **CI/CD Integration:** Implementation of automated testing pipelines using GitHub Actions.
165+
* **Refactoring:** Comprehensive cleanup of the codebase to meet JOSS standards.
166+
* **Validation:** Currently undergoing rigorous physical validation to ensure the refactoring process retained hardware-specific timing integrity.
179167
180168
### **v13.0 – v14.1 (2025): Architecture Modernization**
181-
182169
*Status: Major Release*
183170
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.
171+
* **Multiprocessing:** Implementation of `multiprocessing` to separate UI threads from instrument control loops.
172+
* **UI Standardization:** Adoption of a unified dark-themed UI across all measurement modules.
173+
* **New Modes:** Added "Passive Sensing" modes for R-T measurements and integrated plotting utilities.
188174
189175
### **2022 – 2024: Inception & Prototyping**
176+
* **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).
177+
* **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.
178+
* *Project Concept:* Proposed by Dr. Sudip Mukherjee to automate characterization workflows.
179+
* *Early Prototypes:* Built iteratively alongside hardware upgrades and cryogenic probe development at UGC-DAE CSR.
190180
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-
-----
181+
---
197182
198183
## 📚 Resources & Documentation
199184
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/`.
185+
* **User Manual:** Detailed setup and troubleshooting guides are available in [docs/User_Manual.md](docs/User_Manual.md).
186+
* **Instrument Manuals:** Original PDF manuals for the supported hardware are located in `assets/Manuals/`.
202187
203-
-----
188+
---
204189
205190
## Citation
206191
@@ -214,9 +199,9 @@ If you use this software in your research, please cite it using the following Bi
214199
year = 2023,
215200
publisher = {GitHub},
216201
version = {15.0.0},
217-
url = {https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation}
202+
url = {[https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation)}
218203
}
219-
```
204+
````
220205
221206
Alternatively, refer to the `CITATION.cff` file in the root directory.
222207
@@ -229,7 +214,7 @@ Alternatively, refer to the `CITATION.cff` file in the root directory.
229214
\</p\>
230215
231216
- **Lead Developer:** **[Prathamesh Deshmukh](https://prathameshdeshmukh.site/)**
232-
- **Principal Investigator:** **[Dr. Sudip Mukherjee](https://www.researchgate.net/lab/Sudip-Mukherjee-Lab)**
217+
- **Principal Investigator:** **[Dr. Sudip Mukherjee](https://www.google.com/search?q=https://www.researchgate.net/lab/Sudip-Mukherjee-Lab)**
233218
- **Affiliation:** *[UGC-DAE Consortium for Scientific Research, Mumbai Centre](https://www.csr.res.in/Mumbai_Centre)*
234219
235220
**Funding:**
@@ -240,9 +225,3 @@ Financial support for this work was provided under SERB-CRG project grant No. CR
240225
## License
241226
242227
This project is licensed under the MIT License - see the [LICENSE](https://www.google.com/search?q=LICENSE) file for details.
243-
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)