Fork with FAFO patches
Find a file
2019-06-18 15:56:02 +01:00
docs Updated docs 2019-06-07 13:37:20 +01:00
openflexure_microscope Added a long running task to schema example 2019-06-18 15:56:02 +01:00
tests Renamed video_resolution to stream_resolution 2019-05-20 10:55:43 +01:00
.gitignore Ignore pyenv files 2019-01-06 18:37:13 +00:00
CONTRIBUTING.md Update CONTRIBUTING.md 2019-05-24 10:47:57 +00:00
LICENSE Add LICENSE 2019-02-19 14:51:33 +00:00
poetry.lock Updated lockfile 2019-05-28 13:47:42 +01:00
pyproject.toml Up to 1.1.0 beta 1 2019-06-05 16:06:09 +01:00
README.md Fixed awful typo 2019-05-01 16:10:17 +00:00
readthedocs.yaml Updated RTD config to pip install from repo 2019-05-05 19:50:13 +00:00

OpenFlexure Microscope Software

Installation

A general guide on setting up your microscope can be found here on our website.

Easy

  • Run curl -LSs get.openflexure.org/microscope |sudo bash
  • Follow on-screen prompts

Manual

User

  • (Recommended) create a virtual environment
    • pip3 install virtualenv
    • mkdir ~/.openflexure
    • python3 -m virtualenv ~/.openflexure/envmicroscope
    • Activate with source /.openflexure/envmicroscope/bin/activate
  • Install non-python dependencies with sudo apt-get install libatlas-base-dev libjasper-dev libjpeg-dev
  • Users: Install module by running pip install openflexure-microscope
  • Developers: Install Poetry, clone this repo, and poetry install from inside the repo.

Usage

Running the web API in Gunicorn (port 5000)

  • Ensure Gunicorn is installed to the current environment (pip install gunicorn)
  • Run gunicorn --threads 5 --workers 1 --graceful-timeout 3 --bind 0.0.0.0:5000 openflexure_microscope.api.app:app

REST(ish) API

The Flask app serves a (reasonably) RESTful web API. For most user-facing functionality, this is the preferred interface. API documentation, with example requests, is available here.

Developer notes

Build-system

As of 1.0.0b0, we're using Poetry to manage dependencies, build, and distribute the package. All package information and dependencies are found in pyproject.toml, in line with PEP 518. If you're developing this package, make use of poetry.lock to ensure you're using the latest locked dependency list.

Microscope plugins

The Microscope module, and Flask app, both support plugins for extending lower-level functionality not well suited to web API calls. This plugin system is still in fairly early development, and is not yet properly documented. The current documentation can be found here.

Running tests through the PTVSD remote debugger (port 3000)

  • From the openflexure-microscope-software directory, run python3 -m ptvsd --host 0.0.0.0 --port 3000 --wait tests/test_camera.py

Credits

Piexif

The microscope server includes a forked copy of hMatoba's Piexif, licensed under the MIT License.

Video streaming

Based on supporting code for the article video streaming with Flask and its follow-up Flask Video Streaming Revisited.