Merge branch 'resolution-fix' into 'master'
Default resolution fix See merge request openflexure/openflexure-microscope-server!18
This commit is contained in:
commit
805c17b509
7 changed files with 24 additions and 17 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue