Skip to content

Configuration.yaml Configurator GUI #842

@AdvancedImagingUTSW

Description

@AdvancedImagingUTSW

Misc. Ideas.
Would love feedback. Very early stage. I am just concerned that the configuration.yaml file is the most fragile part of the software, which could slow adoption for non-experts. Would like a way to eliminate this problem.

Should the program be launched from a parser argument (e.g., navigate -config) or as a separate program?

Should the program be able to load and modify and existing configuration.yaml file?

How do we store what variables need to be changed for each device?

How do we store what devices are available (init.py?)?

It should also be able to configure multiple microscope objects.

By default, if the configuration.yaml file is not found, this program should automatically be launched.

Maybe have a menu option so that if the software is launched in the synthetic hardware mode, that they can access this configurator as well.

We want them to be able to create a new configuration, as well as modify an existing one.

I originally thought that it could be a tabbed frame for each microscope, with a GUI option to add more microscopes. Within each microscope, would be another tabbed frame for each device, etc.

For example, one idea is to have a known dictionary associated with each device that can be imported independently. For the Hamamatsu Cameras, could be something like:

# Logger Setup
p = __name__.split(".")[1]
logger = logging.getLogger(p)

required_params = {
    "serial_number": "str",
    "lightsheet_rolling_shutter_width": "int",
    "defect_correct_mode": "float",
    "delay_percent": "int",
    "pulse_percent": "int",
    "x_pixels_step": "int",
    "y_pixels_step": "int",
    "x_pixels_min": "int",
    "y_pixels_min": "int",
    "exposure_time_range": "dict",
    "flip_x": "bool",
    "flip_y": "bool",
}

There will be some odd things. Like axes_mapping for the stages will probably require a creative solution.

Other items may be complicated. For example, let's think about the lasers. Analog and digital modulation is defined independently. So, the analog input could be a list of options (["Synthetic Laser", "NI Laser"]). And then some specific options will then be populated depending upon that option? Or maybe we just show everything (e.g., max voltage, min voltage, channel, wavelength) for both? Or maybe make some read only rather than populate them based upon the selection? Also, some microscopes may have 4 lasers, others 7, and we need to be able to dynamically select the number of lasers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions