Fork with FAFO patches
| docs | ||
| openflexure_microscope | ||
| tests | ||
| utilities | ||
| .gitignore | ||
| poetry.lock | ||
| pyproject.toml | ||
| README.md | ||
| readthedocs.yaml | ||
| requirements.txt | ||
| start_interface | ||
OpenFlexure Microscope Software
Installation
This module is currently in very early development, and is perhaps best installed in developer mode.
- (Recommended) create a virtual environment
- In the openflexure-microscope-software directory, create a venv with
python3 -m venv env - Activate with
source env/bin/activate - Install dependencies with
sudo apt-get install libatlas-base-dev libjasper-dev libjpeg-dev - Install requirements with
pip install -r requirements.txt
- In the openflexure-microscope-software directory, create a venv with
- Install module in developer mode by running
python3 setup.py develop- Installing in developer mode allows the module to be modified by editing files directly in the openflexure-microscope-software directory.
Developer usage examples
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 --bind 0.0.0.0:5000 openflexure_microscope.api.app:app- Alternatively, run
source start_interfacefrom the openflexure-microscope-software directory.
- Alternatively, run
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
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.
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.
Credits
Video streaming
Based on supporting code for the article video streaming with Flask and its follow-up Flask Video Streaming Revisited.