Coder Social home page Coder Social logo

hqcmeas's People

Contributors

lcontami avatar matthieudartiailh avatar pheidmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hqcmeas's Issues

Add convenience to open a temporary connection to an instrument in the InstrTaskView.

The idea is that in some cases the user might want to know the current of an instrument when editing its measure and he should be able to do it without having to handle himself the authorization request (Even if I do not think it is a great idea to rely on the instrument state, as persistent measure become more tricky).
Road map :

  • declare the standard editor to be an instrument user with an unreleasable policy.
  • define a nice API in InstrTaskView to get an instrument knowing it might take some time to release it from it previous use.

Develop a package manager

The idea behind this is that as the number of user will increase, they will be likely to implement some custom tasks/pulse shapes/plugins or even drivers and that for various reason it would not make sense to embed them in the main project (because they are too specific).

Setuptools provide the notion of entry points that can be used to provide extension to a pluggable application. So each extension package would simply declare an entry point pointing to a callable returning one or several Enaml manifest. Each manifest will list all the extensions the new package provides to the program. This has the advantage to centralize everything in the application, furthermore as users are likely to need to contribute some basic UI writing a basic enaml file with their manifest should be easy.

The following parts of the program may be turned into packages :

  • debugger : this is useful only to people developing driver which hopefully won't be everybody
  • control : this is a kind of ghost anyway for the time being but as it might be quite heavy it would make sense to have it being external.
  • pulses : because not everybody will need them

Implied changes :

  • add a plugin 'extensions' who will have to iter over the package declaring the right entry point and register them. Possibly having it be able to install, uninstall packages using pip (conda perhaps also in long run) would be awesome. Offering the possibility to deactivate some installed packages might be interesting too.
  • refactor the following plugins as elements must now be provided using an extension declared in a manifest (must define the form of the extensions):
    • task manager : tasks, interfaces, config and filters
    • instrument manager : driver_types, drivers, forms
    • pulses manager : shapes, sequences, contexts

The other plugins should behave nicely.

Refactoring (as a number of things will change including the name of the project we can take advantage of the situation to re-organize one or two things):

  • create an app package in which we move the following plugins:
    • app
    • preferences
    • state
    • dependencies
    • extensions
    • log (minor: store log in string so that we can always display a full log in workspaces, currently messages emitted before the workspace starting are missing)
  • create a tasks package in tasks and utils, logic, instr inside (task_logic, task_instr, ... is ugly and discouraged by PEP8)

New considerations:

  • allowing user to contribute new stuff may mean they can override existing classes, do we allow that ?
  • if we do how do we handle the overriding order (plugins may not always be loaded in the same order) ?
  • if we don't do we let the user handle name conflict or try to do it ourselves ?
  • how do we keep a clean mapping between task/interface and the instrument they can use ?

AWG tasks

  • Edition and transfert of pulse sequences
  • selection of pulse sequence and running
  • stop pulse sequence

Fix order of check running in LoopTask

Currently interface checks are run after the children checks in LoopTask which means that the children does not have access to the right iterable values when running their checks.

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.