GithubHelp home page GithubHelp logo

beams's Introduction

Beamline Engineering Automation Management Systems

Name pending.

What is it

Framework for automating actions done by operators in a modular, procedural way such that we can conretize the intended set of actions we take to permutate beamline state and ensure our systems adhere to explicitly state sequencing logic.

More to come.

High level documentation

Link

To setup

  • clone to directory
  • mkdir venv && python -m venv venv make venv
  • source venv/bin/activate activate venv
  • pip3 install requirements.txt

Makefile interface

  • make test - runs tests in test directory
  • make test_verbose - runs tests in test directory and prints stdout
  • make update_beams - updates the locally install beams package
  • make flake8 - flake check source files
  • make gen_grpc - generates all needed GRPC files
  • make docker_image - builds rhel7 docker image with slac-epics base and BEAMS directory
  • make run_sequener - launches sequencer engine

Hanging TODOs:

  • make a decorator for work functions in beams/sequencer/Worker.py that logs PID
  • handle keyboard interrupt kill signal more elegantly
  • can package Queue and Event in single object

beams's People

Contributors

joshc-slac avatar

Watchers

Zachary Lentz avatar  avatar Robert Tang-Kong avatar

beams's Issues

JSON generated trees

The best structure of the actual configuration file is slightly eluding me.

For real, interesting, multilayered trees we probably will just need to explicitly have a list of node objects within the json document that specify their parent child relationships within the tree.

This likely looks like adding:
parent and child fields to the: CheckAndDoNodeEntry class.

class CheckAndDoNodeEntry(_NodeEntry):
check_and_do_type: CheckAndDoNodeType
check_entry: CheckEntry
do_entry: DoEntry
n_type : NodeType = NodeType.CHECKandDO

Then making the notion of config document able to hold multiple of these classes. My unfamiliarity with apischema is throwing me off the scent here.

replumb up with GRPC

the ideal would be that GRPC is just a transport layer and we can now invoke any sequence if the corresponding config file exists.

That requires this function be properly implemented with requisite safeguards:

job = GenerateTreeFromRequest(request)

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.