diff --git a/.coveragerc b/.coveragerc index 17e00a286b2e5096868d6ef26800f435eaaff337..f8c4d0a69bf92ed34dff62c340a1006677e6a72f 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,7 +2,13 @@ [run] branch = True source = nqontrol -omit = run.py +omit = + *run.py + *nqontrolUI.py + *controller.py + *mockAdwin.py + *errors.py + *settings_local.py [paths] source = diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 548087d800b8bd9212d47ac5f842467fb4a2057a..da004b13c77d986fd3717d409d317923dc305663 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ stages: - - build - test + - build + - build-test - deploy - deploy-test @@ -51,10 +52,12 @@ pages: expire_in: 30 days only: - develop + - master + - tags test wheel installation: image: lasnq/nqontrol:lib - stage: test + stage: build-test before_script: - echo 'DEVICES_LIST = [0]' > src/nqontrol/settings_local.py script: @@ -76,7 +79,8 @@ deploy staging: - sh bin/enable_ssh script: - scp $SCP_PARAMS dist/*.whl $SSH_SERVER:$SERVER_ROOT/software-builds/nqontrol-staging - when: manual + only: + - develop deploy production: image: lasnq/nqontrol diff --git a/README.md b/README.md index 6ded3cc2a3f4354606e53c1928a7fd72161a10f2..f0543fe3ea51b89ffb9078630e7e66c43bab7664 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,20 @@ # ReadMe -[](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/develop) -[](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/develop) +[](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/master) +[](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/master) + +`NQontrol` is a python project aiming the replacement of analog PID controllers in the lab. + +The project is a solution based on the ADwin real-time platform that is able to deliver in excess of 8 simultaneous locking loops running with 200 kHz sampling frequency, and offers five second-order filtering sections per channel for optimal control performance. +This Python package, together with a web-based GUI, makes the system easy to use and adapt for a wide range of control tasks in quantum-optical experiments. ## Documentation +For more information please read the online documentation: + * Current documentation of the [latest release](https://las-nq-serv.physnet.uni-hamburg.de/python/nqontrol) * Current documentation of the [latest development version](https://las-nq-serv.physnet.uni-hamburg.de/python/nqontrol-stage) -TODO - ## NQontrol Installation + For installation please refer to the [documentation page](https://las-nq-serv.physnet.uni-hamburg.de/python/nqontrol/install.html) diff --git a/doc/index.rst b/doc/index.rst index f89d83cb5474c625faacb0a882ca2536856c71eb..f4e364e4bf74bcf492b48740e8524294539142c4 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -2,8 +2,8 @@ nqontrol ======== -This is the documentation of **nqontrol**. -nqontrol is a python project aiming the replacement of analog PID controllers in the lab. +This is the documentation of **NQontrol**. +NQontrol is a Python project aiming the replacement of analog PID controllers in the lab. Read the :doc:`Introduction <intro>` for more information on the system. @@ -11,18 +11,28 @@ Contents ======== .. toctree:: - :maxdepth: 2 - - Introduction <intro> - Installation <install> - Basic Usage <usage> - Graphical User Interface <gui> - Configuration <configuration> - System Performance and Measurements <performance> - Api Documentation <apidoc> - Development Documentation <documentation> - Concept for realtime plotting <plotting_concept> - Authors <authors> + :maxdepth: 2 + :caption: Usage + + Introduction <intro> + Installation <install> + Basic Usage <usage> + Graphical User Interface <gui> + Configuration <configuration> + +.. toctree:: + :maxdepth: 2 + :caption: Development + + Api Documentation <apidoc> + Development Documentation <documentation> + +.. toctree:: + :maxdepth: 2 + :caption: System and more + + System Performance and Measurements <performance> + Authors <authors> Indices and tables diff --git a/doc/intro.md b/doc/intro.md index 0935a8543656770af8919b1a02e3705352e65ddb..aeef9fff81b773536e0a8f4dd8a96b7ffb1384cc 100644 --- a/doc/intro.md +++ b/doc/intro.md @@ -1,6 +1,6 @@ # Introduction -`nqontrol` is a python project aiming the replacement of analog PID controllers in the lab. +`NQontrol` is a python project aiming the replacement of analog PID controllers in the lab. ## System Description diff --git a/doc/plotting_concept.md b/doc/plotting_concept.md deleted file mode 100644 index 8880152150c340efda18b0d0d07a36894361c7b7..0000000000000000000000000000000000000000 --- a/doc/plotting_concept.md +++ /dev/null @@ -1,59 +0,0 @@ -# Concept for Realtime Plotting of a Servo -This concept was to develop a structured plotting scheme and was not updated after implementing it. -So it might be useful to understand the implementation, but it isn't completely correct. - -## User Story - -### Terminal - -#### Ramp -* Start a ramp with some parameters. - * The parameters will be saved in the object. - * Possible to reenable the same ramp. -* Extra parameter to start saving data to fifo. - -#### Continuous Data -* Enable the fifo data and define the interval. -* Start the plotting (maybe only one command?) - -#### Realtime Plotting -* Enable plotting with the defined interval. -* _Optional: Ability to change parameters while plotting._ - -### Dash -TODO - -## Implementation - -### Take Data -* Take number of requested entries for all 3 channels, max the size of the current adwin buffer. -* Return as a `DataContainer`. - -### Prepare continuous Data -* Take number of entries of the fifo buffer. -* Delete oldest entries to stay at `maxlen`. - -### Prepare ramp Data -* Take data. -* Find the first entry in `output` that contains the minimum value. -* Save the data from that index on and fill up with new taken data. - * Wait a time that it should be filled. - * Request number of data to fill. - * Local value of `maxlen` should not be larger than the fifo buffer size of adwin to avoid the need of looping. - -### Update the Graph -* Take periodically the data and update the graph. -* Period is automatically calculated: - * Sleep a time to fill half of the fifo buffer. - `TODO` How much can we increase it? - * Maximal resulting framerate should be about 30 Hz. - -### Triggering the Ramp -The output of the ramp on ADwin is based on a digital calculation. -Therefore it is absolutely reproducible without any variances. - -#### Find the precice Value of the Minimum -Take data of at least a whole ramp and find the minimum. - -* Need a saving frequency that matches to the current ramp. -* Check that the precice value of the minimum is nearly the negative ramp amplitude.