{"id":15008861,"url":"https://github.com/picotech/picosdk-python-wrappers","last_synced_at":"2025-11-17T03:38:08.655Z","repository":{"id":38360116,"uuid":"148156912","full_name":"picotech/picosdk-python-wrappers","owner":"picotech","description":"A set of Python bindings and examples for PicoScope® oscilloscope and PicoLog® data logger products.","archived":false,"fork":false,"pushed_at":"2025-09-19T09:47:54.000Z","size":643,"stargazers_count":222,"open_issues_count":8,"forks_count":154,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-09-29T01:21:38.425Z","etag":null,"topics":["linux","macosx","picolog","picoscope","picoscope-oscilloscope","python","python2","python3","windows"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/picotech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-09-10T13:07:42.000Z","updated_at":"2025-09-24T12:20:58.000Z","dependencies_parsed_at":"2024-02-20T15:57:46.638Z","dependency_job_id":"680a077f-f5db-426a-bf64-f05a2cf2571b","html_url":"https://github.com/picotech/picosdk-python-wrappers","commit_stats":{"total_commits":458,"total_committers":20,"mean_commits":22.9,"dds":0.2925764192139738,"last_synced_commit":"393f3d0cd76952d60e40c3a6e968b296363efece"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/picotech/picosdk-python-wrappers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picotech%2Fpicosdk-python-wrappers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picotech%2Fpicosdk-python-wrappers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picotech%2Fpicosdk-python-wrappers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picotech%2Fpicosdk-python-wrappers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/picotech","download_url":"https://codeload.github.com/picotech/picosdk-python-wrappers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picotech%2Fpicosdk-python-wrappers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284818574,"owners_count":27068110,"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-11-17T02:00:06.431Z","response_time":55,"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":["linux","macosx","picolog","picoscope","picoscope-oscilloscope","python","python2","python3","windows"],"created_at":"2024-09-24T19:21:10.528Z","updated_at":"2025-11-17T03:38:08.639Z","avatar_url":"https://github.com/picotech.png","language":"Python","readme":"# picosdk-python-wrappers\n\nWelcome to the PicoSDK for Python. It allows you to control PicoScope devices in your own Python programs.\n\n## Getting started\n\nTo use this code you will need to install the PicoSDK C libraries.\n\n### Microsoft Windows\n\nPlease visit [our Downloads page](https://www.picotech.com/downloads) to download the 32-bit or 64-bit PicoSDK C Libraries for Windows. \nPlease take care to match the \"bitness\" of your python to the PicoSDK.\n\n### Linux\n\nFollow the instructions from our [Linux Software \u0026 Drivers for Oscilloscopes and Data Loggers page](https://www.picotech.com/downloads/linux) \nto install the required driver packages for your product.\n\n### macOS\n\nPlease visit [our Downloads page](https://www.picotech.com/downloads) to download the PicoSDK C Libraries for MacOS.\n\n## Installing the python driver bindings\n\nA `distutils` installer is provided. After you have installed the PicoSDK\ndriver package (see above), the Python package can be installed using the\nfollowing command in the top-level directory:\n\n    pip install .\n\nIf you are not using a virtualenv or are not elevated, use:\n\n    python setup.py install\n\t\n=======\nFor using the AS108 you will need to use the following as well:\n\n\tpython setupPicosynth.py install\n\t\n\nOn macOS and Linux you will either need to use `sudo` with this command, to\ninstall into the system folders, or to install for the current user only you\ncan use:\n\n    pip install . --user\n\nWithin python, the library for `import` is called `picosdk`.\n\n## Compatibility\n\nThis code is written to be compatible with both Python 2.7 and Python 3 (any version).\n\nIf you find a compatibility problem please raise an [Issue](https://www.picotech.com/tech-support), listing all the versions you can find (python, numpy, \npicosdk commit hash, etc.) and your error message(s).\n\n## C interface\n\nYou can access C driver functions directly (ctypes calls) by their original C name, following the [Programmer's\nGuides](https://github.com/picotech/picosdk-python-wrappers#programmers-guides) exactly. Examples are provided in the folders like `psX000[a]Examples/`.\n\n### Programmer's Guides\n\nYou can download Programmer's Guides providing a description of the API functions for the relevant PicoScope or \nPicoLog driver from our [Documentation page](https://www.picotech.com/library/documentation).\n\n## Python interface\n\nWe are in the process of adding Pythonic wrappers around the C functions. If we haven't got to your feature yet or your device is listed as one of the [unsupported models](https://github.com/picotech/picosdk-python-wrappers#unsupported-models),\nlet us know that you're waiting in an [Issue](https://www.picotech.com/tech-support)\n\n### Unsupported models\n\nThe following drivers and devices are not yet supported:\n\n* `plcm3` - PicoLog CM3 Current Data Logger\n* `ps3000` - PicoScope 3204, 3205, 3206, 3223, 3224, 3423 \u0026 3423\n\n### Dependencies\n\nAs well as depending on the C libraries, the Python wrappers use some Python libraries like `numpy`. Many of the\nexamples scripts also use the `matplotlib` plotting library. You can install these dependencies with pip as follows:\n\n    pip install -r requirements.txt\n    pip install -r requirements-for-examples.txt\n\n### Driver-agnostic examples\n\nThe `anyScopeExamples` folder contains examples in pure python which do the same thing as the C-style examples, but\nin a driver-generic way.  These examples are currently not being developed further but are still avaliable to use \nand develop futher yourself.\n\n### Python Classes\n\n#### Library\n\n`picosdk.library.Library` contains a base class for each of the driver classes. It does the job of translating python\ntypes into C ones, and back again, and some unit conversions to get rid of nano, micro and milli-style prefixes. It also\nhandles any differences in programming API between PicoScope driver versions.\n\n#### Device\n\n`picosdk.device.Device` contains the concrete class which represents a PicoScope with a valid handle. It caches some\ninformation about the device state, like the currently selected voltage ranges of the channels.\n\nIt is implemented in terms of the Library class' public interface, and deals almost entirely with python types. The\nmain exception is its handling of numpy arrays - it (knowing the voltage ranges) is responsible for converting the raw\nADC counts that the driver uses for amplitude into physical units.\n\n## Testing this code\n\nCheck which device driver your device uses, and check the constants at the top of test/test_helpers.py to enable the \nrelevant drivers for connected-device tests. (most tests use this).\n\nTo check which driver your device uses, you can use `picosdk.discover`:\n\n    from picosdk.discover import find_all_units\n    \n    scopes = find_all_units()\n    \n    for scope in scopes:\n        print(scope.info)\n        scope.close()\n\nYou should then configure test/test_helpers.py's list of connected devices, so it can run all the tests we have\non your device.\n\nTo run the unit tests, you will need to install nose (e.g. `pip install nose`.) Then, run `nosetests` in the root of \nthe repo. \n\n## Obtaining support\n\nPlease visit our [Support page](https://www.picotech.com/tech-support) to contact us directly or visit our [Test and Measurement Forum](https://www.picotech.com/support/forum17.html) to post questions.\n\n## Copyright and licensing\n\nSee [LICENSE.md](LICENSE.md) for license terms. \n\n*PicoScope*, *PicoLog* and *PicoSDK* are registered trademarks of Pico Technology Ltd. \n\n*Windows* is a registered trademark of Microsoft Corporation. \n\n*macOS* is a registered trademark of Apple Inc. \n\n*Linux* is the registered trademark of Linus Torvalds in the U.S. and other countries.\n\nCopyright © 2018-2019 Pico Technology Ltd. All rights reserved. \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicotech%2Fpicosdk-python-wrappers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpicotech%2Fpicosdk-python-wrappers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicotech%2Fpicosdk-python-wrappers/lists"}