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
ConfigurationManagerclass 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.xmlthat contains settings for bunch of acquisition channels (
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.xmlif you are using
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
ClassNamedefined 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]_optionsunder 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
z_homeunder 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
LIMIT_SWITCH_PROBABILITY.ACTIVE_HIGHis defined to be
x_home=1under the heading