Compatibility notes and config file migration for the new build (2023-11-20) of Squid (octopi-research)

Hello,

We have added some new functionalities and features in a new push to octopi-research/master. For this to not break your existing system, please follow these steps to ensure compatibility:

  • Install dependencies for the image stitching module: In whatever environment you run Squid/Octopi in, run pip install tifffile (or pip3 install tifffile)
  • Reformat channel configuration xml: The ConfigurationManager class for channel settings now, by default, looks for the channel settings under octopi-research/software (wherever the repo lives for you). First of all, If you have a file named *configurations.xml that contains settings for bunch of acquisition channels (Fluorescence xxx, BF LED Matrix Full, etc.), and your main GUI code (under software/control) explicitly looks for that file, either delete it (if it was autogenerated and you never manually modified it), or, for every entry (every <mode/> tag), add the following attributes: ZOffset="0.0" PixelFormat="default" _PixelFormat_options="[default]". This goes for any configuration xml generated for your focus camera as well (it may be software/focus_camera_configurations.xml if you are using main_hcs.py).

If you want to be able to use the GUI microscope settings editor, you have to migrate your configuration_*.txt file to a .ini file. If you have been using one of the pre-existing configuration files under software/configurations without modification, check if a file with the same name but extension .ini exists under the directory. If it does, simply replace your current configuration txt file under software with that file.

If you have a custom configuration file, you may migrate it to a .ini file as follows (NOTE: this does not support conditionals in your txt file aside from those checked in control/_def.py. You will have to stick with legacy config or modify control/_def if you want to be able to execute arbitrary code in your config file.):

  • In a text editor, open a file under software called [name of your config file without the extension].ini.
  • Make a heading [GENERAL] under your config file.
  • For every class ClassName defined in your original config file, create a heading [CLASSNAME] (in all caps) in your new config file.
  • For every global variable defined in your config file, copy its definition to be under [GENERAL] in your new config file. Variables that are purely strings should have enclosing quotes omitted. Definitions of lists and dictionaries can be copied fully over.
  • If you have a variable that has a fixed number of options, create a definition called _[variable name]_options under your variable definition in your new config file, and make a list, enclosed in brackets, of the possible values for this variable. If the values are strings, do not include enclosing quotes. This will allow you to set values for this config file in a dropdown in the GUI.
  • Repeat this for every attribute under a class (in its corresponding section)
  • If a variable definition in your config txt file uses a reference to a variable also defined in your config txt file, you must replace that with the final value you want your variable to have. The new configuration files are read as key-value pairs where the values are parsed as strings and then cast to booleans, dicts/lists, integers, floats, and then strings (in order of precedence), not as arbitrary code to be executed.
  • Replace the definitions of X/Y/Z_HOME_SWITCH_POLARITY, if any, with the following: Define a heading [LIMIT_SWITCH_POLARITY], and define 3 variables x_home, y_home, and z_home under it, which will be used to set the values of X/Y/Z_HOME_SWITCH_PROBABILITY. Set each of these variables to be the value of LIMIT_SWITCH_PROBABILITY.ACTIVE_HIGH/ACTIVE_LOW/DISABLED (as defined in control/_def.py) as appropriate. So, if your original configuration_*.txt file set X_HOME_SWITCH_POLARITY=LIMIT_SWITCH_PROBABILITY.ACTIVE_HIGH, and LIMIT_SWITCH_PROBABILITY.ACTIVE_HIGH is defined to be 1 in control/_def.py, define x_home=1 under the heading [LIMIT_SWITCH_PROBABILITY].