Giter VIP home page Giter VIP logo

pylabnet's People

Contributors

cknaut avatar ctn2014 avatar danielra97 avatar dependabot[bot] avatar huanyanqi avatar kelwerks avatar kofridberg avatar mkbhaskar avatar pieterjanstas avatar ps-cd avatar rivkabekenstein avatar wenjieg avatar wi11dey avatar yanchengweitony avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pylabnet's Issues

Add docstrings to client classes

Client classes (dummy wrapper implementation) don't have docstrings - these are written for the low level functions. However, in practical operation of pylabnet one uses the client functions, so it is helpful to have the documentation available when using the client functions in an IDE. This should be a simple copy paste job, unless there is a more elegant solution that @cknaut knows about?

Create centralized, convenient launcher

Create a launcher that centralizes access to all servers + logger. Should handle automatic connection to necessary servers, enabling easy "double-click" type access to scripts that involve arbitrary combinations of GUI(s), hardware servers, dummy servers, and clients, all connected to a single logger.

Magnet power supply control

Software control of magnet power supplies, enabling safe ramping of fields including heat switch control, as well as an eventual network interface to provide signals to neighboring labs for reference on field status

Confluence - GUI integration

Add a button to the GUI which captures a screenshot of the current GUI window and uploads it to the confluence (for example, a webpage like lab book/year/month/date)

Can also add functionality to store metadata on the website

Nanopositioner software crashing

Nanopositioner software crashes without throwing an error occasionally when step/walk buttons are pressed. The GUI just disconnects silently which then breaks the script.

Kill running servers

Implement functionality to kill running servers. Current functionality requires closing the python process (e.g. by closing the shell in which it runs)

For example, to kill a GUI server when the GUI window is closed.

Nanopositioner control

GUI control of Smaract nanopositioners for single step, continuous move (with variable amplitude/frequency), and DC voltage for all axes simulatneously

Add convenient digital waveform generation and visualization functionality

Using a class based approach, this task encompasses:

  • Easy definition of single digital pulses specified on one output bit (one 'line').
  • Possibility to easily combine these single-line digital pulse-trains to multi-line pulse sequences.
  • Must be able to easily add and insert pulses into single-line pulses or multi-line pulse sequences.
  • Must have convenient plotting function visualizing the pulse sequence.

@mkbhaskar: Feel free to add desired specs.

The above should be implemented in a hardware agnostic way, i.e. pulses should be stored as arrays of zeros and ones. Interpreting the pulses in a hardware specific way will be handled by a different class (see also #35).

Hostnames

Allow users to refer to computers by host-names, rather than IP Addresses

Stable network configuration

Find, implement, and document instructions for reliably setting up and connecting pylabnet computers over a network using Windows 10

Interface for convenient hardware channel assignment

Make a GUI where the user can edit channel assignments (ideally for digital channels to be used with HDAWG, but perhaps also for other hardware channels). Should either run a server so that other software can retrieve channel assignments, or work off a config file

Convenient Toptica laser optimization

Add functionality to remotely and conveniently optimize Toptica laser properties (current, temperature) for desired scan range.

Includes:

  • Write drivers for enabling scan remotely/set current/set temp remotely
  • Potentially automated or smart routines for tuning parameters for desired scan range
  • Motor box control driver (API pending)

Define which errors should raise exceptions

One of the main features of pylabnet is that errors in sub-routines will not crash the entire experiment by raising exceptions, but rather just output an error message into the LogHandler. However, some errors will make the execution of scripts impossible, such as for example errors occurring during setup of HardwareDrivers.

I will for now raise explicit exceptions for all setup-related code but am opening this issue as an reminder to discuss this topic at some point and to define a guideline.

Create basic driver for ZI AWG

Write wrapper for:

  • Access all nodes via setInt/setFloat commands.
  • log all diagnostics output in LogService.
  • Upload function for sequences.
  • Dynamic waveform upload for changing waveforms in AWG memory directly.

HDAWG breakout driver

Write driver for setting and getting voltages for HDAWG breakout box via ASCII commands

Optimizer

Generic Optimizer class that can attach to a specific experiment and optimize parameters quickly (for example to tune up laser or microwave frequency)

SNSPD control class

Automatic de-latching, any other SNSPD related functions (e.g ideal working ranges, maybe using config file)

Sweeper functionality

Implement a generic Sweeper class that can be used to sweep experimental parameters and obtain data as a function of those parameters

Write method comparing desired pulse sequence with measured one

Proper testing of pulse-sequence generating code should be done by code. This means that a method of comparing the desired time-trace to a measured one must be written. This can easily be done by using using the cross-correlation between measured and desired signal to overlay them and then compare them.

Lakeshore driver

Driver for reading temperature and setting heater power, eventually optimized procedure

Multi-node network operation

Test and implement multi-node network operation.

  1. Performing basic tasks, e.g. creating a client on a separate machine and successfully connecting
  2. More complicated tasks, involving transfer of convenient log/launch functionality to multi-node system. To be implemented once #25 is solved
  • Option (a) centralize logger at main node. This has a natural feel in our experiment, but I'm not sure this scales well as the network size grows
  • Option (b) each node has its own centralized logger.
  • Option (c) some hybrid solution with a main logger and sub-loggers at other nodes

GUI - script launching/closing

Have the ability to close the script nicely when the GUI is closed. Perhaps implement the functionality as an optional flag in the launcher module

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.