Giter Site home page Giter Site logo

codacy-badger / rogue Goto Github PK

View Code? Open in Web Editor NEW

This project forked from slaclab/rogue

0.0 0.0 0.0 2.13 MB

SLAC Python Based Hardware Abstraction & Data Acquisition System

License: Other

CMake 3.25% C++ 70.88% C 0.54% Python 25.12% Shell 0.21%

rogue's Introduction

Build Status Codacy Badge Codacy Badge

rogue

SLAC Python Based Hardware Abstraction & Data Acquisition System

Email List For Announcements: https://listserv.slac.stanford.edu/cgi-bin/wa?A0=AIR-ROGUE-USERS

JIRA: https://jira.slac.stanford.edu/plugins/servlet/project-config/ESROGUE

Introduction presentation: https://docs.google.com/presentation/d/1m2nqGzCZXsQV8ul4d0Gk7xmwn-OLW1iucTLm7LLp9eg/edit?usp=sharing some concepts (Blocks and Variables) are a little out of data as we have made changes.

For example scripts and sub-class source code examples see:

https://github.com/slaclab/rogue-example

Required Packages For Building Rogue

The following packages are required to build the rogue library:

  • cmake >= 3.5
  • Boost >= 1.58
  • python3 >= 3.6
  • bz2

To add these packages on Ubuntu 17.04 (or later):

$ apt-get install cmake (or cmake3)
$ apt-get install python3
$ apt-get install libboost-all-dev
$ apt-get install libbz2-dev
$ apt-get install python3-pip
$ apt-get install git

To add these packages on archlinux:

$ pacman -S cmake
$ pacman -S python3
$ pacman -S boost
$ pacman -S bzip2
$ pacman -S python-pip
$ pacman -S git

To use these packages on a rhel6 machine at SLAC requires some extra steps due to the computers being out of date:

$ export MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles:/afs/slac.stanford.edu/package/spack/share/spack/modules/linux-rhel6-x86_64
$ module load cmake-3.9.4-gcc-4.9.4-ofjqova
$ source /afs/slac.stanford.edu/g/reseng/python/3.6.1/settings.sh
$ source /afs/slac.stanford.edu/g/reseng/boost/1.64.0/settings.sh

or for csh:

$ setenv MODULEPATH /usr/share/Modules/modulefiles:/etc/modulefiles:/afs/slac.stanford.edu/package/spack/share/spack/modules/linux-rhel6-x86_64
$ module load cmake-3.9.4-gcc-4.9.4-ofjqova
$ source /afs/slac.stanford.edu/g/reseng/python/3.6.1/settings.csh
$ source /afs/slac.stanford.edu/g/reseng/boost/1.64.0/settings.csh

The rogue distribution includes a pair of setup scripts for the SLAC environment:

$ source setup_slac.sh

or for csh:

$ source setup_slac.csh

These scripts include also include the optional zeromq and epics packages described below.

Optional Packages

ZeroMq is used for some of the python based messaging interface, particularly the simulation interfaces. To use the GUI interface you will need to install either pyqt5 or pyqt4.

On Ubuntu 17.04 (or later):

$ apt-get install libzmq3-dev
$ apt-get install python3-pyqt5
$ apt-get install python3-pyqt4

On archlinux:

$ pacman -S zeromq
$ pacman -S python-pyqt5
$ pacman -S python-pyqt4

At SLAC pyqt4 is already included with the centrally install python3, to add support for zeromq:

$ source /afs/slac.stanford.edu/g/reseng/zeromq/4.2.1/settings.sh

or for csh:

$ source /afs/slac.stanford.edu/g/reseng/zeromq/4.2.1/settings.csh

Epics V3 support is and optional module that will be included in the rogue build if the EPICS_BASE directory is set in the user's environment. Setup scripts for EPICs at SLAC are included in the following directory:

$ source /slac/slac.stanford.edu/g/reseng/epics/base-R3-15-5-1-0/settings.sh

for for csh:

$ source /slac/slac.stanford.edu/g/reseng/epics/base-R3-15-5-1-0/settings.csh

Python packages required

The following python packages are required to use rogue in the python3 environment. Currently I am using PIP to install these, but you are free to use your favorite python tool. These packages are already included in afs based SLAC python3 install mentioned above.

$ pip3 install PyYAML
$ pip3 install Pyro4
$ pip3 install parse
$ pip3 install click

The following are optional:

$ pip3 install ipython
$ pip3 install pyzmq
$ pip3 install mysqlclient

Building Rogue

The rogue compile uses cmake. To download and build rogue:

$ git clone https://github.com/slaclab/rogue.git
$ cd rogue
$ git submodule init
$ git submodule update
$ mkdir build
$ cd build
$ cmake ..  (or cmake3)
$ make

to update from git and rebuild:

$ git pull
$ git submodule update
$ cd build
$ make rebuild_cache
$ make clean
$ make

Two libraries are output from the compute. lib/librogue-core.so is a c++ core library for the various rogue classes and function. python/rogue.so is a shared object library for importing into python.

The lib subdirecotry of rogue should be included in your LD_LIBRARY_PATH and the python subdirectory should be include in your PYTHONPATH. A pair of setup scripts for both bash and c-shell are include in the rogue distribution:

$ source setup_rogue.sh

or for csh:

$ source setup_rogue.csh

These scripts also set the ROGUE_DIR environment variable which is usefull when setting up the example projects or some SLAC projects.

You may want to create a custom setup script to combine the rogue setup with other environmental setups for your project.

Drivers

Rogue is linked against the aes-stream-drivers package which is included as a submodule at the drivers sub-directory. If you need to use these drivers please see the README.md file in that package.

Additional Notes

The rogue package includes a readme file for compiling and installing local versions of python3, boost,zeromq and epics. This were created as notes when installing local packages at slac. These should only be neccessary for outdated versions of Linux.

  • Readme_local_packages.md

rogue's People

Contributors

slacrherbst avatar bengineerd avatar jesusvasquez333 avatar ruck314 avatar ddoering avatar abunimeh avatar mkwiatko avatar

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.