Giter VIP home page Giter VIP logo

autodidaqt's Introduction

autodidaqt

test_status coverage docs_status

example

autodidaqt := DAQ + UI generation + Reactivity + Instruments

You should be spending your time designing and running experiments, not your DAQ software.

autodidaqt is a nuts and bolts included framework for scientific data acquisition (DAQ), designed for rapid prototyping and the challenging DAQ environment of angle resolved photoemission spectroscopy. If you specify how to sequence motions and data collection, autodidaqt can manage the user interface, talking to and managing instruments, plotting interim data, data collation, and IO for you.

autodidaqt also has logging and notification support built in and can let you know over email or Slack when your experiment finishes (successfully or not!).

If autodidaqt doesn't do exactly what you need, get in contact with us or check out the examples. There's a good chance that if it isn't built in, autodidaqt is flexible enough to support your use case.

Requirements

  • Python 3.7 over
  • NoArch

Features

Automated DAQ

autodidaqt wraps instruments and data sources in a uniform interface, if you specify how to sequence motion and acquisition, autodidaqt handles async collection, IO, and visualizing your data as it is acquired.

UI Generation

autodidaqt using PyQt and Qt5 to generate UIs for your experiments. It also provides simple bindings (autodidaqt.ui) that make making managing the day to day of working on PyQt simpler, if you need to do UI scripting of your own.

It also ships with a window manager that you can register your windows against, making it seamless to add extra functionality to your experiments.

The autodidaqt UI bindings are wrapped to publish as RxPY observables, making it easier to integrate your PyQT UI into a coherent asynchronous application.

Installation

$ pip install autodidaqt

Installation from Source

  1. Clone this repository
  2. Install make if you are on a Windows system
  3. Install poetry (the alternative Python package manager)
  4. Run make install from the directory containing this README

Usage

For usage examples, explore the scripts in the examples folder. You can run them with

$ python -m autodidaqt.examples.[example_name]

replacing [example_name] with one of:

  1. minimal_app
  2. plot_data
  3. simple_actors
  4. ui_panels
  5. wrapping_instruments
  6. scanning_experiment
  7. scanning_experiment_revisited
  8. scanning_interlocks
  9. scanning_custom_plots
  10. scanning_setup_and_teardown
  11. scanning_properties_and_profiles
  12. manuscript_fig4

You can also get a list of all the available examples by running

$ python -m autodidaqt.examples

Examples for "remote control", including a "virtual nanoXPS lab" are available in integration_tests folder of AutodiDAQt receiver in its companion repository.

autodidaqt's People

Contributors

chstan avatar jgobbo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

umaxy jgobbo

autodidaqt's Issues

PyQt5

Failing to install from pip on PyQt5 dependency.

ERROR: Could not find a version that satisfies the requirement PyQt5<5.14.0,>=5.13.0 (from autodidaqt) (from versions: 5.12.3, 5.14.0, 5.14.1, 5.14.2, 5.15.0, 5.15.1, 5.15.2, 5.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7)
ERROR: No matching distribution found for PyQt5<5.14.0,>=5.13.0

unnecessarily difficult to access metadata

At present, the 'comment' metadata (e.g. scan parameters, notes, name) are saved in the same file as the step-by-step log. The comment is typically a few dozen lines long, and the step-by-step log can be millions of lines long.

It could be good to save these two items in separate files so that one can access the comment metadata of many scans using the standard python .json library (which seems to load entire file) without having to read from gigabytes+ of data from all of the scans.

Simple workaround is to load each file line-by-line until its comment has been fully read.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.