pica-suite 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pica_suite-1.0.0/CHANGELOG.md +191 -0
- pica_suite-1.0.0/CONTRIBUTING.md +133 -0
- pica_suite-1.0.0/LICENSE +21 -0
- pica_suite-1.0.0/MANIFEST.in +9 -0
- pica_suite-1.0.0/PKG-INFO +393 -0
- pica_suite-1.0.0/README.md +365 -0
- pica_suite-1.0.0/docs/Instruments_Manuals_Lists.md +80 -0
- pica_suite-1.0.0/docs/User_Manual.md +685 -0
- pica_suite-1.0.0/pica/CHANGELOG.md +190 -0
- pica_suite-1.0.0/pica/CONTRIBUTING.md +133 -0
- pica_suite-1.0.0/pica/LICENSE +21 -0
- pica_suite-1.0.0/pica/README.md +351 -0
- pica_suite-1.0.0/pica/__init__.py +1 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/00_PICA_Launcher.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/01_GPIB_Scanner.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/02_Plotter_Utility.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K2400_2182_IV.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K2400_2182_RT_Control.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K2400_2182_RT_Sensing.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K2400_IV_Sweep.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K2400_RT_Control.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K2400_RT_Sensing.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K6221_IV_Sweep.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K6221_RT_Control.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K6221_RT_Sensing.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K6517B_IV.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K6517B_RT_Control.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/K6517B_RT_Sensing.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/Keysight_CV.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/Lakeshore_Temp_Control.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/Lakeshore_Temp_Monitor.png +0 -0
- pica_suite-1.0.0/pica/assets/Images/screenshots/Pyroelectric_Current.png +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/PICA_LOGO.ico +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/PICA_LOGO.png +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/PICA_LOGO_NBG.png +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/UGC_DAE_CSR.ico +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/UGC_DAE_CSR.jpeg +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/UGC_DAE_CSR_NBG.jpeg +0 -0
- pica_suite-1.0.0/pica/assets/LOGO/__init__.py +1 -0
- pica_suite-1.0.0/pica/cli.py +151 -0
- pica_suite-1.0.0/pica/docs/Instruments_Manuals_Lists.md +80 -0
- pica_suite-1.0.0/pica/docs/User_Manual.md +670 -0
- pica_suite-1.0.0/pica/keithley/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/Delta_RT_K6221_K2182_L350_Sensing_GUI.py +939 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/Delta_RT_K6221_K2182_L350_T_Control_GUI.py +995 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/IV_K6221_DC_Sweep_GUI.py +365 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/Instrument_Control/Delta_K6221_K2182_L350_T_Sensing_Instrument_Control.py +160 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/Instrument_Control/Delta_K6221_K2182_Simple.py +135 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/Instrument_Control/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/delta_mode/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/k2400/IV_K2400_GUI.py +896 -0
- pica_suite-1.0.0/pica/keithley/k2400/Instrument_Control/IV_K2400_Loop_Instrument_Control.py +97 -0
- pica_suite-1.0.0/pica/keithley/k2400/Instrument_Control/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/k2400/RT_K2400_L350_T_Control_GUI.py +887 -0
- pica_suite-1.0.0/pica/keithley/k2400/RT_K2400_L350_T_Sensing_GUI.py +719 -0
- pica_suite-1.0.0/pica/keithley/k2400/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/k2400_2182/IV_K2400_K2182_GUI.py +772 -0
- pica_suite-1.0.0/pica/keithley/k2400_2182/Instrument_Control/IV_K2400_K2182_Instrument_Control.py +181 -0
- pica_suite-1.0.0/pica/keithley/k2400_2182/Instrument_Control/__init__.py +0 -0
- pica_suite-1.0.0/pica/keithley/k2400_2182/RT_K2400_K2182_L350_T_Sensing_GUI.py +752 -0
- pica_suite-1.0.0/pica/keithley/k2400_2182/RT_K2400_K2182_T_Control_GUI.py +829 -0
- pica_suite-1.0.0/pica/keithley/k2400_2182/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/IV_K6517B_GUI.py +968 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/Instrument_Control/IV_K6517B_L350_T_Control_Instrument_Control.py +348 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/Instrument_Control/IV_K6517B_Simple_Instrument_Control.py +176 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/Instrument_Control/__init__.py +0 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/RT_K6517B_L350_T_Control_GUI.py +1051 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/RT_K6517B_L350_T_Sensing_GUI.py +959 -0
- pica_suite-1.0.0/pica/keithley/k6517b/High_Resistance/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/Instrument_Control/Current_K6517B_Simple_Instrument_Control.py +44 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/Instrument_Control/Poling_K6517B_Instrument_Control.py +51 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/Instrument_Control/PyroDataVisualization_Simple.py +91 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/Instrument_Control/Pyroelectric_K6517B_Working_Instrument_Control.py +115 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/Instrument_Control/__init__.py +1 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/Pyroelectric_K6517B_L350_GUI.py +989 -0
- pica_suite-1.0.0/pica/keithley/k6517b/Pyroelectricity/__init__.py +0 -0
- pica_suite-1.0.0/pica/keithley/k6517b/__init__.py +1 -0
- pica_suite-1.0.0/pica/keysight/CV_KE4980A_GUI.py +841 -0
- pica_suite-1.0.0/pica/keysight/Instrument_Control/CV_KE4980A_Simple_Instrument_Control.py +165 -0
- pica_suite-1.0.0/pica/keysight/Instrument_Control/__init__.py +1 -0
- pica_suite-1.0.0/pica/keysight/__init__.py +1 -0
- pica_suite-1.0.0/pica/lakeshore/Instrument_Control/T_Control_L350_Simple_Instrument_Control.py +346 -0
- pica_suite-1.0.0/pica/lakeshore/Instrument_Control/__init__.py +1 -0
- pica_suite-1.0.0/pica/lakeshore/T_Control_L350_RangeControl_GUI.py +634 -0
- pica_suite-1.0.0/pica/lakeshore/T_Sensing_L350_GUI.py +758 -0
- pica_suite-1.0.0/pica/lakeshore/__init__.py +0 -0
- pica_suite-1.0.0/pica/lockin/BasicTest_S830_Instrument_Control.py +103 -0
- pica_suite-1.0.0/pica/lockin/__init__.py +1 -0
- pica_suite-1.0.0/pica/main.py +928 -0
- pica_suite-1.0.0/pica/utils/GPIB_Instrument_Scanner_GUI.py +298 -0
- pica_suite-1.0.0/pica/utils/GPIB_VISA_InterfaceTest_Simple_Instrument_Control.py +53 -0
- pica_suite-1.0.0/pica/utils/GUI_Basic_Format.py +237 -0
- pica_suite-1.0.0/pica/utils/PlotterUtil_GUI.py +1071 -0
- pica_suite-1.0.0/pica/utils/__init__.py +1 -0
- pica_suite-1.0.0/pica/utils/parser.py +22 -0
- pica_suite-1.0.0/pica_suite.egg-info/PKG-INFO +393 -0
- pica_suite-1.0.0/pica_suite.egg-info/SOURCES.txt +118 -0
- pica_suite-1.0.0/pica_suite.egg-info/dependency_links.txt +1 -0
- pica_suite-1.0.0/pica_suite.egg-info/entry_points.txt +3 -0
- pica_suite-1.0.0/pica_suite.egg-info/requires.txt +13 -0
- pica_suite-1.0.0/pica_suite.egg-info/top_level.txt +1 -0
- pica_suite-1.0.0/pyproject.toml +61 -0
- pica_suite-1.0.0/setup.cfg +7 -0
- pica_suite-1.0.0/setup.py +62 -0
- pica_suite-1.0.0/tests/test_backends_logic.py +146 -0
- pica_suite-1.0.0/tests/test_deep_simulation.py +261 -0
- pica_suite-1.0.0/tests/test_entry_points.py +67 -0
- pica_suite-1.0.0/tests/test_full_stack_simulation.py +155 -0
- pica_suite-1.0.0/tests/test_gui_layouts.py +98 -0
- pica_suite-1.0.0/tests/test_gui_modules_initialization.py +78 -0
- pica_suite-1.0.0/tests/test_missing_coverage.py +109 -0
- pica_suite-1.0.0/tests/test_package_integrity.py +86 -0
- pica_suite-1.0.0/tests/test_pica_launcher.py +53 -0
- pica_suite-1.0.0/tests/test_utilities_logic.py +29 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
go through [releases](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/releases) and [tags](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/tags), for the finalised released versions
|
|
2
|
+
## Instrument & Software Update Log
|
|
3
|
+
---
|
|
4
|
+
### [1.0.0] - 2025-12-15 (Initial Public Release) (Current)
|
|
5
|
+
|
|
6
|
+
- **Versioning**: Version numbering has been reset from legacy development builds (v17.0) to v1.0.0 to standardize the package for public distribution and citation. This version will be updated soon, possibly this week.
|
|
7
|
+
- **JOSS Submission**: Cleaned up documentation, performed fresh install tests, and completed other proofreading in preparation for submission to the Journal of Open Source Software (JOSS).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
### [17.0] - 2025-12-02
|
|
12
|
+
|
|
13
|
+
**Changed**
|
|
14
|
+
|
|
15
|
+
- **Directory Structure**: Refactored codebase into a professional project structure; moved numerous files to appropriate subdirectories for better organization.
|
|
16
|
+
- **Versioning**: Standardized version naming conventions. Adopted Semantic Versioning (v17.0).
|
|
17
|
+
|
|
18
|
+
**Research & Documentation**
|
|
19
|
+
|
|
20
|
+
- **Paper Draft**: Completed and presented the first draft of the research paper to Dr. Sudip Mukherjee.
|
|
21
|
+
- **Feedback**: Received critical feedback regarding the inclusion of ATMS (Advanced Transport Measurement Systems).
|
|
22
|
+
|
|
23
|
+
### [Community] - 2025-12-01
|
|
24
|
+
|
|
25
|
+
- **Launch**: PICA project posted on Hacker News.
|
|
26
|
+
---
|
|
27
|
+
### Version 15.0
|
|
28
|
+
*Released: November 22, 2025*
|
|
29
|
+
*Status: Tested and operational. Minor cosmetic updates pending.*
|
|
30
|
+
|
|
31
|
+
**JOSS Submission & Professionalization**
|
|
32
|
+
|
|
33
|
+
- **Code Cleanup**: Comprehensive refactoring and cleanup of the codebase to meet professional standards for JOSS submission.
|
|
34
|
+
|
|
35
|
+
**A Note on Recent Updates and Testing**:
|
|
36
|
+
|
|
37
|
+
> This software suite is actively used for daily laboratory measurements and is regularly tested on the physical instruments. Recently, a suite of automated tests has been integrated to improve code quality and stability. While these tests validate the core logic, the changes made to support them require a new round of thorough manual testing on the hardware to identify and resolve any practical bugs that may have been introduced. This process is currently underway, and further updates will be provided upon its completion.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
### Version 14.0 and 14.1
|
|
42
|
+
*Released: November 15, 2025*
|
|
43
|
+
- **Improved "Getting Started" Guide:** Clarified installation and launch instructions.
|
|
44
|
+
- **Enhanced Documentation:** Overhauled the main project `README.md` to provide a more comprehensive overview, including a new "Architecture" section that details the frontend-backend separation and the role of `multiprocessing`.
|
|
45
|
+
- **Synchronized Executable README:** Updated `PICA_README.md` for the standalone executable.
|
|
46
|
+
|
|
47
|
+
**GUI Enhancements & New Measurement Modes**
|
|
48
|
+
- **Major GUI Version Bumps:** Updated numerous frontend scripts to their latest stable versions.
|
|
49
|
+
- **New Passive "Sensing" Modes:** Introduced "T-Sensing" modes for resistance logging during external temperature changes.
|
|
50
|
+
- New `Delta Mode R-T (T_Sensing)` module.
|
|
51
|
+
- New `K2400 R-T (T_Sensing)` module.
|
|
52
|
+
- New `K2400_2182 R-T (T_Sensing)` module.
|
|
53
|
+
- New `K6517B R-T (T_Sensing)` module.
|
|
54
|
+
- **Plotter Utility Upgrade:** Enhanced `PlotterUtil_GUI.py` to support simultaneous multi-file plotting.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### Version 13.10 (Lab Baseline)
|
|
59
|
+
*Released: October 10, 2025*
|
|
60
|
+
|
|
61
|
+
**Milestone: Base Laboratory Deployment**
|
|
62
|
+
- **Status:** A stable base version for the laboratory is in place. Almost all core instrument communication and measurement loops are working perfectly.
|
|
63
|
+
- **Context:** This release (`b545cef`) marked the completion of functional development before the focus shifted to cosmetic UI improvements and standardization.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### Version 13.9
|
|
68
|
+
*Released: October 09, 2025*
|
|
69
|
+
|
|
70
|
+
**Documentation & Launcher Synchronization**
|
|
71
|
+
- **Documentation Overhaul:** Synchronized `README.md` and `Change_Logs.md`.
|
|
72
|
+
- **Executable-Specific README:** Created `PICA_README.md`.
|
|
73
|
+
- **Launcher Script Update:** Updated `PICA.py` to reflect versioning.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### Version 13.8
|
|
78
|
+
*Released: October 09, 2025*
|
|
79
|
+
|
|
80
|
+
**Build System & Documentation Overhaul**
|
|
81
|
+
- **New Build System:** Introduced `Picachu.py` for creating standalone Windows executables via Nuitka.
|
|
82
|
+
- **Automated Releases:** Implemented GitHub Actions `build-exe.yml` for automated compilation.
|
|
83
|
+
- **Build Script Refinements:** Optimized `resource_path` for bundled assets.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### Version 13.7
|
|
88
|
+
*Released: October 08, 2025*
|
|
89
|
+
|
|
90
|
+
**GUI Standardization & Modernization**
|
|
91
|
+
- **Major UI/UX Overhaul:** Refactored key frontends (Delta Mode R-T, High-Resistance R-T, Lakeshore Control) to align with the modern, dark-themed UI standard.
|
|
92
|
+
- **Backend Refinements:** Updated `IV_K6517B_L350_T_Control_Backend_v6.py` and `T_Control_L350_Simple_Backend_v10.py` with improved stability logic.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Version 13.6
|
|
97
|
+
*Released: October 07, 2025*
|
|
98
|
+
|
|
99
|
+
**New Measurement GUIs & UI Standardization**
|
|
100
|
+
- **New LCR C-V GUI:** Integrated `CV_KE4980A_GUI_v2.py`.
|
|
101
|
+
- **New K2400/2182 Suites:** Added standardized I-V and R-T frontends.
|
|
102
|
+
- **UI/UX Overhaul:** Standardized all new frontends with a consistent dark-themed design.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### Version 13.5
|
|
107
|
+
*Released: October 06, 2025*
|
|
108
|
+
|
|
109
|
+
**Project-Wide Refactoring**
|
|
110
|
+
- **Major Refactoring:** Reorganized all scripts into instrument-specific folders (e.g., `Keithley_2400`, `Delta_mode_Keithley_6221_2182`).
|
|
111
|
+
- **New Structure:** Separated logic into `Backends` and `GUI` sub-folders.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
### Version 13.4
|
|
116
|
+
*Released: October 05, 2025*
|
|
117
|
+
|
|
118
|
+
**PICA Launcher & Script Integration**
|
|
119
|
+
- **Enhancement:** Upgraded to `PICA.py` with a two-column layout.
|
|
120
|
+
- **New Feature:** Integrated markdown documentation viewer and automatic GPIB/VISA scanner.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### Version 13.3
|
|
125
|
+
*Released: October 05, 2025*
|
|
126
|
+
|
|
127
|
+
- **Enhancement:** Updated launcher to distinguish between "Active" and "Passive" R-T modes.
|
|
128
|
+
- **New Scripts:** Integrated specialized scripts for Keithley 2400 R-T measurements.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### Version 13.2
|
|
133
|
+
*Released: October 05, 2025*
|
|
134
|
+
|
|
135
|
+
- **Enhancement:** Integrated new professional frontends for the Keithley 2400/2182 measurement suite.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Version 13.1
|
|
140
|
+
*Released: October 04, 2025*
|
|
141
|
+
|
|
142
|
+
- **Enhancement:** Validated `Delta_Mode_Active_Temp_Control_V2.py` and `Delta_Mode_IV_Ambient.py`.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Version 13.0 (Delta Mode Milestone)
|
|
147
|
+
*Released: October 03, 2025*
|
|
148
|
+
|
|
149
|
+
- **New Program:** Developed `Delta_Mode_Active_Temp_Control.py` for automated temperature ramping.
|
|
150
|
+
- **New Program:** Created `Delta_Mode_IV_Ambient.py`.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
## Historical Development Archive
|
|
154
|
+
|
|
155
|
+
> **Note on Project Origins:**
|
|
156
|
+
> The PICA software suite underwent an extensive offline development phase on isolated laboratory instrument control systems before its full migration to GitHub. The timeline below reconstructs the development history from raw commit logs and code diffs.
|
|
157
|
+
|
|
158
|
+
### Phase 3: Expansion & Refinement (Sept 2025)
|
|
159
|
+
*Focus on High Resistance & Temperature Control*
|
|
160
|
+
- **Sep 18, 2025:** Refined backend logic for High-Resistance Module (6517B).
|
|
161
|
+
- **Sep 17, 2025:** Developed comprehensive front-end/back-end for High-Resistance R vs. T. Integrated linearized drivers for Lakeshore 350.
|
|
162
|
+
- **Sep 10, 2025:** Major cleanup of `IV_Measurement` scripts and creation of `Lockin_Only.py`.
|
|
163
|
+
- **Sep 06, 2025:** **First Major Refactor.** Reorganized loose scripts into categorized folders (`IV_2400_Only`, `Pyroelectricity`, `Temprature_Controller`).
|
|
164
|
+
|
|
165
|
+
### Phase 2: Modularization (July - Aug 2024)
|
|
166
|
+
*Transitioning from Scripts to Modules*
|
|
167
|
+
- **Aug 15, 2024:** Added `Lakeshore_340_Continue_test.py` to support the older Lakeshore 340 model.
|
|
168
|
+
- **July 27, 2024:** **Structural reorganization.** Moved root-level scripts into categorized folders (`Pyroelectricity`, `LCR Keysight E 4980 A`). Renamed `Keithley_6517B.py` to `Pyroelectricity/Keithley_6517B.py`.
|
|
169
|
+
|
|
170
|
+
### Phase 1: The "Bulk Upload" Era (Mar 2024)
|
|
171
|
+
*Migration of Offline Work*
|
|
172
|
+
- **Mar 22, 2024:** Added Poling capabilities (`Poling_Keithley6517B.py`).
|
|
173
|
+
- **Mar 12, 2024:** Updates to `IV_Measurement.py` and `IV_Combine_2400-2182.py` logic.
|
|
174
|
+
- **Mar 11, 2024:** **Massive Feature Commit.** Added `LCR_CV.py` (Capacitance-Voltage), `Live_Data_Final-pyro.py`, and `IV_Measurement.py`.
|
|
175
|
+
- **Mar 03, 2024:** **Core Drivers Added.** Initial upload of `Keithley_6517B.py`, `Lakeshore350.py`, and `Pyroelectric.py` drivers. This marks the end of the first major offline development block.
|
|
176
|
+
|
|
177
|
+
### Phase 0: Implementation & Testing (Dec 2023)
|
|
178
|
+
*Proof of Concept & Raw SCPI Implementation*
|
|
179
|
+
- **Dec 09, 2023:** Updates to `IV_Front_End.py` and `README`.
|
|
180
|
+
- **Dec 08, 2023:** **Project Birth (Version Control).**
|
|
181
|
+
- *Commit:* `963c8fd` - "Create Combine_2400-2182.py".
|
|
182
|
+
- *Technical Detail:* This initial script implemented raw SCPI buffer operations (`trace:data?`, `assert_trigger`).
|
|
183
|
+
- *Commit:* `f45dba8` - "Create GPIB_TEST.py". Established the first connectivity test for instrument communication.
|
|
184
|
+
|
|
185
|
+
### Phase -1: Inception & Feasibility (June 2022)
|
|
186
|
+
*Concept, Learning, and Prototyping*
|
|
187
|
+
- **June 10, 2022:** **First Tangible Prototype.** Initial proof-of-concept scripts for I-V characterization and shared ("Emailing code for IV.pdf"). This marked the validation of the Python-based control approach before formal development began.
|
|
188
|
+
- **June 09, 2022:** **Environment Setup & Skill Acquisition.** Due to the air-gapped nature of the laboratory computers, the initial Python environment was established by manually downloading dependencies (PyVISA, NumPy, Matplotlib) and installing them offline. This phase involved guided learning of instrument control concepts (e.g., "Python in Origin", SCPI basics) alongside specific training provided by the PI.
|
|
189
|
+
|
|
190
|
+
- **Collaboration Note:** The project's realization was significantly aided by colleagues (from UGC-DAE CSR,Mumbai) who assisted in rectifying technical issues and developing the necessary cryogenic probes and hardware fixtures required for measurements.
|
|
191
|
+
- **June 2022:** **Project Ideation.** Dr. Sudip Mukherjee (Principal Investigator) proposed the initiative for laboratory automation from manual methods to Python-based control. He provided critical roadmap materials, including reference videos, instrument handling protocols, and conceptual designs for the GUI layouts and hardware integration.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Contributing to PICA
|
|
2
|
+
|
|
3
|
+
First of all, thank you for considering contributing to PICA. With support from the community, we can create an open-source tool for scientific measurement and instrument automation to use instead of costly proprietary licensed software.
|
|
4
|
+
|
|
5
|
+
# Building a Collaborative Ecosystem
|
|
6
|
+
|
|
7
|
+
PICA is distributed under the permissive [MIT License](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/blob/main/LICENSE) because we believe scientific software should be a dynamic, living project rather than a static tool. Our goal is to foster a community-driven ecosystem where researchers are free to modify and extend the codebase to support their specific instruments.
|
|
8
|
+
|
|
9
|
+
We designed PICA with a modular architecture specifically to make this process straightforward preventing the redundant effort of rewriting automation scripts from scratch. By contributing your custom drivers or experimental protocols back to the project via GitHub Pull Requests, you help create a more robust and versatile tool for the entire scientific community. Additionally, we rely on community feedback via GitHub Issues to identify edge cases and resolve bugs across diverse hardware setups, accelerating development far beyond what a single team could achieve.
|
|
10
|
+
|
|
11
|
+
# Commitment to Transparency & Reproducibility
|
|
12
|
+
|
|
13
|
+
Beyond practical utility, making PICA open source is a statement of scientific integrity. Unlike proprietary "black box" software that obscures experimental methodology, PICA ensures complete transparency. By accessing the full source code, researchers can audit the exact SCPI command sequences, timing delays, and data handling procedures used in an experiment. This methodological clarity is essential for rigorous validation and reproducibility in modern experimental science.
|
|
14
|
+
|
|
15
|
+
## How to Report Bugs
|
|
16
|
+
|
|
17
|
+
If you encounter a bug, please help us by reporting it. A well-reported bug significantly speeds up the resolution process. Before opening a new issue, please check if a similar issue already exists.
|
|
18
|
+
|
|
19
|
+
When reporting a bug, please include as much detail as possible:
|
|
20
|
+
|
|
21
|
+
* **Steps to reproduce:** Clearly describe how to trigger the bug.
|
|
22
|
+
* **Expected behavior:** What did you expect to happen?
|
|
23
|
+
* **Actual behavior:** What actually happened?
|
|
24
|
+
* **PICA version:** Specify the [version](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/releases) of PICA you are using.
|
|
25
|
+
* **Operating system:** Your OS and version (e.g., Windows 10, Ubuntu 20.04).
|
|
26
|
+
* **Hardware setup:** Briefly describe your instrument setup if relevant.
|
|
27
|
+
* **Error messages/logs:** Include any relevant error messages or console output.
|
|
28
|
+
|
|
29
|
+
You can use the [bug report issue template](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%5BBUG%5D) to ensure you provide all necessary information.
|
|
30
|
+
|
|
31
|
+
## Contributing Code
|
|
32
|
+
|
|
33
|
+
If this is something you think you can fix, then [fork PICA](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/fork) and create a branch with a descriptive name.
|
|
34
|
+
|
|
35
|
+
A good branch name would be:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
git checkout -b feature/add-new-instrument
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Get the test suite running
|
|
42
|
+
|
|
43
|
+
Make sure you're running the [test suite locally](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/blob/main/docs/User_Manual.md#34-development-dependencies-for-testing-optional). It's a good idea to do this before you start making changes to ensure that everything is working correctly.
|
|
44
|
+
|
|
45
|
+
### Coding Style Guide
|
|
46
|
+
|
|
47
|
+
PICA adheres to [PEP 8](https://www.python.org/dev/peps/pep-0008/) for Python code style. Please ensure your contributions follow these guidelines. You can use tools like `flake8` or `black` to help format your code.
|
|
48
|
+
|
|
49
|
+
### Implement your fix or feature
|
|
50
|
+
|
|
51
|
+
At this point, you're ready to make your changes! Feel free to ask for help; everyone is a beginner at first:
|
|
52
|
+
|
|
53
|
+
### Make a Pull Request
|
|
54
|
+
|
|
55
|
+
Once you've made your changes and tested them locally, you're ready to create a Pull Request (PR). A good PR makes it easy for maintainers to understand and review your changes. Please include:
|
|
56
|
+
|
|
57
|
+
* **A clear and concise title:** Summarize the main purpose of your PR.
|
|
58
|
+
* **Detailed description:** Explain the problem your PR solves, how you solved it, and any significant design decisions.
|
|
59
|
+
* **References to issues:** Link to any related issues (e.g., "Fixes #123" or "Closes #456").
|
|
60
|
+
* **Testing done:** Describe how you tested your changes.
|
|
61
|
+
|
|
62
|
+
At this point, you should switch back to your main branch and make sure it's up to date with the latest upstream version of PICA.
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
git remote add upstream git@github.com:prathameshnium/PICA-Python-Instrument-Control-and-Automation.git
|
|
66
|
+
git checkout main
|
|
67
|
+
git pull upstream main
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Then update your feature branch from your local copy of main, and push it!
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
git checkout feature/add-new-instrument
|
|
74
|
+
git rebase main
|
|
75
|
+
git push --force-with-lease origin feature/add-new-instrument
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Finally, go to GitHub and [make a Pull Request](https://github.com/prathameshnium/PICA-Python-Instrument-Control-and-Automation/pulls)
|
|
79
|
+
|
|
80
|
+
### Keeping your Pull Request updated
|
|
81
|
+
|
|
82
|
+
If a maintainer asks you to "rebase" your PR, they're saying that a lot of code has changed, and that you need to update your branch so it's easier to merge.
|
|
83
|
+
|
|
84
|
+
To learn more about rebasing and merging, check out this guide from Atlassian:
|
|
85
|
+
[https://www.atlassian.com/git/tutorials/merging-vs-rebasing](https://www.atlassian.com/git/tutorials/merging-vs-rebasing)
|
|
86
|
+
|
|
87
|
+
### Adding a New Instrument Module
|
|
88
|
+
|
|
89
|
+
One of the most important contributions you can make is to add support for new instruments. The architecture was designed to make this process straightforward by following a set of well-defined steps. Essentially, these are the same steps the original developers followed when adding new modules.
|
|
90
|
+
|
|
91
|
+
#### Understanding the Architecture
|
|
92
|
+
Code duplication is considered acceptable to avoid over-abstraction, which can make the project harder to maintain.
|
|
93
|
+
|
|
94
|
+
#### Start with a Template
|
|
95
|
+
|
|
96
|
+
The easiest way to start is to copy an existing module that is closest to your task or has the functionality you need.
|
|
97
|
+
|
|
98
|
+
#### 1. Create New Files
|
|
99
|
+
|
|
100
|
+
1. Create a new directory for your instrument under the appropriate vendor (e.g., `pica/new_vendor/my_instrument/`).
|
|
101
|
+
2. Paste the copied files into this new directory.
|
|
102
|
+
3. Rename the files to reflect your new module (e.g., `IV_ABC_Instrument_GUI.py` and `IV_ABC_Instrument_Control.py`).
|
|
103
|
+
|
|
104
|
+
#### 2. Implement the Instrument Control Logic
|
|
105
|
+
|
|
106
|
+
Start with the basic instrument communication, then add measurement protocols, data saving, and plotting. Ensure that instrument communication (handled by `PyVISA` or `pymeasure`) uses the correct SCPI commands, Replace the existing SCPI commands (e.g. `:SOUR:VOLT`, `:MEAS:CURR?`) with the commands specific to your instrument.. Your instrument's programming manual is the definitive source for these commands.Adjust the data parsing logic to handle the output format of your instrument.
|
|
107
|
+
|
|
108
|
+
#### 3. Modify the GUI (`..._GUI.py`)
|
|
109
|
+
|
|
110
|
+
1. Open your new `..._GUI.py` file.
|
|
111
|
+
2. Update the `Tkinter` widgets (labels, entry boxes, dropdowns) to match the parameters required for your instrument (e.g., voltage range, compliance, measurement speed).
|
|
112
|
+
3. Ensure the "Start" button calls your new control logic (copy the logic from Instrument_Control file to here), passing the necessary parameters from the GUI.
|
|
113
|
+
|
|
114
|
+
#### 4. Integrate into the PICA Launcher
|
|
115
|
+
|
|
116
|
+
To make your new module accessible from the main dashboard:
|
|
117
|
+
|
|
118
|
+
1. Open `pica/main.py`.
|
|
119
|
+
2. Find the section where the instrument buttons are created (search for a `tk.Button` that launches an existing module).
|
|
120
|
+
3. Add a new `tk.Button` for your module. The button's `command` should be a function that launches your new `..._GUI.py` script. You can model this on the existing launcher functions.
|
|
121
|
+
|
|
122
|
+
#### 5. Test and Document
|
|
123
|
+
|
|
124
|
+
- Run your new module standalone and from the PICA launcher to ensure it works as expected. Test edge cases. It's often helpful to have a new user try it, as they can often find bugs you might have missed.
|
|
125
|
+
- Consider adding a section for your new instrument in `docs/User_Manual.md` and adding a screenshot to `pica/assets/Images/screenshots/`.
|
|
126
|
+
|
|
127
|
+
## Support
|
|
128
|
+
|
|
129
|
+
For any questions, support, or assistance, please open a GitHub Issue in the main repository. This is the preferred and primary method for getting in touch with the development team and community for support.
|
|
130
|
+
|
|
131
|
+
## Code of Conduct
|
|
132
|
+
|
|
133
|
+
Everyone interacting in the PICA project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [PICA Code of Conduct](CODE_OF_CONDUCT.md).
|
pica_suite-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Prathamesh Deshmukh, Dr. Sudip Mukherjee
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
recursive-include pica/assets *
|
|
2
|
+
recursive-include pica *.py
|
|
3
|
+
|
|
4
|
+
# Include top-level documentation and legal files that are copied into the pica package
|
|
5
|
+
include pica/README.md
|
|
6
|
+
include pica/LICENSE
|
|
7
|
+
include pica/CHANGELOG.md
|
|
8
|
+
include pica/CONTRIBUTING.md
|
|
9
|
+
recursive-include pica/docs *
|