Merge branch 'resolution-fix' into 'master'

Default resolution fix

See merge request openflexure/openflexure-microscope-server!18
This commit is contained in:
Joel Collins 2019-05-20 09:29:35 +00:00
commit 805c17b509
7 changed files with 24 additions and 17 deletions

View file

@ -11,13 +11,13 @@ Microscope RC file
------------------
Microscope configuration is made persistent via a microscope runtime-config (RC) file. By default, this
file exists at ``~/.openflexure/microscoperc.yaml``, and contains basic parameters to set up the microscope.
file exists at ``~/.openflexure/microscope_settings.yaml``, and contains basic parameters to set up the microscope.
Additionally, by default, configurations for specific pieces of hardware (i.e. the Pi camera) are located
in separate "auxillary" config files, and are linked together by adding the config file's path to your main
microscope RC file. This is set up by default, as shown below:
Default microscoperc.yaml
Default microscope_settings.yaml
+++++++++++++++++++++++++
.. code-block:: yaml

View file

@ -25,11 +25,11 @@ Generally, for adding anything other than very simple functionality, plugins sho
The main restriction is that the plugin package must be importable using an absolute import from within the Python environment being used to load your microscope.
Loading plugins with microscoperc.yaml
Loading plugins with microscope_settings.yaml
--------------------------------------
Both types of plugin are loaded by specifying the plugin class in your :ref:`MicroscopeRC`. In the case of a single-file plugin, specify the path to the plugin file, followed by the name of your :py:class:`openflexure_microscope.plugins.MicroscopePlugin` child class, separated by a colon. For packaged plugins, specify the absolute module name in place of the path.
For example, the plugins section of your microscoperc.yaml file may look like:
For example, the plugins section of your microscope_settings.yaml file may look like:
.. code-block:: yaml

View file

@ -29,7 +29,6 @@ import sys, os
is_gunicorn = "gunicorn" in os.environ.get("SERVER_SOFTWARE", "")
DEFAULT_LOGFILE = os.path.join(USER_CONFIG_DIR, 'openflexure_microscope.log')
print(DEFAULT_LOGFILE)
if (__name__ == "__main__") or (not is_gunicorn):
# If imported, but not by gunicorn

View file

@ -41,8 +41,8 @@ from .set_picamera_gain import set_analog_gain, set_digital_gain
# Handle config and picamera settings
CONFIG_KEYS = {
'video_resolution': (832, 624),
'image_resolution': (2592, 1944),
'video_resolution': (1640, 1232),
'image_resolution': (2592, 1944), # Default for PiCamera v1. Overridden in __init__
'numpy_resolution': (1312, 976),
'jpeg_quality': 75,
'picamera_settings': {
@ -86,6 +86,11 @@ class StreamingCamera(BaseCamera):
# Populate config and settings with all available keys
self.config.update(CONFIG_KEYS)
# Update config based on PiCamera parameters
self.config.update({
'image_resolution': tuple(self.camera.MAX_RESOLUTION)
})
# Load config dictionary if passed
if config:
self.apply_config(config)

View file

@ -10,16 +10,24 @@ from collections import abc
# HANDLE THE DEFAULT CONFIGURATION FILE
HERE = os.path.abspath(os.path.dirname(__file__))
DEFAULT_CONFIG_PATH = os.path.join(HERE, 'microscoperc.default.yaml')
DEFAULT_CONFIG_PATH = os.path.join(HERE, 'microscope_settings.default.yaml')
USER_CONFIG_DIR = os.path.join(os.path.expanduser("~"), ".openflexure") #: str: Default path of the user-config directory, containing runtime-config and calibration files. Obtained from ``os.path.join(os.path.expanduser("~"), ".openflexure")``.
USER_CONFIG_FILE = os.path.join(USER_CONFIG_DIR, "microscoperc.yaml") #: str: Default path of the user microscoperc.yaml runtime-config file. Obtained from ``os.path.join(USER_CONFIG_DIR, "microscoperc.yaml")``
USER_CONFIG_FILE = os.path.join(USER_CONFIG_DIR, "microscope_settings.yaml") #: str: Default path of the user microscope_settings.yaml runtime-config file. Obtained from ``os.path.join(USER_CONFIG_DIR, "microscope_settings.yaml")``
USER_CONFIG_FILE_OLD = os.path.join(USER_CONFIG_DIR, "microscoperc.yaml")
# Load the default config
with open(DEFAULT_CONFIG_PATH, 'r') as default_rc:
DEFAULT_CONFIG = default_rc.read()
# HANDLE CUSTOM YAML PARSING
# Run a one-time conversion of the old microscoperc.yaml into the new microscope_settings.yaml
# TODO: Should be removed in >1.0.1?
if (not os.path.isfile(USER_CONFIG_FILE)) and (os.path.isfile(USER_CONFIG_FILE_OLD)):
os.rename(USER_CONFIG_FILE_OLD, USER_CONFIG_FILE)
# HANDLE CUSTOM YAML PARSING
def construct_yaml_bool(self, node):
"""
Override PyYAML constructors handling of bools.
@ -162,8 +170,8 @@ def initialise_file(config_path, populate: str = ""):
with open(config_path, 'w') as outfile:
outfile.write(populate)
# MAIN CONFIG CLASS
# MAIN CONFIG CLASS
class OpenflexureConfig:
"""
An object to handle expansion, conversion, and saving of the microscope configuration.

View file

@ -143,7 +143,7 @@ class Microscope(object):
if 'plugins' in self.rc.config:
self.attach_plugin_maps(self.rc.config['plugins'])
else:
logging.warning("No plugins specified in microscoperc.yaml. Skipping.")
logging.warning("No plugins specified in microscope_settings.yaml. Skipping.")
def reload_plugins(self):
"""

View file

@ -1,8 +1,3 @@
# Resolutions for streaming and capture
video_resolution: [832, 624]
image_resolution: [2592, 1944]
numpy_resolution: [1312, 976]
# Field of view, in stage steps
fov: [4100, 3146]