Skip to content

sdss/lvmpwi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lvmpwi

Versions Documentation Status Travis (.org) codecov

Lvm Planewave PWI Clu Wrapper

Features

  • CLU based wrapper for Planewave PWI.
  • Uses a container for deployment and testing.
  • Uses podman¹ for building the container.

¹ Setting an alias to use docker might work.

alias podman="sudo docker"

Todo

  • Container not using the host network

Note

As of version 0.0.9 the container is renamed from ubuntu_lvmt_pwi to lvmpwi

Quickstart

Beginning with version 0.0.9 the container doesnt have to be build, a container is download automatically from github.

git clone https://github.com/sdss/lvmpwi.git
cd lvmtan      
poetry run container_start --simulator --name=lvm.sci.pwi&

Prerequisites

Some linux distributions do not have python >= 3.7 as the standard python3 version.

Centos 8.X

# as root
yum install python38-devel
# as user 
python3.8  -m pip  install --user --upgrade pip
pip3.8 install poetry
export PATH=~/.local/bin/:$PATH

OpenSuSe 15.2/15.3

# as root
zypper ar https://download.opensuse.org/repositories/devel:/languages:/python:/Factory/openSUSE_Leap_15.2/ devel_python
zypper install python39-devel
# as user 
python3.9  -m pip  install --user --upgrade pip
pip3.9 install poetry
export PATH=~/.local/bin/:$PATH

Quick start

Download

git clone https://github.com/sdss/lvmpwi.git
cd lvmpwi      

Build (optional)

# update local py env
poetry update
poetry install

# build sdist & wheel (optional)
poetry build

# build pwi container
poetry run container_build
# rebuild pwi container from scratch
poetry run container_build --no-cache

Run container

poetry run container_start

# with pwi4 port 8220 exposed
poetry run container_start --debug
poetry run container_stop

# run container with vnc - uses a free port between 5900 - 5909
poetry run container_start --without-ui

# run container with killing current instance
poetry run container_start --kill

# run container using the local lvmpwi instead of the git version included into the container
poetry run container_start --debug

# start multiple pwi container with simulation screen size for vnc sessions
poetry run container_start --simulator --name=lvm.sci.pwi&
poetry run container_start --simulator --geom=800x600 --without-ui --name=lvm.skye.pwi&
poetry run container_start --simulator --geom=800x600 --without-ui --name=lvm.skyw.pwi&
poetry run container_start --simulator --geom=800x600 --without-ui --name=lvm.spec.pwi&

# run autotuner from container
# Note: the standard autotuner needs opengl, which is not available with tigervnc/tightvnc, only with turbovnc and native display.
poetry run container_autotuner

Run tests

# run tests
poetry run pytest
# ... include slow tests with enabled log to stdout
poetry run pytest -p no:logging -s -v --runslow

Run native pwi client interface

# run python with path to native pwi interface¹
export PYTHONPATH=python/lvmpwi/pwi/:$PYTHONPATH
poetry run python

# see also lvmpwi/python/lvmpwi/pwi/pwi4_client_demo.py²
# the documentation of the api is inside the code.
import time
from pwi4_client import PWI4
pwi4 = PWI4()
s = pwi4.status()
if not s.mount.is_connected:
    print ("Connecting to mount...")
    s = pwi4.mount_connect()
    print ("Mount connected:", s.mount.is_connected)

¹ pwi4_client.py ² pwi4_client_demo.py

Publish

# publish to pypi
poetry publish --username=USER --password=PASS
# build rpm package
poetry run python setup.py bdist_rpm
# build deb package - needs python3-stdeb
poetry run python setup.py --command-packages=stdeb.command bdist_deb