Usage with Python

To use Lewis directly via Python you must first install its dependencies:

  • Python 3.6+

  • pip (latest)

On most linux systems these can be installed via the distribution’s package manager.

Virtual environments

We recommend using a virtual environment.

Installation via pip

Lewis is available on the Python Package Index <https://pypi.python.org/pypi/lewis>__. That means it can be installed using pip:

$ pip install lewis

This will install lewis along with its dependencies. If you would like to use EPICS based devices and have a working EPICS environment on your machine, you can install it like this to get the additional required dependencies:

$ pip install lewis[epics]

This will install two scripts in the path, lewis and lewis-control. Both scripts provide command line help:

$ lewis --help
$ lewis-control --help

To list available devices, just type lewis in the command line, a list of devices that are available for simulation will be printed.

All following sections of this user manual assume that Lewis has been installed via pip and that the lewis command is available.

Installation from source

Clone the repository in a location of your choice, we recommend that you do it inside a virtual environment so that you can keep track of the dependencies:

$ git clone https://github.com/ISISComputingGroup/lewis.git

If you do not have git available, you can also download this repository as an archive and unpack it somewhere. A few additional dependencies must be installed. This can be done through pip in the top level directory of Lewis, which contains the setup.py-file:

$ pip install .

Note: There are a few optional dependencies for certain adapter types. Currently the only optional dependency is pcaspy for using devices with an EPICS interface, it requires a working installation of EPICS base. Please refer to the installation instructions <https://pcaspy.readthedocs.io/en/latest/installation.html>__ of the module. To include pcaspy in the installation of dependencies, use:

$ pip install ".[epics]"

If you also want to develop Lewis, the workflow is a bit different. Please refer to the developer_guide for details.

If you want to use the EPICS adapter, you will also need to configure a few more EPICS environment variables correctly. If you only want to communicate using EPICS locally via the loopback device, you can configure it like this:

$ export EPICS_CA_AUTO_ADDR_LIST=NO
$ export EPICS_CA_ADDR_LIST=localhost
$ export EPICS_CAS_INTF_ADDR_LIST=localhost

Once all dependencies and requirements are satisfied, Lewis can be run using the following general format (from inside the Lewis directory):

$ python -m lewis device_name [arguments]

You can then run Lewis as follows (from within the lewis directory):

$ python -m lewis chopper -p epics

Details about parameters for the various adapters, and differences between OSes are covered in the “Adapter Specifics” sections.

If you decided to install Lewis this way, please be aware that the lewis and lewis-control calls in the other parts of the guide have to be replaced with python lewis.py.

Running from source

Lewis can be run directly from source. First it is necessary to install the basic requirements:

$ pip install -r requirements.txt

If you would like to use EPICS based devices and have a working EPICS environment on your machine then it is necessary to install pcaspy like so:

$ pip install pcaspy

There are Python scripts for running both lewis and lewis-control in the top-level scripts directory. These scripts work exactly the same as when Lewis is installed via pip (see above). For example:

$ python scripts/lewis.py --help
$ python scripts/lewis-control.py --help