{"id":19811598,"url":"https://github.com/timothyhollabaugh/ppplcalibrationframework","last_synced_at":"2025-07-24T07:36:48.636Z","repository":{"id":79880965,"uuid":"97870228","full_name":"timothyhollabaugh/PPPLCalibrationFramework","owner":"timothyhollabaugh","description":"A tool to scan through multiple hardware axis and take measurements for the Princeton Plasma Physics Lab","archived":false,"fork":false,"pushed_at":"2017-09-14T20:37:57.000Z","size":106,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-01T08:35:03.513Z","etag":null,"topics":["camera","camera-calibration","department-of-energy","gw-instek","laser","opencv-python","pppl","princeton","princeton-plasma-physics-lab","princeton-university","pyforms","pyqt5","python3","pyvisa","thorlabs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timothyhollabaugh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-20T19:15:17.000Z","updated_at":"2022-09-09T02:28:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"24e7351d-8d7d-4828-8424-1552c7fb7e36","html_url":"https://github.com/timothyhollabaugh/PPPLCalibrationFramework","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/timothyhollabaugh/PPPLCalibrationFramework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timothyhollabaugh%2FPPPLCalibrationFramework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timothyhollabaugh%2FPPPLCalibrationFramework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timothyhollabaugh%2FPPPLCalibrationFramework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timothyhollabaugh%2FPPPLCalibrationFramework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timothyhollabaugh","download_url":"https://codeload.github.com/timothyhollabaugh/PPPLCalibrationFramework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timothyhollabaugh%2FPPPLCalibrationFramework/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266808556,"owners_count":23987450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["camera","camera-calibration","department-of-energy","gw-instek","laser","opencv-python","pppl","princeton","princeton-plasma-physics-lab","princeton-university","pyforms","pyqt5","python3","pyvisa","thorlabs"],"created_at":"2024-11-12T09:27:06.714Z","updated_at":"2025-07-24T07:36:48.598Z","avatar_url":"https://github.com/timothyhollabaugh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PPPLCalibrationFramework\nA tool to scan through multiple hardware axis and take measurements for the Princeton Plasma Physics Lab\n\nThis was developed during an internship for the [Princeton Plasma Physics Laboratory](http://www.pppl.gov/) (PPPL), sponsored by the DoE and run by Princeton University.\n\nIf you have ever needed to painstackenly scan through multiple dimensions are record measurements at each point, then this is for you!\n\nQuickly scan through multiple points along many different axis (X, Y, power, frequency, etc) and measure the value(s) of a sensor at each one.\n\n**Note:** This requires a custom fork of the Pyforms library: [https://github.com/chickenchuck040/pyforms](https://github.com/chickenchuck040/pyforms)\n\n**Features:**\n - Quickly create and configure axis to scan through\n - Jog axis manually\n - Specify a list of points to scan\n - Import a CSV of pre generated points\n - Export measured data to CSV\n \n **Supported Axis:**\n - [Thorlabs LTS150](https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=3961\u0026pn=LTS150#8110) Linear Stage\n - [Thorlabs BSC201](https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=1704\u0026pn=BSC201) Stepper motor controller\n - [BlueLyte LC Laser](http://www.global-lasertech.co.uk/wp-content/uploads/2014/04/BlueLyte_LC_Userguide_EN.pdf) Power and Frequency using\n   - [GW Instek AFG-3021](http://www.gwinstek.com/en-global/products/Signal_Sources/Arbitrary_Function_Generators/AFG-303x) Arbitrary Function Generator\n   - [GW Instek GPD-4303S](http://www.gwinstek.com/en-global/products/DC_Power_Supply/Programmable_Multiple_Channel_DC_Power_Supplies/GPD-Series) Power Supply\n\n**Supported Sensors**\n - [Thorlabs PDA36A](https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=3257\u0026pn=PDA36A#10781) Photodetector\n - [Thorlabs DCC1545M](https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=4024) Camera\n - [PCI DV C-Link](https://edt.com/product/pci-dv-c-link/) Cameralink frame grabber \n\n# Dependencies\nMany python dependancies are required for this program to run\n## Thorlabs APT\n In order to control the Thorlabs APT motion stages, the thorlabs APT library is used.\n This can be downloaded and installed from https://www.thorlabs.com/software_pages/ViewSoftwarePage.cfm?Code=Motion_Control\n \n At first, I was using the 32 bit for software for 64 bit windows, along with 32 bit python, to get it to work with python.\n I may have gotten it to work with everything 64 bit.\n \n To interface to python, I used https://github.com/qpit/thorlabs_apt. You will need to copy APT.dll from the \"APT installation path\\APT Server\" directory to the `thorlabs_apt/thorlabs_apt` directory with `__init__.py`. Then, you will need to edit the `setup.py` file in thorlabs_apt to copy `APT.dll` to the installation directory when it installs. Including the line `package_data={'': ['APT.dll']}` in the `setup` function call in `setup.py` should work (See https://stackoverflow.com/questions/1612733/including-non-python-files-with-setup-py). Then run `python setup.py install` to install it.\n \n## Labjack\n In order to talk to the Labjack T7 Pro used to read the photosensor, the labjack Python for LJM library was used: https://labjack.com/support/software/examples/ljm/python. Follow the directions there to download and install both Python for LJM and the LJM library.\n \n## Pyforms\n To create the GUI, a custom fork of the [pyforms](https://github.com/UmSenhorQualquer/pyforms) library was used. The fork can be found at https://github.com/chickenchuck040/pyforms. It includes fixes that have not yet been merged into pyforms yet.\n To install, run `python setup.py install`.\n Dependancies for Pyforms can be found at http://pyforms.readthedocs.io/en/v2.0/#installation. Of the optional dependancies listed, PyOpengl, Numpy, and Python OpenCV are needed.\n In order to install pysettings, you will also need to install `logging-bootstrap` by running \n `pip install git+https://UmSenhorQualquer@bitbucket.org/fchampalimaud/logging-bootstrap.git --upgrade`\n See https://github.com/UmSenhorQualquer/pyforms/issues/12#issuecomment-263016759 for more information.\n \n## qtawsome\n For some of the icons in the GUI, [qtawsome](https://github.com/spyder-ide/qtawesome) was used. This can be installed with\n `pip install qtawesome`\n\n## Cameralink Framegrabber and FLIR Tau 2 camera\n In order to talk to the [PCI DV C-Link](https://edt.com/product/pci-dv-c-link/) framegrabber, you must download and install the PDV software and drivers from https://edt.com/file-category/pdv/.\n The configuration for the Tau2 camera can be found in the `flir` directory in this repository. These must be copied to `C:\\EDT\\pdv\\camera_config`. There is one file for the 8 bit mode on the camera, and one for the 14 bit mode. This calibration program uses the 14 bit mode. The corresponding mode must be selected in the FLIR camera controller GUI before use. The FLIR camera controller GUI can be downloaded from http://www.flir.com/cores/display/?id=51880.\n Also, the correct configuration file must be selected by running the `pdvshow` application. This will let you view the image from the camera and ensure that it is working properly.\n \n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimothyhollabaugh%2Fppplcalibrationframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimothyhollabaugh%2Fppplcalibrationframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimothyhollabaugh%2Fppplcalibrationframework/lists"}